首页  > 资源 > 技术文章 > hansky_cmm

Hansky与软件能力成熟度模型

1. CMM的概念

我国目前谈及的CMM是指“软件能力成熟度模型”,其英文全称为Capability Maturity Model for Software(英文缩写名是SM-CMM),更确切地说,是指“软件能力成熟度模型1.1版”和”“能力成熟度模型的关键惯例1.1版” (Capability Maturity Model for software,Version 1.1和Key Practices of the Capability Maturity Model, Version 1.1简称CMM 1.1版)。CMM是美国卡内基-梅隆大学软件工程研究所(以下简称SEI)的研究成果;CMM 1.1版发表于1993年。SEI是美国国防部出资于1984年设立。从1986年开始,SEI针对软件组织改善其软件过程,特别是美国国防部对软件承包商的能力评价问题,研究过程成熟度框架。1987年9月,SEI发表了关于过程成熟度框架的简要说明和成熟度调查问卷。以这一过程成熟度框架为蓝本,在美国联邦政府促进下,从1987年到1991年在美国的一些大公司的软件组织进行了软件过程能力成熟度模型的评估实践。根据这4年的实践经验,特别是从美国政府和工业界反馈的关于软件过程评估的信息,SEI在原过程成熟度框架的基础上开发出了“软件能力成熟度模型(CMM) 0.0版”。在CMM 0.0版发表后的两年里,先后产生了30多稿草案,于1993年2月发表了“软件能力成熟度模型1.1版”和“能力成熟度模型的关键惯例1.1版”(统称 SM-CMM 1.1版,有时干脆简称为CMM)。

软件产品的质量在很大程度上取决于构筑软件时所使用的软件开发和维护过程的质量。软件过程是人员密集和设计密集的作业过程;若缺乏有素的训练,就难以建立起支持实现成功改进软件过程的基础,改进工作亦将难以取得成效。CMM描述的这个框架正是勾列出从无定量及过程改进方面的最关键的问题,从而为选择过程改进战略提供指南。如前所述CMM 1.1版包括两部分:“软件能力成熟度模型”和“能力成熟度模型的关键惯例”。“软件能力成熟度模型”主要是描述这种模型的结构,并且给出该模型的基本构件的定义。“能力成熟度模型的关键惯例”除了重复叙述能力成熟度模型结构及其构件外,以大量篇幅详细描述了每个“关键过程方面”涉及的“关键惯例”。“关键过程方面”是指:一组相关联的活动和通过执行这些活动可以实现既定的过程能力。所谓“关键惯例”是指:使关键过程方面得以有效实现和制度化的作用最大的基础设施和活动。各个关键惯例按每个关键过程方面的5个“公共特性”(对执行该过程的承诺,执行该过程的能力,该过程中要执行的活动,对该过程执行情况的度量和分析,及证实所执行的活动符合该过程)归类,逐一详细描述。按CMM的规定,作到了某个关键过程的全部关键惯例就认为实现了该关键过程,实现了某成熟度级及其以低各级所含的全部关键过程就认为达到了该级。

CMM把软件开发组织的能力成熟度分为5个可能的等级。除了第1级外,其他每一级由几个关键过程方面组成。每一个关键过程方面都由上述5种公共特性予以表征。CMM给每个关键过程规定了一些具体目标。按每个公共特性归类的关键惯例是按该关键过程的具体目标选择和确定的。如果恰当地处理了某个关键过程涉及的全部关键惯例,这个关键过程的各项目标就达到了,也就表明该关键过程实现了。这种分级的思路在于把一个组织执行软件过程的成熟程度分成循序渐进的几个阶段,这与软件组织提高自身能力的实际推进过程相吻合。这种成熟度分级的优点在于,这些级别明确而清楚地反映了过程改进活动的轻重缓急和先后顺序。这一点很重要,因为大多数软件组织只能在某一段时间里集中开展少数几项过程改进活动。

