1、软件质量保证与软件质量保证与CMM福州大学福州大学 软件学院软件学院张舒张舒软件质量软件质量 产品的价值取决于产品的质量,软件质量产品的价值取决于产品的质量,软件质量的特性是多方面的。必须包括:的特性是多方面的。必须包括:与明确确定的功能和性能需求的一致性。与明确确定的功能和性能需求的一致性。即软件需即软件需求是质量度量的基础,缺少与需求的一致性就无质求是质量度量的基础,缺少与需求的一致性就无质量可言。量可言。与明确成文的开发标准的一致性。与明确成文的开发标准的一致性。不遵循专门的开不遵循专门的开发标准,将导致软件质量低劣。发标准,将导致软件质量低劣。与所有专业开发的软件所期望的隐含的特性的一
2、致与所有专业开发的软件所期望的隐含的特性的一致性。性。忽视软件隐含的需求,软件质量将不可信。忽视软件隐含的需求,软件质量将不可信。从用户角度说也就是软件产品满足用户要从用户角度说也就是软件产品满足用户要求的程度。求的程度。为什么要关注软件质量?为什么要关注软件质量?高质量的产品才能高质量的产品才能提高客户满意度,占领市场提高客户满意度,占领市场降低软件开发的风险降低软件开发的风险确保软件项目按照计划实施确保软件项目按照计划实施防止软件项目由于质量问题而流产或者失败防止软件项目由于质量问题而流产或者失败提高企业的影响力提高企业的影响力软件质量软件质量 用户对软件质量的评价用户对软件质量的评价没有
3、没有功能功能(功能功能)运行速度太慢运行速度太慢(性能性能)有太多的错误有太多的错误(故障故障)软件不好改动软件不好改动(维护维护)界面不美观界面不美观(人机界面人机界面)这个软件不好使用这个软件不好使用(易用性易用性)影响软件质量的因素影响软件质量的因素 把影响软件质量的因素分成三组,分别反映用户把影响软件质量的因素分成三组,分别反映用户在使用软件产品时的三种不同倾向或观点。在使用软件产品时的三种不同倾向或观点。三种倾向是:三种倾向是:产品运行、产品修改和产品转移产品运行、产品修改和产品转移。信息系统作为一个产品,也可以参照这三种倾向信息系统作为一个产品,也可以参照这三种倾向来定义。来定义。
4、产品运行产品运行产产品品修修改改 可移植性可移植性可重用性可重用性互运行性(与另一互运行性(与另一个系统结合)个系统结合)正确性正确性 完整性完整性健壮性健壮性 可用性可用性效效 率率 风险性风险性可理解性可理解性可修改性可修改性灵活性灵活性 可测试性可测试性软件质量软件质量 软件质量是一个软件企业成功的必要条件,软件质量是一个软件企业成功的必要条件,其重要性无论怎样强调都不过分。其重要性无论怎样强调都不过分。而软件产品生产周期长,耗资巨大,如何而软件产品生产周期长,耗资巨大,如何有效地管理软件产品的质量一直是软件企有效地管理软件产品的质量一直是软件企业面临的挑战。业面临的挑战。软件质量保证软
5、件质量保证 什么是软件质量保证?什么是软件质量保证?为管理层提供为获知产品质量信息所需的数据,为管理层提供为获知产品质量信息所需的数据,从而获得产品质量是否符合预定目标的认识和从而获得产品质量是否符合预定目标的认识和信息。信息。软件质量保证是要为软件产品的质量提供某种可软件质量保证是要为软件产品的质量提供某种可视性,知道哪些地方有质量问题,便于改进方法视性,知道哪些地方有质量问题,便于改进方法和措施,提高软件产品的质量和措施,提高软件产品的质量例如,对软件进行测试,发现有哪些错误,这例如,对软件进行测试,发现有哪些错误,这些错误的性质些错误的性质(严重、一般严重、一般)软件质量保证要做的事情软
6、件质量保证要做的事情了解产品质量了解产品质量(例如,软件测试例如,软件测试)提交软件质量报告提交软件质量报告(例如,软件测试报告例如,软件测试报告),说明质量问题说明质量问题为项目组和管理层服务为项目组和管理层服务(例如,告诉问题例如,告诉问题所在,便于改进管理和技术所在,便于改进管理和技术)从哪些方面关注软件质量?从哪些方面关注软件质量?需求分析需求分析软件设计软件设计编码编码标准和规程标准和规程 软件产品软件产品软件需求规格说明书软件需求规格说明书软件设计规格说明书软件设计规格说明书源程序代码,源程序代码,.开发活动开发活动需求分析需求分析软件设计软件设计编码编码 标准和规程标准和规程谁来
7、执行和实施软件质量保证?谁来执行和实施软件质量保证?软件项目质量保证小组软件项目质量保证小组(SQA小组小组)独立于项目开发小组独立于项目开发小组 具有比较大的权限具有比较大的权限如何保证软件质量?如何保证软件质量?正确理解用户的要求正确理解用户的要求制定标准和规程制定标准和规程审查软件开发活动审查软件开发活动审核软件工作产品审核软件工作产品测试源程序代码测试源程序代码记录开发活动和软件产品的偏差记录开发活动和软件产品的偏差记录所有不符合项,报告高级管理者记录所有不符合项,报告高级管理者正确理解用户的要求正确理解用户的要求 理解客户的要求和需要理解客户的要求和需要 让客户参与开发,随时和客户交
8、流,验证让客户参与开发,随时和客户交流,验证客户的需求客户的需求可用性测试可用性测试(版版)合作开发合作开发软件原型软件原型制定标准和规程制定标准和规程 在组织内部或者项目组内部制定在组织内部或者项目组内部制定标准和规标准和规程程:软件开发过程规程软件开发过程规程需求管理规程需求管理规程软件需求规格说明书编写规范软件需求规格说明书编写规范C+编码规范编码规范Java编码规范,编码规范,限制和约束软件开发活动,有助于得到规限制和约束软件开发活动,有助于得到规范化的软件产品,从而提高软件质量:范化的软件产品,从而提高软件质量:审查软件开发活动审查软件开发活动 审查每个活动是否遵循软件开发过程规范审
9、查每个活动是否遵循软件开发过程规范审查每个活动的输入条件是否都得到满足审查每个活动的输入条件是否都得到满足审查活动的执行是否遵循规范审查活动的执行是否遵循规范审查每个活动的输出是否都已经产生审查每个活动的输出是否都已经产生 具体活动的输入(需要的数据)与输出具体活动的输入(需要的数据)与输出(产生的结果):(产生的结果):输入:输入:包括合同中的有关说明或协议,软件包括合同中的有关说明或协议,软件开发标准和规范,软件设计准则,软件测试开发标准和规范,软件设计准则,软件测试标准或规范,软件配置管理规范,软件质量标准或规范,软件配置管理规范,软件质量保证规范,软件质量数据采集规程等。保证规范,软件
10、质量数据采集规程等。输出:输出:包括包括SQAP,项目采用的标准和规程,项目采用的标准和规程,各种评审和审核活动的记录和报告、问题报各种评审和审核活动的记录和报告、问题报告、问题解决报告和软件质量有关的数据。告、问题解决报告和软件质量有关的数据。审核软件工作产品审核软件工作产品 软件工作产品是否:软件工作产品是否:遵循规范遵循规范正确正确一致一致准确准确可追踪性可追踪性.测试源程序代码测试源程序代码 制定测试计划对软件进行测试制定测试计划对软件进行测试单元测试单元测试集成测试集成测试确认测试确认测试系统测试系统测试记录开发活动和软件产品的偏差记录开发活动和软件产品的偏差 形成报告形成报告记录软
11、件开发活动的偏差记录软件开发活动的偏差记录软件产品的偏差软件测试报告记录软件产品的偏差软件测试报告 目的目的发现问题,纠正偏差,提高质量发现问题,纠正偏差,提高质量报告高级管理者报告高级管理者 目的目的为管理者管理了解软件的质量提供可视性为管理者管理了解软件的质量提供可视性SQA的实施的实施(1)SQA vs.软件工程师软件工程师SQA活动与两种不同的参与者相关:做开发工活动与两种不同的参与者相关:做开发工作的作的软件工程师软件工程师和和独立的独立的SQA小组小组。软件开发人员对质量的考虑:采用可靠的技术软件开发人员对质量的考虑:采用可靠的技术方法,进行正式的技术评审,严格的、按计划方法,进行
12、正式的技术评审,严格的、按计划的测试软件。的测试软件。SQA小组的职责是辅助开发人员得到高质量的小组的职责是辅助开发人员得到高质量的产品,负责质量保证的计划、监督、记录、分产品,负责质量保证的计划、监督、记录、分析及报告工作。析及报告工作。(2 2)SQA过程的进入与退出过程的进入与退出 进入准则:进入准则:方针明确方针明确 能力具备能力具备 项目已定义项目已定义 已有已有SQAP制定规程和偏差处理规程制定规程和偏差处理规程 退出准则:退出准则:产品符合需求产品符合需求 数据记录完整、受控数据记录完整、受控SQA活动流程活动流程 软件质量保证计划主要内容软件质量保证计划主要内容1.计划和目的计
13、划和目的2.参考文献参考文献3.管理管理3.1 组织组织3.2 任务任务3.3 职责职责4.文档文档4.1目的目的4.2 所需的软件工程文档所需的软件工程文档4.3 其他文档其他文档5.标准、实践和约定标准、实践和约定5.1目的目的5.2 约定约定6.复审和审查复审和审查7.测试测试8.问题报告和改正行动问题报告和改正行动9.工具、技术和方法学工具、技术和方法学10.代码控制代码控制11.媒体控制媒体控制12.供应商控制供应商控制13.记录收集、维护和保留记录收集、维护和保留14.培训培训15.风险管理风险管理 需要指出的是,需要指出的是,软件测试软件测试与与软件质量保证软件质量保证是由不同人
14、员实施的两种不同过程:是由不同人员实施的两种不同过程:软件测试是软件开发过程的一个阶段,而软软件测试是软件开发过程的一个阶段,而软件质量保证贯穿于整个软件开发过程。件质量保证贯穿于整个软件开发过程。软件开发过程需要多人合作,不按照一定软件开发过程需要多人合作,不按照一定的标准、规程、准则去做,很难将众多的的标准、规程、准则去做,很难将众多的工作产品集成起来。不把开发过程分解为工作产品集成起来。不把开发过程分解为可控制的阶段并对每个阶段的工作和结果可控制的阶段并对每个阶段的工作和结果加以控制,很难保证产品的质量。加以控制,很难保证产品的质量。软件能力成熟度模型(软件能力成熟度模型(CMM)CMM
15、的历史:的历史:20世纪世纪 70年代中期,美国国防部年代中期,美国国防部(DOD)曾曾立题专门研究软件项目做不好的原因,发现立题专门研究软件项目做不好的原因,发现 70%的项目是因为管理不善而引起,而并不的项目是因为管理不善而引起,而并不是因为技术实力不够,是因为技术实力不够,进而得出一个结论,即管理是影响软件研发项进而得出一个结论,即管理是影响软件研发项目全局的因素,而技术只影响局部。目全局的因素,而技术只影响局部。银子在哗哗地银子在哗哗地流,却不见效流,却不见效果,怎么办?果,怎么办?有学者提出以方法论的角度来解决如何约有学者提出以方法论的角度来解决如何约束软件开发,以提高软件的开发管理
16、。束软件开发,以提高软件的开发管理。1986年年 11月,卡内基梅隆大学软件工程月,卡内基梅隆大学软件工程研究院研究院(CMU-SEI)应美国联邦政府的要求,应美国联邦政府的要求,于于 1987年年 9月开发了一套软件能力成熟度框月开发了一套软件能力成熟度框架和一套软件成熟度问卷,用来评估软件供应架和一套软件成熟度问卷,用来评估软件供应商的能力。商的能力。这就是最早用于探索软件过程成熟度的一个工这就是最早用于探索软件过程成熟度的一个工具。具。1991年,年,SEI自己总结了软件过程能力成自己总结了软件过程能力成熟度模型(熟度模型(Capacity Maturity Model-CMM)成熟度框
17、架和初版成熟度)成熟度框架和初版成熟度问卷的实践经验,并以此为基础推出问卷的实践经验,并以此为基础推出 CMM1.0版。版。1992年年 4月,月,SEI举行了举行了 CMM一个的研一个的研讨会,参加研讨会的有大约讨会,参加研讨会的有大约 200名富有经名富有经验的软件专家。验的软件专家。SEI在广泛听取他们的意在广泛听取他们的意见之后,又于见之后,又于 1993年推出年推出 CMM1.1版。版。这也是目前世界上比较流行和通用的这也是目前世界上比较流行和通用的 CMM版本版本(SW-CMM)。CMM的基本思想的基本思想 因为问题是由管理软件过程的方法引起的,因为问题是由管理软件过程的方法引起的
18、,CMM将致力于组织建立一个有规律的、成将致力于组织建立一个有规律的、成熟的软件过程。熟的软件过程。CMM力图改进软件过程的管理,而在软件力图改进软件过程的管理,而在软件在技术上的改进是其必然的结果。在技术上的改进是其必然的结果。软件过程的改善不可能在一夜之间完成,软件过程的改善不可能在一夜之间完成,CMM以增量方式逐步引入变化的。以增量方式逐步引入变化的。改进的过程将会生产出质量更好的软件,改进的过程将会生产出质量更好的软件,使更多的软件项目免受时间和费用的超支使更多的软件项目免受时间和费用的超支之苦。之苦。CMM明确地定义了明确地定义了5个不同的个不同的“成熟度成熟度”等级,一个组织可按一
19、系列小的改良性步等级,一个组织可按一系列小的改良性步骤向更高的成熟度等级前进。骤向更高的成熟度等级前进。CMM的一些基本概念的一些基本概念 软件过程软件过程 一个一个软件过程软件过程是指人们开发和维护软件及其是指人们开发和维护软件及其相关产品所采取的一系列活动。相关产品所采取的一系列活动。其中软件相关产品包括项目计划、设计文档、其中软件相关产品包括项目计划、设计文档、源代码、测试用例和用户手册等。源代码、测试用例和用户手册等。软件产品的质量主要取决于产品开发和维护软件产品的质量主要取决于产品开发和维护的软件过程的质量。的软件过程的质量。2.2.软件过程能力与性能软件过程能力与性能 软件过程能力
20、软件过程能力是软件过程本身具有的按预是软件过程本身具有的按预定计划生产产品的固有能力。定计划生产产品的固有能力。一个组织的软件过程能力为组织提供了预测软一个组织的软件过程能力为组织提供了预测软件项目开发的数据基础。件项目开发的数据基础。软件过程性能软件过程性能是软件过程执行的实际结果。是软件过程执行的实际结果。一个项目的软件过程性能决定于内部子过程一个项目的软件过程性能决定于内部子过程的执行状态,只有每个子过程的性能得到改的执行状态,只有每个子过程的性能得到改善,相应的成本、进度、功能和质量等性能善,相应的成本、进度、功能和质量等性能目标才能得到控制。目标才能得到控制。由于特定项目的属性和环境
21、限制,项目的实由于特定项目的属性和环境限制,项目的实际性能并不能充分反映组织的软件过程能力,际性能并不能充分反映组织的软件过程能力,但成熟的软件过程可弱化和预见不可控制的但成熟的软件过程可弱化和预见不可控制的过程因素(如客户需求变化或技术变革等)。过程因素(如客户需求变化或技术变革等)。3.3.软件过程成熟度软件过程成熟度 软件过程成熟度软件过程成熟度是指一个软件过程被明确定义、是指一个软件过程被明确定义、管理、度量和控制的有效程度。管理、度量和控制的有效程度。成熟意味着软件过程能力持续改善的过程,成熟意味着软件过程能力持续改善的过程,成熟成熟度度代表软件过程能力改善的潜力。代表软件过程能力改
22、善的潜力。成熟度等级成熟度等级用来描述某一成熟度等级上的组织特征,每一用来描述某一成熟度等级上的组织特征,每一等级都为下一等级奠定基础,过程的潜力只有等级都为下一等级奠定基础,过程的潜力只有在一定的基础之上才能够被充分发挥。在一定的基础之上才能够被充分发挥。成熟级别的改善成熟级别的改善包括管理者和软件从业者基本工作方式的改变,包括管理者和软件从业者基本工作方式的改变,组织成员依据建立的软件过程标准执行并监控组织成员依据建立的软件过程标准执行并监控软件过程,一旦来自组织和管理上的障碍被清软件过程,一旦来自组织和管理上的障碍被清除后,有关技术和过程的改善进程能迅速推进。除后,有关技术和过程的改善进
23、程能迅速推进。软件过程的成熟度等级软件过程的成熟度等级 CMMCMM将软件过程的成熟度分为将软件过程的成熟度分为5 5个级别个级别 ,如图所示,如图所示,5 5个等级分别是:个等级分别是:初始级初始级可重复级可重复级已定义级已定义级已管理级已管理级优化级优化级1 1、初始级(、初始级(InitialInitial)2 2、可重复级(、可重复级(RepeatableRepeatable)3 3、已定义级(、已定义级(DefinedDefined)4 4、已管理级(、已管理级(ManagedManaged)5 5、优化级(、优化级(OptimizingOptimizing)SW-CMMSW-CMM
24、为每个软件组织建立和改善软件过程提供了一个阶梯式为每个软件组织建立和改善软件过程提供了一个阶梯式的过程成熟度框架,这一框架由的过程成熟度框架,这一框架由5 5个成熟度等级构成。除初始级以外,个成熟度等级构成。除初始级以外,其余的成熟度等级都包含了若干个其余的成熟度等级都包含了若干个关键过程区域关键过程区域,每个关键过程区,每个关键过程区域又包含了若干个域又包含了若干个关键实践关键实践,这些关键实践按照,这些关键实践按照5 5个共同特点加以组个共同特点加以组织。织。初始级初始级可重复级可重复级已定义级已定义级已管理级已管理级优化级优化级初始级(初始级(InitialInitial)在初始级,企业
25、一般不具备稳定的软在初始级,企业一般不具备稳定的软件开发与维护环境。件开发与维护环境。项目成功与否在很大程度上取决于是项目成功与否在很大程度上取决于是否有杰出的项目经理和经验丰富的开否有杰出的项目经理和经验丰富的开发团队。发团队。此时,项目经常超出预算和不能按期此时,项目经常超出预算和不能按期完成,组织的软件过程能力不可预测。完成,组织的软件过程能力不可预测。初始级初始级初始级初始级可重复级可重复级已定义级已定义级已管理级已管理级优化级优化级可重复级可重复级(Repeatable):(Repeatable):在可重复级,组织建立了管理软件项在可重复级,组织建立了管理软件项目的方针以及为贯彻执行
26、这些方针的目的方针以及为贯彻执行这些方针的措施。措施。组织基于在类似项目上的经验对新项组织基于在类似项目上的经验对新项目进行策划和管理。目进行策划和管理。组织的软件过程能力可描述为有纪律组织的软件过程能力可描述为有纪律的,并且项目过程处于项目管理系统的,并且项目过程处于项目管理系统的有效控制之下。的有效控制之下。可重复级可重复级初始级初始级可重复级可重复级已定义级已定义级已管理级已管理级优化级优化级已定义级(已定义级(DefinedDefined):):在已定义级,组织形成了管理软件开发在已定义级,组织形成了管理软件开发和维护活动的组织标准软件过程,包括和维护活动的组织标准软件过程,包括软件工
27、程过程和软件管理过程。软件工程过程和软件管理过程。项目依据标准定义自己的软件过程进行项目依据标准定义自己的软件过程进行管理和控制。管理和控制。组织的软件过程能力可描述为标准的和组织的软件过程能力可描述为标准的和一致的,过程是稳定的和可重复的并且一致的,过程是稳定的和可重复的并且高度可视高度可视初始级初始级可重复级可重复级已定义级已定义级已管理级已管理级优化级优化级已管理级(已管理级(ManagedManaged):):在已管理级,组织对软件产品和过程在已管理级,组织对软件产品和过程都设置定量的质量目标。都设置定量的质量目标。项目通过把过程性能的变化限制在可项目通过把过程性能的变化限制在可接受的
28、范围内,实现对产品和过程的接受的范围内,实现对产品和过程的控制。控制。组织的软件过程能力可描述为可预测组织的软件过程能力可描述为可预测的,软件产品具有可预测的高质量的,软件产品具有可预测的高质量已管理级已管理级初始级初始级可重复级可重复级已定义级已定义级已管理级已管理级优化级优化级优化级(优化级(OptimizingOptimizing):):在优化级,组织通过预防缺陷、技在优化级,组织通过预防缺陷、技术创新和更改过程等多种方式,不术创新和更改过程等多种方式,不断提高项目的过程性能以持续改善断提高项目的过程性能以持续改善组织软件过程能力。组织软件过程能力。组织的软件过程能力可描述为持续组织的软
29、件过程能力可描述为持续改善的。改善的。优化级下表描述了下表描述了SW-CMM不同成熟度等级过程的可视性和过程能力。不同成熟度等级过程的可视性和过程能力。等等级级成熟度成熟度可视性可视性过程能力过程能力1初始级初始级有限的可视性有限的可视性一般达不到进度和成本一般达不到进度和成本的目标的目标2可重复可重复级级里程碑上具有管理可视里程碑上具有管理可视性性由于基于过去的性能,由于基于过去的性能,项目开发计划比较现实项目开发计划比较现实可行可行3已定义已定义级级项目定义软件过程的活项目定义软件过程的活动具有可视性动具有可视性基于已定义的软件过程,基于已定义的软件过程,组织持续地改善过程能组织持续地改善
30、过程能力力4已管理已管理级级定量地控制软件过程定量地控制软件过程基于对过程和产品的度基于对过程和产品的度量,组织持续地改善过量,组织持续地改善过程能力程能力5优化级优化级不断地改善软件过程不断地改善软件过程组织持续地改善过程能组织持续地改善过程能力力关键过程区域关键过程区域 除了初始级外,每一成熟度等级又由若干除了初始级外,每一成熟度等级又由若干个个关键过程区域关键过程区域(Key Process Areas)构成。构成。关键过程区域关键过程区域指出为了达到某个成熟度等指出为了达到某个成熟度等级所要着手解决的问题。级所要着手解决的问题。达到一个成熟度等级,必须实现该等级上的全达到一个成熟度等级
31、,必须实现该等级上的全部关键过程区域。部关键过程区域。要实现一个关键过程区域,就必须达到该关键要实现一个关键过程区域,就必须达到该关键过程区域的所有目标。过程区域的所有目标。过程分类过程分类 成熟度等级成熟度等级管理过程管理过程组织过程组织过程工程过程工程过程5、优化级、优化级技术改革管理技术改革管理过程更改管理过程更改管理缺陷预防缺陷预防4、已管理级、已管理级 定量过程管理定量过程管理软件质量管理软件质量管理3、已定义级、已定义级集成软件管理集成软件管理组间协调组间协调组织过程焦点组织过程焦点组织过程定义组织过程定义培训大纲培训大纲软件产品工程软件产品工程同行评审同行评审2、可重复级、可重复
32、级需求管理需求管理软件项目策划软件项目策划软件项目跟踪与软件项目跟踪与监督监督软件子合同管理软件子合同管理软件质量保证软件质量保证软件配置管理软件配置管理1、初始级、初始级无序过程无序过程关键过程区域关键过程区域KPY(Key Process(Key Process Areas)Areas)是一组相关的活动,可按照是一组相关的活动,可按照上表描述,也可按照下图描述。上表描述,也可按照下图描述。初始级初始级需求管理需求管理软件项目计划软件项目计划软件项目跟踪与监督软件项目跟踪与监督软件子合同管理软件子合同管理软件质量保证软件质量保证软件配置管理软件配置管理可重复级可重复级软件机构过程关注点软件机
33、构过程关注点软件机构过程定义软件机构过程定义培训计划培训计划整体化软件管理整体化软件管理软件产品工程软件产品工程组间合作组间合作同行评审同行评审已定义级已定义级定量过程管理定量过程管理软件质量管理软件质量管理已管理级已管理级过程变更管理过程变更管理预防故障预防故障技术变更管理技术变更管理优化级优化级 软件企业如何实施软件企业如何实施CMMCMM要发展我国的软件产业,在策略上,必须走软件过程管理专业化的道要发展我国的软件产业,在策略上,必须走软件过程管理专业化的道路。路。但目前国内的绝大部分软件企业处于但目前国内的绝大部分软件企业处于CMM的初级阶段,缺乏基础和的初级阶段,缺乏基础和经验。经验。
34、软件企业实施软件企业实施CMM或通过或通过CMM评估所必须经历的步骤如下:评估所必须经历的步骤如下:提高思想认识提高思想认识进行进行CMM培培训和咨询工作训和咨询工作确定合理的目标确定合理的目标 成立工作组成立工作组 制定和完善制定和完善软件过程软件过程 内部评审内部评审 正式评估正式评估 根据评估结果根据评估结果改进软件过程改进软件过程 CMM步骤中国软件企业总体规模偏小,产品缺乏市场竞争中国软件企业总体规模偏小,产品缺乏市场竞争力。因此,软件过程管理已成为发展我们软件产业的力。因此,软件过程管理已成为发展我们软件产业的一个关键性问题。实施一个关键性问题。实施CMMCMM对软件企业的发展起着
35、至关对软件企业的发展起着至关重要的作用。重要的作用。CMMCMM过程本身就是对软件企业发展历程的一个完整过程本身就是对软件企业发展历程的一个完整而准确的描述,企业而准确的描述,企业通过实施通过实施CMMCMM,可以更好地规范软,可以更好地规范软件生产和管理流程,使企业组织规范化件生产和管理流程,使企业组织规范化。而且,只有。而且,只有在国际市场取得成功的产品和企业才具有长久的竞争在国际市场取得成功的产品和企业才具有长久的竞争力和生命力。力和生命力。、提高思想认识提高思想认识根据根据CMMCMM模型的要求,一个项目的开发一定要有章可模型的要求,一个项目的开发一定要有章可循,而且要做到有章必循,这
36、两点都离不开培训。循,而且要做到有章必循,这两点都离不开培训。培训的内容需要精心地准备,主要有两个方面:培训的内容需要精心地准备,主要有两个方面:第一,对所有员工包括经理在内的最基本的软件工程第一,对所有员工包括经理在内的最基本的软件工程和和CMMCMM培训知识;培训知识;第二,对各个工作组的有关人员提供专业领域知识等第二,对各个工作组的有关人员提供专业领域知识等方面的培训;此外,在每次开发过程中,还要对普通人员方面的培训;此外,在每次开发过程中,还要对普通人员进行软件过程方面的培训。进行软件过程方面的培训。、进行、进行CMMCMM培训和咨询工作培训和咨询工作CMMCMM模型划分为模型划分为5
37、 5个级别,共计个级别,共计1818个关键过程域,个关键过程域,5252个目标,个目标,300300多个关键实践。多个关键实践。每一个每一个CMMCMM等级的评估周期(从准备到完成)等级的评估周期(从准备到完成)约需约需12-3012-30个月。个月。无论一个软件企业的软件过程处于什么样的无论一个软件企业的软件过程处于什么样的水平,都可以在水平,都可以在CMMCMM框架的框架的5 5个级别中找到自己的个级别中找到自己的位置。位置。要实施要实施CMMCMM,首先应该对本企业的现状有,首先应该对本企业的现状有一个准确的评估,然后再结合企业的实际一个准确的评估,然后再结合企业的实际情况选择情况选择C
38、MMCMM的切入点,确定总体目标。的切入点,确定总体目标。这个目标包括在多长时间之内,需要投入多这个目标包括在多长时间之内,需要投入多少人力、物力和财力,要达到哪一级。少人力、物力和财力,要达到哪一级。由于软件过程的建立和改进是一个渐进的、由于软件过程的建立和改进是一个渐进的、分轻重缓急的、逐步完善的过程。在总体分轻重缓急的、逐步完善的过程。在总体目标已经确定的前提下,还要制订近期目目标已经确定的前提下,还要制订近期目标和长期目标。标和长期目标。在在CMMCMM的实施过程中,工作组的成立是一个关键的实施过程中,工作组的成立是一个关键步骤。有几个必不可少的重要的组织包括:步骤。有几个必不可少的重
39、要的组织包括:软件工程过程组、软件工程组、系统工程组、软件工程过程组、软件工程组、系统工程组、系统测试组、需求管理组、软件项目计划组、系统测试组、需求管理组、软件项目计划组、软件项目跟踪与监督、软件配置管理组、软软件项目跟踪与监督、软件配置管理组、软件质量保证组、培训组。件质量保证组、培训组。、成立工作组成立工作组 软件工程组负责一个项目的软件开发和维软件工程组负责一个项目的软件开发和维护活动(即需求分析、设计、编码和测试)护活动(即需求分析、设计、编码和测试)系统工程组负责规定系统需求;将系统需系统工程组负责规定系统需求;将系统需求分配给硬件、软件和其他成分;规定硬求分配给硬件、软件和其他成
40、分;规定硬件、软件和其他成分的界面;以及监控这件、软件和其他成分的界面;以及监控这些成分的设计和开发以保证它们符合其规些成分的设计和开发以保证它们符合其规格说明。格说明。CMMCMM模型强调软件过程的改进模型强调软件过程的改进 如果企业还没有一个文档形式的软件过程,如果企业还没有一个文档形式的软件过程,则首要任务是对当前的工作流程进行分析、整则首要任务是对当前的工作流程进行分析、整理及文档化,从而理及文档化,从而制定出一个具有本企业风格制定出一个具有本企业风格的软件过程的软件过程,并用该文档化的过程指导软件项并用该文档化的过程指导软件项目的开发目的开发。、制定和完善软件过程、制定和完善软件过程
41、 如果已经具备了软件过程,则要如果已经具备了软件过程,则要对这个过程做内对这个过程做内部评估,对照部评估,对照CMM的要求,找出问题,然后对的要求,找出问题,然后对这个过程进行补充修改这个过程进行补充修改。在具体实施的过程中,可以选择有一定代表性和在具体实施的过程中,可以选择有一定代表性和完善性的项目组或项目进行试点,跟踪、监督改完善性的项目组或项目进行试点,跟踪、监督改进后的软件过程的实施情况,执行改进活动的状进后的软件过程的实施情况,执行改进活动的状态。态。CMMCMM每一级别的评估都由美国卡内基梅隆大学的每一级别的评估都由美国卡内基梅隆大学的软件工程研究所(软件工程研究所(CMU/SEI
42、CMU/SEI)授权的主任评估师领)授权的主任评估师领导一个评审小组进行。据估计,要通过一个级别的导一个评审小组进行。据估计,要通过一个级别的CMMCMM评估,费用是通过评估,费用是通过ISO9000ISO9000认证的十多倍。认证的十多倍。因此,建议软件企业在进行正式评估之前,先因此,建议软件企业在进行正式评估之前,先进行内部评审或评估。进行内部评审或评估。、内部评审内部评审 这种内部评审包含两层含义:这种内部评审包含两层含义:第一种就是软件企业组织自己内部成员,严格、第一种就是软件企业组织自己内部成员,严格、认真地按照认真地按照CMMCMM规范评估过程,对自己的软件过程规范评估过程,对自己
43、的软件过程进行评审,找出其中的不足点并进行改进。进行评审,找出其中的不足点并进行改进。第二种含义就是在全国范围内,由有关软件工程第二种含义就是在全国范围内,由有关软件工程和和CMMCMM专家组成一个专门的专家组成一个专门的 内部评审内部评审 机构,负责机构,负责指导协调实施指导协调实施CMMCMM的活动,对国内软件企业的活动,对国内软件企业CMMCMM评评估进行估进行 预先评估预先评估。这种预先评估,可降低软件。这种预先评估,可降低软件企业通过正式企业通过正式CMMCMM评估的风险,减少软件企业实施评估的风险,减少软件企业实施CMMCMM的成本,为企业最终获得国际的成本,为企业最终获得国际CM
44、MCMM认证打下基认证打下基础。础。、正式评估正式评估 评估过程主要分成两个阶段:准备阶段评估过程主要分成两个阶段:准备阶段和评估阶段。和评估阶段。在评估的最初几天,小组成员的主要任务在评估的最初几天,小组成员的主要任务是采集数据,回答是采集数据,回答SEISEI的的CMMCMM提问单,文档审提问单,文档审阅以及进行交谈,对整个组织中的应用有一阅以及进行交谈,对整个组织中的应用有一个全面的了解。个全面的了解。然后进行数据分析。评估员要对记录进行然后进行数据分析。评估员要对记录进行整理,把这些数据与整理,把这些数据与CMMCMM模型进行比较,最模型进行比较,最后给出一个评估报告。在评估报告的基础
45、上,后给出一个评估报告。在评估报告的基础上,评估小组成员起草一个评估结果。评估小组成员起草一个评估结果。根据根据IDEALIDEAL模型,成熟度的评估只是软件过程改进模型,成熟度的评估只是软件过程改进中的一个环节,如果这个环节与软件过程改进的其他中的一个环节,如果这个环节与软件过程改进的其他环节不能很好地结合,那么,环节不能很好地结合,那么,CMMCMM评估对于软件过程改评估对于软件过程改进所应具有的作用就得不到发挥。进所应具有的作用就得不到发挥。一般来说,应该在评估之后很快地作出软件过程一般来说,应该在评估之后很快地作出软件过程改进的计划,因为这时大家对评估结果和存在的问题改进的计划,因为这
46、时大家对评估结果和存在的问题仍有一个深刻的认识。计划在软件过程改进中是一个仍有一个深刻的认识。计划在软件过程改进中是一个非常必要的阶段,只有有效的计划,才能确保软件过非常必要的阶段,只有有效的计划,才能确保软件过程得到有效的改进。程得到有效的改进。、根据评估结果改进软件过程根据评估结果改进软件过程因为软件过程成熟度的升级本身就是一个过程,因为软件过程成熟度的升级本身就是一个过程,而且全面引进应用而且全面引进应用CMMCMM所涉及的范围非常广,要求所涉及的范围非常广,要求人力、财力与设备资源的投入相当大。人力、财力与设备资源的投入相当大。所以在实施所以在实施CMMCMM时,企业千万不要一开始就把
47、目时,企业千万不要一开始就把目标定位过高,不必一下子去满足某一能力成熟度标定位过高,不必一下子去满足某一能力成熟度等级的所有目标。等级的所有目标。而要根据企业自身的情况,试行某些关键过程域而要根据企业自身的情况,试行某些关键过程域的一部分关键实践活动,逐步完善软件过程和成的一部分关键实践活动,逐步完善软件过程和成熟度的升级。熟度的升级。的实施的实施 软件企业在实施软件企业在实施CMMCMM的过程中,应当处理好的过程中,应当处理好CMMCMM实施和认证的关系。实施和认证的关系。实施是基础,认证是结果。只有认真扎实的实实施是基础,认证是结果。只有认真扎实的实施,才可能有认证的通过。施,才可能有认证
48、的通过。大部分软件企业距离大部分软件企业距离CMMCMM的认证有相当大的距的认证有相当大的距离,最好先按照离,最好先按照CMMCMM严格的软件工程方法,致严格的软件工程方法,致力于改进企业的管理,提高软件开发能力,而力于改进企业的管理,提高软件开发能力,而先不要搞软件能力评鉴,追求认证、评级等。先不要搞软件能力评鉴,追求认证、评级等。等到能力成熟后,再进行认证。这样可以避免等到能力成熟后,再进行认证。这样可以避免和杜绝华而不实、弄虚作假的现象。和杜绝华而不实、弄虚作假的现象。应该把实施应该把实施CMMCMM作为提高软件企业管理水平和作为提高软件企业管理水平和提高软件质量的突破口,追求真正的软件
49、能力提高软件质量的突破口,追求真正的软件能力和水平的提高,而不是把单纯的和水平的提高,而不是把单纯的CMMCMM软件认证软件认证作为一个唯一的目标。作为一个唯一的目标。CMM的实施结果的实施结果 自从自从1993年年SEI发布发布SWCMM V1.1以来,以来,成功地指导一些企业进行过程改进,并取得了显成功地指导一些企业进行过程改进,并取得了显著效果:著效果:开发成本降低、发布后错误减少、平均开发时间减少,开发成本降低、发布后错误减少、平均开发时间减少,等等。等等。但是这个单一的软件工程成熟度模型并不能满足但是这个单一的软件工程成熟度模型并不能满足组织开发产品所有业务领域的过程需要,组织开发产
50、品所有业务领域的过程需要,这是因为近年来产品开发的组织发生了变革,这种变这是因为近年来产品开发的组织发生了变革,这种变革的目的除了是提高产品开发的质量革的目的除了是提高产品开发的质量,还有就是试图消还有就是试图消除与除与分段开发的低效率分段开发的低效率等问题。等问题。在串行的分段开发中,前一阶段产生的中间产品在串行的分段开发中,前一阶段产生的中间产品完成后再传递给下一阶段的工作人员继续处理,完成后再传递给下一阶段的工作人员继续处理,如系统设计部门将设计工作完成后传递给产品开发部如系统设计部门将设计工作完成后传递给产品开发部门,开发部门完成后再传递给测试部门,测试部门完门,开发部门完成后再传递给