﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-自然-文章分类-client&amp;demand</title><link>http://www.blogjava.net/masen/category/21335.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 14 Jul 2007 18:20:43 GMT</lastBuildDate><pubDate>Sat, 14 Jul 2007 18:20:43 GMT</pubDate><ttl>60</ttl><item><title>VSS</title><link>http://www.blogjava.net/masen/articles/130303.html</link><dc:creator>Masen</dc:creator><author>Masen</author><pubDate>Sat, 14 Jul 2007 12:59:00 GMT</pubDate><guid>http://www.blogjava.net/masen/articles/130303.html</guid><wfw:comment>http://www.blogjava.net/masen/comments/130303.html</wfw:comment><comments>http://www.blogjava.net/masen/articles/130303.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/masen/comments/commentRss/130303.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/masen/services/trackbacks/130303.html</trackback:ping><description><![CDATA[1 VSS概述 <br>版本控制是工作组软件开发中的重要方面，它能防止意外的文件丢失、允许反追踪到早期版本、并能对版本进行分支、合并和管理。在软件开发和您需要比较两种版本的文件或找回早期版本的文件时，源代码的控制是非常有用的。<br>Visual SourceSafe 是一种源代码控制系统，它提供了完善的版本和配置管理功能，以及安全保护和跟踪检查功能。VSS通过将有关项目文档（包括文本文件、图象文件、二进制文件、声音文件、视屏文件）存入数据库进行项目研发管理工作。用户可以根据需要随时快速有效地共享文件。文件一旦被添加进VSS，它的每次改动都会被记录下来，用户可以恢复文件的早期版本，项目组的其他成员也可以看到有关文档的最新版本，并对它们进行修改，VSS也同样会将新的改动记录下来。你还会发现，用VSS来组织管理项目,使得项目组间的沟通与合作更简易而且直观。<br>VSS可以同 Visual Basic、Visual C++、Visual J++、Visual InterDev、Visual FoxPro 开发环境以及 Microsoft Office 应用程序集成在一起，提供了方便易用、面向项目的版本控制功能。Visual SourceSafe 可以处理由各种开发语言、创作工具或应用程序所创建的任何文件类型。在提倡文件再使用的今天，用户可以同时在文件和项目级进行工作。Visual SourceSafe 面向项目的特性能更有效地管理工作组应用程序开发工作中的日常任务。
<p>&#160;</p>
<p><br>1．1 VSS中的文件<br>当你要修改某个文档时，需要先从数据库中将它签出（check out），或者告诉VSS你要编辑该文档。VSS会将该文档的副本从数据库中拿到你的工作文件夹(working folder)中，你就可以修改你的文档了。如果其他用户再想对同一文档进行修改，VSS会产生一个信息，告诉他，该文档已被签出（check out），从而避免多人同时修改文档，以保证文档的安全性。<br>当你完成修改之后，需要将文档 签入（check in）VSS。这个操作从你的工作文件夹(working folder)中复制被你修改的文档，并将它放回VSS数据库，以便其他用户能够及时看到文档的改动。VSS能够保存文档的所有改动，并显示最新版本，同时早期版本也会被跟踪记录下来。VSS对反增量技术的运用，仅需要用很少的磁盘空间就能使得用户获取文档的所有版本。<br>如果你没有修改文档，你可以执行撤消签出(undo check out)命令，文档将被保存为被签出（check out）之前的状态。<br>如果你只需读取某一文档而并不需要编辑它，你可以执行取出(get)命令，将文档放入你的工作文件夹，再选择查看文档(view)，来查看你的文档的最新版本。</p>
<p><br>1．2 VSS中的项目<br>项目(project)是指用户存储在VSS数据库中的所有文件(file)的集合。用户可以在项目之间或项目内部实现文件的添加(add)、删除(delete)、编辑(edit)、共享(share)。一个&#8220;项目(project)&#8221;在很大程度上类似于一个普通系统的的文件夹，不同的是它能更好地支持文件合并(merge)、跟踪(archive)和版本控制(version control)功能。<br>文件保存在VSS数据库中的项目(project)里。你无须管理存储在VSS 中的文件正本，除非你要检查或与其它拷贝进行比较。<br>VSS为每一位用户提供了一份备份文件放入工作文件夹(working folder),供用户对文件进行查看与编辑。尽管没有工作文件夹也可以查看文件，但要想真正实现对文档的处理，必须建立工作文件夹。</p>
<p><br>1．3 VSS的版本控制功能<br>VSS能够保存文件的多个版本，包括文件版本之间每一处微小的变动。版本控制有以下几方面的内容：<br>l 组内合作——在缺省的情况下，一般一个文件在某一时间只允许一个用户对其进行修改，这样可以防止文件意外地被其他用户改动或者覆盖。但管理员可以改动这种缺省的设置，允许文件多层签出。这种设置也能防止过多的、不必要的改动。<br>l 版本追踪——VSS能够对源代码和其他文件进行存储和早期版本的追踪，从而实现重建文件早期版本等有关功能。<br>l 跨平台开发——在多平台开发的情况下，版本追踪用于维护核心代码。<br>l 代码的再使用—— 追踪程序基准使得代码可重用。</p>
<p><br>1．4 文件的拆分和共享<br>在VSS中可以实现一个文件被多个项目共享(share)。在一个项目中对文件的改动可以自动反映到其他共享的项目中去。这正提倡了代码重用。在file菜单中的properties中，点击link，可以查看某一文件的共享情况。<br>拆分(branch)是将文件从原来共享的项目中分离出来的过程。它使得VSS可以实现从不同的路径追踪文件。<br>注：在其他版本控制系统中，分支是通过跟踪版本号来实现的。例如：版本&#8220;2.3.9.2&#8221;是版本2.3的第二个修订版本的第九个分支。而VSS通过明显不同的项目名称实现对文件分支的跟踪。<br>拆分文件就断开了共享连接，使得本项目中的文件与其他原来共享的项目无关。对此文件的修改将不会再反映到其他项目上。拆分是这样被建立的：两个文件以前有着共同的历史记录，从实现拆分开始，他们的历史记录将被VSS分别追踪。<br>拆分文件之后，link按纽将不再显示已断开的连接，但你可以用path（file菜单中的properties项）按纽浏览拆分的历史记录。<br>共享（share）文件就是在多个项目间建立文件的连接。拆分(branch)文件就是在项目之间建立了不同的文件路径。</p>
<p><br>1．5 工作文件夹(working folder)<br>VSS是存储和管理文件的工具，但是编辑和编译文件必须在VSS指定文件夹中进行。这个文件夹叫工作文件夹，它可以是现存的文件夹，也可以是VSS新建的文件夹。VSS浏览器在文件列表上方显示了文件的工作文件夹的路径。<br>在VSS系统中，工作文件夹才是你真正用于处理文档的地方。当你要编辑或修改某个文档时，必须对文档实施check out 操作（详见3.3.5修改和编辑文件），VSS将该文档从项目中拷贝出来，放入你的工作文件夹。当你修改完毕并check in 文件之后，VSS又将文件重新拷贝到数据库中以记录你的修改。</p>
<p><br>一旦你将文件签出，VSS就开始在你的本地机上创建并管理你的工作文件夹。<br>每一个用户、每一个项目或每一台微机都可以有自己的工作文件夹。如果Joe在项目$/SpreadSheet和$/WordProcessor上工作，他就有相应的2个不同的工作文件夹。如果Hanna在同样的项目上工作，对于每一个项目她又有自己的工作文件夹。<br>当你为某个项目设置了工作文件夹，你可以用它来放置你该项目中包括子项目再内的所</p>
<p><br>2 VSS的客户端安装</p>
<p><br>2．1 安装VSS的系统条件<br>l 计算机/处理器: 处理器为486DX/66MHz或以上PC机推荐Pentium或更高级的处理器。<br>l 内存：Windows 95或以后的版本要求16 MB RAM (推荐32 MB)；Windows NT 4.0要求24 MB (推荐32 MB)。<br>l 硬盘：客户机：典型安装：59MB； 72 MB；安装过程：66 MB；<br>l 服务器：典型安装：128 MB；最大安装：141 MB；<br>l 附加硬盘要求：Internet Explorer：典型为43 MB，最大59 MB；MSDN：典型57MB，最大59 MB<br>l 驱动器：CD ROM<br>l 显示：VGA或更高级显示器，推荐Super VGA。<br>l 操作系统：Microsoft Windows 95或以后版本或者Microsoft Windows NT 4.0，NT要求Service Pack 3或更高版本(包括Service Pack 3〕<br>l 外围设备/其它: Microsoft Internet Explorer 4.01 Service Pack 1 (包含).</p>
<p><br>2．2 从网络安装VSS客户端<br>1） 打开本地计算机的&#8220;网上邻居&#8221;属性对话框；<br>2） 点击&#8220;配置&#8221;按纽；<br>3） 将&#8220;MICROSOFT网络用户&#8221;的属性设置为：登录到WINDOWS NT 域，域名为PLANNING；<br>4） 添加TCP/IP、NETBEUI、IPX/SPX协议；<br>5） 重新启动计算机，登录&#8220;planning&#8221;域；<br>注：管理员为每位NT用户设置的登录密码为&#8220;111&#8221;，用户在第一次登录时，计算机会提示用户修改密码。<br>6） 从&#8220;网上邻居&#8221;的&#8220;planning&#8221;域中查找服务器&#8220;VSSDATA&#8221;；<br>7） 打开共享的&#8220;VSS&#8221;文件夹并双击&#8220;NETSETUP&#8221;；<br>8） 按照安装程序的提示开始安装。</p>
<p><br>3 VSS的基本使用操作</p>
<p><br>3．1 登录VSS<br>点击VSS图标或从程序菜单中运行Visual SourceSafe 6.0，即可打开VSS浏览器。<br>如果用户登录的VSS密码和登录PLANNING域的密码是一致的，系统将不再提示输入进入VSS数据库的密码；如果用户为VSS设置的密码与登录PLANNING域的密码不同，系统将提示用户输入VSS的登录密码。关于如何修改VSS用户密码，详见&#8220;3.2.14修改用户密码&#8221;。</p>
<p><br>3．2 VSS浏览器</p>
<p><br>当你一打开VSS，如果你设定了密码的话，它会提示你输入密码。如果你没有设定密码，你可以直接看到浏览器。在浏览器上，你可以浏览你的数据库、查看项目列表、显示文件统计信息、执行命令对文件和项目进行操作等。浏览器的最上方的标题栏是你当前连接的数据库。VSS使用符号来提供有关文件和项目信息。<br>菜单栏的下面是常用工具栏，这里有许多常用命令的按纽，它可以帮你快速地执行对文件的操作。<br>在项目栏中，显示有项目列表，包括特殊项目的有关信息。文件栏显示了当前项目的所有文件的列表。结果栏显示当前你所执行的操作的结果。</p>
<p><br>3．3 VSS基本操作</p>
<p><br>3．3．1创建新的文件夹<br>1） 选中要创建新文件夹的项目（上级文件夹）；<br>2） 在file菜单中选中creat project；<br>3） 写入要添加的文件夹的名称，同时也可以在comment栏中为新建的文件夹添加备注；<br>4） 点击OK。</p>
<p><br>3．3．2添加文件夹<br>1） 选中你要添加文件夹的项目（上级文件夹）；<br>2） 在file菜单中选中add files；<br>3）在文件夹列表中选中要添加的文件夹；<br>4）点击add，同时可以在comment栏为你添加的文件夹做一个简单备注；<br>5）如果你要连同子文件夹一起添加，选择Recursive；<br>5） 点击OK，成功添加了一个带有备注的文件夹。或者点击close，退出操作，返回add files对话框，点击close。</p>
<p><br>3．3．3添加文件<br>3．3．2．1使用add命令添加文件<br>1）选中你要添加文件的文件夹；<br>2） 在fil菜单中选中add files；<br>3） 在文件列表中选中要添加的文件；如果要添加多个文件，可以使用CTRL键或SHIFT键，同时选中多个文件；<br>4）点击add，同时可以在comment栏为你添加的文件夹做一个简单备注；<br>5）点击OK。<br>3．3．2．2用拖动的方法添加文件/文件夹<br>1）打开VSS浏览器，调整其大小，使得Windows资源管理器能够显示出来；<br>2）打开Windows资源管理器，调整大小，使得两个浏览器可以同时显示；<br>3）从Windows资源管理器中选择你要添加的文件或文件夹；<br>4） 拖动你所选的文件或文件夹，放入VSS浏览器，文件被添加进项目，而添加的文件夹将作为项目的子项目。</p>
<p><br><br><br></p>
<p><br>3．3．3查看文件<br>1） 在文件列表中选中要查看的文件；<br>2） 在EDIT菜单中选中view，打开对话框；<br>3）选中view SourceSafe&#8217;s copy of this file；<br>4）点击OK。</p>
<p><br>3．3．4创建工作文件夹<br>在执行签入(check in)、签出(check out)、撤消签出(undo check out)、取出最新版本(get latest version)和文件合并(merge branches)等命令时都必须使用工作文件夹。工作文件夹可以随时设定或修改，VSS系统中可以通过两种方式设置工作文件夹。<br>3．3．4．1专门创建工作文件夹<br>1） 在VSS浏览器的文件或项目列表中选中要设置工作文件夹的文件/文件夹；<br>2） 在file菜单中选择set working folder，打开对话框；<br>3） 在资源管理列表中选择或新建文件夹；<br>4） 点击OK。<br>3．3．4．2利用check out操作设置工作文件夹<br>在对文件执行check out操作时，如果该文件还没有设置工作文件夹，系统会提示用户为文件创建或指定工作文件夹，用户可以根据系统的提示对文件进行工作文件夹的设置。</p>
<p><br>3．3．5修改和编辑文件<br>1） 在edit菜单中选中edit file，打开对话框；<br>2） 选择check out this file and edit it in your working folder；<br>3） 点击OK。<br>注：如果用户已经为文件设置了工作文件夹，VSS会将该文件的一个COPY放入你的工作文件夹并打开文件，让用户进行修改和编辑；如果用户还没有为文件设置工作文件夹，VSS系统会提醒用户设置工作文件夹，用户可根据系统提示，先设置工作文件夹，才可以对文件进行编辑。</p>
<p><br>3．3．6移动文件/文件夹<br>3．3．6．1移动文件<br>你只有一种方法移动文件：将文件共享(share)到项目中，再将其从原来的项目中delete或是destroy。移动文件后，历史信息仍然有效。但是你不能用move命令来移动单个的文件。<br>3．3．6．2移动文件夹（project）<br>注：要使用移动(move)命令，必须先请管理员为你设置对移动目的项目的添加(add)权限和对源项目中文件的破坏(destroy)权限。<br>使用移动命令你可以重新定位子文件夹，将其从一个文件夹移动到另一个文件夹中。这个命令重新定义了被移动文件夹的路径。<br>这个命令不可以重命名文件；你只能通过执行重命名命令来实现它。这个移动命令不会改变文件夹的内容或其中子文件夹的历史信息，它只会影响到新的和旧的上级文件夹的历史信息。<br>警告：当你移动一个文件夹之后，就不能再如实地重建其上级文件夹的早期版本。<br>移动文件夹的具体操作步骤如下：<br>1） 选中要移动的文件夹；<br>2） 在file菜单中选中move，打开对话框；<br>3） 在列表中选择目标文件夹；<br>4） 点击OK。</p>
<p><br>3．3．7共享文件/文件夹(share)<br>1） 在VSS浏览器中选择你要共享的目标项目。<br>2） 在SourceSafe菜单中选择share，打开共享对话框。<br>3） 在file to share列表中选择你要共享的文件，如果文件没有显示，可以旁边的项目列表中查找。<br>4） 点击share。<br>5） 点击close。</p>
<p><br>3．3．8拆分文件（branch）<br>3．3．8．1拆分被共享的文件<br>1） 在浏览器中选中你想要拆分的文件；<br>2） 在SourceSafe菜单中选择branch，打开拆分对话框；<br>3） 在comment中填写备注；<br>4） 点击OK。<br>3．3．8．2用一步操作完成文件的拆分与共享<br>1） 在VSS浏览器中选择你要branch/share的项目；<br>2） 在SourceSafe菜单中打开share对话框；<br>3） 在file to share列表中选择要共享的文件，如果你要的文件没有显示，在项目列表中</p>
<p><br>3．3．9删除/恢复文件或文件夹<br>如果想从VSS中移走某个文件，你必须首先确定是仅仅从项目中移走，还是从VSS数据库中移走。你还必须确定是要删除文件，但使其能够恢复，还是永久性地破坏它。<br>VSS中有以下三种途径可以实现从数据库中移走文件。<br>3．3．3．9．1删除（delete）<br>将文件从项目中移走。该文件仍然存在于你的VSS数据库和其它共享该文件的项目中，你可以恢复它。此命令同样适用于项目。<br>1） 选择文件或项目；<br>2） 选择file菜单中的delete命令；<br>3） 点击OK。<br>3．3．3．9．2破坏（destroy）<br>删除(delete)对话框中有永久性破坏（the Destroy Permanently）选项，你一旦选中它，文件或项目将从VSS数据库中被移走，你不能再恢复它。此外，当Destroy 和Destroy Permanently命令用于共享文件时，它只作用于当前文件夹，其它共享的文件夹仍然保留该文件，该文件依然保存在VSS数据库中。<br>1） 选择文件或项目；<br>2） 选择file菜单中的delete命令；<br>3） 选中 Destroy Permanently 选项；<br>4） 点击OK。<br>3．3．3．9．3清除（Purge）<br>这个命令将永久性地移走你已经删除的文件或项目，但没有破坏它。你可以使用这一命令清空你的文件或项目中的所有内容，但不能恢复它们。<br>1） 在VSS浏览器中选中项目；<br>2） 打开file菜单的properties对话框，按delete按纽；<br>3） 在列表中选择要清除的文件名；<br>4） 点击purge；<br>5） 如果要继续，在VSS给你的提示栏中点击yes。</p>
<p><br>3．3．10查看文件/文件夹的历史信息或早期版本<br>在历史信息中保存有每一个文件的详细信息。在history对话框中，你不仅可以浏览到文件的版本信息、备注、以及文件的相关历史记录，也能够获取文件的某个旧版本。<br>注：只有文件(file)可以从历史信息中check out，文件夹（project）不能从中check out。<br>你还可以从历史信息对话框中执行get、check out、diff、pin、unpin、roll back和reprot等操作。<br>要查看历史信息：<br>1） 在tool菜单选中show history，打开history options对话框；<br>2） 点击OK。</p>
<p><br>3．3．11获取文件的最新版本<br>1） 选择你要操作的文件，也可以是多个文件或某个项目；<br>2） 在SourceSafe菜单中选择get latest version；<br>3） 如果你事先没有设定工作文件夹，VSS会提示你是否设定一个工作文件夹，点击OK，设定一个工作文件夹；<br>4） 如果你已经确定了选项，VSS就会显示get latest version对话框，你就可以从当前的项目中获取文件的最新版本的备份，它放在你的工作文件夹中。</p>
<p><br>3．3．12获取文件的早期版本<br>1） 选中你要查看的文件；<br>2） 在tool菜单中选中show history，打开history option对话框；<br>3） 点击OK，打开history对话框；<br>4） 选中你要看的版本；<br>5） 点击get，打开get对话框；<br>6） 如果你事先没有设定工作文件夹，VSS会提示你是否设定一个工作文件夹，点击OK，设定一个工作文件夹；<br>7） 在取出对话框中点击OK，文件版本的备份就会从当前项目调入你的工作文件夹。</p>
<p><br>3．3．13修改用户密码<br>使用更改密码命令来设置或更改你的密码。要更改密码，必须首先知道当前的密码，如果你忘记了自己的密码，请与管理员联系。<br>登录的时候，VSS会提示你输入密码以确认你的身份。如果管理员为你设置的用户名与你的网络名是相同的，VSS将不会再提示你输入密码。<br>注：你的VSS的密码可以与你使用的操作系统的密码相同，也可以不同，它并不会替换你操作系统的密码。<br>如何更改密码：<br>1） 从tool菜单打开change password对话框；<br>2） 在旧密码框里键入你当前的密码；<br>3） 在新密码框里键入你的新密码；<br>注：密码可以设1到15个字符，它以*的形式显示；<br>4） 在确认框里再次键入新密码；<br>5） 点OK。</p>
<p><br>3．3．15打开/关闭数据库<br>如果你使用了VSS，你的文件和项目就会被存储在一个数据库中。它安全地保存你的信息并为你提供重要的历史信息和版本跟踪。要创建新的数据库，要与VSS管理员联系。<br>3．3．15．1打开现有的数据库<br>要运行你的VSS，你必须与存储你的文件的数据库连接。这一步通常由VSS自动完成，除非你要选择其他的数据库。如果数据库还没有安装，请与管理员联系。<br>1） 从file菜单，选择open SourceSafe database，打开对话框；<br>2） 从数据库列表中选择一个数据库；<br>3） 点击open，打开数据库。<br>3．3．15．2关闭数据库<br>你只能在一个数据库中进行工作。因此，如果要关闭一个数据库，只需打开另一个数据库即可。</p>
<img src ="http://www.blogjava.net/masen/aggbug/130303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/masen/" target="_blank">Masen</a> 2007-07-14 20:59 <a href="http://www.blogjava.net/masen/articles/130303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>模式与J2EE</title><link>http://www.blogjava.net/masen/articles/128987.html</link><dc:creator>Masen</dc:creator><author>Masen</author><pubDate>Mon, 09 Jul 2007 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/masen/articles/128987.html</guid><wfw:comment>http://www.blogjava.net/masen/comments/128987.html</wfw:comment><comments>http://www.blogjava.net/masen/articles/128987.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/masen/comments/commentRss/128987.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/masen/services/trackbacks/128987.html</trackback:ping><description><![CDATA[<h2>模式与J2EE</h2>
<hr width="95%" color=red SIZE=1>
<font size=2>blueski推荐&nbsp;[2005-3-24]</font><br><font size=2>出处：来自网上</font><br><font size=2>作者：不详</font><br><font size=2>&nbsp;<font size=+0><br><br>
<p>信息工程是以当前数据系统为基础，在一个企业或企业的主要部门，关于建设信息系统的规 划、分析、设计和构成的一整套相互关联的正规化、自动化的技术应用。
<div align=right>--- James Martin&nbsp; </div>
<br>&nbsp;&nbsp;&nbsp; 正如上面信息工程的创始人James Martin为信息工程的概念所做定义类似，模式(Patterns)的创始人建筑师Christopher Alexander在&lt;模式语言，1977、1979&gt;一书中对模式的概念进行了如下描述(附注：书名后面的年份代表在各个不同时期的作品，下面形式同上)：<br>每一个模式描述了一个在我们周围不断重复发生的问题，以及该问题的解决方案的核心。这样，你就能一次又一次的使用该解决方案而不必做重复劳动。每个模式是由三部分组成的一个规则，这个规则描述特定环境、问题和解决方案之间的关系。简单的说，没有一个模式是独立的实体，每个模式都存在着相互支持，但支持的程度不同：大的模式可以内嵌小的模式，同等层次的模式并列存在，而小的模式被嵌入到大的模式之中。
<div align=right>--- Christopher Alexander&nbsp;&nbsp; </div>
<p>&nbsp;&nbsp;&nbsp; 模式的概念在软件行业被采用以后，得到的广泛的发展，现在已经存在许多种类型的模式应用，其中比较有名的箸作有：GoF(Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四人，简称：Gang of Four[GoF])的&lt;设计模式，1995&gt;，Martin Fowler的&lt;分析模式，1997&gt;，Frank Buschmann等人的&lt;体系结构模式，1996、2000&gt;、Jim O.Coplien、Niel Harrison等人的&lt;编程模式，1995、1996、1998、1999&gt;和Deepak Alur等人的&lt;J2EE核心模式，2001&gt;等，其中最具影响的是GoF的&lt;设计模式&gt;一书，书中详细讨论了三种类型，共23种模式。好的设计源于工作中经验的积累，当设计使用标准的模板以模式的方式进行交流时，模式就成了交流和重用的强大机制，并且可以改善设计和开发软件的方式。模式可以帮助我们在一个特定的环境里整理并记录已知的可重现的问题及解决方案，并且通过模式来与他人交流这些知识，这些模式可以解决在不同环境中重复出现的问题。模式可以使设计重复使用，重复使用已知的解决方案可以缩短设计和开发应用的周期，有效的使用模式，可以使我们远离重复投资的怪圈。模式的关键在于简单性和可重现性。<br>&nbsp;&nbsp;&nbsp; 举一个模式应用的简单示例。例如，在你的便携式电脑上运行一个进程中的对象，并且这些对象需要和运行在另一进程中的别的对象通信，也许这一进程并不在你的便携式电脑上，而在别的地方。你又不想让系统中的对象担心如何找寻网上的其他对象或者执行远程过程调用。这时，可以使用代理(Proxy模式，详见GoF的&lt;设计模式&gt;一书)模式来解决这个问题，你能做的事就是为这个远程对象在你的本地过程中建立一个代理对象，该代理对象和远程对象具有相同的接口。你的本地对象利用通常处理过程中的消息发送来和代理交谈。这时代理对象负责把消息传送给实在对象，而不管实在对象位于何处。<br>&nbsp;&nbsp;&nbsp; 由于下面要讲的Java 2平台的企业版(J2EE)应用模式中很多用到了设计模式与重构(Refactoring)的概念，所以在此有必要再概要介绍一下重构的概念。重构已经被证明可以阻止软件的腐朽和衰败，关于重构方面的有名箸作当然首推是Martin Fowler所写的&lt;重构，1999&gt;一书了，书中详细介绍了重构的七大类型，共70余种具体的重构手法，同时也指出测试机制在重构中的重要性。书中Martin Fowler对重构的概念进行了详细说明：<br>&nbsp;&nbsp;&nbsp; 重构是对软件内部结构的一种调整，目地是在不改变[软件之可察行为]的前提下，提高其可理解性，降低其修改成本。重构是一种有纪律的、经过训练的、有条不紊的程序整理方法，可以将整理过程中不小心引入的错误的机率降到最低，本质上说，重构就是在代码写好之后改进它的设计。重构之前，首先检查自己是否有一套可靠的测试机制，这些测试必须有我检验能力。<br>
<div align=right>--- Martin Fowler&nbsp; </div>
<br>&nbsp;&nbsp;&nbsp; 建立于Java编程语言和Java技术基础之上的J2EE平台是最适用于企业级分布式环境的应用结构，它被设计为面向多层体系的结构。J2EE包含下面关键技术：Java服务器页面(Java Service Page，JSP)、Servlet、Enterprise JavaBeans(EJB)组件、Java消息服务(Java Message Service，JMS)、JDBC和Java命名与目录接口(Java Naming and Directory Interface，JNDI)。由于J2EE平台是分层系统，所以我们将J2EE的层次模型化，这个模型使得我们将职责逻辑地分到不同的层中，共分了五个层次：客户层、表示层、业务层、集成层和资源层。因为客户层和资源层并不是J2EE平台直接关注的问题，所以后面介绍的15个J2EE应用模式全部属于上面五层中的中间三层，其中表示层模式包含与Servlet和JSP技术相关的模式、业务层模式包含与EJB技术有关的模式、集成层模式包含与JMS和JDBC有关的模式。具体模式可参看下面表格：<br><br>表一：表示层模式
<table id=AutoNumber1 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0 cellPadding=0 width="89%" border=1>
    <tbody>
        <tr>
            <td align=middle width="50%"><strong>模式名</strong></td>
            <td align=middle width="50%"><strong>简单描述</strong></td>
        </tr>
        <tr>
            <td width="50%">截取过滤器(Intercepting Filter) </td>
            <td width="50%">促进请求的预先处理和后处理</td>
        </tr>
        <tr>
            <td width="50%">前端控制器(Front Controller) </td>
            <td width="50%">提供请求处理的集中控制器</td>
        </tr>
        <tr>
            <td width="50%">视图助手(View Helper) </td>
            <td width="50%">把与表示层格式化无关的逻辑封装到助手组件</td>
        </tr>
        <tr>
            <td width="50%">复合视图(Composite View) </td>
            <td width="50%">从原子的子组件创建一个聚集视图</td>
        </tr>
        <tr>
            <td width="50%">工作者服务(Service To Worker) </td>
            <td width="50%">合并分发者组件、前端控制器和视图助手模式</td>
        </tr>
        <tr>
            <td width="50%">分发者视图(Dispatcher View) </td>
            <td width="50%">合并分发者组件、前端控制器和视图助手模式，把许多动作推迟到视图处理</td>
        </tr>
    </tbody>
</table>
<br><br>表二：业务层模式<br>
<table id=AutoNumber2 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0 cellPadding=0 width="90%" border=1>
    <tbody>
        <tr>
            <td align=middle width="50%"><strong>模式名</strong></td>
            <td align=middle width="50%"><strong>简单描述</strong></td>
        </tr>
        <tr>
            <td width="50%">业务委托(Business Delegate) </td>
            <td width="50%">把表示层和服务层分隔开，并且提供服务的外观和代理接口</td>
        </tr>
        <tr>
            <td width="50%">值对象(Value Object) </td>
            <td width="50%">通过减少网络对话，以加速层之间的数据交换</td>
        </tr>
        <tr>
            <td width="50%">会话外观(Session Facade) </td>
            <td width="50%">隐藏业务对象复性，集中化工作流处理</td>
        </tr>
        <tr>
            <td width="50%">复合实体(Composite Entity) </td>
            <td width="50%">通过把参数相关的对象分组进单个实体bean，表示设计粗粒度实体bean的最好经验</td>
        </tr>
        <tr>
            <td width="50%">值对象组装器(Value Object Assembler) </td>
            <td width="50%">把来自多个数据源的值对象组装成一个复合值对象</td>
        </tr>
        <tr>
            <td width="50%">值列表处理器(Value List Handler) </td>
            <td width="50%">管理查询执行、结果缓冲、以及结果处理</td>
        </tr>
        <tr>
            <td width="50%">服务定位器(Service Locator) </td>
            <td width="50%">封装业务服务查找和创建的复杂性，定位业务服务工厂</td>
        </tr>
    </tbody>
</table>
<br><br>表三：集成层模式<br>
<table id=AutoNumber3 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0 cellPadding=0 width="91%" border=1>
    <tbody>
        <tr>
            <td align=middle width="50%"><strong>模式名</strong></td>
            <td align=middle width="50%"><strong>简单描述</strong></td>
        </tr>
        <tr>
            <td width="50%">数据访问对象(Data Access Object) </td>
            <td width="50%">抽象数据源，提供对数据的透明访问</td>
        </tr>
        <tr>
            <td width="50%">服务激发器(Service Activator) </td>
            <td width="50%">加速EJB组件的异步处理</td>
        </tr>
    </tbody>
</table>
<p>&nbsp;&nbsp;&nbsp; 由于J2EE模式众多，篇幅有限，这里只概要介绍其中的一种应用模式 - 集成层的数据访问对象(DAO)模式，有兴趣的读者可以参看下面参考文献中的资料。<br>数据访问对象模式<br><br><img src="http://www.sawin.cn/doc/share/324734.gif"> 数据访问对象模式<br><br>1、问题<br>&nbsp;&nbsp;&nbsp; 根据数据源不同，数据访问也不同。根据存储的类型(关系数据库、面向对象数据库等)和供应商不同，持久性存储(比如数据库)的访问差别也很大。当业务组件(如会话bean)或表示组件(如助手组件)需要访问某数据源时，它们可以使用合适的API来获得连接性，以及操作该数据源。但是在这些组件中包含连接性和数据访问代码会引入这些组件及数据源实现之间的紧密耦合。组件中这类代码依赖性使应用程序从某种数据源迁移到其它种类的数据源将变得非常麻烦和困难，当数据源变化时，组件也需要改变，以便于能够处理新类型的数据源。<br><br>2、解决方案<br>&nbsp;&nbsp;&nbsp; 使用数据访问对象(DAO)来抽象和封装所有对数据源的访问。DAO管理着与数据源的连接以便于检索和存储数据，DAO实现了用来操作数据源的访问机制。依赖于DAO的业务组件为其客户端使用DAO提供了更简单的接口，DAO完全向客户端隐藏了数据源实现细节。由于当低层数据源实现变化时，DAO向客户端提供的接口不会变化，所以该模式允许DAO调整到不同的存储模式，而不会影响其客户端或业务组件。重要的是，DAO充当组件和数据源之间的适配器。<br><br>3、实现策略<br>&nbsp;&nbsp;&nbsp; 通过调整抽象工厂(Abstract Factory)模式和工厂方法(Factory Method，这二个创建型模式的实现详情可参看GoF的&lt;设计模式&gt;一书)模式，DAO模式可以达到很高的灵活度。
<ul>
    <li>当低层存储不会随着实现变化而变化时，可以使用工厂方法模式来实现该策略，以产生应用程序需要的大量DAO，如下面类图1所示。
    <li>当低层存储随着实现的变化而变化时，策略可以通过使用抽象工厂模式而实现。抽象工厂可以基于工厂方法实现而创建，并可使用工厂方法实现，该策略提供一个DAO的抽象工厂对象，其中该对象可以构造多种类型的具体的DAO工厂，每个工厂支持一种不同类型的持久性存储实现。一旦你获取某特定实现的具体DAO工厂，你可以使用它来生成该实现中所支持和实现的DAO，如下面类图2所示。 <br><br><br><img src="http://www.sawin.cn/doc/share/324822.jpg" border=0> </li>
</ul>
<br>4、应用<br>&nbsp;&nbsp;&nbsp; 当数据访问代码被直接嵌入到有其他不相关职责的某类中时，就会使修改变的十分困难。这时可以采用分离数据访问代码的解决方案，将数据访问代码抽取到一个新类中，并且把该新类逻辑或者物理地移动到离数据源比较近的位置，这样可以增强模块性和可重用性，如下面图3所示。具体作法可以使用提炼类(Extract Class，一种重构手法，细节可参看Martin的&lt;重构&gt;一书)方法创建一个新类，并将原来类中把数据访问代码移动到这个新的数据访问对象(DAO)类，使用这个新的DAO对象从控制器类中访问数据。<br>&nbsp;&nbsp;&nbsp; 示例：持久性逻辑被嵌入到一个使用新DAO对象管理的持久性的某企业新DAO对象中，把持久性代码和该企业新DAO对象代码结合起来会创建脆弱的、紧密耦合的代码。当持久性代码是该企业新DAO对象的一部分时，对该持久性存储的任何改动都要求更改该新DAO对象的持久性代码。这种耦合对企业新DAO对象代码维护会带来负面的影响。下面图4为运用分离数据访问对象方法对其进行重构改进后的结果。<br><br><br><img src="http://www.sawin.cn/doc/share/324830.jpg" border=0><br>&nbsp;&nbsp;&nbsp; 在15个J2EE模式中，每个模式都作用于设计模式和构架模式之间的某些方面。每个模式不是孤立存在的，需要其它模式的支持才能更加体现其含义和用处，为了最大限度的用好模式，还需要充分理解模式之间的关系。 <br><br><img src="http://www.sawin.cn/doc/share/324734.gif"> 参考文献
<p>&#160;</p>
<ul>
    <li>系统分析员教程 --- 罗晓沛等箸
    <li>设计模式：可复用面向对象软件的元素 --- 李英军等译
    <li>重构-改善既有代码的设计 --- 侯捷等译
    <li>J2EE核心模式 --- 牛志奇等译
    <li>UML精粹(第二版) --- 徐家福译</li>
</ul>
<p>&#160;</p>
<!--here is the bottom-->
<p>&nbsp;</p>
</font></font>
<img src ="http://www.blogjava.net/masen/aggbug/128987.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/masen/" target="_blank">Masen</a> 2007-07-09 10:34 <a href="http://www.blogjava.net/masen/articles/128987.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CMMI</title><link>http://www.blogjava.net/masen/articles/125999.html</link><dc:creator>Masen</dc:creator><author>Masen</author><pubDate>Sun, 24 Jun 2007 15:57:00 GMT</pubDate><guid>http://www.blogjava.net/masen/articles/125999.html</guid><wfw:comment>http://www.blogjava.net/masen/comments/125999.html</wfw:comment><comments>http://www.blogjava.net/masen/articles/125999.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/masen/comments/commentRss/125999.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/masen/services/trackbacks/125999.html</trackback:ping><description><![CDATA[<table height=292 cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td align=left bgColor=#ffffff height=30>
            <div align=center>发表日期：2006-5-29</span>&nbsp; <span>&nbsp;&nbsp; 来源：北软金分 &nbsp; &nbsp;&nbsp; </div>
            </span></td>
        </tr>
        <tr>
            <td align=middle bgColor=#ffffff height=10></td>
        </tr>
        <tr>
            <td align=middle width="100%" bgColor=#ffffff colSpan=2>
            <table height=19 cellSpacing=0 cellPadding=0 width="92%" border=0>
                <tbody>
                    <tr>
                        <td align=left>&nbsp;&nbsp;&nbsp;&nbsp; 什么是CMMI？<br><br>&nbsp;&nbsp;&nbsp;软件能力成熟度模型(Capability Maturity Model For Software ,简称SW-CMM/CMMI),是由美国卡内基梅隆大学软件工程研究所(CMU SEI)研究出的一种用于评价软件承包商能力并帮助改善软件质量的方法，其目的是帮助软件企业对软件工程过程进行管理和改进，增强开发与改进能力，从而能按时地、不超预算地开发出高质量的软件。其所依据的想法是：只要集中精力持续努力去建立有效的软件工程过程的基础结构，不断进行管理的实践和过程的改进，就可以克服软件开发中的困难。CMM/CMMI是目前国际上最流行、最实用的一种软件生产过程标准，已经得到了国际软件产业界的认可，成为当今(企业)从事规模软件生产不可缺少的一项内容。<br><br>
                        <table cellSpacing=1 cellPadding=0 width=405 border=0>
                            <tbody>
                                <tr>
                                    <td width=13>
                                    <p align=left>&nbsp;</p>
                                    </td>
                                    <td width=119>
                                    <p align=center><strong><span>CMM</span></strong></p>
                                    </td>
                                    <td width=119>
                                    <p align=center><strong><span>CMMI</span></strong></p>
                                    </td>
                                    <td width=268>
                                    <p align=center><strong><span>CMM</span></strong><strong><span>与</span></strong><strong><span>CMMI</span></strong><strong><span>区别</span></strong></p>
                                    </td>
                                </tr>
                                <tr>
                                    <td vAlign=top>
                                    <p align=center><span>1.</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <p align=left><span>需求管理</span><span>RM</span><span><br></span><span>Requirements </span><span><br></span><span>Management</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <p align=left><span>需求管理</span><span> </span><span>RM</span><span><br></span><span>Requirements </span><span><br></span><span>Management</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <table cellSpacing=0 cellPadding=0 width=201 border=0>
                                        <tbody>
                                            <tr>
                                                <td width=10>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>要与需求开发</span><span>Requirement Development </span><span>并行工作</span></p>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>明确要求需求的可追溯性</span></p>
                                                </td>
                                            </tr>
                                        </tbody>
                                    </table>
                                    <p align=left></p>
                                    </td>
                                </tr>
                                <tr>
                                    <td vAlign=top>
                                    <p align=center><span>2.</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <p align=left><span>软件项目策划</span><span>SPP</span><span><br></span><span>Software Project </span><span><br></span><span>Planning </span></p>
                                    </td>
                                    <td vAlign=top>
                                    <p align=left><span>项目策划</span><span>PP</span><span><br></span><span>Project Planning</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <table cellSpacing=0 cellPadding=0 width=201 border=0>
                                        <tbody>
                                            <tr>
                                                <td width=10>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>强调相关人员的参与</span></p>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>要有具体的任务分解表</span><span>WBS</span></p>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>关注项目技巧的获得</span></p>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>项目数据的数据管理</span></p>
                                                </td>
                                            </tr>
                                        </tbody>
                                    </table>
                                    <p align=left></p>
                                    </td>
                                </tr>
                                <tr>
                                    <td vAlign=top>
                                    <p align=center><span>3.</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <p align=left><span>软件项目跟踪与监控</span><span><br></span><span>SPTO</span><span><br></span><span>SoftwareProject </span><span><br></span><span>Tracking and Oversight </span></p>
                                    </td>
                                    <td vAlign=top>
                                    <p align=left><span>项目监督与控制</span><span>PMC</span><span><br></span><span>Project Monitoring</span><span><br></span><span>and Control</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <table cellSpacing=0 cellPadding=0 width=201 border=0>
                                        <tbody>
                                            <tr>
                                                <td width=10>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>监控具体实践级别上的约定</span></p>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>强调对风险和相关人员参与的监督</span></p>
                                                </td>
                                            </tr>
                                        </tbody>
                                    </table>
                                    <p align=left></p>
                                    </td>
                                </tr>
                                <tr>
                                    <td vAlign=top>
                                    <p align=center><span>4.</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <p align=left><span>软件子合同管理</span><span><br></span><span>SSM</span><span><br></span><span>Software Subcontract</span><span><br></span><span>Management</span><span> </span></p>
                                    </td>
                                    <td vAlign=top>
                                    <p align=left><span>供应商合同管理</span><span>SAM</span><span><br></span><span>Supplier Agreement </span><span><br></span><span>Management</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <table cellSpacing=0 cellPadding=0 width=201 border=0>
                                        <tbody>
                                            <tr>
                                                <td width=10>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>引入了原</span><span>"</span><span>子商管理</span><span>"</span><span>和</span><span>"</span><span>组间协调</span><span>"</span><span>的意图</span></p>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>强调合同的概念</span></p>
                                                </td>
                                            </tr>
                                        </tbody>
                                    </table>
                                    <p align=left><span></span>&nbsp;</p>
                                    </td>
                                </tr>
                                <tr>
                                    <td vAlign=top>
                                    <p align=center><span>5.</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <p align=left><span>软件质量保证</span><span>SQA</span><span><br></span><span>Software Quality</span><span><br></span><span>Assurance</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <p align=left><span>过程和产品质量保证</span><span> </span><span><br></span><span>PPQA</span><span><br></span><span>Process and Product</span><span><br></span><span>Quality Assurance</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <table cellSpacing=0 cellPadding=0 width=201 border=0>
                                        <tbody>
                                            <tr>
                                                <td width=10>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>强调对过程及工作产品的客观评价</span></p>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>要正式建立评价标准</span></p>
                                                </td>
                                            </tr>
                                        </tbody>
                                    </table>
                                    <p align=left></p>
                                    </td>
                                </tr>
                                <tr>
                                    <td vAlign=top>
                                    <p align=center><span>6.</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <p align=left><span>软件配置管理</span><span>SCM</span><span><br></span><span>Software Configuration Management</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <p align=left><span>配置管理</span><span>CM</span><span><br></span><span>Configuration Management</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <table cellSpacing=0 cellPadding=0 width=201 border=0>
                                        <tbody>
                                            <tr>
                                                <td vAlign=top width=10>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span><span>"</span><span>Software Library</span></span><span>软件库</span><span>" </span><span>被</span><span><span>"</span><span>Configuration Management System</span></span><span>配置管理系统</span><span>"</span><span>代替</span></p>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td vAlign=top>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>配置管理系统包括存储介质，规程和登陆配置系统的工具</span></p>
                                                </td>
                                            </tr>
                                        </tbody>
                                    </table>
                                    <p align=left></p>
                                    </td>
                                </tr>
                                <tr>
                                    <td vAlign=top>
                                    <p align=center><span>7.</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <p align=left><span></span></p>
                                    </td>
                                    <td vAlign=top>
                                    <p align=left><span>度量与分析</span><span> </span><span>MA</span><span><br></span><span>Measurement and Analysis</span></p>
                                    </td>
                                    <td vAlign=top>
                                    <table cellSpacing=0 cellPadding=0 width=201 border=0>
                                        <tbody>
                                            <tr>
                                                <td width=10>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>新的过程区域</span></p>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>比原来共同特性中的</span><span>"</span><span>度量与分析</span><span>"</span><span>部分要求要多</span></p>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td>
                                                <p align=left><span>&#183;</span></p>
                                                </td>
                                                <td>
                                                <p align=left><span>要求组织能够系统地开发并发展自己的度量</span></p>
                                                </td>
                                            </tr>
                                        </tbody>
                                    </table>
                                    <p align=left></p>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMM/CMMI将软件过程的成熟度分为5个等级,以下是5个等级的基本特征：<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;(1)初始级(initial)。工作无序，项目进行过程中常放弃当初的计划。管理无章法，缺乏健全的管理制度。开发项目成效不稳定，项目成功主要依靠项目负责人的经验和能力，他一但离去，工作秩序面目全非。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;(2)可重复级(Repeatable)。管理制度化，建立了基本的管理制度和规程，管理工作有章可循。 初步实现标准化，开发工作比较好地按标准实施。 变更依法进行，做到基线化，稳定可跟踪，新项目的计划和管理基于过去的实践经验，具有重复以前成功项目的环境和条件。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;(3)已定义级(Defined)。开发过程，包括技术工作和管理工作，均已实现标准化、文档化。建立了完善的培训制度和专家评审制度，全部技术活动和管理活动均可控制，对项目进行中的过程、岗位和职责均有共同的理解 。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;(4)已管理级(Managed)。产品和过程已建立了定量的质量目标。开发活动中的生产率和质量是可量度的。已建立过程数据库。已实现项目产品和过程的控制。可预测过程和产品质量趋势，如预测偏差，实现及时纠正。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;(5)优化级(Optimizing)。可集中精力改进过程，采用新技术、新方法。拥有防止出现缺陷、识别薄弱环节以及加以改进的手段。可取得过程有效性的统计数据，并可据进行分析，从而得出最佳方法</td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/masen/aggbug/125999.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/masen/" target="_blank">Masen</a> 2007-06-24 23:57 <a href="http://www.blogjava.net/masen/articles/125999.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件开发:需求分析的20条法则（收藏） </title><link>http://www.blogjava.net/masen/articles/111043.html</link><dc:creator>Masen</dc:creator><author>Masen</author><pubDate>Mon, 16 Apr 2007 10:20:00 GMT</pubDate><guid>http://www.blogjava.net/masen/articles/111043.html</guid><wfw:comment>http://www.blogjava.net/masen/comments/111043.html</wfw:comment><comments>http://www.blogjava.net/masen/articles/111043.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/masen/comments/commentRss/111043.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/masen/services/trackbacks/111043.html</trackback:ping><description><![CDATA[邢学慧/(IT经理世界) <br><br>　　　对商业用户来说，他们后面是成百上千个供应商，前面是成千上万个消费顾客。怎样利用软件管理错综复杂的供应商和消费顾客，如何做好精细到一个小小调料包的进、销、调、存的商品流通工作，这些都是商业企业需要信息管理系统的理由。软件开发的意义也就在于此。而弄清商业用户如此复杂需求的真面目，正是软件开发成功的关键所在。 <br>---　　经理：&#8220;我们要建立一套完整的商业管理软件系统，包括商品的进、销、调、存管理，是总部-门店的连锁经营模式。通过通信手段门店自动订货，供应商自动结算，卖场通过扫条码实现销售，管理人员能够随时查询门店商品销售和库存情况。另外，我们也得为政府部门提供关于商品营运的报告。&#8221; <br><br>--　　-分析员：&#8220;我已经明白这个项目的大体结构框架，这非常重要，但在制定计划之前，我们必须收集一些需求。&#8221; <br><br>--　　-经理觉得奇怪：&#8220;我不是刚告诉你我的需求了吗？&#8221; <br><br>--　　-分析员：&#8220;实际上，您只说明了整个项目的概念和目标。这些高层次的业务需求不足以提供开发的内容和时间。我需要与实际将要使用系统的业务人员进行讨论，然后才能真正明白达到业务目标所需功能和用户要求，了解清楚后，才可以发现哪些是现有组件即可实现的，哪些是需要开发的，这样可节省很多时间。&#8221; <br><br>--　　-经理：&#8220;业务人员都在招商。他们非常忙，没有时间与你们详细讨论各种细节。你能不能说明一下你们现有的系统？&#8221; <br><br>---　　分析员尽量解释从用户处收集需求的合理性：&#8220;如果我们只是凭空猜想用户的要求，结果不会令人满意。我们只是软件开发人员，而不是采购专家、营运专家或是财务专家，我们并不真正明白您这个企业内部运营需要做些什么。我曾经尝试过，未真正明白这些问题就开始编码，结果没有人对产品满意。&#8221; <br><br>---　　经理坚持道：&#8220;行了，行了，我们没有那么多的时间。让我来告诉您我们的需求。实际上我也很忙。请马上开始开发，并随时将你们的进展情况告诉我。&#8221; <br><br>---　　风险躲在需求的迷雾之后 <br><br>-　　--以上我们看到的是某客户项目经理与系统开发小组的分析人员讨论业务需求。在项目开发中，所有的项目风险承担者都对需求分析阶段备感兴趣。这里所指的风险承担者包括客户方面的项目负责人和用户，开发方面的需求分析人员和项目管理者。这部分工作做得到位，能开发出很优秀的软件产品，同时也会令客户满意。若处理不好，则会导致误解、挫折、障碍以及潜在的质量和业务价值上的威胁。因此可见——需求分析奠定了软件工程和项目管理的基础。 <br><br>--　　-拨开需求分析的迷雾 <br><br>---　　像这样的对话经常出现在软件开发的过程中。客户项目经理的需求对分析人员来讲，像&#8220;雾里看花&#8221;般模糊并令开发者感到困惑。那么，我们就拨开雾影，分析一下需求的具体内容： <br><br>--　-&#183;业务需求——反映了组织机构或客户对系统、产品高层次的目标要求，通常在项目定义与范围文档中予以说明。 <br><br>---　&#183;用户需求——描述了用户使用产品必须要完成的任务，这在使用实例或方案脚本中予以说明。 <br><br>---　&#183;功能需求——定义了开发人员必须实现的软件功能，使用户利用系统能够完成他们的任务，从而满足了业务需求。 <br><br>--　-&#183;非功能性的需求——描述了系统展现给用户的行为和执行的操作等，它包括产品必须遵从的标准、规范和约束，操作界面的具体细节和构造上的限制。 <br><br>---　&#183;需求分析报告——报告所说明的功能需求充分描述了软件系统所应具有的外部行为。&#8220;需求分析报告&#8221;在开发、测试、质量保证、项目管理以及相关项目功能中起着重要作用。 <br><br>---　前面提到的客户项目经理通常阐明产品的高层次概念和主要业务内容，为后继工作建立了一个指导性的框架。其他任何说明都应遵循&#8220;业务需求&#8221;的规定，然而&#8220;业务需求&#8221;并不能为开发人员提供开发所需的许多细节说明。 <br><br>---　下一层次需求——用户需求，必须从使用产品的用户处收集。因此，这些用户构成了另一种软件客户，他们清楚要使用该产品完成什么任务和一些非功能性的特性需求。例如：程序的易用性、健壮性和可靠性，而这些特性将会使用户很好地接受具有该特点的软件产品。 <br><br>---　经理层有时试图代替实际用户说话，但通常他们无法准确说明&#8220;用户需求&#8221;。用户需求来自产品的真正使用者，必须让实际用户参与到收集需求的过程中。如果不这样做，产品很可能会因缺乏足够的信息而遗留不少隐患。 <br><br>---　在实际需求分析过程中，以上两种客户可能都觉得没有时间与需求分析人员讨论，有时客户还希望分析人员无须讨论和编写需求说明就能说出用户的需求。除非遇到的需求极为简单；否则不能这样做。如果您的组织希望软件成功，那么必须要花上数天时间来消除需求中模糊不清的地方和一些使开发者感到困惑的方面。 <br><br>---　优秀的软件产品建立在优秀的需求基础之上，而优秀的需求源于客户与开发人员之间有效的交流和合作。只有双方参与者都明白自己需要什么、成功的合作需要什么时，才能建立起一种良好的合作关系。 <br><br>---　由于项目的压力与日俱增，所有项目风险承担者有着一个共同目标，那就是大家都想开发出一个既能实现商业价值又能满足用户要求，还能使开发者感到满足的优秀软件产品。 <br><br>--　-客户的需求观 <br><br>--　-客户与开发人员交流需要好的方法。下面建议20条法则，客户和开发人员可以通过评审以下内容并达成共识。如果遇到分歧，将通过协商达成对各自义务的相互理解，以便减少以后的磨擦（如一方要求而另一方不愿意或不能够满足要求）。 <br><br>---　1、 分析人员要使用符合客户语言习惯的表达 <br><br>---　需求讨论集中于业务需求和任务，因此要使用术语。客户应将有关术语（例如：采价、印花商品等采购术语）教给分析人员，而客户不一定要懂得计算机行业的术语。 <br><br>---　2、分析人员要了解客户的业务及目标 <br><br>---　只有分析人员更好地了解客户的业务，才能使产品更好地满足需要。这将有助于开发人员设计出真正满足客户需要并达到期望的优秀软件。为帮助开发和分析人员，客户可以考虑邀请他们观察自己的工作流程。如果是切换新系统，那么开发和分析人员应使用一下目前的旧系统，有利于他们明白目前系统是怎样工作的，其流程情况以及可供改进之处。s <br><br>---　3、 分析人员必须编写软件需求报告 <br><br>---　分析人员应将从客户那里获得的所有信息进行整理，以区分业务需求及规范、功能需求、质量目标、解决方法和其他信息。通过这些分析，客户就能得到一份&#8220;需求分析报告&#8221;，此份报告使开发人员和客户之间针对要开发的产品内容达成协议。报告应以一种客户认为易于翻阅和理解的方式组织编写。客户要评审此报告，以确保报告内容准确完整地表达其需求。一份高质量的&#8220;需求分析报告&#8221;有助于开发人员开发出真正需要的产品。 <br><br>---　4、 要求得到需求工作结果的解释说明 <br><br>---　分析人员可能采用了多种图表作为文字性&#8220;需求分析报告&#8221;的补充说明，因为工作图表能很清晰地描述出系统行为的某些方面，所以报告中各种图表有着极高的价值；虽然它们不太难于理解，但是客户可能对此并不熟悉，因此客户可以要求分析人员解释说明每个图表的作用、符号的意义和需求开发工作的结果，以及怎样检查图表有无错误及不一致等。 <br><br>---　5、 开发人员要尊重客户的意见 <br><br>---　如果用户与开发人员之间不能相互理解，那关于需求的讨论将会有障碍。共同合作能使大家&#8220;兼听则明&#8221;。参与需求开发过程的客户有权要求开发人员尊重他们并珍惜他们为项目成功所付出的时间，同样，客户也应对开发人员为项目成功这一共同目标所做出的努力表示尊重。 <br><br>---　6、 开发人员要对需求及产品实施提出建议和解决方案 <br><br>---　通常客户所说的&#8220;需求&#8221;已经是一种实际可行的实施方案，分析人员应尽力从这些解决方法中了解真正的业务需求，同时还应找出已有系统与当前业务不符之处，以确保产品不会无效或低效；在彻底弄清业务领域内的事情后，分析人员就能提出相当好的改进方法，有经验且有创造力的分析人员还能提出增加一些用户没有发现的很有价值的系统特性。 <br><br>---　7、 描述产品使用特性 <br><br>---　客户可以要求分析人员在实现功能需求的同时还注意软件的易用性，因为这些易用特性或质量属性能使客户更准确、高效地完成任务。例如：客户有时要求产品要&#8220;界面友好&#8221;或&#8220;健壮&#8221;或&#8220;高效率&#8221;，但对于开发人员来讲，太主观了并无实用价值。正确的做法是，分析人员通过询问和调查了解客户所要的&#8220;友好、健壮、高效所包含的具体特性，具体分析哪些特性对哪些特性有负面影响，在性能代价和所提出解决方案的预期利益之间做出权衡，以确保做出合理的取舍。 <br><br>---　8、 允许重用已有的软件组件 <br><br>---　需求通常有一定灵活性，分析人员可能发现已有的某个软件组件与客户描述的需求很相符，在这种情况下，分析人员应提供一些修改需求的选择以便开发人员能够降低新系统的开发成本和节省时间，而不必严格按原有的需求说明开发。所以说，如果想在产品中使用一些已有的商业常用组件，而它们并不完全适合您所需的特性，这时一定程度上的需求灵活性就显得极为重要了。 <br><br>---　9、 要求对变更的代价提供真实可靠的评估 <br><br>---　有时，人们面临更好、也更昂贵的方案时，会做出不同的选择。而这时，对需求变更的影响进行评估从而对业务决策提供帮助，是十分必要的。所以，客户有权利要求开发人员通过分析给出一个真实可信的评估，包括影响、成本和得失等。开发人员不能由于不想实施变更而随意夸大评估成本。 <br><br>---　10、 获得满足客户功能和质量要求的系统 <br><br>---　每个人都希望项目成功，但这不仅要求客户要清晰地告知开发人员关于系统&#8220;做什么&#8221;所需的所有信息，而且还要求开发人员能通过交流了解清楚取舍与限制，一定要明确说明您的假设和潜在的期望，否则，开发人员开发出的产品很可能无法让您满意。 <br><br>---　11、 给分析人员讲解您的业务 <br><br>---　分析人员要依靠客户讲解业务概念及术语，但客户不能指望分析人员会成为该领域的专家，而只能让他们明白您的问题和目标；不要期望分析人员能把握客户业务的细微潜在之处，他们可能不知道那些对于客户来说理所当然的&#8220;常识&#8221;。 <br><br>---　12、 抽出时间清楚地说明并完善需求 <br><br>---　客户很忙，但无论如何客户有必要抽出时间参与&#8220;头脑高峰会议&#8221;的讨论，接受采访或其他获取需求的活动。有些分析人员可能先明白了您的观点，而过后发现还需要您的讲解，这时请耐心对待一些需求和需求的精化工作过程中的反复，因为它是人们交流中很自然的现象，何况这对软件产品的成功极为重要。 <br><br>---　13、 准确而详细地说明需求 <br><br>---　编写一份清晰、准确的需求文档是很困难的。由于处理细节问题不但烦人而且耗时，因此很容易留下模糊不清的需求。但是在开发过程中，必须解决这种模糊性和不准确性，而客户恰恰是为解决这些问题作出决定的最佳人选，否则，就只好靠开发人员去正确猜测了。 <br><br>---　在需求分析中暂时加上&#8220;待定&#8221;标志是个方法。用该标志可指明哪些是需要进一步讨论、分析或增加信息的地方，有时也可能因为某个特殊需求难以解决或没有人愿意处理它而标注上&#8220;待定&#8221;。客户要尽量将每项需求的内容都阐述清楚，以便分析人员能准确地将它们写进&#8220;软件需求报告&#8221;中去。如果客户一时不能准确表达，通常就要求用原型技术，通过原型开发，客户可以同开发人员一起反复修改，不断完善需求定义。 <br><br>---　14、 及时作出决定 <br><br>---　分析人员会要求客户作出一些选择和决定，这些决定包括来自多个用户提出的处理方法或在质量特性冲突和信息准确度中选择折衷方案等。有权作出决定的客户必须积极地对待这一切，尽快做处理，做决定，因为开发人员通常只有等客户做出决定才能行动，而这种等待会延误项目的进展。 <br><br>---　15、 尊重开发人员的需求可行性及成本评估 <br><br>---　所有的软件功能都有其成本。客户所希望的某些产品特性可能在技术上行不通，或者实现它要付出极高的代价，而某些需求试图达到在操作环境中不可能达到的性能，或试图得到一些根本得不到的数据。开发人员会对此作出负面的评价，客户应该尊重他们的意见。 <br><br>---　16、 划分需求的优先级 <br><br>---　绝大多数项目没有足够的时间或资源实现功能性的每个细节。决定哪些特性是必要的，哪些是重要的，是需求开发的主要部分，这只能由客户负责设定需求优先级，因为开发者不可能按照客户的观点决定需求优先级；开发人员将为您确定优先级提供有关每个需求的花费和风险的信息。 <br><br>---　在时间和资源限制下，关于所需特性能否完成或完成多少应尊重开发人员的意见。尽管没有人愿意看到自己所希望的需求在项目中未被实现，但毕竟是要面对现实，业务决策有时不得不依据优先级来缩小项目范围或延长工期，或增加资源，或在质量上寻找折衷。 <br><br>---　17、 评审需求文档和原型 <br><br>---　客户评审需求文档，是给分析人员带来反馈信息的一个机会。如果客户认为编写的&#8220;需求分析报告&#8221;不够准确，就有必要尽早告知分析人员并为改进提供建议。 <br><br>---　更好的办法是先为产品开发一个原型。这样客户就能提供更有价值的反馈信息给开发人员，使他们更好地理解您的需求；原型并非是一个实际应用产品，但开发人员能将其转化、扩充成功能齐全的系统。 <br><br>---　18、 需求变更要立即联系 <br><br>---　不断的需求变更，会给在预定计划内完成的质量产品带来严重的不利影响。变更是不可避免的，但在开发周期中，变更越在晚期出现，其影响越大；变更不仅会导致代价极高的返工，而且工期将被延误，特别是在大体结构已完成后又需要增加新特性时。所以，一旦客户发现需要变更需求时，请立即通知分析人员。 <br><br>---　19、 遵照开发小组处理需求变更的过程 <br><br>---　为将变更带来的负面影响减少到最低限度，所有参与者必须遵照项目变更控制过程。这要求不放弃所有提出的变更，对每项要求的变更进行分析、综合考虑，最后做出合适的决策，以确定应将哪些变更引入项目中。 <br><br>---　20、 尊重开发人员采用的需求分析过程 <br><br>---　软件开发中最具挑战性的莫过于收集需求并确定其正确性，分析人员采用的方法有其合理性。也许客户认为收集需求的过程不太划算，但请相信花在需求开发上的时间是非常有价值的；如果您理解并支持分析人员为收集、编写需求文档和确保其质量所采用的技术，那么整个过程将会更为顺利。 <br><br>---　&#8220;需求确认&#8221;意味着什么 <br><br>---　在&#8220;需求分析报告&#8221;上签字确认，通常被认为是客户同意需求分析的标志行为，然而实际操作中，客户往往把&#8220;签字&#8221;看作是毫无意义的事情。&#8220;他们要我在需求文档的最后一行下面签名，于是我就签了，否则这些开发人员不开始编码。&#8221; <br><br>---　这种态度将带来麻烦，譬如客户想更改需求或对产品不满时就会说：&#8220;不错，我是在需求分析报告上签了字，但我并没有时间去读完所有的内容，我是相信你们的，是你们非让我签字的。&#8221; <br><br>---　同样问题也会发生在仅把&#8220;签字确认&#8221;看作是完成任务的分析人员身上，一旦有需求变更出现，他便指着&#8220;需求分析报告&#8221;说：&#8220;您已经在需求上签字了，所以这些就是我们所开发的，如果您想要别的什么，您应早些告诉我们。&#8221; <br><br>---　这两种态度都是不对的。因为不可能在项目的早期就了解所有的需求，而且毫无疑问地需求将会出现变更，在&#8220;需求分析报告&#8221;上签字确认是终止需求分析过程的正确方法，所以我们必须明白签字意味着什么。 <br><br>---　对&#8220;需求分析报告&#8221;的签名是建立在一个需求协议的基线上，因此我们对签名应该这样理解：&#8220;我同意这份需求文档表述了我们对项目软件需求的了解，进一步的变更可在此基线上通过项目定义的变更过程来进行。我知道变更可能会使我们重新协商成本、资源和项目阶段任务等事宜。&#8221;对需求分析达成一定的共识会使双方易于忍受将来的摩擦，这些摩擦来源于项目的改进和需求的误差或市场和业务的新要求等。 <br><br>---　需求确认将迷雾拨散，显现需求的真面目，给初步的需求开发工作画上了双方都明确的句号，并有助于形成一个持续良好的客户与开发人员的关系，为项目的成功奠定了坚实的基础
<img src ="http://www.blogjava.net/masen/aggbug/111043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/masen/" target="_blank">Masen</a> 2007-04-16 18:20 <a href="http://www.blogjava.net/masen/articles/111043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>与客户合作的 6 种方法(转)</title><link>http://www.blogjava.net/masen/articles/108968.html</link><dc:creator>Masen</dc:creator><author>Masen</author><pubDate>Fri, 06 Apr 2007 08:27:00 GMT</pubDate><guid>http://www.blogjava.net/masen/articles/108968.html</guid><wfw:comment>http://www.blogjava.net/masen/comments/108968.html</wfw:comment><comments>http://www.blogjava.net/masen/articles/108968.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/masen/comments/commentRss/108968.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/masen/services/trackbacks/108968.html</trackback:ping><description><![CDATA[<p>在当前的商业气候之下，由于销售不景气，消费者对商品购买更加的理智，聪明的企业需要固守一些基本的商业法则。即：</p>
<table cellSpacing=0 cellPadding=0 border=0>
    <tbody>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>掌握客户的规律</p>
            </td>
        </tr>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>提高竞争力</p>
            </td>
        </tr>
    </tbody>
</table>
<p>但是，过去那些以客户为中心，以客户的满意度和忠诚度作为目标的战略并未过时。过去，那些家庭经营的小零售商店只要有新货到来，老板就会打电话通知回头客。在二十一世纪，这种做法同样没有过时，你应该及时向客户提供商品及其折扣信息。</p>
<h3></h3>
<p>您可以利用网上应用程序，让您与重要客户保持即时沟通。</p>
<p>以下是六种通过技术手段与客户保持合作的方法：</p>
<h3>1. 在线共享文档</h3>
<p>当进行团队或者远程办公的时候，你能够使用&#8220;微软SharePoint团队服务&#8221;等程序建立一种安全的核心网站。这种群件站点通过密码进行访问，每位成员（客户或员工）能够跟踪项目的每一个进展情况。</p>
<p>Pam Stein 是美国佛罗里达州伯克莱市 Clientise.com互联网营销公司的创始人，他说：&#8220;这是一种非常有效的工作方式&#8221;。例如，假设有一份合同样本需要用户填上详细资料，您可以将文件放在网站上，这样，每一个人都可以在屏幕上阅读，修改这份合同。</p>
<p>Stein 说：&#8220;但是，文档共享实际上只能在有控制机制的参与下才能够发挥其作用。&#8221;他认为，应该建立一种系统，以确保一次只有一个有效的版本起作用。Stein打比方说：&#8220;这就象是图书馆，同一本书有人借，有人还。&#8221;</p>
<h3>2. 对产品测试进行协作</h3>
<p>扩大产品线或服务始终要付出很高的代价，这种代价不仅仅是指金钱，还包括时间、资源、感情以及以及其分散其他业务精力的代价。</p>
<p>FeedbackSTAT.com 是位于美国亚利桑那州图森市的一家市场研究公司，公司由六位员工组成，他们专门研究卫生保健市场，创始人 Russ Wedemeyer 通过为企业与客户提供实时通信服务来降低买卖双方的风险。</p>
<p>例如，一家生物科技公司正在开发一项价值数百万元美元的产品，这个项目可能需要在全球进行许多的调查研究。在经过现场分析之后，FeedbackSTAT.com为其 设计了在线调查与一个由密码保护的网站。忙碌的研究人员能够随时随地的登录网站，评估产品并发表意见。</p>
<p>FeedbackSTAT 的其中一位客户是 Nichols Institute Diagnostics，这是美国加利福尼亚州圣胡安-卡皮斯特拉诺市的一家体外试验公司。Phil Miller 是公司负责产品研究和开发的副总裁。他说：&#8220;通过 FeedbackSTAT 的调查研究，我们收到了大量客观公正的重要数据。我们有一些高级医疗专家做顾问，而这些专家平时很难碰到一起。与离线调查相比，在线调查研究的速度要快 80%， 而且成本是离线调查的一半都不到。Wedemeyer 估计，成本大约节省了7千至 2万美元左右。&#8221;</p>
<h3>3. 让客户积极参与</h3>
<p>Andy Getsey 是美国加利福尼亚州旧金山市 AtomicPR公司 的首席执行官与创始人，该公司成立于两年之前，现在，这家公关机构一年有 150 万美元的收入，并且拥有很多快速发展的技术型客户。他说：&#8220;传统的公关公司费用不菲，他们的效率低下而且缺乏灵活性，他们将客户钓上来以后便撒手不管他们了。&#8221;</p>
<p>Getsey 说， AtomicPR公司的成立就扭转了这种局面。公司有 18 位员工，没有专用办公室（但是有会议室），整个工作室能够使用无线连接。公司完全通过联网进行通力合作。他说：&#8220;我们没有沿袭传统的体系，因此，我们能够采用最新的技术。&#8221;</p>
<p>公司的员工在专用的网站上制定计划与项目，这样客户可以登录并参与其中。媒体宣传活动的效果与质量也能够借助这套系统进行跟踪和估量。Getsey 说：&#8220;我们在制定策略和目标时会让客户全程参与。&#8221;公司为所有的员工在家中安装了 DSL网络，并为他们配备了手机，一旦员工出差，他们就可以通过这套系统和总部取得联系。Getsey 说，这样做的好处是：</p>
<table cellSpacing=0 cellPadding=0 border=0>
    <tbody>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>客户与公司小组的关系更加紧密</p>
            </td>
        </tr>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>更能引起双方的共鸣，增强了客户购买的兴趣</p>
            </td>
        </tr>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>初期工作能够更快地获得反馈意见，避免了时间浪费。</p>
            </td>
        </tr>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>由于是在线自助式访问项目和信息，因此提高了高级客户的参与程度。</p>
            </td>
        </tr>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>减少了花在内部管理方面的时间</p>
            </td>
        </tr>
    </tbody>
</table>
<h3>4. 让客户自我推销</h3>
<p>五年之前，让客户使用网上订购的形式显得非常的新奇。然而，现在这一切都不是什么神秘的事情了，但仍然有很多中小型企业不相信电子商务交易的作用。如果您是其中一分子，那就不妨去认识 Debbie Lombardi吧，他是美国康涅狄格州哈特福德市的Barter Business Unlimited贸易集团的创始人。BBU公司已经成立10年了，员工人数只有22人，它曾经也有过一个企业网站，但一直都没有什么特色。去年十二月，Lombardi 决定转向在线销售。将招聘传统的销售和支持人员的成本花在投资技术方面。她和她的小组在一月份开始筹划网站。她说：&#8220;我们花了好几百个小时，我们想考虑周全。&#8221;除了推广之外，改版的网站花费了 5 万美元。</p>
<p>结果是，自八月起，BBU 的业务增长了 15%，当然，当时的经济形势也不错。她惊喜地发现，一些服务方面的专家（象律师、医生和牙医等等）也会乐意访问她们的站点。&#8221;她说：&#8220;我们网站知名度已经很响了。这超出了我原来的预期。&#8221;（有关电子商务软件的详情，请查阅 Microsoft Commerce Manager。）</p>
<h3>5. 即时获取反馈信息</h3>
<p>通常来说，当消费者开始高声讨说法的时候，他们已经准备转向其它产品了，客户对产品的满意程度是有一个过程的，然而，把握客户的心理总是一件很玄的事情。</p>
<p>大公司可能会耗费数周时间进行市场调研以及案头分析工作，但你可能没有时间去这么做。让我们想想 2001年的情况吧，您会毫无疑问的发现，当时的经济气候可谓变幻莫测，简直超出了任何人的预测。。 </p>
<p>解决之道就是网络。除了测试客户满意度的调查之外，Clientise.com 的 Stein 还创建了要求提供联系人信息的调查问卷。Clientise.com 对收集到的个人信息严格保密。</p>
<p>Walker Information 是美国印地安那州印第安纳波利斯的商业对商业信息系统提供商，它主要对客户满意度、失去的客户、员工的责任心、公司的信誉以及商业道德进行评测报告 —他们的许多工作都是通过网上调查来完成的。公司的副总裁 Jeff Marr 说：&#8220;适当的调查可以追踪回头客户的意见情况。利用这些结果，你可以找出并解决公司经营上存在的问题。&#8221;更为出色的是，这些结果是以图表和条形图的形式交给您，因此，您不必再手忙脚乱了。</p>
<h3>6. 让客户自己决定</h3>
<p>美国佛罗里达州圣匹兹堡市的 Omega Insurance Services 公司主要负责劳工索赔的评估，这家公司在五年之内，已经从从一家小公司成长为了拥有 200 多位员工的大型企业。公司创始人Fargo 将他的迅速发展归功于企业软件的帮助。该软件能够让 他的客户登录到他们的网站，通过在线录像片断和报告形式跟踪每一宗保险单的进展情况。Fargo 说：&#8220;我们不再邮寄录像带。&#8221;他的网上数据库和应用程序称为&#8220;Power Facts&#8221;，它通过 Microsoft SQL Server 软件运行。Fargo 说：&#8220;Power Facts 向客户提供结果，并且让客户可以随心所欲地获取信息，这大大节省了管理时间与资源，让我们受益匪浅。&#8221;</p>
<p>现在，技术能够使得员工在家办公。当高级经理们满世界的奔波，客户因为迟迟得不到项目进展情况而暴跳如雷的时候，这样的网络化选择可谓雪中送炭。</p>
<p>不管您选择哪一种设备或技术，其首要的目标便是要简单化。让您的小组<em>和</em>您的客户能够快速、方便地访问内部信息。然后观注您的业务增长。</p>
<img src ="http://www.blogjava.net/masen/aggbug/108968.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/masen/" target="_blank">Masen</a> 2007-04-06 16:27 <a href="http://www.blogjava.net/masen/articles/108968.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>