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