第二章 软件配置管理

第二章 软件配置管理
软件项目管理
软件配置管理的作用
本章内容提要
软件配置管理的相关概念
软件配置管理过程
软件配置管理工具CVS
cs.tju.edu.cn
第2页
第一节 软件配置管理的作用
存储所有文档和源程序,
由版本控制系统管理
下载
下载
服务器
提交
安装有版本控制
系统客户端
提交
……
程序员1
程序员n
团队开发的一般模式
cs.tju.edu.cn
第3页
不同程序员对程序的更改会产生冲突
添加了函数
checkStringlength()
程序完整性受
到破坏
修改
提交
程序员A
common-function.java
提交
修改
服务器
common-function.java
程序员B
cs.tju.edu.cn
添加了函数
checkDate()
第4页
找不到某个文件的历史版本;
开发人员使用错误的程序版本;
软件项目中可能遇到如下的问题:
开发人员未经授权修改代码或文档;
人员流动,交接工作不彻底;
无法重新编译软件的某个历史版本;
因协同开发,或者异地开发,版本变更混乱导
致整个项目失败;
……
cs.tju.edu.cn
第5页
软件项目进行中面临的一个主要问题是持续
不断的变化,变化可能导致混乱,而软件配置管
理就是用于控制变化。
软件配置管理(Software Configuration
Management, SCM)是指一套管理软件开发和维
护过程中所产生的各种中间软件产品的方法和规
则。它是控制软件系统演变的学科。
中间软件产品和用于创建中间软件产品的信
息都应处于软件配置管理之下。
cs.tju.edu.cn
第6页
标志变更
软件配置管理的目标
控制变更
确保变更正确实现
向受变更影响的组织和个人报告变更
cs.tju.edu.cn
第7页
记录软件产品的演化过程。
软件配置管理的效果
确保软件开发者在软件生命周期中的各个阶段
都能得到精确的产品配置。
最终保证软件产品的完整性、一致性、可追溯
性。
cs.tju.edu.cn
第8页
版本控制:采用相应的流程和工具,对软件开
软件配置管理的主要功能
发过程中产生的各种文件的版本进行管理。是
软件配置管理的核心内容。
变更管理:为防止开发人员对软件的随意变更
而进行的管理上的审核过程,包括变更请求、
变更评估、变更批准/拒绝、变更实现。
其它:配置审计、配置状态统计等。
cs.tju.edu.cn
第9页
软件配置管理的作用
本章内容提要
软件配置管理的相关概念
软件配置管理过程
软件配置管理工具CVS
cs.tju.edu.cn
第10页
第二节 软件配置管理的相关概念
软件配置项(Software Configuration Item, SCI)
软件配置管理的对象,一个软件配置项是项目
中一个特定的、可文档化的工作产品集。
常见的软件配置项:需求规格说明书、设计规
格说明书、源代码、测试计划、测试用例、用
户手册。
构造软件的工具和软件赖以运行的环境也常常
列入配置管理的范畴。
cs.tju.edu.cn
第11页
基线(Baseline)
已经正式通过复审和批准的某规约和产品,它因
此可作为进一步开发的基础,并且只能通过正式
的变化控制过程来改变。
基线配置项
软件配置项
非基线配置项
基线通常标志开发过程一个阶段的结束(里程碑)
cs.tju.edu.cn
第12页
软件开发各个阶段基线图示
系统工程
需求分析
系统规格说明
软件需求规格说明
软件设计
软件设计说明
程序编写
源代码
测试
系统提交
cs.tju.edu.cn
测试计划、过程、数据
可运行系统
第13页
软件配置控制委员会(Software Configuration
Control Board, SCCB)
负责管理软件配置项变更的组织。
• 评估变更
• 批准/拒绝变更申请
• 在项目生存期内规范变更申请流程
• 对变更进行反馈
• 与项目管理层沟通
cs.tju.edu.cn
第14页
软件配置管理的作用
本章内容提要
软件配置管理的相关概念
软件配置管理过程
软件配置管理工具CVS
cs.tju.edu.cn
第15页
第三节 软件配置管理过程
软件配置管理过程包括7项基本活动:
(1)制定配置管理计划
(2)识别和标志配置项
(3)建立配置管理环境
(4)配置项的版本控制
(5)基线变更管理
(6)配置审核
(7)配置状态统计
cs.tju.edu.cn
第16页
(1)制定配置管理计划
规划配置
参加项目
管理任务
规划
cs.tju.edu.cn
形成配置
管理计划
评审配置
计划
第17页
配置管理组织及其职责
配置管理工具和配置库的组织结构
配置管理计划的主要内容
配置项标志和基线定义
变更管理流程
配置审核和配置状态统计
cs.tju.edu.cn
第18页
(2)识别和标志配置项
将软件项目中需要进行控制的工作产品定义为
配置项(SCI)。
为每一个配置项分配唯一的标志。
建立配置项间的对应关系。
cs.tju.edu.cn
第19页
基本配置项:软件开发者在项目开发过程中所
创建的基本工作单元。
配置项分为两类:
集成配置项:一个集成配置项是基本配置项或
其它集成配置项的集合。
cs.tju.edu.cn
第20页
集成配置项
设计规格说明
基本配置项
体系结构设计
数据库设计
详细设计
招生管理
校务管理系统
需求规格说明
学生日常管理
教务管理
通用功能
……
cs.tju.edu.cn
第21页
配置项标志规范举例
公司:3个字符
项目:最长10个字符
类型:最长5个字符
编号:最长8位数字/字符
版本号:V m.n
QTD-School–RM–SRS-v1.0
注意:配置项标识并不是指程序/文档文
件的文件名,而是该程序/文档作为一个
配置项的标识。
cs.tju.edu.cn
第22页
建立配置项间的关系
招生管理需求规约
part of
interrelated
校务管理系统
需求规格说明
测试用例集A
可使用某种模块互联语言(Module Interconnection
language, MIL)来描述配置项之间的关系。
Narayanaswamy K., W. Scacchi. Maintaining
Configurations of Evolving Software Systems.
IEEE Trans. Software Engineering, vol.SE-13,no.3,
March 1987.
cs.tju.edu.cn
第23页
(3)建立配置管理环境
配置管理环境是用于进行软件配置管理的系统
环境,其中最重要的是配置管理库,简称配置
库。
配置库存储配置项(SCI)、修改请求、变化
记录等,并提供对库中所存储文件的版本控制。
为不同的开发人员分配不同的访问配置库的权
限。
cs.tju.edu.cn
第24页
一般需采用配置管理工具来建立配置库。
配置库中文件的更改是受控的。
cs.tju.edu.cn
第25页
(4)配置项的版本控制
Check in
配置库
受控库
Check out
新版本
cs.tju.edu.cn
第26页
配置库的检入检出和版本控制机制解决了
软件开发中的两个重要问题:
 访问控制:保证具有相应权限的人员才能修改
