CMM
的流程说明:
CMM
Capability Maturity Model
软件能力成熟度模型
其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。
CMM/CMMI
是目前国际上最流行、最实用的一种软件生产过程标准,已经得到了国际软件产业界的认可,成为当今
(
企业
)
从事规模软件生产不可缺少的一项内容。
一、项目开工会
在客户经理领到客户代表分配给的需求后,做项目计划,具体做项目人员的确定、需求的分解(需求分解到每个人)、代码量的估计,项目各个阶段时间的划分和工作量的计划、质量指标的设定。这时项目经理需要输出的文档是项目需求分解任务书、项目计划
PPT
、及做好整个项目需要填写的一系列表格。
二、
SRS
阶段:(
SRS
的写作)
在项目开工会后,项目组就开始按照在项目开工会上项目经理的需求任务分解的任务开始进行
SRS
的写作。
一般项目经理给你的一个子需求任务,你这时需要分解为更小的需求。一般一个需求的写作是按这样进行的。先简单介绍这个需求,然后把这个需求设计成黑盒的形式,即输入,处理过程、输出。这些都需要写详细,任何一个需求都写成这种形式,输入是什么,处理过程是什么,输出结果是什么
。
每个项目组成员都把自己的需求的
SRS
文档写出来之后
放到配置库中,
然后每个人对项目组其他成员的(非自己的)
SRS
文档进行
Review
(评审)
,
对每个
SRS
文档在每页发现或者
纠正的错误数不能低于一定的数目
,而且要保留批注记录,经过
Review
的(保留批注的)文档要放到配置库的
Review
文件夹下,这是进行项目质量指标收集的重要依据,是
QA
进行调阅和审计的资料。
全
体成员进行
SRS
阶段会议,对每个人写的
SRS
进行评审会议(讨论和提意见),对别人给你提的修改意见你要一一进行说明,说明为什么不改,怎么改的,是什么问题,问题严重程度属于什么级别,而且都要填表
,也是
QA
进行审计的内容。开完会后如果每个人完成的都差不多,然后安排半天或者
一天的时间进行返工,主要是进行修改文档,
按在会上讨论的结果和别人给你的
Review
文档结果(评审结果)进行准一修改和完善。然后再进行
SRS
阶段开会,如果都做的比较到位和具体、符合要求,即关闭
SRS
阶段。
三、
UTP
、
STP
阶段(
UTP
、
STP
的写作)
在
SRS
阶段完成后一般安排比较很短的时间进行
UTP
、
STP
的写作。即单元测试计划、系统测试计划。这两个需要输出提交的是两个表格。
单元测试计划按预置条件(即需要设置的先决条件)、输入、期望的输出、实际的输出这样设计的表格来填。
即每个单元测试用例都按这样的黑盒测试方法来写。
STP
是在单元测试基础之后用的,是项目组把产品交到专门的测试部门前的项目组的联调和测试。这时需要写出系统测试计划。为了到后面单元测试阶段和系统联调阶段使用。这两个文档也需要按照前面的方法和流程进行
Review
(评审)、汇总、会议评审、修改返工、定稿。最后关闭这个阶段。
四、
SD
阶段(
SD
的写作)
这个阶段是逻辑设计阶段。按照前面的
SRS
文档,一般一个人连续性地负责前面
PM
在项目开工会分配给你的一个需求的各个阶段的设计和其他工作
。进行
LD
文档的写作。
要非常具体,比如按照前面设计出的
SRS
文档中的一个需求,这
个阶段你需要设计出具体的数据结构,要设计出哪些类,每个类的各个数据成员是什么,是什么类型的,每个类要设计哪些函数,函数要很具体,函数名称、返回值,参数(输入参数、输出参数),该函数由谁来调用它,它又由调用了哪些函数,函数的具体处理过程要写成伪码的形式
。这个阶段需要使用
Rational Rose
画出设计出的每个类的成员和函数。以及类之间的关系。
这个阶段的输出就是
LD
文档。
也按前面的方法进行
Review
(评审)、汇总、会议评审、修改返工、定稿。也进行工时的记录和统计、分析。
五、
CODE
阶段(编写代码,一般安排一到两周)
SRS
、
LD
阶段完成后,在
CODE(
编写代码阶段
)
就比较容易和轻松了。只需要找到添加代码的地方,然后写上标志,比如
Begin infoX�CMDSP V200102 2006-9-1 liuyongping add(modify,delete)
代码
End infoX�CMDSP V200102 2006-9-1 liuyongping add(modify,delete)
Add
表示中间这段代码是你写的,
modify
表示是你修改的,
delete
表示你把这段代码删除了。然后参照前面设计的
LD
文档,编写代码。对每个类、每个类成员的命名都要符合
规范
,比如类成员以
m_
开头。对每个类对象(变量)命名也要符合规范。尤其需要注意指针的使用,好的程序也是灵活使用指针的程序,对内存的申请、释放一定要小心。
最后编出的代码自己首先要进行编译、调试、保证自己添加和负责的这一部分编译通过。
然后正确无误才能合入配置库。要对合入配置库的代码进行负责,因为配置库中的代码是大家一个项目一起使用的代码,只要你的有编译错误,然后大家再此基础上
Check Out
出来的代码肯定不能编译通过。但是逻辑错误允许有,这些逻辑错误在后面的单元测试和系统测试中会暴露出来,到时修改掉错误,重新合入配置库。在
Code
阶段,每个人完成自己的代码写作后,需要相互进行代码走读,代码走读阶段能发现一些问题,这些都要进行记录统计和分析,然后要不允许留一个错误地修改掉。代码的格式一定要符合规范,格式要对齐,需要有一个空格的地方不能没有空格或者多一个空格。要求很严,这样代码比较整齐、规范、可读性强。对自己新设计的文件,在文件头有说明,说明文件名,作者,创建时间,修改时间,功能。对函数都要有说明:返回值,输入参数、输出参数(没有输出参数的不写该项),功能。文件的命名也有规范。能不重新创建文件的就不进行重新创建文件,完成同一功能的放到同一文件中。对重要和难懂的地方可以简明扼要地加点注释说明。
六、
UT
:单元测试阶段
在产品所有代码编译通过的基础上,按照前面的
UTP
设计的测试用例进行测试。
主要检查主要功能性测试用例和异常测试用例的测试结果
,看是否达到了设计目的,与设计是否相否。对测试的结果要进行记录和填表,反馈给代码编写人员,然后代码编写人员修改错误,并把修改方法和修改结果报告给测试人员。
这个属于项目组内部自测,一般自己测自己的。一般自己测出来问题修改掉合入配置库即可。
七、
ST
:系统测试阶段
联合测试,系统需要与其他系统进行通信和连接的,这时把其他系统安装好,然后与我们的
系统进行对接,在配置好后,从其他系统进行数据模拟和交互来测试所开发产品系统的功能和性能、结果等
。记录测试结果,并修改错误,最后合入配置库。
八、打包、归档、转交测试部进行测试
在以上各个阶段完成后,且软件系统的缺陷率满足项目设定和要求的情况下,项目经理进行项目版本的打包、归档,归档以后这个版本就不能更改了,在测试部测出
Bug
后,需要走测试电子流填单经过测试经理审核、项目经理审核、定位人员进行问题定位、解决问题人员写出修改
Bug
或者错误的方法,然后经项目经理审核修改意见和方法正确后,授权和指定一个修改人员进行修改,这时项目经理会通知配置管理人员给该修改人员开放配置库修改权限。这个修改人修改后先自测、再让测试部人员重新测试正确后,最后才合入配置库。归档后提交给测试部的有编译过的代码文件、用户使用说明书(即如何安装、配置和环境的说明,让测试部的人员模拟最终用户使用该产品的软件)。
术语说明:
SRS
System/Software Requirement Specification
软件需求规格说明
SD
System Design
系统设计
UT
Unit Test
单元测试
ST
System Test
系统测试
CM
Custom Management
客户经理
PM
Project Management
项目经理
TM
Test Management
测试经理
UTP
Unit Test Plan
单元测试计划
STP
System Test Plan
系统测试计划
QA
Quality Assurance
质量保证
总结:
CMM
只是一种经验集合,一种经验的大杂烩。举一个简单例子:在我上学的时候(尤其是小学,中学),老师经常会让成绩比较好的一些同学在班会上向大家介绍他(她)的好的学习方法和经验(不知道现在的孩子是不是也是这样)。然后老师可能会将这些总结整理一下,然后贴在教室后面的黑板报栏里,以供其他同学学习。其实
CMMI
就像老师整理的那张黑板报!
CMMI
就是
SEI
综合了世界上一些比较大的公司的一些好的做法(专业俗语叫:最佳实践),经过归纳而成的。
就 和我们 老师贴在教室墙上的那张黑板报一样,
CMMI
只告诉了我们要做什么,而没有告诉我们怎么做。就如同,学习成绩好的会告诉你,要学习好,必须要先提前预习,但并不会给你说,你要预习必须要按以下五步来做,第一步,
XXX
,第二步
XXX
,
……
。所以
CMMI
也是一样,它提供了一套经验集,但它并没有明确的告诉你,要如果去实践这条经验,或者按照什么标准来实践这条经验。