技术文章 > CMM进阶(3)

CMM进阶(3)

2018-08-20 09:05

文档管理软件,文档管理系统,知识管理系统,档案管理系统的技术资料:
软件生产过程理论告诉我们,软件质量往往取决于软件过程的能力水平,企业在软件过程中所采用的各种技术应适合该过程的成熟度水平。软件过程是一个可度量的,可控制的,不断改进的流程。CMM强调企业应对软件过程进行连续的改进,在这一改进过程中,分级结构将提供不同等级中的目标和核心领域来规范这一过程并为企业评论和改进自身生产能力提供客观标准。

  CMM成熟程度理论不可以被看作纯粹的关于软件生产技术的标准,也不可以被看作普通的管理理论,它实际上是对软件开发实践所设计的整个工程流程的规定和分析,它的体系既包括软件工程过程本身,也包括对这一过程的管理。

  CMM为企业软件能力提供了一个阶段式的五级进程。任何开始采纳CMM体系的机构都一并归与第一级的起点,即初始级(Initial level)除第一节外,每一级都设定了各自的目标组。如果达到了这一目标,则可向下一级推进,由于每一个级别都必须建立在实现了低于它的全部级别的基础之上,CMM等级的提高只能是一个渐进有序的过程。

  CMM的评估包括五个等级,共计18个核心过程域,52个目标,300多个核心实践,每一级别的评估由美国卡莱基*梅隆大学软件工程研究所授权的主评估师领导的评估小组进行。其成员来自企业内部,评估过程包括企业员工培训,问卷填写,文档与数据分析,相关项目组成员面试,拟定评估报告。评估结束由主评估师签订生效。

  CMM五级标准按由低到高的成熟度分别为:
   第一级 初始级 (Initial level)
   第二级 可重复级 (Repeatable level)
   第三级 定义级 (Defined level)
   第四级 管理级 (Managed level)
   第五级 优化级 (Optimizing level)

  1. 初始级
   此级是个人英雄主义的天下,绝无可重复性,也无甚积累,项目的执行是随意甚至混乱的,软件开发过程未经定义,即使有某些规范也并未严格执行,企业不具备稳定的软件开发与维护环境,面对开发中所遇的各类具体实施问题往往选择放弃原定计划仍由编程人员凭个人经验与主观感觉应对,对客户的承诺多数无法兑现,许诺客户的产品与服务质量并无客观的预测与监控体系保证实现。在此,能力只是个人行为不是组织行为,一旦人员流动或变动,整个企业的开发能力也随之而去。整个企业没有稳定的过程规则可依据。现有的种种规章制度也互不协调或矛盾。开发人员的工作方式是救火式,那里有漏洞就往哪里填补,很少收集关于开发过程的数据,新技术的引进也要冒极大风险。总之,整个企业的软件生产是不可重复,不可预见,不成体系,不可积累及不稳定的。

  本阶段改进重点包括:建立软件项目开发过程并进行有效管理;建立需求管理,明确客户要求;建立各类项目计划;建立完善的文档体系,严格执行质量监控;按CMM二级所规定的各项核心实践进行开发。

  2. 可重复级
  确定了基本的软件生产管理和控制,能针对特定软件项目制定开发过程及管理措施,能将以往项目开发经验用于类似的新项目,有一套不同的软件生产过程提供不同项目选择。软件生产成本和工期能得以客观预测并被有效追踪,过程标准在项目实施中能保证被遵循。项目的开发是有计划的,有控制的,并可重复的行为,总原则是:一个可管理的过程是一个可重复的过程并能逐渐改进和成熟。

  第二级的管理过程包括需求管理,项目计划,项目追踪和监控,子合同管理,质量保证与配置管理等六个方面。在该级的企业可以给客户较有保证的承诺,因为企业可在以往同类项目的成功经验上总结和建立起一整套过程准则来保证成功地重复。项目管理采用基准(Baseline)来标识进展并对成本和进度进行追踪,企业通过子合同管理同客户建立了有效的供求关系,面对开发缺陷有规则可以依据来纠正错误,个人英雄行为被稀释并分解到企业整体的规则和管理框架之中,文档的准备和项目数据的收集也相应完备。

  本阶段改进重点包括:将各项目的过程经验总结为整个企业的标准过程,是整个企业的过程能力得以提高,注意,跨项目间的过程管理协调和支持,树立齐全组织的过程标准概念,建立软件工程过程小组(SEPG),对各项目的过程和质量进行评估和监控,使软件过程得以正确地调整。建立软件工程数据库和文档库,加强培训。

  3. 定义级
  过程在整个企业范围内得以确立。企业制定了一套软件过程规则对所有软件工程和管理行为给与指导。企业有了标准化的过程并可在所开发的项目中,依据具体项目的需要,将标准过程调整为合适的项目过程。企业内部设置了软件工程小组(SEPG)负责过程的制定,修改,调整和监督。这一小组直接向企业最高领导层汇报。企业还有培训机构专门对全企业员工进行过程培训。各项目组的开发经验可相互借鉴并支持,对项目成本,工期及质量均可最终控制。有关软件工程及管理工程的过程文件被编制并成为企业标准,所有项目都必须按照这些标准过程或经调整后的项目过程来实施,从而保障了每一次工程开发的投入和时间,项目计划,产品功能及软件质量得以控制。软件过程在此得到的稳定的,重复的和持续性的应用,使开发风险大为下降。各项目组人员参与软件过程的制定和修改,并引进符合项目过程的新的软件开发技术,在各项目开发过程中收集的数据被系统共享。总而言之,第三级的主要特点在于软件过程已被编制为各个标准化过程,并在企业范围内执行,从而使软件生产和管理更具可重复性,可控制性,稳定性和持续性。

  本阶段改进重点:应准备对整个软件过程,包括生产和管理两方面的定量评测分析,以便尽可能将软件工程所涉及的定性因素转变为定量标准,从而对软件进行定量控制和预测。应使整个企业的软件能力在定量基础上可预测和控制。

  4.管理级
  第四级的过程是量化的过程,所有项目和产品的质量都有明确的定量化衡量标准,软件也被置于这样一个度量体系中进行分析、比较和监控,所有定量指标都被尽可能地详细采集并描述,使之可具体用于软件产品的控制之中,软件开发真正成为一种工业化生产行为,由专门的软件过程数据库收集和分析软件过程中的各类数据并以此为对软件活动的质量评估的基准。企业所有项目的生产过程在定量化的基础上大大提高了可控制性和可预测性,生产过程中可能面对的偏差被控制在一定的量化范围内并被分析和解决,新技术的采纳也在量化基础上有控制的地进行,从而控制了风险。在此级中,所有的软件过程和产品都树立了定量的目标并被定量的管理,使软件组织的能力可以很好地预测。此阶段中所有定量标准都是明确定义并持续一致的,可以用于对软件过程和管理的评估与调节。所有修正和调节方法(包括对偏差及缺陷的校正分析)都是基于变化指标上,新的软件开发技术也在定量的基础上被评估。项目组成员对整个过程及其管理体系有高度一致的理解并已学会运用数据库等方法定量地看待和理解软件工程。本级主要特点是定量化,可预测化和高质量。

  本阶段改进重点:注意采取必要措施与方案减少项目缺陷,尽量建立起缺陷防范的有效机制,引进技术变动管理以发挥新技术的功用,引进自动化工具以减少软件工程中人为误差,实行过程管理,不断改进已有的过程体系。

  5.优化级
  第五级的软件过程应是持续改进的过程,并且有一整套有效机制确保软件工程误差接近最小或零。每一个过程在具体项目的运用中,可根据周边和反馈信息来判断下一步实施所需的最佳过程,以持续改善过程使之最优化。因此,企业能不断调整软件生产过程,按优化方案改进并执行所需过程。 这样,企业的精力集中于持续的过程改进之中。新技术的采用也被作为日常活动加以规划,各项目组已具备尽早和尽快识别工程缺陷并改正错误的手段。这需要完善的数据库和长期积累的量化指标来协助实现,新技术和自动化工具也使软件工程人员能够预防软件缺陷并找到其根源以防止错误再现,企业资源在第五级阶段被有效利用并节约。一般来讲,企业在优化级所遵循的持续改进措施既包括对已有过程的渐进改善,也包括应用新技术和工具所产生的革新式改进,整个企业的过程定义、分析、校正和处理能力也大大加强,这些都需建立在第四级的定量化标准之上。项目组都能主动找到产生软件问题的根源,也能对导致人力和时间浪费等低效率因素进行改进,防止浪费再发生。整个机构都有强烈的团队意识,每个人都致力于过程改进、缺陷防范和高品质的追求。本阶段总的特点是新技术的采用和过程的不断改进被作为企业的常规工作,以实现缺陷防范的目标。

  CMM描述的五个等级的软件过程反映了从混乱无序的软件生产到有纪律的开发过程,再到标准化、可管理和不断完善的开发过程的阶梯式结构。任何一个软件机构的项目生产都可以纳入其中,除第一级初始级外,每一级成熟度都由若干核心过程域构成,这些核心过程域分别针对软件开发过程的某一方面阐述了这一等级的软件过程在此方面应达到的目标组的核心实践。所有核心实践又可划分为五种共性:完成目标组所需的承诺、执行能力、执行活动、测量分析、实验验证。当然,任何一个级别的核心过程域都不仅包括本级所有的核心实践。例如,第四级管理级的实现必须完成第四级本身具备的两个核心过程以及第三级中的七个核心过程域和第二级中的六个核心过程域,共十五个核心过程域。

  核心过程域又称关键过程域(Key Process Area,KPA),每一个KPA都与一些目标相关,代表某种对过程的要求,我们可根据KPA对软件过程进行评估并找到改进的重点所在。可见,除第一级KPA外,CMM的每一级都按相同结构组成,KPA不仅标明了某级成熟度所要求的目标和评估标准,也说明了要达到此级成熟标准所需解决的具体要点。实施每个核心过程域所包含的核心实践(Key Practices),就是实现此核心过程域所制定的目标并提高软件过程能力。如前所述,各个核心过程域中的核心实践都可按公共属性进行分类,每个KPA都包括五类核心实践。应该指出,核心实践只是规定了软件过程必须达到什么样的标准而未规定这些标准应如何实现,因此,对同样的过程水平,不同企业,不同项目可采纳不同的过程和实施方式去完成。下面,我们将就五类不同的核心实践给予具体说明:

  1.执行保证(Commitment to perform):为完成核心过程域中的目标组成所需的承诺又称执行保证,它是企业执行特定的核心过程域(KPA)所拟定的指导开发过程的规则和项目管理责任。

  2.执行能力(Ability to perform):指企业执行核心过程域的前提条件,包括企业资源、过程制定、人员培训等多种措施。对PKA的执行必须建立在此基础之上,才可保证所规划的目标得以实现。

  3.执行能力(Activities performed):它说明了执行核心过程域所需采纳的必要行动和步骤,与项目执行息息相关,包括计划、跟踪、检测等,这是核心实践的五种归类中与项目执行唯一相关的属性,其余四个属性都关注于软件组织的基础能力建设。

  4.测量分析(Measurement and Analysis):是关于过程的定量度测和度测分析,以确定所执行活动的效果并根据此作出分析判断。

  5.实施验证(Verify Implementation):在过程执行的中途及末尾对过程实施进行验证以确保执行活动与制定的过程相一致。它包括检测、复审等一系列质量保证活动,这些质量保证活动需要通过项目组以外的独立的质检人员和管理人员来保证验证的有效执行,从而确保产品符合计划要求。如果我们把执行活动看作是与项目执行相关的属性,则其他所有属性可一起视为企业成熟度能力基础建设。

  在实施CMM过程中,可根据各个企业面临的不同问题决定实现核心过程域的先后秩序并按此秩序逐步进行。而在实施每一个具体的核心过程域时,对其目标组及核心实践也可确定执行的先后顺序,逐步实现总体目标。最后,我们将第二、三、四、五等等级始终的核心过程域简介如下:


  第二级(可重复级)
   需求管理(Requirement Management)- 软件项目的开发必须以客户的需求为指向,需求管理目的在于使开发商和客户对客户本身的真实需求有统一认识。
   软件项目计划(Software Project Planning)- 软件项目管理必须事先拟订合乎规范的开发计划及其他相关计划,例如,检测与追踪计划。
   软件项目追踪和监控(Software Project Tracking and Oversight)- 防范项目实施过程中所产生的计划偏离问题,使项目组对软件项目的进展充分了解并控制。
   软件与合同管理(Software Subcontract Management) -建立规范化的软件分包管理制度以保证软件质量的一致性。
   软件质量保证(Software Quality Assurance)-通过对软件开发过程的监控和评测保证软件质量。
   软件配置管理(Software Configuration Management)-保证在软件项目开发生命周期的完整性。
  第三级(定义级)
   企业过程焦点(Organization Process Focus)-在整个企业范围内树立标准的过程并将其列为企业工作重点。
   企业过程制定(Organization Process Definition)-对企业过程进行确立。
   培训计划(Training Program)-对项目组员工进行必要的过程培训。
   集成软件管理(Integrated Software Management)-调整企业的标准软件过程并将软件工程和管理集成为一个确定的项目过程。
   软件产品工程(Software Product Engineering)-关于软件项目的技术层面的目标在此确立,如设计、编码、测试和校正。
   组际协调(Intergroup Coordination)-促进各项目组之间的借鉴与支持在全企业范围内实现。
   同业复查(Peer Reviews)-促进各项目组成员之间运用排查、审阅和检测等手段找到并排除产品中的缺陷。
  第四级(管理级)
   定量过程管理(Quantitative Process Management)-对软件过程的各个元素进行定量化描述和分析并收集量化数据协调管理。
   软件质量管理(Software Quality Management)-通过定量手段追踪并掌握软件产品质量使其达到预定标准。
  第五级(优化级)
   缺陷预防(Defect Prevention)-通过有效机制识别软件缺陷并分析缺陷来源从而防止错误再现,减少软件错误发生率。
   技术变动管理(Technology Change Management)-引入新工具和技术并将其融入企业软件过程之中,以促进生产工效和质量。
   过程变动管理(Process Change Management)-在定量管理基础上坚持全企业范围的,持续性的软件过程改进,提高生产率,减少投入和开发时间,保证企业的过程长期处于不断更新和主动调节之中。