摘 要 : CMM可重复级作为软件企业项目级的过程改进框架,其难点在于如何将CMM有关要求应用到具体项目中去。本文结合某公司实施CMM二级评估和软件项目管理经验,论述了CMM可重复级在特殊软件项目管理中应用的方法及要求。
关键词: CMM;软件项目管理;应用
引言
由 SEI 在 1991 年 8
月发布的软件能力成熟度模型( SW-CMM
),用来评估软件企业的成熟度级别,使软件企业了解自己的优势和不足之处,从而持续地改进企业的软件开发过程,提高管理水平,降低管理成本,保证软件开发效率和软件质量。
然而, CMM
是针对大型项目和企业制定的。小项目和中小企业由于受到相应条件的限制,如组织结构、角色和关系、过程模式定义等,生搬硬套
CMM
框架只能给自己带来沉重的负担。可取的做法是把
CMM 作为一个参考,从 CMM
评估体系中汲取适合于自身发展的要素,提高软件开发和管理水平。
1 CMM 可重复级框架
CMM可重复级是针对软件项目的管理,包含需求管理、软件项目计划、软件项目跟踪与监控、软件子同合管理、软件配置管理、软件质量保证等六个关键过程域。其中子合同管理用于选择合格的软件承包商并对其进行有效地管理,一般软件企业如无外包业务,可将该关键过程域忽略,不作为评估范围。
1.1需求管理
这里的需求包括技术需求和非技术需求。目的是在客户和软件项目间建立对客户需求的共同理解。主要任务有:获取客户需求,作为后续工作的基础;客户需求通过评审,纳入配置管理,创建需求基线;按配置管理的变更流程执行,跟踪需求变更。
1.2 软件项目计划
制定合理的软件项目计划是软件项目开展、跟踪与监控的基础。项目开始时,项目经理根据需求进行估算,制定软件开发计划和进度表;软件开发计划通过项目组评审和高层经理审批,纳入配置管理。
1.3 软件项目跟踪与监控
为使软件项目按计划的进度和质量完成,需要建立过程可视性,对项目实际进展情况进行跟踪与监控,使管理者在软件项目偏离计划时采取有效措施。跟踪软件项目活动主要包括跟踪软件规模、工作量、成本、进度、风险等。
1.4 软件质量保证
软件质量保证贯穿软件项目生命周期。质量保证人员按质量保证计划,对软件项目所使用的过程及开发的产品进行恰当的管理,评审项目活动,审计工作产品,以验证它们符合规程和标准。
1.5 软件配置管理
软件配置管理同样贯穿软件项目生命周期。由SCM工程师制定配置管理计划,完成各项配置管理活动,维护配置项的可跟踪性,保证在软件项目整个生命周期中产品的完整性。
2 项目生命周期模型描述
软件项目生命周期模型的选择对项目成功与否起到很大作用。合适的项目生命周期使项目能够按计划顺利完成,不合适的项目生命周期不同程度地阻碍项目的进展。
本文讨论的软件项目是某公司与国外公司合作项目,主要是软件验证和测试。与自主开发软件不同,该项目来源于国外公司,客户以任务包形式分配任务,每个任务包开始时间由客户决定。因为现有的软件项目生命周期模型均不能确切描述该项目的特性和过程,为此,公司
SEPG
创造性地为该项目提出了专门的模型。将项目分为三个阶段:策划、实施和总结。各阶段与
5 个 KPA 的关系如示意图。
3 项目管理活动与KPA的覆盖关系
3.1 项目策划阶段
项目策划阶段是项目的初始阶段,目的是为项目过程的管理做好必要的准备。该阶段对应
CMM
中需求管理的部分内容以及软件项目计划。该阶段的主要工作包括:进行项目级的需求(即客户非技术要求)分析,进行项目总体估计,制定项目总体计划,指定项目经理,分配项目人员。
质量保证和配置管理活动从项目策划阶段即开始,并作为支持过程贯穿整个项目生命周期。
主要输入
|
工作说明书( Statement Of Work)
|
参与人员
|
高层经理(必须参加);
项目经理、 SQA 和 SCM
工程师、客户或客户代表(必须参加);
项目组主要成员(可选)
|
活动
|
高层经理对 客户的 SOW进行
分析、评审,与客户充分沟通,达成一致意见;
分配项目经理和项目组成员,必要时进行相关技能培训;
利用 历史数据和 客户
提供的数据,
项目经理估计项目的规模、工作量 ;
项目经理、 SQA 和 SCM
工程师分别制定项目计划、 SQA 计划和
SCM 计划
|
主要输出
|
估计记录;
软件项目计划,包括项目开发计划、
SQA计划、SCM计划。
|
3.2 项目实施阶段
项目组收到第一个任务包标志着项目实施阶段开始,项目组以任务包为单位,管理、控制项目的进度和质量。从示意图中可以看出,大部分的活动集中在项目实施阶段,综合覆盖了
CMM 二级所要求的 5 个 KPA
:需求管理、项目计划、项目跟踪与监控,以及质量保证和配置管理活动。
主要输入
|
任务包;软件(技术)需求
|
参与人员
|
项目经理、项目组成员、
SQA 工程师、 SCM 工程师;
高层经理(必要时参与)
|
活动
|
项目经理对 任务包
进行评估,合理分配任务给项目组成员;
项目组成员依据软件需求,编写测试程序,进行调试;
进行同行评审;
运行测试程序,交付工作产品
|
主要输出
|
工作产品,评审记录
SQA报告,SCM报告
项目跟踪与监控数据
|
根据项目生命周期模型,对于每一个任务包,又细分为五个小的阶段:需求
& 计划、设计、评审、测试和交付。
• 需求 & 计划
:这里的需求是软件的技术需求,而计划是针对每个任务包制定的较为详细的计划,即项目经理对任务包进行分析和确认,对技术需求初步分析估计,合理分配任务给项目组成员。
• 设计
:项目组成员依据软件技术需求和分配到的任务,设计测试用例和测试程序。
• 同行评审
:对开发完毕的测试用例和程序进行评审。虽然同行评审是
CMM
三级的要求,但考虑到公司已有一定的评审文化和流程,将该活动作为制度要求实施,也为将来顺利达到
CMM 三级减轻工作量。
• 运行
:使用测试程序对目标代码进行测试。
• 交付
:将工作产品(已完成并通过同行评审的测试程序及相关文件)提交给客户。
3.3 项目总结阶段
项目总结阶段在项目实施阶段结束后
,
与客户一起,依据项目准备阶段所确定的内容和项目实施过程中实际提交的工作产品,最终确定完成的成果和工作量;同时总结项目实施过程的经验教训,为以后的项目提供参考,为过程改进确定方向。
主要输入
|
工作说明书( SOW);
项目实施阶段有关数据
|
参与人员
|
高层经理、项目经理、 SQA
工程师、项目组主要成员
|
活动
|
整理项目成果;
确定工作量等数据统计并归档管理;
总结经验教训
|
主要输出
|
项目数据和总结
|
4 结束语
CMM
模型的可重复级描绘了软件项目管理过程的目标及关键实践,为提高软件项目管理水平起到指导作用,也有助于小型软件组织改进它们的过程。然而
CMM 模型并不是僵硬的。将 CMM
可重复级框架应用于特殊
软件项目管理时,应针对具体的项目灵活运用,将
过程裁剪到项目所需的程度。裁剪的准则应以实用为主,避免过于繁琐和形式化。这样,
一方面保证项目的顺利进行,一方面保证覆盖
CMM二级的要求。 本文提出的 基于 CMM
可重复级的
项目管理模型已经在多个类似软件项目中得到应用。并取得了良好的效果,改进了项目进度和预算的可预测性,提高了生产率和软件产品质量。 |