软件产品版本管理规范与配置基线管理
Part-1 《软件产品版本管理》
1 目的
本文档的编制是为了规范产品部、研发部、测试部对软件产品版本的管理。标识、控制和追踪软件开发和实施过程中产生的各种软件产品版本。
2 适用范围
本文档适用于软件源代码、产品版本的管理。为产品部、研发部、测试部的管理员,提供有关版本管理规范的相关内容,包括:
- 版本标识方法
- 软件系统数据的存放
- 文档的修改控制
- 文档的备份制度
3 职责
3.1 测试管理
确保项目版本按照正确的版本管理规范执行和使用。
3.2 定期检查
负责定期检查各项目对版本管理规范的执行度;根据发展需要对规范进行完善。
3.3 规范推行
负责项目软件产品版本管理规范的推行,指导项目组成员使用版本命名规范进行版本管理。
4 软件版本管理规范
4.1 版本命名规范
为了使工作规范化、统一化,研发本部各部门实行的版本标识管理方法。
版本:主版本号.子版本号.维护版本号. Tag.测试版本号
(1) 主版本号:使用1位数字,从1开始;当功能模块有较大的变动或子版本号满,即可升级,比如增加多个模块或者整体架构发生变化。此版本号变更需经项目委员会审批。主版本号改变,则子版本号、测试版本号、Tag和维护版本号重置;
(2) 子版本号:使用1位数字,从0开始;当功能有一定的增加、变化或测试版本号满,即可升级,比如增加了对权限控制、增加自定义视图等功能。此版本号变更需经高级项目经理审批。子版本号改变,则测试版本号、Tag和维护版本号重置;
(3) 维护版本号:为可选项,两位数字,从1开始,系统交付用户使用后,功能有少量的增加或变化,或是对已发布系统的缺陷修复或一些小的变动(如改变几个程序文件),则通过升级维护版本号的方式来发布。维护版本号改变,则测试版本号和Tag重置;
(4) Tag分为三类,分别为:Alpha、Beta、Release;
- Alpha版: 简称(A),内部测试版,一般只在内部运行,不对外公开;主要是项目组成员对产品进行测试,检查产品是否存在缺陷、错误,验证产品功能与说明书、用户手册是否一致;
- Beta版: 简称(B),当软件进入模拟生产环境测试阶段或发布给典型用户进行测试;该版本相对于Alpha版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过进一步的测试,以便在正式发行前进行改进和完善。该版本也称为待发行版;
- Release版:简称 (R),是最终交付用户使用的一个版本,该版本也称为正式发行版。R版无测试版本号。
(5)测试版本号:为可选项,两位数字,从1开始;一般是测试时Bug修复或是一些变更,时间间隔不限;BUG修正,即可升级。此版本号可由项目经理决定是否修改;测试版本号不对用户显示;
(6)项目初始版本为 1.0;每一次版本更新,相关人员应填写《版本更新记录》。
示例:
|
版本名 |
含义 |
|
V1.0.A.1 |
表示1.0 Alpha版,测试版本号为1 |
|
V1.0.1.B.1 |
表示1.0.1 Beta版,测试版本号为1 |
|
V1.0.R |
表示1.0 R版 |
|
V1.0.1.R |
表示1.0 R版,维护版本号为1 |
下面列举另外一种命名规则,仅供参考:
软件版本号由四部分组成,X.Y.Z.DATE_希腊字母。即,<主版本号>.<子版本号>.<阶段版本号>.<日期_希腊字母版本号>
X:主版本号,用来表示提供给客户的产品功能的主要增强。在一个极端的例子中,主版本号的上升用来说明产品现在已经拥有了一个全新的功能类。
从市场和许可权的角度来看,主版本号的升级相当于购买一个完全独立的产品。从开发者角度来看,一个主版本号的迭代差不多总是反映了一个新的独立分支或是其主干还可以延续主版本的生命期。
Y:特征版本号,用来表示产品新增了一些特征,或者是在原来文档中描述的特征上作了重要的修改。用来确定特征版本号什么时候需要修改的一个衡量标准就是产品功能说明书。产品的特征版本升级是在主版本之间保持产品竞争力的一种重要机制。
Z:缺陷修复版本号,用来表示在该版本上所做的缺陷维护行为的等级。版修复版本是稳定市场和最小化客户技术支持费用负担的一种重要机制。
- Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改。
- Beta版: 该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI。
- RC版: 该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几。
- Release版: 该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下,Release不会以单词形式出现在软件封面上,取而代之的是符号(R)。
例如:1.1.1.051021_beta. 第一个1为主版本号,第二个1为子版本号,第三个1为阶段版本号,第四部分为日期版本号加希腊字母版本号,希腊字母版本号共有5种,分别为:base、alpha、beta、RC、release。
4.2 标签命名规范
<项目名或项目编号>_<版本名>
项目名和项目编号在立项阶段确定。
示例:
|
标签名 |
含义 |
|
HD_V1.0.A.1 |
表示对HD项目V1.0 Alpha版建立的标签,测试版本号为1 |
|
HD_V1.0.B.1 |
表示对HD项目V1.0 Beta版建立的标签,测试版本号为1 |
|
HD_V1.0.R |
表示对HD项目V1.0 R版建立的标签 |
|
HD_V1.0.1.B.1 |
表示对HD项目V1.0.1 Beta版建立的标签,测试版本号为1 |
4.3 软件产品包命名规范
<标签名>_yymmdd[_S/C]
(1) [_S/C]为可选项,_S表示服务器端应用系统,_C表示客户端应用系统;
示例:
|
产品名 |
含义 |
|
HD_V1.0.A.1_071111 |
表示HD项目在2007年11月11日发布的V1.0版产品,Alpha版 |
|
HD_V1.0.B.1_071111 |
表示HD项目在2007年11月11日发布的V1.0版产品,Beta版 |
|
HD_V1.0.R_071111 |
表示HD项目在2007年11月11日发布的V1.0版产品,R版 |
|
HD_V1.0.1.R _071111 |
表示HD项目在2007年11月11日发布的V1.0版产品,R版第1号维护版本 |
|
HD_V1.0.1.B.1_071111 |
表示HD项目在2007年11月11日发布的V1.0.1版产品,Beta版 |
4.4 目录结构
由于各部门的实际情况不同,目录结构很难统一,但为了能更好地管理各部门部文档,
建议可将被管理的配置项分为三大类:文档类、源码类及安装盘类,这样存放比较清晰,有利于版本管理。具体目录如下表格所示:
|
根目录 |
一级目录 |
二级目录 |
三级目录 |
|
项目名称+版本号 |
源代码(SRC) |
集成代码 |
代码的合并 |
|
第一个模块 |
代码 |
||
|
第二个模块 |
代码 |
||
|
数据库 |
SQL |
||
|
公共开发包 |
代码 |
||
|
文档(DOC) |
立项文档 |
立项计划书 立项申请书 |
|
|
项目计划 |
项目开发计划 |
||
|
需求文档 |
需求规格说明书 |
||
|
设计文档 |
设计概要说明书 数据库设计说明书 |
||
|
界面布局 |
原型界面 动态页面 |
||
|
参考资料 |
项目一些参考资料 |
||
|
验收文档 |
验收资料 |
||
|
测试文档 |
测试计划 测试报告 测试用例 |
||
|
试用信息 |
|
||
|
测试部署 |
部署材料 |
||
|
发布(RELEASE) |
SETUP |
|
|
|
RELEASE |
|
||
|
发布文档 |
|
4.5 文档的存放
4.5.1. 开发文档的存放
文档归档流程:
4.5.2. 源代码的存放

