信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试
标题:
[转帖]软件开发中的配置管理
[打印本页]
作者:
翔羽
时间:
2006-4-2 08:41
标题:
[转帖]软件开发中的配置管理
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><font face="Times New Roman">系统配置指的是交付给特定客户的一个系统构件的集合,例如一个系统开发软件可能有个人</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">版</span><font face="Times New Roman"><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">,专业版和完全功能的企业版,不同的交付版本就对应着不同的系统配置。软件配置管理是监督和控制工作产品中变化的过程。变化遍及整个软件开发过程。当客户要求新功能时,或者当开发人员加深了对应域的认识时,需要都会发生改变。当新技术变得可用时,系统的硬件</span><span lang="EN-US">/</span><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">软件平台发生变化,当测试发现故障并修正时,系统发生变化。软件配置管理用于维护领域,并在系统中逐步达到完善。然而,在现代化开发过程中,变化比维护出现得更早。开发与维护之间的界限变得,模糊不清,在所有阶段能用配置管理来处理变化。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><font face="Times New Roman">配置管理使得开发人员能跟踪变化。系统由许多能被单独修改的配置项构成。对每一个配置项,可对其一系列版本的演化进行跟踪。当变化失败时,检查并选取版本能使得开发人员返回到明确定义的系统状态。</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><font face="Times New Roman">配置也使得开发人员能控制变化。当定义了基准后,任何变化实现前都需要评估和批准这样使得管理能够确保系统正朝着项目目标进展,并确保引入系统的问题数目是有限的。</font></span></p><h3 style="MARGIN: 13pt 0cm;"><span style="mso-bookmark: _Toc104094477;"><span style="FONT-WEIGHT: normal; FONT-SIZE: 12pt; FONT-FAMILY: 黑体; mso-bidi-font-weight: bold; mso-bidi-font-size: 10.0pt;">概述</span></span><span lang="EN-US" style="FONT-WEIGHT: normal; FONT-SIZE: 12pt; FONT-FAMILY: 黑体; mso-bidi-font-weight: bold; mso-bidi-font-size: 10.0pt;"><p></p></span></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman"><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">软件配置管理是软件系统发展过程中管理和控制变化的规范</span><span lang="EN-US">[IEEE StD.1042-1987]</span><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">。配置管理系统使得版本的识别、存储和检索以及支持状态记录自动完成。配置管理包括下列活动:</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman"><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">配置项的确定</span><span lang="EN-US"><span style="mso-spacerun: yes;"> </span></span><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">系统组件以及它们工作产品和对应的版本是进行唯一识别和标识的。开发人员在项目鉴定协议后,即一旦对系统的主要交付组件达成一致意见就可以确定配置项。随着系统的进展,由开发人员创建版本和附加配置项。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman"><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">变化控制</span><span lang="EN-US"><span style="mso-spacerun: yes;"> </span></span><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">系统的变化以及发布给用户的版本要确保与项目一致。变化控制可以由开发人员、管理人员或控制委员会管理,取决于要求的质量等级和变化速度。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman"><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">状态记录</span><span lang="EN-US"><span style="mso-spacerun: yes;"> </span></span><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">单个组件、工作产品和变化请求的状态都要加以记录。他使得开发人员更容易辨认不同版本并跟踪与变化请求的状态都要加以记录。它使得开发速度。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman"><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">审核</span><span lang="EN-US"><span style="mso-spacerun: yes;"> </span></span><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">选择发布的版本要确保产品的完全性、一致性和质量。审核由质量控制小组完成。</span></font></p><h3 style="MARGIN: 13pt 0cm;"><span style="mso-bookmark: _Toc104094478;"><span style="FONT-WEIGHT: normal; FONT-SIZE: 12pt; FONT-FAMILY: 黑体; mso-bidi-font-weight: bold; mso-bidi-font-size: 10.0pt;">配置管理的过程</span></span><span lang="EN-US" style="FONT-WEIGHT: normal; FONT-SIZE: 12pt; FONT-FAMILY: 黑体; mso-bidi-font-weight: bold; mso-bidi-font-size: 10.0pt;"><p></p></span></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman"><span lang="EN-US" style="FONT-SIZE: 14pt; mso-bidi-font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';">软件配置管理的方法大致分三类:单独文件、增量和条件编译。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><span style="FONT-FAMILY: 永中宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman';"><font face="Times New Roman">单独文件是指为每个不同的系统版本单独保存一份完整的分支。采用单独文件的方式进行配置管理的一个缺点是存储的冗余度较大,不同的</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">系统版本中相同部分占大多数,不同处只是少部分。而且,如果采用单独文件方式进行配置管理,</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><font face="Times New Roman">A</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">版本中存在的问题在</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><font face="Times New Roman">B</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">版本中也会存在,需要以同样的方式来排除这些问题,在这种情况下保持版本的一致性和正确性都比较困难。当然,这种方式也有优点,即可靠性较高,在一个或多个分支被破坏的情况下,只要有一个分支能恢复,那么就能恢复不同版本之间相同的部分,丢失的只是不同版本之间的差异部分。</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">所谓增量技术是指在进行配置管理时将一个特定的版本作为系统的主版本,其他版本作为主版本的变体。对于其他版本之存储其余诸版本的不同之处,而不需要存储整个分支。存储版本之间的差别即称为增量,包含一些编辑命令,这些命令描述了如何从主版本切换到不同版本。采用增量技术进行配置管理的好处在于对公共功能的修改只需要在主版本上进行。缺点在于如果主版本破坏则所有版本相关信息都丢失了。</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">条件编译只用相同的代码文件包含所有版本内容,代码文件中的条件编译语句使得编译器决定哪条语句应用到哪个版本。因为不同的版本共享的代码只有一份,可以将一次性修改反映到所有版本中。但如果版本之间的差异非常大则大量的条件编译语句会程序原代码难读难理解。版本数量过多时还会造成配置管理的失控。并且,条件编译只适用于原代码的管理,不适用于文档和数据管理。</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">以上三种方法各有优缺点,在实际的项目培训配置管理中是将这些方法有机结合起来满足复杂的配置管理要求。</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">建立主干分支</span></b><b><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 14pt; mso-bidi-font-size: 10.0pt;"><span style="mso-spacerun: yes;"><font face="Times New Roman"> </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">使用配置管理工具,如</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><font face="Times New Roman">MS SourceSafe</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">,</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><font face="Times New Roman">CVS</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">,</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><font face="Times New Roman">Rational ClearCase</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">等来统一管理项目中的程序、数据和文档。在配置管理工具中建立一个主干开发分支,用户修改文件的过程分为顺序进行的三个步骤。</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><span style="mso-spacerun: yes;"><font face="Times New Roman"> </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">使用配置管理工具,从配置管理库中将要修改的文件</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><font face="Times New Roman">check out</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">至本地文件目录。</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><span style="mso-spacerun: yes;"><font face="Times New Roman"> </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">对本地文件进行修改并完成测试。</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><span style="mso-spacerun: yes;"><font face="Times New Roman"> </font></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">测试通过后,将修改过后的本地文件</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><font face="Times New Roman">check in</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">至配置管理库中。配置管理工具使用增量技术存储每次修改的不同点。</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">使用条件编译</span></b><b><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">对于主干分支中的程序文件采用条件编译的方式可以进一步产生不同的子版本。使用不同的条件编译开关分别产生了如下几种版本:</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">功能相同、但使用不同数据库的子版本。</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">单机和分布式子版本</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">附加和不附加</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><font face="Times New Roman">WEB</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">功能的子版本</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.1pt; mso-char-indent-count: 2.0;"><b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">建立单独的发布版本</span></b><b><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">经过不断的测试和修改,可能产生过多的内部测试版本,最后形成了一个稳定的、可以发布给用户使用的版本。可以为这个发布版本另建立一个单独的分支。这样做可以尽快交付给用户一个可使用的系统版本,虽然该版本的功能尚不完全或者不够完善,在用户使用时,开发人员可以接着开发功能更完善的下一个版本,这样也利于对用户的需求和变更进行及时反应,防止开发中的错误或者不完善被不断累积放大。当然,存在一个分支之间进行同步的问题:某个分支发现并修复了的错误在另外的分支中可能也存在,需要将一个分支中的修改反映到其他相关分支中。一些配置管理工具可以帮助解决这些问题,如提供一种合并的功能,将其他分支中修改部分合并到本分支中。</span><span lang="EN-US" style="mso-fareast-font-family: 宋体;"><p></p></span></p>
欢迎光临 信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试 (http://bbs.tuandui.org.cn/)
Powered by Discuz! X3.2