配置项。
 并行控制:保证不同人员同时对某配置项进行
的修改不会互相覆盖。
cs.tju.edu.cn
第27页
存储所有文档和源程序,
由版本控制系统管理
下载
下载
服务器
提交
安装有版本控制
系统客户端
提交
……
程序员1
程序员n
团队开发的一般模式
cs.tju.edu.cn
第28页
程序员1的工作目录
Source
配置库
Check out
Object
Lib
Source
Object
Lib
程序员n的工作目录
Check out
Source
Object
Lib
cs.tju.edu.cn
第29页
SCI
1.0
SCI
1.1
SCI
1.3
SCI
1.4
SCI
2.0
SCI
2.1
SCI
1.2
SCI
1.1.1
SCI
1.1.2
配置项的演化图(Evolution Graph)
cs.tju.edu.cn
第30页
对配置项的修改(不同版本间的差别)应被记
录下来。






更动者(姓名及其身份);
更动日期和时间;
被更动SCI(名及其版本号);
更动内容及其位置;
更动原因;
受此更动影响的诸SCI名表。
cs.tju.edu.cn
第31页
软件产品不同类型的版本的特性和所包含的配
置项应被明确描述。保证可根据要求将配置项
组合生成适用于不同应用环境的正确的软件产
品版本。
cs.tju.edu.cn
第32页
数字顺序型版本编号
软件产品版本编号方法
• 普通版本编号
• α和β版本编号
属性版本编号
cs.tju.edu.cn
第33页
数字顺序型版本编号
普通版本编号
产品的版本号由若干数字组成,数字之间用
“.”分隔。一种典型的编号策略如下:
x.y.z,x为主版本号,y为特征版本号,z为缺
陷修复版本号。
主版本号的增加表示提供给客户的主要产品
功能的增强。
特征版本号的增加表示产品新增了一些特征
或做了一些重要修改。
cs.tju.edu.cn
第34页
数字顺序型版本编号
普通版本编号
缺陷修复版本号的增加表示在软件产品上做
了一些缺陷修复工作。
α和β版本编号
在普通版本编号后面增加一个大写字符A或
者B来分别表示α版本或β版本。例如1.2.4A
或1.2.4B。
如果存在多次的α发布和β发布,可在A或B
后面添加一个数字来说明发布的次数,例如:
1.2.5A1,1.3.0B2。
cs.tju.edu.cn
第35页
属性版本编号
把版本的重要属性反映在标识中。可以包括的属性
有:客户名、开发语言、开发状态、硬件平台、生
成日期等。例如:
J2SDK.v.l.2.2:10/31/2000-18:00,native threads,
jit-122
包含的信息丰富,方便了查询和管理,版本间的关
系易于保持,但由于太复杂,一般只用于软件组织
内部的管理。
cs.tju.edu.cn
第36页
基线变更管理过程
(5)基线变更管理
变更请求
cs.tju.edu.cn
变更评估
变更批准
/拒绝
变更实现
第37页
变更请求
项目名称
变更申请人
提交时间
变更题目
紧急程度
变更具体内容
变更影响分析
变更确认
处理结果
签字
cs.tju.edu.cn
第38页
变更评估
变更评估
软
件
变
更
分
类
cs.tju.edu.cn
技
术
影
响
分
析
接
口
影
响
分
析
进
度
影
响
分
析
预
算
影
响
分
析
第39页
根据评估结果对变更作出决策:
直接实现变更
变更批准或拒绝
挂起或延迟变更
拒绝变更
对于批准的变更,要确定其实现进度:
立即实现变更
在特定的日期实现变更
在软件另外的版本中实现
cs.tju.edu.cn
第40页
变更实现
检出(check out)基线
对基线进行变更
测试和验证
检入(check in)基线
cs.tju.edu.cn
第41页
(6)配置审核
配置管理活动审核:确保所有配置管理活动符
合已批准的软件配置管理规程。
基线审核:审核基线配置项的完整性和一致性,
从而保证基线配置项可被正确地构造。
• 配置库中是否包含了所有计划纳入的基线?
• 基线自身的内容是否完整?
• 编译所有的源代码,检查是否可产生最终软
件产品。
• 检查需求、设计与代码间的一致性。
cs.tju.edu.cn
第42页
(7)配置状态统计和报告
配置管理系统的状态统计和评估
• 变更请求的数量。
• 变更管理活动的执行情况。
• 配置管理系统存储量的变化。
• 配置管理系统和SCCB在运作中发生异常的
次数。
cs.tju.edu.cn
第43页
配置状态报告
每次配置的更改被批准或实现时,都会产生一
个配置状态报告,通知相关人员:更改了哪些
内容?由谁更改?什么时候更改?更改会产生
哪些影响?
对于大型项目的开发,配置状态报告非常重要,
它促进了人员之间的通信。
cs.tju.edu.cn
第44页
软件配置管理的作用
本章内容提要
软件配置管理的相关概念
软件配置管理过程
软件配置管理工具CVS
cs.tju.edu.cn
第45页
第四节 软件配置管理工具CVS
软件配置管理工具
CVS概述
CVS操作的示例
cs.tju.edu.cn
第46页
1. 软件配置管理工具
软件配置管理工具的主要功能
• 版本控制
• 变更管理
• 配置审核
• 状态统计(查询和报告)
• 问题跟踪(跟踪缺陷和变更)
• 访问控制和安全控制
cs.tju.edu.cn
第47页
常用的配置管理工具
• ClearCase&ClearQuest
• CVS
• Subversion(SVN)
• PVCS
• Harvest
• Visual SourceSafe(VSS)
cs.tju.edu.cn
第48页
2. CVS概述
CVS (Concurrent Versions System, 并发版本
系统)是一个被广泛应用的配置管理工具。
Unix和Linux的发行版一般都带有CVS服务器,
Eclipse内建有CVS客户端。
CVS是自由软件,可免费获取其安装包和源代
码。
 CVS提供了多种途径帮助开发团队成员之间的