4.5.3 SQL的语句存放
各子系统SQL文件放入…..\.......\SQL下,对于不同的数据库,分别建立不同的子目录,如WAT、SYB、MSS、ORC、DB2等。公共SQL文件直接放入…\SQL下即可,不同数据库的特殊SQL分别放入对应的子目录下。
4.5.4. 发行文档的存放
发行文档是指产品交付用户使用所必须的文件。包括:产品可执行文件,用户使用说明书,联机帮助(HLP);资源文件(BMP,ICO等),环境配置文件等。
4.6 配置管理流程

流程说明:
- 开发人员完成所负责代码模块的编写任务后,提交到项目经理处;
- 项目经理向测试部提交测试任务;
- 配置管理员准备测试所需环境;
- 测试员开始测试并提供实时测试BUG;
- 开发人员处理测试人员提供的BUG,并提交测试员进行回归测试,直至BUG关闭;
- 测试完成后,测试人员提供测试报告;
- 根据项目情况决定是否发布新版本;
- 配置管理员与各成员确定好新版本的各项信息;
- 配置管理员发布新版本。
4.7 权限控制的管理
为保障文档的安全性,一致性,以及防止意外修改,必须对不同的文档设置不同的访问权限。
文档权限类别:只读权限,读写权限。
文档类别:DOC,SRD,RELEASE。
用户类别:开发人员、测试人员、分析设计人员、部门经理、配置管理员、安装盘制作人员、问题及需求管理人员、用户文档编写人员等。
为了控制不同的使用权限,根据要求在服务器上分别建立不同的用户,针对不同的配置项所在目录分配不同的权限。
为了便于各部门的管理,应以表格的形式列出人员与管理对象的访问关系(用户权限清单)。
5 更新管理
5.1 源程序的修改