CMM总体结构图示说明参见图1。

图1 能力成熟度模型的结构

CMM的开发者们结合他们的软件产业环境和软件产品质量保证的需要,在CMM 1.1版中把具有最高能力成熟度的组织设定为处于这样一种情况下的组织:整个组织都持续致力于过程改进;这个组织具备足够的手段用于事先发现过程的长处及短处和防止发生缺陷;它拥有丰富的软件过程成功经验的数据并且可用于对新技术进行“费/效”分析和提出对本组织软件过程的更改建议;它能发现那些可能发掘出最佳软件工程惯例的合理化建议并使之在整个组织里实现转化。这种能力成熟度被定义为CMM的第5级,称之为“(持续)优化级”。

另一方面,现实的软件业里尚有不少组织还不具备稳定的环境用于软件开发和维护,它们缺乏健全的管理惯例,其软件过程能力无法预计;它们的软件过程是一片混沌;并且它们的软件过程总是随着软件开发工作的推进而处于变更和调整之中。这种情况被CMM定义为第1级能力成熟度,称之为“初始级”。

第2级为可重复级。在处于可重复级的组织里,顾客的需求和本组织的工作产物是受控的,并且建立起了基本的项目管理惯例。藉以产生软件产品的一系列过程有如一连串“黑盒子”;尽管管理者可能不知道在“黑盒子”里具体发生了什么,但是,他能掌握过程的产物和那些确认过程是否正常的校验点,从而在发生问题时作出反应。这一级有6个关键过程方面,共含121个关键惯例:

  • 需求管理(12,这是关键惯例数,以下同)
  • 软件项目策划(25)
  • 软件项目追踪和监督(24)
  • 软件分包方管理(22)
  • 软件质量保证(17)
  • 软件配置管理(21)

第3级是(明确)定义级。在这一级,对于在整个组织里用于软件开发和维护的标准过程以文件形式被固定下来。针对各个基本过程建立起文件化的“标准软件过程”,这是第3级能力成熟度的突出特点。这些标准软件过程(包括工程过程和管理过程)被集成为一个相关的整体;这些标准软件过程有助于软件经理和技术人员更有效地履行他们的职责。实践表明,对软件过程加以标准化的过程,也就是发掘高效软件工程惯例的过程。而标准软件过程的建立和实施则为本组织软件项目的实施提供了公共的工程环境。较普遍的看法是,只有当达到了第3级能力成熟度时,才表明这个组织的软件能力“成熟”了。因为,在到达这一级后,表明上述的 “黑盒子”被打开了。在第2级的基础上,第3级包括7个关键过程方面,共含108个关键惯例:

  • 组织过程定焦(16)
  • 组织过程定义(11)
  • 培训(16)
  • 集成式软件管理(19)
  • 软件产品工程(20)
  • 组间协调(17)
  • 对等审查(9)

第4级是定量管理级。处于这一级的组织已经能够为软件产品和软件过程设定定量的质量目标,并且能对跨项目的重要软件过程活动的效率和质量予以度量;可以利用本组织的软件过程数据库汇集各项目软件过程产生的数据并加以分析。达到第4级标准后,该组织的各个软件过程是用各种确切定义并且一致地尺度来说明的;这些尺度是用以评价项目的软件过程和产物的定量基础。在第2、3级的基础上,第4级包括两个关键过程方面,共含32个关键惯例:

  • 定量过程管理(19)
  • 软件质量管理(13)

如前所述,第5级叫持续优化级。在前几级的基础上,第5级包括3个关键过程方面,共含59个关键惯例:

  • 缺陷预防(18)
  • 技术变更管理(22)
  • 过程变更管理(19)

2.CMM的用途及其意义