版本同步和开发通信,辅助解决版本冲突,提
高协同开发的效率。
cs.tju.edu.cn
第49页
CVS的几个特性
C/S模式
CVS服务器
网络
check in
check out
CVS客户端1
cs.tju.edu.cn
CVS客户端2
…
CVS客户端n
第50页
CVS的几个特性
基于“拷贝—修改—合并”的并发控制
• 客户端check out后,有文件的一份独立拷贝。
• 开发者在自己的工作目录中修改文件。
• 若有版本冲突,则使用合并(merge)功能与
其它开发者的修改合并,然后提交(check in)。
记录不同版本之间的差别
cs.tju.edu.cn
第51页
CVS安装包的获取
CVS支持Unix、Linux、Windows、Mac平台。
可从http://www.march-hare.com下载其安装
包和源代码。
CVS在Windows上的版本称为CVSNT。
WinCVS—Windows上的一个常用的CVS客户
端。可从
http://www.8848software.com/wincvs/下载其
中文版。
cs.tju.edu.cn
第52页
3. CVS操作的简单示例
创建仓库(repository)
导入项目/模块
检出项目/模块
修改并提交(检入)文件
检出最新版本的文件
取回文件的某个历史版本
文件比较
cs.tju.edu.cn
第53页
本章小结
软件配置管理的作用
控制变化
版本控制、变更管理
软件配置管理的相关概念
软件配置项、基线、软件配置控制委员会
软件配置管理过程
软件配置管理工具CVS
cs.tju.edu.cn
第54页
软件项目配置管理计划模板
软件项目配置管理计划案例
cs.tju.edu.cn
第55页
阐述配置库的检入检出机制及其作用。
练习题
简述变更管理流程。
cs.tju.edu.cn
第56页