当开发小组在开发同一产品时,应能保障:各成员间的修改不会互相覆盖;程序员的修改能及时反映到产品的最新版本中。
建议首先在相应子系统的下一级建一目录,如checkout,存放正在修改的文档及修改登记表。当某个程序员要修改某一文档时,遵循以下程序:
- 接收维护任务;
- 查看需要修改的文件(如PBL及SQL等)是否正在被其它人员修改(检查checkout目录下是否存在要修改的文件或后缀已改为该程序员姓名简写);
- 如果有人在修改该文件,等待或与相应的开发员联系,重复2。否则继续;
- 将该文件复制到checkout目录下,在修改登记表中登记;或将该文件的后缀改为本人姓名简写;
- 将该文件拷贝到自己的私有目录;
- 根据要求修改源文件;
- 根据要求测试,并进行相关项的回归测试;
- 交测试人员测试,如未通过,重复6,如通过则继续;
- 在checkout目录中删除该文件,并在修改登记表中标注修改完成;
- 将修改完毕的文件通过电子邮件或其它手段送交版本管理员,版本管理员将文件复制到相应的路径;如遇特殊情况(版本管理员出差),程序员可将修改完毕的文件复制到相应的路径下,或将后缀改回正式。
- 回复下达者,报告维护任务完成。
3.2 版本升级
3.2.1. 版本升级原则
版本升级应严格纳入版本管理的控制之下。应当谨慎地控制版本的升级,保障高版本的向下兼容性,或提供严格定义的升级方法。
- 主版本号(1):当功能模块有较大的变动,比如增加多个模块或者整体架构发生变化。此版本号由项目决定是否修改。
- 子版本号(1):当功能有一定的增加或变化,比如增加了对权限控制、增加自定义视图等功能。此版本号由项目决定是否修改。
- 阶段版本号(1):一般是 Bug 修复或是一些小的变动,要经常发布修订版,时间间隔不限,修复一个严重的bug即可发布一个修订版。此版本号由项目经理决定是否修改。
- 日期版本号(140606):用于记录修改项目的当前日期,每天对项目的修改都需要更改日期版本号。此版本号由开发人员决定是否修改。
- 希腊字母版本号(beta):此版本号用于标注当前版本的软件处于哪个开发阶段,当软件进入到另一个阶段时需要修改此版本号。此版本号由项目决定是否修改。
每次版本升级,要填写版本升级记录表,记录表样例如下:
|
主版本号 |
子系统名称 |
子系统版本 |
发布日期 |
变更功能描述 |
发布人 |
批准人 |
备注 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
主版本号:记录当前发布的版本
发布日期:该版本批准发布的日期
修改文件:版本修改记录,版本修改日志
3.2.2. 新版本发布
新版本的发布包括主版本号和次版本号的升级,一般不包括内部版本号的升级。流程如下:
- 接收新版本发布任务,接收本次发布的版本代号。
- 在指定目录中,根据本次发布的版本号建立相应的子目录,将current下的所有内容拷贝至新建目录下。
- 可在新建目录下建立 readme.txt,并加入相应的内容。
2.3. 文档的变更
文档变更流程:

6. 备份管理
为了保证文档的最大可恢复性,要随时及定期地进行备份工作。
- 随时备份:
- 开发人员每天都要将自已当日修改的源文件在本地机器上进行备份。
- 开发负责人每天要将所有源文件在本地机备份。
- 建议备份采用循环备份。
- 定期备份
- 备份形式为硬盘备份和光盘备份。硬盘备份时,要备份在独立的硬盘上;光盘备份时,要将光盘存放在可靠的地方。
- 备份周期视各部门的具体情况而定。如果处于开发阶段,每周应对所有的源程序项进行备份,一般为每周周五;如果处于其它阶段,根据具体情况而定,但周期不能超过两周。
- 备份要由版本管理员负责,备份原则应是保证文档的最大可恢复性。
Part-2 《版本配置与基线管理》
配置管理(Configuration Management, CM)的目的是通过执行版本控制、变更控制等规程,以及使用配置管理软件,来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。
项目研发和管理过程中会产生许许多多的工作成果,例如文档、程序和数据等,它们都应当被保存起来,以便查阅和修改。如果把所有文件一股脑地塞进计算机里,那么使用起来肯定很麻烦。毫无疑问,人们应当将文件分门别类、有条理地保存起来。
凡是纳入配置管理范畴的工作成果统称为配置项(Configuration Item, CI),配置项主要有两大类:
(1)属于产品组成部分的工作成果,例如需求文档、设计文档、源代码、可执行文件、库文件、配置文件、测试用例、测试数据、测试工具、编译器等; 还包括交付给用户的外部文档,例如用户手册、安装手册、维护手册。
(2)项目管理和机构支撑过程域产生的管理文档。这些文档虽然不是产品的组成部分,但是值得保存。
配置项(CI)
典型的配置项包括项目计划书、需求文档、设计文档、源代码、可执行代码、测试用例、运行软件所需的各种数据,它们经过评审和检查通过后进入配置管理。
所有配置项都应按照相关规定统一编号,以一定的目录结构保存在配置库中。
可以分为基线配置项和非基线配置项两类。基线配置项可能包括所有的设计文档和源程序等,而非基线配置项可能包括项目的各类计划和报告。
所有配置项的操作权限应由CMO(配置管理员)严格管理,基本原则是:基线配置项向开发人员开放读取权限;非基线配置项向PM、CCB及相关人员开放。
每个配置项的主要属性有:名称、标识符、文件状态、版本、作者、日期等。所有配置项都被保存在配置库里,确保不会混淆、丢失。配置项及其历史记录反映了软件的演化过程。
配置项的状态可分为“草稿”、“正式”和“修改”三种。配置项刚建立时,其状态为“草稿”。配置项通过评审后,其状态变为“正式”。此后若更改配置项,则其状态变为“修改”。当配置项修改完毕并重新通过评审时,其状态又变为“正式”。

配置项版本号
- 草稿:0.YZ(0.01~0.99)
- 正式:X.Y,X和Y的取值范围为0~9
- 修改:X.YZ,只增加Z的值,XY不变;转为正式时,Z置为0,增加X.Y值。
基线(Baseline)
基线(Baseline)由一组配置项组成,这些配置项构成了一个相对稳定的逻辑实体。基线中的配置项被“冻结”了,不能再被任何人随意修改(见变更控制规程)。
基线通常对应于开发过程中的里程碑(Milestone),一个产品可以有多个基线,也可以只有一个基线。基线的主要属性有:名称、标识符、版本、日期等。
通常将交付给客户的基线称为一个“Release”,即,发行基线(Release);为内部开发用的基线则称为一个“Build”,即,构造基线(Build)。
所有的项目成员都要使用配置管理软件来保护自己的工作成果。机构应当采用统一的配置管理软件,常见的配置管理软件有Microsoft的Visual SourceSafe和Rational的ClearCase等。
为了提高配置管理的效率和安全性,机构应当有专门的配置管理员(角色)。配置管理员为每个项目制定《配置管理计划》,创建和维护配置库。
鉴于配置管理的重要性和复杂性,机构还应当设立配置控制委员会(Configuration Control Board, CCB)。
CCB是个虚拟小组,对配置管理各项活动拥有决策权(例如审批计划,审批变更请求等)。对于配置管理而言,CCB是决策者,而配置管理员是执行者。
如果机构的各个项目紧密相关(例如一个产品线下的多个项目),建议机构设立公共的CCB,这个公共的CCB对所有项目的配置管理拥有决策权。
如果机构的各个项目相对独立,那么每个项目可以设立各自的CCB。CCB的决策采用“少数服从多数”原则。
配置管理的流程如图1-1所示。

图 1 配置管理流程图
一、什么是软件配置管理
软件配置管理(SCM),是指在开发过程中各阶段,管理计算机程序演变的学科,它作为软件工程的关键元素。已经成为软件开发和维护的重要组成部分。SCM 提供了结构化的、有序化的、产品化的管理软件工程的方法。
它涵盖了软件生命周期的所有领域并影响所有数据和过程。配置管理是对产品进行标识、存储和控制,以维护其完整性、可追溯性以及正确性的学科。
二、配置管理的任务

