CMMI体系与软件研发过程主讲人:山石2010年10月29日©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用1一、CMMI简介二、CMMI在软件研发过程的重要意义三、CMMI的几个关键过程域介绍四、CMMI的实施及评估过程目录©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用2•CMMI的全称为:CapabilityMaturityModelIntegration,即能力成熟度模型集成。•CMMI家族包括CMMIforDevelopment,CMMIforService和CMMIforAcquisition三个套装产品。1.CMMI简介1.1CMMI定义©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用3•CMM是指“能力成熟度模型”,它是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各发展阶段的描述。•自从1994年SEI正式发布软件CMM以来,相继又开发出了系统工程、软件采购、人力资源管理以及集成产品和过程开发方面的多个能力成熟度模型。把现在的以及将被发展出来的CMM模型,集成到一个框架中去,成为CMMI。•CMMI是CMM模型的最新版本。1.CMMI简介1.2CMMI的历史©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用4•CMMI是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述•核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化、使企业能够更好地实现商业目标。1.CMMI简介1.1什么是CMMI©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用51.初始级软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。2.已管理级建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。1.CMMI简介1.3CMMI的5级划分©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用63.已定义级已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。4.量化管理级分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。5.优化管理级过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。1.CMMI简介1.3CMMI的5级划分©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用7一、CMMI简介二、CMMI在软件研发过程的重要意义三、CMMI的几个关键过程域介绍四、CMMI的实施及评估过程目录©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用82.1对软件研发的意义•提高软件开发的管理能力,CMMI是提供软件研发自我评估的方法和自我提高的手段•降低企业的工程成本;提高软件生产率;提高软件质量。•提高软件公司的国内和国际竞争力。2.CMMI在软件研发的重要意义©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用9一、CMMI简介二、CMMI在软件研发过程的重要意义三、CMMI的几个关键过程域介绍四、CMMI的实施及评估过程目录©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用103.1SPP模型•精简并行过程(SimplifiedParallelProcessSPP)•基于CMMI以及软件工程和项目管理知识而创作的一种“软件过程改进方法和规范”,它由众多的过程规范和文档模板组成。SPP主要用于指导国内IT企业持续地改进其软件过程能力。3.关键过程域介绍©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用113.2全部过程域CMMI3级共19个过程域,划分为三个部分:•项目管理过程•项目研发过程•机构支撑过程3.关键过程域介绍©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用123.2项目管理过程项目管理过程包含6个过程域,分别为:•立项管理•结项管理•项目规划•项目监控•风险管理•需求管理3.关键过程域介绍©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用133.2项目研发过程项目研发过程包含8个过程域,分别为:•需求开发•技术预研•系统设计•实现与测试•系统测试•Beta测试•客户验收•技术评审3.关键过程域介绍©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用143.2机构支撑过程机构支撑过程包含5个过程域,分别为:•配置管理•质量保证•培训管理•外包与采购管理•服务与维护3.关键过程域介绍©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用153.3项目监控•项目监控的目的是通过周期性地跟踪项目计划的各种参数如进度、工作量、费用、资源、工作成果等,不断地了解项目的进展情况,以便当项目实际进展状况显著偏离计划时能够及时采取纠正措施。•三个主要规程:项目计划跟踪;控制偏差;项目进展汇报。3.关键过程域介绍©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用163.3项目监控3.关键过程域介绍©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用173.3项目监控具体工作3.关键过程域介绍•项目计划跟踪项目经理周期性地跟踪项目计划的各种参数如进度、工作量、费用、资源、工作成果等,从而及时了解项目的实际进展情况。从数据分析角度讲,计划是基于估计的,而跟踪则是基于度量的。•偏差控制项目经理将跟踪得到的数据和《项目计划》中的数据进行对比,分析偏差,发现项目进展偏离计划,应当及时采取纠正措施。•项目进展汇报项目经理周期性地召开会议,讨论项目进展情况,撰写“项目进展报告”并通报给机构领导和所有成员。©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用183.4需求管理3.关键过程域介绍©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用193.4需求管理3.关键过程域介绍•需求管理(RequirementManagement,RM)的目的在客户与开发方之间建立对需求的共同理解,维护需求与其他工作成果的一致性,并控制需求的变更。•三个主要规程:需求确认;需求跟踪;需求变更控制。©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用203.4需求管理3.关键过程域介绍一、需求确认需求确认是指开发方和客户共同对需求文档进行评审,双方对需求达成共识后作出书面承诺,使需求文档具有商业合同效果。二、需求跟踪需求跟踪是指通过比较需求文档与后续工作成果之间的对应关系建立与维护“需求跟踪矩阵”,确保产品依据需求文档进行开发。三、需求变更控制需求变更控制是指依据“变更申请-审批-更改-重新确认”的流程处理需求的变更,确保需求的变更不会失去控制而导致项目发生混乱。©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用213.5系统测试流程•系统测试(SystemTest,ST)的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。•当产品需求和系统设计文档完成之后,系统测试小组就可以提前开始制定测试计划和设计测试用例,而不必等到“实现与测试”阶段结束。这样可以提高系统测试的效率。3.关键过程域介绍©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用223.5系统测试流程3.CMMI的几个关键过程域介绍©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用233.5系统测试的主要内容•功能测试。即测试软件系统的功能是否正确,其依据是需求文档,如《产品需求规格说明书》。由于正确性是软件最重要的质量因素,所以功能测试必不可少•健壮性测试。即测试软件系统在异常情况下能否正常运行的能力。健壮性有两层含义:一是容错能力,二是恢复能力。•性能测试。即测试软件系统处理事务的速度,一是为了检验性能是否符合需求,二是为了得到某些性能数据供人们参考(例如用于宣传)3.CMMI的几个关键过程域介绍©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用243.5系统测试的主要内容•用户界面测试。重点是测试软件系统的易用性和视觉效果等。•安全性(security)测试。是指测试软件系统防止非法入侵的能力。“安全”是相对而言的,一般地,如果黑客为非法入侵花费的代价(考虑时间、费用、危险等因素)高于得到的好处,那么这样的系统可以认为是安全的•安装与反安装测试。3.CMMI的几个关键过程域介绍©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用253.5系统测试产生的主要文档系统测试过程域产生的主要文档有:•《系统测试计划》•《系统测试用例》•《系统测试报告》•《缺陷管理报告》3.CMMI的几个关键过程域介绍©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用26测试开始测试设计流程系统测试流程缺陷管理流程测试结束3.关键过程域介绍3.5我公司系统测试工作流程©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用27输入主管领导项目负责人开发工程师测试工程师输出测试负责人开始撰写《系统测试计划》撰写《测试需求说明书》维护《系统测试计划》和《测试需求说明书》撰写《系统测试用例》不通过通过不通过结束模块需求说明书概要设计说明书数据库设计说明书总体需求说明书系统测试计划测试需求说明书系统测试用例3.测试设计流程3.5流程图审批和审核《系统测试计划》《测试需求说明书》通过审核《系统测试计划》和《测试需求说明书》不通过审核《系统测试用例》通过©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用28输入主管领导项目负责人开发工程师测试工程师输出测试负责人提交测试申请分配测试任务缺陷管理流程执行测试撰写《测试总结报告》维护《系统测试用例》开始结束不通过通过不通过通过通过不通过详细设计说明书系统部署手册产品部署包产品源码测试申请单系统测试计划测试需求说明书系统测试用例CQ上的测试记录产品操作手册检查单产品操作手册系统测试总结报告系统测试用例3.系统测试流程3.5流程图审批、审核《系统测试总结报告》审核《系统测试报告》审核申请资料系统部署手册检查单导入测试不通过通过©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用29一、CMMI简介二、CMMI在软件研发过程的重要意义三、CMMI的几个关键过程域介绍四、CMMI的实施及评估过程目录©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用304.1准备工作•软件工程过程组(SoftwareEngineeringProcessGroup,SEPG)•在进行CMMI评估之前,制定一个正确的评估计划并将其文档化,确保有一个富有经验的、受过培训且具有适当资格的小组能被用来评估,为执行评估过程做准备,是十分必要的。•文档化评估计划的结果,包括:要求,协定,估价,风险,剪裁方法,以及与评估相关的实际考虑(例如:日程安排,后勤,组织的背景信息)。4.CMMI的实施及评估过程©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用314.1准备工作•进行恰当的剪裁。•对评估所需要的资源进行标识。•确定评估所需的费用以及日程安排•对后勤计划进行管理•对风险进行管理并将其文档化•获得评估计划的许可•选择评估小组领导•选择评估小组成员•准备评估小组4.CMMI的实施及评估过程©Copyright2007机密文件,仅供北京中烟信息技术有限公司使用324.2评估·阶段1:差异分析·阶段2:组建EPG小组和过