实施CMM主要可以:

  • 用于软件过程的改进(SPI Software Process Improvement):帮助软件企业对其软件(制作)过程的改变(进)进行计划、(措施)制定以及实施。
  • 用于软件过程评估(SPA Software Process Assessment):在评估中,一组经过培训的软件专业人员确定出一个企业软件过程的状况,找出该企业所面对(存在)的与软件过程有关的、最迫切的所有问题;以及取得企业领导层对软件过程改进的支持。
  • 软件能力评鉴(SCE Software Capability Evaluation):在能力评鉴中,一组经过培训的专业人员鉴别出软件承包者的能力资格;或者是检查监察正用于(进行)软件制作的软件过程的状况。
  • 无论从软件企业,还是从整个国家软件行业来看,CMM都有很重要的意义。首先,它能规范软件开发的过程和管理。目前开发过程在很多公司还处于比较混乱、比较自由的阶段。第二,规范市场竞争。此外,CMM还能帮助企业进行内部的过程改进,这是CMM最有特色的地方。印度有很多软件公司引进了CMM管理机制,使软件出口收入达到了几十亿美元,用户主要在北美,这和他们引进CMM机制有很大关系。
  • 中国软件企业与国际上一些软件开发先进国家如美国、印度软件业的差距在软件开发质量管理上。软件业发达国家企业对CMM认证是高度重视的,以CMM等标准规范企业的行为,是企业具有开发高品质软件能力的重要保障。

3. Hansky及其提供的CMM工具

Hansky是一家独立软件供应商,专注于为中国软件产业提供所需要的开发管理方面的最佳实施工具:软件配置管理系统(SCM)和需求管理、软件项目管理等专业软件工程管理产品,创办人有着在美国硅谷多年的深厚技术根基以及对中国客户需求的深刻认识,所研发的软件开发管理系统采用科学的管理思想,能够有效的确保软件开发团队的软件产品的质量、最大限度地保护客户的知识财富、客观评估开发团队和个人的表现、优化业务流程、让庞大的开发团队进行有效的沟通以及完整的记载软件开发的全部历史过程,从而有效的协调软件项目中各职能人员的工作,使管理者能够方便地掌握工作进度,使软件项目在预定的时间内以高质量完成,也是客户进行ISO9000和CMM等质量体系认证的基础。同时,Hansky还提供包括需求分析、应用咨询、客户化定制、安装调试、培训和技术支持等在内的专业服务。

3.1 需求管理工具

需求是软件客户的要求,整个开发活动都需要围绕需求进行。需求管理简单来说就是获取需求、记录并管理需求、跟踪需求变更,其目的是在客户和相应的软件项目之间建立共同的理解,并形成估计、策划和跟踪整个软件生命周期内软件项目活动的基础。

Hansky(汉星天)公司的Dragonfly是一款针对软件开发过程中的需求管理和测试案例管理的专业工具。其主要目的是为软件开发人员提供科学、系统、规范的软件需求管理平台,同时配合测试案例的管理,提高需求管理工作流程的自动化程度和软件开发的效率,降低开发风险。其主要功能包括产品数据库管理、项目管理、需求管理、基线管理以及测试管理,特点如下:

  • 结合业界公认的软件工程方法,提供完整的需求分析及管理流程
  • 独有的产品、项目和测试管理功能,使得需求管理更加全面
  • 利用Web方式来获取、管理需求,简便团队之间的沟通
  • 采用专门的矩阵表显示需求间及需求和测试案例间的关系,方便需求关联的分析

3.2 配置管理工具

软件配置管理(SCM)是CMM二级当中最重要的KPA之一,其目的是在项目的软件生命周期内建立并维护软件项目产品的完整性。