(1) 定义配置项:软件配置项(SCI)即软件配置管理的对象。软件开发过程中产生的所有信息构成软件配置,
它们是:代码(源代码、目标代码)以及数据结构(内部数据、外部数据)、文档(技术文档、管理文档、需方文档)、报告,其中每一项称为配置项,软件配置项是配置管理的基本单位。
同时,开发过程中使用的环境,如操作系统、各种支撑软件、配置管理工具,也可纳入软件配置管理范围。
(2) 标识配置项:正确标识软件配置项对整个管理活动非常重要,对软件开发过程中的所有软件项目赋予唯一的标识符,便于对其进行状态控制和管理。
配置标识包括:文档标识、代码标识、运行文件标识。
典型的命名规则是RUP法。
(3) 定义基线:基线标志着软件开发过程一个阶段的结束,任一软件配置项,一旦形成文档并审议通过,即成为基线。基本的作用在于把各阶段的工作划分得更明确,使本来连续的工作在这些点上断开,以便检验和肯定阶段成果。
(4) 定义软件配置库:软件配置库内容因涵盖开发的全过程,应包括如表所示的软件项:
表 软件开发过程与软件配置库
| 模型、文档库 | 代码库 | 运行库 |
| 软件分析设计 | 软件实现 | 软件运行 |
| 软件分析设计模型 | 源代码 | 可执行代码 |
| 软件分析设计文档 | 目标代码 | 使用数据 |
| 测试数据 | ||
| 软件开发环境 | 软件运行环境 |
① 开发库:存放在开发过程中按照要求生成的各种技术文档、源代码、可执行代码和使用的数据,为开发人员的活动提供支持。
② 受控库:存放基线产品即项目转阶段经评审通过的和已经批准的软件工作产品和软件产品。
③ 产品库:存放项目正式交付用户的最终产品和最终运行环境。
(5)控制配置:配置控制的定义是为了明确配置管理在具体实现时所执行的配置规程,主要包括入库控制和变更控制。
(6)配置审计:包含了物理和功能上的审计。包括以下活动:① 验证每个软件配置项的正确性、一致性、完备性、有效性、可追踪性;② 在软件生存期内应定期配置审计工作;③定期进行软件备份,应保证备份介质的安全性和可用性。
(7)配置状态报告:提供软件开发过程的历史记录,内容包括配置管理项的现行状态及何时因何故发生了何事(入库、更动)。配置管理人员应定期或在需要时提交配置状态报告。配置状态报告包含了整个软件生命周期中对基线所有变更的可追踪性。
三、三大配置库
参考:Firefly
配置库一般由动态库(开发库、受控库)、静态库(产品库)组成。
开发库:项目成员的工作环境,保存正处于开发/变更的工作产品(文档/源代码)。开发库内的工作产品处于存档控制/版本控制之下,其信息可能进行频繁的修改
受控库:保存开发过程中某个阶段工作结束时释放的阶段产品,即配置项的基准版本。受控库的配置项处于基准控制下
产品库:保存对内/对外发布的产品,等待外部测试组测试,或者等待用户安装和验收,产品库的配置项处于基准控制下。
在现实操作中,
开发库一般分为开发库(DevelopLibrary)和管理库(ManagementLibrary);
受控库一般称为基准库(BaselineLibrary);
产品库一般称为发布库(ReleaseLibrary)/产品库(ProductLibrary),他们的具体组成和作用如下:

