工程型软件项目的配置管理实例.docx
- 文档编号:26757278
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:32
- 大小:192.05KB
工程型软件项目的配置管理实例.docx
《工程型软件项目的配置管理实例.docx》由会员分享,可在线阅读,更多相关《工程型软件项目的配置管理实例.docx(32页珍藏版)》请在冰豆网上搜索。
工程型软件项目的配置管理实例
工程型软件项目的配置管理实例
前言
软件配置管理作为贯穿软件开发过程始终的一项工作,其重要性不言而喻。
51cmm上已有众多关于配置管理介绍、配置管理计划、配置管理工作开展心得一类的文章,这些文章从概念和实施上介绍了配置管理工作的内容,但美中不足的是仍嫌抽象,那些想要依葫芦画瓢的兄弟姐妹们在试图将这些理论应用到自己项目的配置管理中的时候,会发现仍然是无从下手(我也曾是这些感觉无从下手的人中的一个)。
因此,本文拟从另外一个角度,以本人最近实际操作的一个项目的配置管理工作谈起,从配置管理工具的选择、配置管理流程制定、配置管理库结构的确定,以及作为配置管理工作的推动者如何推动这项工作等方面仔细描述一下本人的做法,希望这几篇文章能给那些水深火热中的兄弟姐妹们一点帮助。
这里有两点需要特别说明:
1、本文描述的内容是以一个项目的配置管理为主线,对组织级的配置管理和配置管理策略没有进行详细讨论;
2、本文用来做示例的项目是一个“工程型”的项目,所谓的“工程型”是和“产品型”对应的,这样的项目需要公司的开发人员和现场的开发人员进行协作开发,一般而言,在公司的开发人员完成大部分的功能,现场的开发人员根据用户需求,对软件进行修改(这部分的工作量一般会较大,在一个16人年的项目中,这部分的工作可能会占到三分之一以上的工作量)。
配置管理工作概述
配置管理工作的工作范围,在51cmm的很多文章中都有描述,具体可以参考河清专栏的《基于CMM和CMMI的配置管理》和陈越的《软件配置管理实施体会》。
在这里不作详细的描述。
本文涉及的项目背景
本文用来示例的项目是某省电信的一个项目,该项目的工作量大约是16人年,项目周期约为1年。
大部分(90%以上)的开发工作在前8个月内完成,后期的工作主要由维护人员进行系统维护和调整。
在8个月的开发时间中,前5个月由开发人员在公司进行开发,根据用户的需求完成设计,确定系统架构并实现整个框架,部分明确的功能以及公用模块也在这段时间内完成;后3个月的时间部分开发人员在现场,部分开发人员在公司共同完成后期的开发工作。
整个项目采用的开发语言是C++、Java、ASP,涉及的平台包括Solaris和Windows,采用的开发工具包括VisualStudio和Solaris上的CC。
此外,整个项目还使用了一些第三方的平台,如IBM的MQ等。
除用户需求之外,公司还对项目组提出了代码复用方面的要求,开发人员在开发过程中必须注意代码的可重用性。
配置管理前期准备工作
在项目正式启动之后,配置管理工作就可以开始了。
配置管理工作开始的第一步就是一份配置管理计划。
51cmm上已有不少配置管理计划的模板,大家可以参考。
一般而言,需要在配置管理计划中明确的内容包括:
1、配置管理软硬件资源;
2、配置库结构;
3、人员、角色以及配置管理规范;
4、基线计划;
5、配置库备份计划;
在下文中,我们将围绕这些内容进行详细描述。
配置管理环境
配置管理环境包括软硬件环境。
具体的资源需求应该根据项目实际情况来确定,一般需要考虑的包括:
网络环境、配置管理服务器的处理能力、空间需求,配置管理软件的选择等。
配置管理环境的确定需要综合考虑各个方面的因素,包括我们采用的开发工具,开发方式,开发人员对配置管理工具的熟悉程度等,其中,开发人员对配置管理工具的认可和熟悉程度常常直接决定配置管理能否正常进行,如果选择了需要开发人员花费比较大的精力去熟悉的配置管理软件,我们就必须花费大量时间来进行培训;同时,配置管理软件和开发工具的集成程度也是一个必须考虑的因素,根据我们的经验,选择一个和开发环境集成紧密的配置管理工具至少可以减少20%花费在CheckIn/CheckOut和配置管理人员保持配置库完整上的工作量。
根据我们项目的实际情况,我们有如下一些考虑:
根据历史经验,一个类似项目的配置库大小约为3G,考虑到备份等操作对空间的需求,至少应该为配置管理库保留10G以上的空间。
为了保证配置管理库的安全,除了相应的备份计划之外,还可以采用了RAID0+1的方式为配置数据库提供更好的可用性保证;
考虑到在项目的后期有部分开发人员会在现场进行开发,因此在网络条件上需要提供对远程访问方式的支持;
配置管理服务器的选择和配置管理软件的选择相关,考虑到目前公司有一台闲置的PC服务器,最好能充分利用这台服务器;
配置管理软件必须可以以某种方式支持远程访问,而且由于我们的开发平台涉及Solaris和Windows,配置管理软件要能够支持这两种平台;考虑到开发工具方面,配置管理工具要求能和我们选择的开发工具进行很好的集成;
项目组的开发人员缺乏使用配置管理工具的经验,有将约30%的开发人员使用过VSS配置管理工具,但仅限于最基础的使用,对VSS的Label等功能没有概念;结合以上的情况,我们首先考虑配置工具的选择。
配置管理工具的选择 软硬件环境的选择
确定了配置管理工具后,我们使用公司购置的一台CompaqPCServer作为配置管理的硬件环境,该服务器配置如下:
CPU:
1CPU,P42.0G
内存:
512MDDR
硬盘空间:
30G×4
网卡:
HPGbit网卡一张
最终确定的方案是安装该服务器安装Windows2000Server操作系统,为了保证配置数据的安全性,我们采用RAID0+1方式,总的可用空间在50G左右;另外为了备份的需要,还为服务器配置了一个CDR刻录机。
网络环境的选择
公司已有现成的100M局域网,通过一个交换机和路由器连接至Internet,有一个公网的静态IP;配置管理服务器是内网的一台机器,具有一个内网IP。
为了满足远程访问的需要,我们通过在路由器上设置端口映射,将SOS需要使用的端口映射到配置管理服务器上(缺省情况下,SOS使用8888和8890两个端口)。
网络拓扑图如下:
在公司的开发人员通过局域网使用VSS访问和操作配置库,在现场的开发人员通过Internet接入对配置库进行访问和操作。
配置库维护和备份计划
配置库的维护的备份需要专职的配置库管理员来负责。
在整个项目中我们采用的配置库维护策略是根据Microsoft的BestPractice白皮书建议,包括以下要点:
1、保持配置数据库的大小不超过5G;Microsoft建议,配置库的大小在3-5G比较合适,太大的数据库会极大影响VSS的效率;减小配置库大小的
2、每周进行VSS数据库的分析(Analysis),发现问题及时修正;VSS提供了Analysis和Fix工具,由于不合理的Delete等操作,VSS数据库有可能会出现一些InterruptData之类的问题,通过定期的每周的分析工作,可以极大减少数据库出现问题的风险;
3、每日进行配置库的增量备份,每周进行数据库的完全备份;VSS库的备份可以通过VSS自己的Archive功能或者是操作系统的Backup程序来进行。
VSS的Archive功能对VSS中的文件数据进行压缩并保留VSS的所有状态,但只能对VSS库进行完全备份,不能实现增量备份功能。
Windows2000Server提供的Backup实用程序可以对文件进行备份,由于VSS库就是以文件形势存在的,因此针对VSS的data目录进行备份也可以完全达到备份的目的,使用系统备份工具的好处是可以实现增量备份。
我们在实际中使用的系统的备份工具,每周五生成的完全备份采用刻录光盘的方式保存,每天的增量备份数据存放在文件服务器上进行备份。
【小结】在本章中,我们描述了工程型项目配置管理的一些概念,着重介绍了配置管理的环境,包括配置管理工具的选择等。
在配置工具选择方面,我们采用VSS+SOS的组合方案,第二章中,我们将重点介绍VSS和SOS工具的使用,并在介绍配置管理规范中结合配置管理工具讲解具体的操作
配置管理双枪将VSS+SOS
说起VSS,接触过的人应该不少。
尤其是用用VC和VB做开发的人,绝大多数人应该都接触过和使用过VSS。
VSS小巧精干,和VS开发工具集成极为紧密,就算不使用专门的配置服务器,直接在自己的开发用机上安装一个VSS,也能在代码管理方面方便不少。
SOS在上一章中已经做了介绍,这一章将详细介绍之。
VSS概念
也许正因为VSS简单易用,在大多数人眼里,VSS似乎都只是一个玩具,难登大雅之堂,最多能管管自己的代码,要用团队开发中,那似乎是不可能的。
刚接触VSS时,我也是抱着差不多的想法,觉得要用VSS作为一个较大的项目的配置管理工具完全不可能,但随着对VSS研究的深入,加上在工作中也使用了其它一些配置管理工具,如CVS、ClearCase、CCCharvest等工具,反过来比较,反而觉得VSS有它独到的地方。
关于VSS和其他配置工具的比较,在google上搜索的话应该能找到一大堆,我这里给出几个对我来说印象最深刻的VSS的优势:
1、VSS操作使用简单;要在配置管理工具中评选“最平易近人奖”,那一定非VSS莫属。
VSS中包含了配置管理需要的全部操作,但应用起来却非常简单,首先是全部操作都可以通过GUI完成,如CheckIn/CheckOut操作、GetLatest等基本操作;Label、Share、Branch、Merge等高级操作;其次是VSS和开发环境集成紧密,在开发环境的IDE中就可以方便地完成操作;
2、VSS对硬件配置要求不高;作为一个工作组级别的配置管理工具,在我们的项目中,安装VSS的配置服务器是一台P42.2G/512MRAM/30G×4Disk的HPPC服务器,这样的条件下VSS运行已经足够稳定和快速,相比起CC和CCCharvest的要求,这部分的投资是很小的;如果再考虑到CC和CCC都运行在Unix平台上需要的维护费用,当然是VSS更加划算了;
3、VSS几乎是免费的;只要购买了VS开发工具,就能免费使用VSS;
4、VSS备份/恢复非常简单;只需要通过拷贝——覆盖就能完成VSS的备份/恢复工作,你说简不简单?
:
)
5、有良好的可扩展性;通过VSS的自动化接口(Automation),可以自己写程序来完成对VSS库的访问,也正是基于这点,目前市面上已有一些VSS的扩展工具出现,我们在本章要讲的就是其中之一——Sourcegear的SOS。
说了这么多优点,当然不是说VSS就只有优点,和其他的配置管理软件比起来,VSS也有一些不足之处:
主要表现在以下几点:
1、缺乏对Unix的支持(没有Unix上的客户端或者服务器,这是微软的一贯作风);
2、不支持远程访问方式(只能通过第三方的扩展工具实现);
3、支持的配置数据库大小建议不超过5G SOS(SourceOffSite)软件介绍
接下来,我们重点介绍SOS软件,包括软件的安装、配置和使用。
SOS软件的安装
SOS软件分为服务端和客户端两个部分,客户端运行在配置管理服务器上,客户端运行在需要访问配置库的客户机上。
以下以SOS3.5.3标准版的SOS为例,说明该软件的安装、配置和使用。
服务端的安装和设置
SOS可以从Sourcegear的网站上下载试用,免费版本可以试用30天,允许10个用户,目前最新版本是4.0。
不过为了解决SOS中的中文问题,建议大家从华军软件园中找到中文SOS进行安装(所谓的中文SOS是国内的高手修改了SOS3.53程序使其支持中文)。
上图是中文SOS安装时的安装界面,选择安装目录等,一路Next,很容易就安装完成了。
安装完成后,系统在“开始”菜单中生成了中文SOS的相关菜单项目。
下图是安装完成中文SOS之后生成的菜单:
安装完成后,需要对SOS进行设置。
选择中文SOS菜单的“服务器管理”进入设置界面:
“SystemInfo”页面显示的是SOS的概要信息;
“GeneralSetting”页包含了重要的设置信息,选中“useunsecureport”表示允许使用非加密模式进行数据传输,端口号在后面的编辑框中设置;选中“usesecureport”表示允许使用加密模式进行数据传输,端口号在后面的编辑框设置。
“Version2.0Compatibility”用来选择加密模式,一般选择128bit模式即可。
在“Logging”选项中,选择日志的记录方式;最后的“IdleConnections”,如果选中的话,在指定时间内没有数据传输的话,连接就会自动断开。
“SerialNumber”页面用来管理SOS的license。
通过Add…按钮可以增加新的SerialNumber。
SOS中可以添加多个SerialNumber。
“Databases”页面用来添加SOS管理的VSS数据库。
点击Add…按钮可以添加数据库,添加对话框的上一个框填入VSS库的ini文件所在路径,下一个是数据库的别名,可以任意设置。
SOS可以同时管理多个数据库。
1”
“UserKeys”页面用来生成客户端访问控制的Key文件:
使用“AddKey…”按钮可以弹出“AddUserKey”的对话框。
该对话框的第一个输入框要求输入要增加的用户在VSS中对应的用户名;第二个输入框要求输入SOS服务器的IP地址,例如“202.100.68.88”,在局域网中可以设置为“192.168.1.1”;(注意,如果配置管理服务器同时具有局域网和广域网的IP地址,并且用户需要从局域网和广域网都可以访问SOS,则对同一个用户需要两个不同的Key文件。
在我们的实际工作中,我们只使用SOS进行Internet上的访问,在局域网内还是使用VSS,因此没有这个问题)。
下面的Expiration要求输入用户的过期有效时间期限,选择“KeyNeverExpired”允许用户永不过期。
输入完相应信息后,点击“OK”确认生成用户Key文件。
生成的用户Key文件保存在SOS安装目录下,文件名为[用户名].iky,注意保留此文件,SOS客户端在启动时需要首先导入一个key文件。
“WebProject”页面用于设置WebProject的发布路径:
在第一个编辑框中填入该工程在VSS中的路径,例如“$/WebProject1/test”,在下面的编辑框中输入发布的路径,例如“d:
\temp”。
发布路径也可以是在其他机器上的网络路径。
“Debug”页面是两个调试级别的选项:
这两个选项的具体含义在SOS的Manual中也没有明确提到,我们在实际运用中也没有发现该选项的具体作用,建议不选取。
“ExcludedFileTypes”页面设置不允许添加到VSS库中的文件类型:
添加的条目是文件后缀,具有在列表中的后缀的文件都不能被添加到VSS库中。
“PinSupport”页面用于设置是否允许PIN操作:
如果允许“PIN”操作,还需要指定ss.exe文件所在的目录。
设置完成后,需要重新启动SOS服务端,具体方法是在“服务”中启动相应服务:
启动服务完成后,服务端的安装设置就已经完成了,接下来我们介绍SOS客户端的安装和使用。
SOS客户端的安装和使用
SOS的客户端分为Windows版本、Solaris版本和Linux版本。
Windows版本的安装非常简单,直接执行安装程序就可以顺利安装。
Solaris版本的SOS客户端以tar形式发布,首先在Solaris上安装GTK和GLIB,然后展开安装程序到任意目录即可。
对Linux版本的SOS客户端,也需要首先安装GTK和GLIB,然后展开相应tar包到任意目录即可。
Solaris、Linux和Windows版本的SOS客户端运行界面都非常类似,下面以Windows版本为例说明其使用。
第一次运行SOS客户端时,系统会弹出一个对话框要求输入服务器和端口号。
这时用“Cancel”按钮取消,选择菜单项的“Tools”——“ImportEncryptionKey…”,导入服务端生成的Key文件:
导入完成后,选择菜单项的“File”——“ConnecttoServer…”,输入服务器IP地址和端口,如果连接成功,系统会给出可以连接的数据库列表,可以从列表中选择合适的数据库进行连接访问。
连接成功后,显示的主界面和VSS的基本一致,SOS的操作方式和VSS的也一样,具体可以参见VSS的文档。
下图是SOS的主界面:
当然,SOS在操作上也有一些和VSS不同的地方,下面列出这些不同点:
1、缺省设置下,SOS中每次登录不会主动刷新工程树和文件列表,需要用工具条上的刷新按钮进行刷新;
2、SOS的“Search”功能较VSS弱,只能查找CheckOut的文件;
3、SOS的Option设置项目很多,大部分都是SOS增加的为适应远程连接的设置项:
【小结】本章介绍了VSS、SOS的使用,重点是SOS的安装和使用方法。
SOS在使用上其实还有很多小技巧,在此不能一一列举,在sourcegear的网站上都能找到相关的资料。
在下一章中,我们将结合配置管理工具介绍配置管理规范的内容。
配置管理规范
配置管理规范
对于一个一般的项目来说,配置管理规范的内容至少需要包括以下的内容:
1、配置项及其命名规则;
2、配置库文件目录结构;
3、角色和权限定义;
4、配置项变更流程;
5、配置项发布;
6、基线定义和基线变更。
配置项及其命名规则
对我们的项目来说,配置项需要包括以下的内容:
1、项目管理过程文档;
a)项目任务书;
b)项目计划;
c)项目周报;
d)个人日报和周报;
e)项目会议纪要;
f)培训记录和培训文档;
2、QA过程文档;
a)QA不符合报告;
b)QA周报;
c)评审记录;
3、工作产品
a)需求文档;
b)设计文档;
c)代码;
d)测试文档;
e)软件说明书和手册;
4、项目中使用的第三方产品
上文中用红色部分标识的是容易遗漏的配置项,尤其是第4个(项目中使用的第三方产品),实际上,一个工程型的项目会大量使用第三方的软件(例如,我们的产品中就使用了IBM的MQSeries、Oracle、一些第三方的开发控件),对这些产品的管理至少可以解决三个方面的问题:
1、版本配合的问题:
大部分的第三方软件在升级之后,并不能实现二进制层面上的兼容,需要对原有的代码重新编译;甚至有的第三方软件在升级之后,API层面上的兼容性都做不到;因此,在工程实施的过程中,版本的配合问题是一个需要关注的问题;
2、发布的完整性问题:
一般来说,比较大型的第三方软件在发布过程中都不会有遗漏,但对一些小的第三方软件来说,比如我们使用的许多perl的CPan模块,如果在开发过程中没有有意识的进行管理的话,很容易就会发生遗漏;
3、在某些特殊条件下由于第三方软件的变化引起的基线变更:
这种情况极少会发生,但在我们以前的项目中,确实还遇见过。
一般是因为原来选型时使用的第三方软件不能满足要求,只能通过更换新的第三方软件,这就补课避免地需要变更基线(例如需求文档、设计文档等);将第三方软件纳入配置管理的范畴可以更方便地管理基线的变更。
关于第三方软件产品配置项的管理还有一点需要说明:
由于第三方软件有可能会比较大,而且相对我们的项目来说,是很少会发生变更的(一般在一个项目过程中,不会采用不同的配置项的命名可以便于查找相关配置项。
配置项的命名包括两个方面的内容:
1、配置项标识:
在我们的项目中,一般使用“项目名_配置类别_配置项特殊标识”来命名。
下表列出了我们在项目中使用的配置类别命名:
配置类别
命名
配置类别
命名
项目任务书
PT
项目计划
PP
项目周报
PR
个人日报和周报
PER
项目会议纪要
PM
培训记录和培训文档
TR
QA不符合报告
QAP
QA周报
QAR
评审记录
RR
需求文档
REQ
设计文档
DD
代码
CODE
测试文档
TD
软件说明书和手册
MAN
项目中使用的第三方产品
PART3
配置项命名中的“配置项特殊标识”根据配置类别的不同而不同。
比如,对“设计文档”,如果细分的话,可以分为“概要设计”和“详细设计”;对“代码”,可以按照模块来命名配置项。
2、配置项版本命名:
配置项版本命名是针对配置项的版本进行命名,在我们的项目中,配置项版本通过对Project的Label操作来实现,配置项版本的命名需要能清楚标识配置项的状态。
一般说来,配置库至少包括个人工作区、受控库、发布区三个部分,在我们的项目中,所有的配置项都保存在一个VSS库中,对这三个部分的划分是通过逻辑划分方式进行的,具体来说,就是通过配置项版本命名来划分的。
因此,我们配置项的版本命名规定如下:
a)基线版本:
按照基线的状态,我们这个项目中的基线有两个方面:
一是作为里程碑的基线;另一个是模块的阶段性成果基线(对工作产品而言),由模块的负责人确定。
里程碑基线――对我们的项目来说,采用的是迭代的开发过程,以一个迭代过程为例,分为需求、概要设计、详细设计、代码实现、单元测试、集成测试、系统测试七个阶段,每个阶段都需要产生里程碑。
对每个里程碑都有明确的标识标明当前状态。
阶段性成果基线――阶段性成果主要体现在代码过程中,比如代码进行到一个阶段,开发组长认为代码的这个状态可以保留,就可以确定为一个代码基线。
这种基线一般不需要通过评审等正式手段来确定,但也必须有相应的验证手段;比如在我们的项目中,在代码阶段,确定代码基线的责任人是开发组长,但开发组长必须保证代码基线符合一定的条件。
b)其他版本:
除基线版本外,有时候还需要在开发和维护过程中确定其他版本。
例如,产品在测试过程中不断的问题修复过程中,可能会有多种反复,此时需要将每次修改的内容作为一个版本。
关于版本,还有另一个需要注意的问题。
一般来说,按照模块来划分,每个模块有自己的版本演进比较合理。
首先,一个模块一般是由一个或两个开发人员完成的;其次,一个模块的功能会比较单一且独立,在版本的演化过程中便于控制,也不会和其他模块产生过于复杂的关系。
而产品的版本则需要由各个模块的不同版本组成,这个纵横的关系需要很好地管理,我们的做法是在VSS库上用Label来标识,同时维护一张描述产品版本和模块版本关系的矩阵图便于追踪。
配置库目录结构
在确定了配置项之后,就可以确定配置库的目录结构了。
配置库的目录结构直接关系到配置管理的工作量和使用的方便性,所以需要根据自己的需要确定一个合理的结构。
在确定配置管理库目录结构的时候,我们曾经考虑过两种产品目录结构的方式:
一种是按照模块划分,在模块下再划分诸如设计文档、代码等目录;另一种方式是按照产品类型划分,例如首先是文档、代码,然后在其下按照模块划分。
这两种方式都有自己的优点,最终我
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工程 软件 项目 配置管理 实例