Hansky(汉星天)公司提供的Firefly是新一代的配置管理工具,与传统的配置管理工具相比,具有简便易用、更加安全可靠、性能好等显著特点,其主要功能为:

  • 利用中央数据库集中存储整个项目开发的完整历史,简便地创建获重现任一发布版本或基线版本,保护软件资产,有效避免人员流动对企业造成的影响
  • 灵活、强大的身份验证和访问控制,帮助企业保护机密数据
  • 支持多用户并行开发,开发人员可以并行开发、更改代码,对于并行开发可能会造成的代码冲突,Firefly可以自动检测,并自动合并,或帮助开发人员手动解决。并行开发使团队开发快速、高效
  • Firefly具有一个的良好的体系结构,能把传输的数据量控制到最小,从而节省网络带宽,提高速度,使其具有优秀的访问性能,将对服务器的配置要求降到最低点
  • 客户端和服务器端的程序完全通过TCP/IP协议来通信,因此不依赖于象NFS那样的共享文件系统,SCM系统更加安全可靠,能在任何局域网(LAN)或广域网(WAN)中正常工作
  • 能自主定义团队的开发规则,并通过自动控制功能贯彻实施

3.3 变更管理工具

变更管理是配置管理系统的重要组成部分,也是通向CMM必备的一块基石之一。软件项目的成败很大程度上取决于对其开发过程的控制,这包括:质量、源代码、进度、资金、人员等的控制。要进行有效的过程控制,仅仅依靠人的力量是不够的,还需要有相应的管理工具。Butterfly是Hansky(汉星天)公司提供的新一代的软件质量管理软件,它以软件产品为中心,有效地协调软件项目中各职位人员的工作,能够使软件项目在较短时间内高质量完成。

  • 规划开发过程,完善源代码编写,提高软件重用率,最大限度保护企业知识财富
  • 提供丰富的报表功能,以直观图形统计开发人员的工作进度和编码质量,客观评价员工表现
  • 优化业务流程,科学的工作流系统使用户工作起来有条不紊,大大提高工作效率,同时用户可以根据实际情况简单、快捷地定制自己的业务流程
  • 掌握工作进度,在软件开发的各个阶段进行都可以进行强大的过程控制
  • 开发人员可以明确地了解他被分配的开发任务,并根据优先级依次完成
  • 提供友好的人机界面,支持工作分配的电子邮件自动通知,方便各种类型的工作人员使用,增加沟通和交流
  • 对软件的错误进行系统管理,从根本上提高软件产品竞争力,提高产品质量  
  • 加速开发进程,规范软件产品开发的各个阶段,避免浪费不必要的时间

4. Hansky对CMM的支持

4.1 对CMM2关键过程域的支持

软件配置管理

  • 并发版本控制。Firefly支持多用户并行开发,团队的开发人员之间无须好象排队一样等待修改代码。开发人员可以并行开发、更改代码
  • 异地开发支持。Firefly通过在每个开发地点建立复制、能自动或手动同步的存储库,为地理分布的开发团队提供很好的支持
  • Defect跟踪的整合。Firefly完全整合于Butterfly(Hansky的错误跟踪系统)。在Firefly上的每一个改变,都能与Butterfly中的一个Defect、RFE(建议请求Requestfor Enhancement)或Task相联接
  • 易于代码检验。Firefly在服务器上可以跟踪所有客户端的workspace,在putback到父workspace之前,用户可以把local workspace中的修改先上载到服务器端的镜像中
  • 处理二进制文件。Firefly不仅可以处理文本文件,并且也可以管理二进制文件,修改后的二进制文件只存储其不同的部分,大大节省了存储空间
  • Butterfly内置丰富的报表功能,可使用户查看相关产品和用户的统计信息。通过查看产品的图形报表,可以直观的了解到该产品目前的工作进度和质量状况;可以得知产品的质量稳定性,软件Bug的数量,未完成任务的数量等信息。通过查看用户的图形统计报表,可以了解该用户的当前工作情况。图形报表功能非常便于项目管理人员从宏观上了解整个产品的进度和质量状况,从而能够合理的确定软件发布日期,调配人员工作