【管理库(ManagementLibrary)】:存放各种管理类文档
01.项目计划(ProjectPlaning):存放计划类相关文档如项目管理计划、进度计划、评审计划等
02.项目管理(ProjectManagement):存放项目度量、管理类报告如周报、月报等
- 01.软件估算(SoftwareEstimate):存放软件估算表等
- 02.周报(WeeklyReport):存放项目周报
- 03.里程碑报告(MiletoneReport):存放项目里程碑报告
- 04.决策分析报告(DecisionAnalysisReport):存放项目决策分析报告
- 05.外部报告(ExternalReport):存放针对外部人员(如客户)的报告
03.质量保证(QualityAssurance):存放质量保证计划等质量保证相关内容
- 01.周报(QAWeeklyReport):存放项目QA周报
- 02.审计记录(QAAuditRecord):存放QA审计记录
04.配置管理(ConfigurationManagement):存放配置管理计划等配置管理相关内容
- 01.配置周报(CMWeeklyReport):存放配置管理周报
- 02.基准申请(BaselineRequest):存放各种基准建立申请
- 03.变更申请(ChangeRequest):存放各种基准变更申请
05.评审管理(ReviewManagement):存放评审管理相关内容
- 01.评审通知(ReviewNotify):存放评审通知
- 02.评审记录(ReviewRecord):存放评审记录
- 03.评审分析(ReviewAnalyse):存放评审结果分析
06.项目培训(ProjectTraining):存放项目培训相关内容
- 01.培训教材(TrainingMaterial):存放各类培训教材
- 02.培训记录(TrainingRecord):存放培训记录、签到表等
07.项目总结(ProjectSummary):存放项目总结相关内容
- 01.里程碑总结(MileoneSummary):存放项目里程碑总结
- 02.结项总结(ClosingSummary):存放项目结项总结
- 03.个人总结(PersonalSummary):存放项目成员个人总结(结项后)
08.缺陷预防(DefectPrevention):
- 01.检查表(CheckList):存放各类检查表
- 02.检查结果(CheckResult):存放各类检查表的检查结果
09.会议记录(MeetingRecord):存放各类会议记录
【开发库(DevelopLibrary)】:存放项目开发过程中的工作产品
- 01.需求分析(RequirementAnalyse):存放需求分析文档、原型页面等
- 02.系统设计(SystemDesign):存放系统设计文档等
- 03.系统测试(SystemTest):存放系统测试计划、方案、用例等
- 04.概要设计(PreliminaryDesign):存放概要设计文档等
- 05.集成测试(IntegrationTest):存放集成测试计划、方案、用例等
- 06.详细设计(DetailDesign):存放详细设计文档等
- 07.单元测试(UnitTest):存放单元测试设计、结果等
- 08.系统代码(SystemCode):存放系统代码
- 09.确认测试(AssuranceTest):存放确认测试计划、用例、结果等
- 10.用户手册(UserManuals):存放用户手册等
- 11.支持工具(SupportTools):存放项目使用到的支持工具,如PowerDesigner、SQLManager等
- 12.外部产品(ExternalProducts):存放项目使用到的外部组件,如extjs等
- 13.其它(Other):存放开发过程中的其他工作产品
【基准库(BaselineLibrary)】:存放基准化的工作产品,内容可参照开发库中的说明
- 01.项目计划(ProjectPlaning):存放基准化的计划类相关文档如项目管理计划、进度计划、评审计划等
- 02.需求分析(RequirementAnalyse):存放基准化的需求分析文档、原型页面等
- 03.系统设计(SystemDesign):存放基准化的系统设计文档等
- 04.系统测试(SystemTest):存放基准化的系统测试计划、方案、用例等
- 05.概要设计(PreliminaryDesign):存放基准化的概要设计文档等
- 06.集成测试(IntegrationTest):存放基准化的集成测试计划、方案、用例等
- 07.详细设计(DetailDesign):存放基准化的详细设计文档等
- 08.单元测试(UnitTest):存放基准化的单元测试设计、结果等
- 09.系统代码(SystemCode):存放基准化的系统代码
- 10.确认测试(AssuranceTest):存放基准化的确认测试计划、用例、结果等
- 11.用户手册(UserManuals):存放基准化的用户手册等
- 12.支持工具(SupportTools):存放基准化的项目使用到的支持工具,如PowerDesigner、SQLManager等
- 13.外部产品(ExternalProducts):存放基准化的项目使用到的外部组件,如extjs等
【发布库(ReleaseLibrary)】:存放待发布/已发布的产品
- 01.内部发布(InternalRelease): 存放待发布/已发布发给内部客户(一般为测试部门)的工作产品
- 02.外部发布(ExternalRelease):存放待发布/已发布发布给外部客户(一般为合同方/最终用户)的工作产品
上面是一个典型的配置库结构,即使在不同的组织之间也往往是顶层的四个库一致,不过组织会根据自己的实际情况对四个库的下级目录进行一些改变。
四、三大基线定义及交付物
基线(Baseline)是软件工程活动从一个环节转入另外一个环节时对阶段产品或组件的标识。因为软件规模的膨胀和分工的细化,软件开发过程变得越来越复杂,每个阶段可能由不同类型的角色和人员来完成,因此有必要清晰标识上一阶段完成的成果和下阶段开始工作的基础。
这种标识活动就是建立基线。功能基线、分配基线和产品基线是配置管理的三个关键基线,分别对应不同阶段的文档和交付物。功能基线为分配基线提供输入,分配基线为产品基线提供设计依据,最终产品基线需满足功能基线要求。
本文将从三大基线的定义、对应文档及一个WBS分解示例来详细展开,帮助大家能够掌握基线含义以及开展WBS分解的流程。
ISO2000 / GJB3206A-2010《技术状态管理》。基线分为功能基线、分配基线、产品基线,三个基线,如下:
| 基线类型 | 定义 | 对应文档(交付物) | 责任人 | 时间 |
|---|---|---|---|---|
| 功能基线 Functional Baseline |
目标:系统功能和性能需求的正式确认,是后续设计和验证的基准。 活动:需求收集、需求文档编写、需求评审 |
2、需求文档 - 《软件需求规格说明书》(SRS) |
产品经理 | 定义阶段 |
| 分配基线 Allocated Baseline |
目标:将功能需求分配到子系统、组件或模块,并明确接口和设计约束。 活动:架构设计、模块接口定义、设计评审 |
3、设计文档 4、开发文档 |
研发经理 | 开发阶段 |
| 产品基线 Product Baseline |
目标:系统最终配置项的正式版本(代码、文档、测试报告等),作为交付和运维的基准。 活动:编码、测试、部署、交付文档 |
6、部署与维护文档 |
质量经理 | 交付维护阶段 |
|
1、项目规划文档 |
WBS工作分解结构(按基线阶段划分)如下:
1. 功能基线阶段(需求确认) 1.1 需求收集与分析 - 1.1.1 用户访谈(教师、学生) - 1.1.2 竞品分析 1.2 需求文档编写 - 1.2.1 编写《功能需求规格说明书》 - 1.2.2 需求评审会议 1.3 基线冻结 - 1.3.1 需求变更控制流程制定 - 1.3.2 功能基线批准 2. 分配基线阶段(系统设计) 2.1 架构设计 - 2.1.1 划分子系统(用户管理、题库管理、考试引擎)《系统架构设计文档》 - 2.1.2 定义模块接口(API文档)《接口控制文档》 2.2 详细设计 - 2.2.1 数据库设计(ER图) - 2.2.2 前端UI原型设计 2.3 设计评审 - 2.3.1 架构设计评审会 - 2.3.2 分配基线批准 3. 产品基线阶段(开发与交付) 3.1 编码实现 - 3.1.1 用户管理模块开发 - 3.1.2 考试引擎开发 3.2 测试验证《测试报告》 - 3.2.1 单元测试 - 3.2.2 集成测试 - 3.2.3 用户验收测试(UAT) 3.3 产品交付 - 3.3.1 部署生产环境 - 3.3.2 编写《用户操作手册》 - 3.3.3 发布产品基线版本(v1.0)
软件文档可以分为三类:开发文档、产品文档和管理文档。
1、开发文档 开发文档描述开发过程本身。基本的开发文档包括: 1)可行性研究报告和项目任务书 2)需求规格说明 3)功能规格说明 4)设计规格说明,包括程序和数据规格说明 5)开发计划 6)软件集成和测试计划 7)质量保证计划 8)安全和测试信息 2、产品文档 产品文档描述开发过程的产物,包括: 1)培训手册 2)用户手册 3)操作手册 4)产品手册和信息广告 3、管理文档 管理文档记录项目管理的信息。 1)开发过程每个阶段的进度和进度变更记录 2)软件变更情况记录 3)开发团队的职责定义划分 4)项目计划、项目阶段报告 5)配置管理计划
五、配置软件管理实施的流程
1.规划、调整网络开发环境
一个规划良好的开发环境,是实施配置管理系统的前提。此阶段要对配置管理系统做出规划,主要考虑以下问题:
- 网络的带宽、拓扑结构
- 服务器的选择、命名规范
- 存储区的定位
- 开发人员及组的命名规约等。
2.设计配置管理库
根据项目开发的要求,设计开发资源的存储模式,良好的存储模式有利于减轻管理上的负担,增强配置管理库的访问性能,同时便于控制访问权限,保护软件资产。
3.定义配置管理系统的角色
需要确定与配置管理相关的所有角色,包括他们的相应的活动。在开发过程中,一个开发人员可能兼任多种角色,但一项任务在同一时刻只能由一个角色来执行。
一般配置管理中的角色主要包括:
- 项目经理
- 配置管理员
- 软件开发人员
- 集成人员
- QA人员
4.制定配置管理流程
配置管理实施的一个重要阶段,主要目的是根据项目开发的需要,制定相应的配置管理流程,以更好地支持开发,主要活动包括:
定制并行开发策略。合理的并行开发策略应该具有以下特点:协调项目的复杂性和需求,统一创建分支类型和元数据,为开发过程中的变更集成制定有效的规范,适时反映开发过程中方法和需求的变化:
发布版本管理。软件开发过程中的一个关键活动是提取工件的相关版本,以形成软件系统的阶段版本或发布版本,一般将其称为稳定基线。一个稳定基线代表新开发活动的开始,而一系列定制良好的活动之后又会产生一个新的稳定基线。有效地利用此项功能,在项目开发过程中可以至始至终管理、跟踪部件版本间的关联。
5.相关人员的培训
实施配置管理系统,相关人员需要接受培训:
- 管理员培训:针对配置管理员,主要学习配置管理工具管理相关内容:
- 开发人员培训:针对开发人员,主要学习配置管理工具与开发相关的常用操作
- 管理流程培训:针对全体人员,目的是了解配置管理策略和流程,以及如何与开发管理、项目管理相结合。
附录 A:产品配置管理·配置库目录结构
参考:https://www.doc88.com/p-84359814983281.html
| 一级目录 | 二级目录 | 三级目录 | 四级目录 | 内容 |
|---|---|---|---|---|
| 产品线大类 |
立项 | |||
| 项目名称(开发库(DevelopLibrary)和管理库(ManagementLibrary)) |
项目管理 | 01.项目策划/计划(ProjectPlaning) 02.项目管理(ProjectManagement) 03.质量保证(QualityAssurance) 04.配置管理(ConfigurationManagement) 05.评审管理(ReviewManagement) 06.项目培训(ProjectTraining) 07.项目总结(ProjectSummary) 08.缺陷预防(DefectPrevention) 09.会议记录(MeetingRecord) |
项目开发计划书 项目开发进度表 配置管理计划 风险管理计划 过程与产品质量保证(PPQA)计划 项目任务书 |
|
|
01需求 |
01.需求分析(RequirementAnalyse) | 产品需求说明 需求分析说明 |
||
| 02设计 | 设计文件 |
概要设计 02.系统设计(SystemDesign) |
||
| 03实现 | 技术文件 | 界面原型 原理图 PCB图 逻辑文件 装配方案、装配图、零件图 08.系统代码(SystemCode) |
||
| 结构工艺 | 工艺说明 | |||
| 生产文件 | bom表 pcb_gerber文件 采购文件 |
|||
| 04测试 | 03.系统测试(SystemTest) 05.集成测试(IntegrationTest) 07.单元测试(UnitTest) 09.确认测试(AssuranceTest) |
测试方案与测试用例 测试记录 测试报告 |
||
| 05交付 | 10.用户手册(UserManuals) 11.支持工具(SupportTools) 12.外部产品(ExternalProducts) 13.其它(Other) |
|||
| 06评审区 | 评审报告 | |||
| 支持过程 | 配置管理 质量保证 度量分析 决策分析与解决方案 |
|||
| 基线 | XXX_基线/里程碑.md ...._基线/里程碑.md |
|||
| 基线管理(受控库/基线库(BaselineLibrary)) |
XXX_基线/里程碑 |
01.项目计划(ProjectPlaning) 02.需求分析(RequirementAnalyse) 03.系统设计(SystemDesign) 04.系统测试(SystemTest) 05.概要设计(PreliminaryDesign) 06.集成测试(IntegrationTest) 07.详细设计(DetailDesign) 08.单元测试(UnitTest) 09.系统代码(SystemCode) 10.确认测试(AssuranceTest) 11.用户手册(UserManuals) 12.支持工具(SupportTools) 13.外部产品(ExternalProducts) |
||
| 发布版本(发布库(ReleaseLibrary)/产品库(ProductLibrary)) | 01.内部发布(InternalRelease)
02.外部发布(ExternalRelease) |
|||
| 结项 |
浙公网安备 33010602011771号