CMMI之配置管理

发表于:2008-06-16来源:作者:点击数: 标签:管理cmmiCMMI
凡是提到软件“ 配置管理 ”(Configuration Management),我会先给它下个定义:“它是 软件工程 的核心部分,是CM MI 中最基础的PA”。为什么它会如此重要呢?首先配置管理的工作就是确保软件项目时时保持条理清晰,随时想要任何工作产品都可以迅速找到,并
 凡是提到软件“配置管理”(Configuration Management),我会先给它下个定义:“它是软件工程的核心部分,是CMMI中最基础的PA”。为什么它会如此重要呢?首先配置管理的工作就是确保软件项目时时保持条理清晰,随时想要任何工作产品都可以迅速找到,并且工作产品的内容不会出错,这也就是大家常讲的可回溯性、完整性和正确性;其次软件配置管理活动始终贯穿整个软件项目的生命周期。因此说软件配置管理是最基础、最核心的管理工作一点都不夸张。

    (一)    软件配置项

    在CMMI的“配置管理”过程域CM中SP1.1首先提到的就是“配置项”的概念,在大家开展配置管理工作前应该先识别哪些是本项目的配置项。“配置项”就是配置管理的对象,简单来讲它符合以下任意一个特点:

    1、它会被两个或两个以上的项目成员共同使用。

    2、它会随着项目的开展而发生变化。

    3、对项目重要的工作产品。

    4、一些工作产品之间的关系非常紧密,一个变化其他的就会受到影响。

    通过以上定义大家会发现项目中的很多东西都属于配置项,例如:各种需求文档、设计文档等都会经常变更;程序的代码是大家共享的,而且代码文件之间又有较高的相互依赖性。

    那大家也许会发现还有一些工作产品不符合以上定义,例如:各种周报、会议记录等。这些也是配置项吗?很显然,它们不符合以上特点,那么这些工作产品就不属于配置项的范围,但有时在进行CMMI实施时,项目组也往往会将其一并进行管理。

    既然配置项是“配置管理”的基础,那么大家还需要给每一个配置项起一个唯一标识,这样才能够做到清晰不混淆。举个例子:“今晚大家一起出去聚餐,到中山一路的‘东北人’吃饭”,这里的‘东北人’餐厅是特指中山一路的,因此这唯一确定了就餐的地点;“我们订的包房叫‘靠山屯’”,这里具体的就餐房间也被唯一标识了出来,是‘靠山屯’而不是‘瘦狗岭’;服务员拿来的菜单上每个菜的名字也是唯一的,这样送上来的菜就不会重样,当我们吃完结账的时候就不会算错价钱,这些都是典型的唯一标识配置项的例子。假如配置项没有被唯一识别出来,那么大家去聚会就会找错地方,点的菜也可能会上错,结账的时候也可能会算错,那么将是一团糟,因此在项目管理中一定要将识别配置项重视起来。

    配置项本身的变化可以使用“版本管理”对其进行控制。通常像大家的程序代码已经被各种版本管理工具进行控制,但大家千万不要忘记对文档也要进行版本管理。

    (二)软件的基线

    前面提到“配置项”的其中一个定义就是“配置项可能会随着项目的开展而发生变化”,那么单个的配置项是通过版本管理工具进行管理的,每次变化都会产生一个新的版本号。但是对于一组配置项该如何进行管理呢?根据CMMI配置管理过程域的SP1.3中的要求,这就需要使用基线管理的方法。简单来讲就是将一组配置项拿“线”穿起来作为一个整体进行统一命名,并将其作为一个新的配置项进行管理。在上面聚餐的例子中,最后结账时的账单就是一条基线,它将所有菜肴集中起来一起买单。

    (三)配置库的划分

    配置库就是指各种版本管理工具所创建的用于管理配置项的数据库,也就是大家常用的VSSCVS等工具创建的数据库或文档库。笔者在以往进行的CMMI咨询时常常发现项目组对配置库的目录结构没有进行功能的划分,为了确保项目永远不会出现混淆,简单来说按照权限应该将配置库划分为三大类,如图1-1所示:

 

1、开发库
    2、受控库
    3、基线库
 
图1-1 配置库示意图

    各种控制库的划分是根据其访问权限来定义的,在没有进行CMMI认证的公司,通常项目组的配置库只起到“开发库”的作用。
以CMMI配置管理SP1.2中的理论为依据,“开发库”对项目组成员具有比较宽松的“CheckIn”和“CheckOut”的权限。不会给大家的工作带来不便,根据大家的需要随时都可以对其保管的配置项进行各种操作。

    “受控库”对项目组成员来说是没有“CheckIn”和“CheckOut”的权限的。对“受控库”的操作只能由配置管理员来完成。因为受控库中存放的是等待评审的文档或待测试的程序。假如有份文档要送去评审,会议的主持人已经将其进行了分发,可是这份文档却保存在“开发库”中,如果这时被别人修改了,那么之前所分发的文档就是旧的,那随后的评审也就没有意义了,这就是“受控库”存在的意义。
“基线库”就是对“受控库”中通过验证的工作产品所形成的基线进行统一管理,并且新的基线将按照要求发送给项目的相关人员并与其分享项目的状态和信息。大家回想一下以往发布给客户的版本是否可以找到全部的程序和文档,如果找不到那就请从现在开始使用“基线库”进行管理吧:)

原文转自:http://www.ltesting.net