需求管理

  • Dragonfly是一款针对软件开发过程中的需求管理和测试案例管理的专业工具。主要功能包括产品数据库管理、项目管理、需求管理、基线管理以及测试管理
  • 需求被文档化和基线化,可以控制任何类型的文件产品
  • 如果需求需要进行缺陷修复,能够获取需求或者缺陷,管理变更、追踪问题的完结并且将变更状态随时通知相关人员

软件项目跟踪与监督

  • 能够维护项目过程中的实际信息(例如,每月的管理报告)
  • 可以维护项目重新计划的数据
  • 来自系统中的信息能够用于衡量项目的技术进步
  • 项目管理的问题和风险可以被文档化,分配优化和跟踪到完结为止,同时问题的状态可以被衡量和报告

软件质量保证

  • 能够将软件质量保证计划文档化和基线化
  • 能够将质量保证活动的记录文档化和基线化
  • 能将非依从关系的项目文档化分配设定优先级并且被跟踪到完结为止,能够衡量并报告项目的状态,能够将项目的状态和后续的变更通知相关人员

软件项目规划

  • 软件开发计划被文档化和基线化这使得该计划更容易被获取
  • 可以区分每个软件产品的所有者也可以建立获取它们的权限
  • 项目的标准被定义确定文档化和基线化
  • 可以创建项目的骨架以便确定项目需要的工作产品
  • 可以维护估计和计划的历史数据
  • 能够进行问题和风险的识别并且能够跟踪到被解决为止。能够生成不同的报告问题的状态,也可以衡量并可以报告

软件子合同管理

  • 可以控制用于选择和监控软件分包商的各种工作产品(例如接收标准)与规格选择标准与规格管理信息(例如软件项目计划和跟踪以及监督)
  • 能够用于协调多方进行缺陷的识别,设定优先级别,修复和完结。同时可以用于协调发布的文档方案和多个开发工具之间的一致性
  • 可以用于协调多个地点进行分布式的产品开发
  • 能够用于多个地点协调进行整个项目的整体构建 
  • 可以用于将子合同工作的说明文档化和基线化
  • 可用于对项目的活动问题和风险的阶段性回顾

4.2 对CMM3关键过程域的支持

软件产品工程

  • 项目定义的软件过程应该整合适当的工具
  • 支持大量的配置管理模式
  • 能够用于对软件开发环境的的工具本身提供配置管理
  • 如下工作产品被基线化:软件需求文档、软件结构、软件设计文档、代码、单元测试、测试计划、测试程序、测试案例、适当测试级别的测试结果、使用和运行以及维护软件的文档
  • 能够跟踪缺陷,确保受影响的工作产品和它们保持一致,同时通知受影响的人

同行评审

  • 能够用于收集同行评审的数据

组间协作

  • 可以维护整体项目计划时间进度和相关事项
  • 通过问题和组间活动的变更能够被文档化、分配、优先级定义和跟踪到完结
  • 不同组的计划和义务能够被文档化、基线化并且是可用的

组织过程定义

  • 能够将过程(例如组织的标准软件过程)文档化、基线化
  • 可以将生命周期模型文档化、基线化
  • 可以使定制的指导方针能够被文档化、基线化
  • 可以对其它与软件过程相关的文档进行维护、使其可以重新获取

集成软件管理

  • 对项目定义的软件过程的描述能够被基线化
  • 用于管理软件项目的信息能够从Butterfly中获取(例如寻找该项目、现有项目、过去项目的缺陷趋势)。来自本项目、现有项目、过去项目的项目问题能够从Butterfly中获取
  • 所有的项目计划被文档化基线化

4.3 对CMM4关键过程域的支持

定量过程管理

  • 项目定义的定量控制的软件过程的计划能够被文档化、基线化
  • 通过Butterfly获取的度量信息是那些能用于理解和描述项目运行状况的快照数据(例如强调现有缺陷的数据)和发展趋势数据
  • 能够以工作产品的方式维护组织的战略目标并且可以将它文档化
  • 能够在不干扰工程师的软件开发活动的情况下获取原数据并且能够形成报告