软件成熟度国军标GJB5000A.docx
《软件成熟度国军标GJB5000A.docx》由会员分享,可在线阅读,更多相关《软件成熟度国军标GJB5000A.docx(86页珍藏版)》请在冰豆网上搜索。
软件成熟度国军标GJB5000A
GJB5000A-2008军用软件研制能力
成熟度模型概述
谢新华
中科院计算所培训中心
2010年8月北京
第一节GJB-5000A能力成熟度基本概念3
1.1软件过程的基本概念3
1.2能力成熟度模型的基本概念5
1.3军用软件研制能力成熟度模型框架7
1.4理解成熟度等级10
1.5共用目标和共用实践11
1.6善于书写良好的文档13
第二节过程域的基本框架16
2.1过程域部件16
2.2过程管理类过程域之间的关系18
2.3项目管理类过程域之间的关系19
2.4工程类过程域之间的关系21
2.5支持类过程域之间的关系25
第三节已管理级成熟度的过程域27
3.1项目策划(PP)过程域27
3.2项目监控(PMC)过程域33
3.3测量与分析(MA)过程域39
3.4配置管理(CM)过程域43
3.5过程和产品质量保证(PPQA)过程域47
3.6需求管理(ReqM)过程域52
3.7供方协议管理(SAM)过程域55
第四节过程改进计划62
结语63
第一节GJB-5000A能力成熟度基本概念
1.1软件过程的基本概念
一个大型软件项目要成功,很大程度上依赖于正确而且合适的软件过程,首先的问题是什么是软件过程呢?
1,软件过程的定义与概念
1)过程的定义系统从一个状态(始态)变成另一个状态(终态),我们就说:
发生了一个过程(Process)。
过程是一种手段,通过该手段可以把人、方法与规程、技术与工具进行集成,以产生一种所期望的结果。
换句话说,过程就是人们使用相应的方法、规程、技术、工具等将原始材料(输入)转化成用户需要的产品(输出)。
过程与产品存在因果关系。
即好的过程才能得到好的产品,而差的过程只会得到差的产品。
2)过程的特征任何过程都应该具备8个特征:
任何一个过程都有输入和输出;
输入是实施过程的基础、前提和条件;
输出是完成过程的结果;
输出可能是有形产品,也可能是无形产品,如软件或服务;
过程本身是增值转换,不增值的过程没有意思;
完成过程必须投入适当的资源和活动,是换取过程增值或结果有效的代价
过程存在可测量点;
所有的工作和活动都是通过过程来完成的。
若干目的上相互关联的过程系统,我们称之为过程域,广义的软件过程包括管理过程和生产
过程。
主要的软件过程域如下:
工程类的主要过程域:
需求开发、系统设计、软件实现、软件测试、软件维护等等;
管理类的主要过程域:
项目规划、项目监控、需求管理、质量管理、配置管理等等。
上述过程域中的任何活动都会影响产品的质量、生产率和成本。
3)软件过程能力软件过程能力描述通过遵循软件过程能够实现预期结果的程度。
一个组织的软件过程能力提
供一种预测该组织承担下一个软件项目时最可能的预期结果的方法。
软件过程性能表示遵循软件过程所得到的实际结果。
所以,软件过程性能关注已得到的结果,而软件过程能力则关注预期结果。
由于一个特定项目的属性和执行该项目的环境所限,该项目的实际性能可能并不充分反映组织的整个过程能力,即项目的能力受限于它的环境。
2,为什么要加强管理与过程能力呢?
一个组织的成熟首先是从要强管理开始的。
很多人尽管在口头上不得不承认,但内心里还是
认为只要我有了好的技术,照样能把产品做出来,但这不一样。
过去一谈创新往往想到的就是技术创新,但仅仅有技术创新是不够的,我们还必须关注管理
创新和应用创新,没有这个层面的创新思想,就没有办法把技术手段转化为真正有用的东西,更没有办法创造影响人类社会进程的伟大产品。
如果我们仅仅是做一个纸飞机,那我们就没有必要写下详细计划(花20分钟写计划再花20秒把飞机折出来,无疑是个愚蠢行为),你可以快速的修改,即使返工也是经济和高效的。
但是,如果你是制造一家大型客机,那么用纸飞机的方法来实现同样也是愚蠢的,如果没有详细的前期设计,没有严密的管理,那整个飞机制造过程就是一个漫长、混乱和昂贵的过程。
它将产生大量应该避免的返工,甚至永远不可能完成,如下图所示。
为了加强管理与过程能力,现代软件工程学提供了一系列方法,包括:
1)基于工程规范的大型软件系统开发由于大型项目的组件未必是同一个机构生产的,所以需要建立一些系统工程原则,来协调需
要精确协同工作的组件的开发。
2)引入标准和过程规范为了解决这个问题,美国国防部开发了一系列的指导文档,为软件开发提供符合系统工程的
标准方法,这些规范和标准有如下特征:
重视定义良好的工作产品、验证和确认:
软件系统工程认为,从需求到代码的过程中,计划驱动的方法非常精确的依赖于明确的步骤,其中每个步骤中文档的完备性非常重要,这种完备性可以保证每个步骤可验证,文档是可跟踪性的重要保证。
产品规范与过程定义和改进具有同等的联系:
软件作为一种产品,其可塑性使过程需要经过多次改进,正因为如此,过程需要进行定义、标准化并需要逐步改进以提供对项目的有效控制。
过程提供可预见性、可重复性和基础设施的支持来缓解人员流动问题:
标准化所带来的可比较和可重复性,使组织中的人都知道在哪里找信息,以及如何评估日常工作。
这种过程的一致性可以使管理人员在项目之间调动人员而不必要重新培训,也意味着关键人员的的流失不再是项目的厄运。
3)项目越复杂,规范的意义就越重要项目越复杂,规范的意义就愈重要。
在一些非常大的项目中,很多人试图避开这个过程,结
果大多数都失败了。
大量实践表明,规范方法尽管在管理上的成本提高了,但远远比不遵从这些方法(游击队似的疯狂开发)更经济有效,因为它减少了意外和返工的工作量。
更重要的是,它可以保证每个人都知道自己该干什么事情,确保组织运转成为可能。
严格的基线和工作产品的静态测试,帮助人们提高了整体质量,并有助于人们尽早发现更多的缺陷。
如果没有计划和规范,那一定是混乱和不一致的。
尽管某些局部可能成功,但整体上可能永远也不会完成,所带来的管理成本可能更高。
管理层所做的事情可能就是周而复始的协调、协调、再协调,这无疑是管理上的一场噩梦。
正确的规范化并不会抑止人们的创造力,相反它使得团队可以大规模地复用前人积累的智慧和财富。
这种方法非常适合于现代的工业化生产。
业界实践已经证明,走规范化之路是“成本最低、见效最快、能持续发展”的软件过程改进方法,
1.2能力成熟度模型的基本概念
1,能力成熟度(CMM)的历史诱因
软件工程管理引起广泛注意源于20世纪70年代中期,当时人们就发现软件项目的成功率很低,一直到20世纪90年代中期,美国有$2,500亿用于IT的175,000个软件项目,其中:
31%在完成前被取消,其费用为$810亿
53%的费用是原估计费用的190%
只有10%的软件项目能够在预定的费用和进度下交付。
美国国防部(DoD)发现,在失败的项目中,70%是因为管理不善而引起。
这就是DoD建
立CMU/SEI(卡内基梅隆大学软件工程研究所)的诱因。
CMM模型在理论上基于20世纪30年代施瓦特(WalterShewart)的统计质量控制原理,已有60多年历史。
德明(EdwardsDeming)和朱兰(JosephJuran)在40和50年代发展了这些原理并在实践中得到了证明,特别是在日本,获得了极大的成功。
20世纪70年代末期,菲利普.克罗斯比(PhilipCrosby)把这些原理用于构造成熟度框架,首次提出五个进化层次。
20世纪80年代中期,IBM在汉弗莱(WattsS.Humphrey)的指导下,莱德斯(RonRadice)等人把这个成熟度框架首次用于软件过程。
1986年,汉弗莱(Humphrey)把这些成果带到CMU/SEI,并由他主持研究软件过程成熟度模型,对这些原理进行了进一步的完善,并于1987年6月公布了过程成熟度框架的第一份研究报告。
到1993年颁布了第一个成熟的版本CMM1.1。
CMM模型正在向纵深发展,目前CMM家族包括:
软件能力成熟度模型(SW-CMM)
软件获取能力成熟度模型(SA-CMM)
人员能力成熟度模型(People-CMM)
系统工程能力成熟度模型(SE-CM)
集成产品开发能力成熟度模型(IPD-CMM)
个体软件过程(PSP)
群组软件过程(TSP)等。
最近正在试行和推广集成的能力成熟度模型(CMMI)。
2,过程改进的收益
1)过程改进的好处
从上个世纪80年代到今天,软件工程界广泛推行CMM,获得了如下好处:
减少软件开发费用。
提高软件开发生产率。
缩短软件开发周期。
改进软件开发质量。
能较好地控制费用和质量,有较好的可预测性。
举例:
根据波音公司120个项目的统计,当成熟度由第一级上升到第三级以后,各方面的指标都有大幅度改善。
SW-CMM不同等级的可信度
一般来说,根据大部分的统计数据,实施CMM的结果:
生产力约有10%到20%的提升。
产品错误率降低一个数量级。
对项目的预估与控制能力提升40%到50%。
3,军用软件能力成熟度模型正是由于军用软件的敏感性与严肃性,我军总装备部参考了国内外先进经验,根据我国军用
软件研制的实际情况,在2003年发布了GJB5000-2003《军用软件能力成熟度模型》,取得了显著的成果。
根据几年来应用的经验,到2008年又发布了改进版GJB5000A-2008,用以取代GJB5000-2003。
可以预想,新版“军用软件能力成熟度模型”的推广实施,将对我军信息化建设发挥不可估量的作用。
在应用标准的时候,我们需要注意以下几个问题:
1)循序渐进的改良模式
GJB5000A-2008是一个循序渐进的改良模式,一个组织的软件开发由最初的无纪律状态,逐渐学习到成熟而有制度的境界,是需要经过长期的努力的。
国内有些机构以过级为目的,注重短期效应,只在文档格式上下功夫,这是不可取的,这也是为什么很多企业级别虽然很高,但实际表现却并没有那么好的根本原因。
GJB5000A-2008要求所有软件开发组织的评估一律从二级开始,打好基础逐步提升,这是非常有道理的。
2)规范的实施企业制定软件过程规范是为了帮助人们把工作做得更好,而不是存心与人们过不去。
企业一
方面要用行政命令和奖罚措施来强制实施软件过程规范,另一方面又要设法使员工们乐于执行规范从而避免流于形式。
SEPG不要只是埋头写规范,写完了上缴了事。
最好在内部网上开辟一个专栏,专门解释规范。
要对全员进行培训与考试,使机构中的每个人都熟悉与自己工作相关的规范。
只有这样才能防止有人拖后退,使团队发挥最大的力量。
质量保证人员监督实施。
人都有惰性,如果没有人来监督员工们按照规范办事,那么自觉性不强的员工就会回到“无序”的老路上。
质量保证人员的职责就是周期性地检查项目成员的“工作过程以及工作成果”是否符合既定的规范,来监控和改进“过程质量以及产品质量”。
SEPG要及时收集员工们反映的问题和建议,不断地完善规范,但是不能频繁地变更规范的版本,应当有计划地控制规范的版本。
1.3军用软件研制能力成熟度模型框架
1,能力成熟度的表示方法
在GJB5000A-2008中,把成熟度定义为五个等级,包含了22个过程域。
等级用来描述组织的进化路径。
标准允许组织通过增量处理相继的过程域集合,来改进一组相关的过程。
这种改进路径用“成熟度等级”表示。
它的特点如下。
1)军用软件研制能力成熟度模型结构
根据实践证明正确的过程组合和排序,提供一个预定义的路线图:
将过程域组织成2、3、4和5四个成熟度等级
每个成熟度等级包括若干必须的过程域。
每个过程域包括若干个专用目标,每个专用目标包含若干个推荐的专用实践(活动),以达到所期望的目的。
对于任何一个过程域,所有相关的共用目标和共用实践,是实现该过程域的不可分割的整体。
注意,GJB5000A-2008中,有两个共同目标,以及相应的共同实践,这些实践保证了过程域制度化所需要的基本建设与活动。
成熟等级、过程域、目标以及实践的相互关系如下图所示。
2)成熟度的阶梯式表示法成熟度等级是一个己定义的、组织过程改进的进化台阶。
每个成熟度等级表示组织过程的一
个重要部分己经成熟,并为它进入下一个成熟度等级做好准备。
根据是否达到与每组己预先定义过程域相关的专用目标和共用目标来判定是否满足相应的成熟度等级。
每个等级构成了过程改进基础的一个层次,是实现下一个成熟度等级的基础。
不同等级所包含的过程域如下图所示,这就是成熟度的阶梯式表示法。
2)成熟度的连续式表示法:
软件开发一般包括过程管理、项目管理、工程和支持四个职能部分,可以把这些过程分布到
这四个部分中去,这就是成熟度的连续式表示方法,如下图所示。
在一个部分中,某些实践可能处于较低的能力等级,某些实践可能处于较高的能力等级,这就为组织选择那些需要强调实现的过程提供最大的柔性。
GJB5000A-2008标准提供了一个从成熟度等级l到成熟度等级5的预先定义的改进路径,例如,在成熟度等级2,有一组过程域,组织在能够达到这些过程域的所有目标之前,可以应
用这些过程域来指导其过程改进。
一旦组织通过这种方法达到了成熟度等级2,该组织应将其
工作重点放在成熟度等级3的过程域上,以此类推。
在评估过程中,等级还可以用来判定活动的结果。
评估既可适用于整个(通常是小)组织,
也可适用于组织内较小的组(例如,项目组或组织中的某个部门)。
等级也描述了改进的特征,这种改进从一个不良定义的状态改进到另一个状态,等级使用定
量信息来确定和管理所需的改进,以满足组织的业务目标。
要达到某个特定的等级,组织必须满足预定改进的过程域或者过程域的所有目标。
这个标准
还提供了为满足业务目标而实施过程改进的方法。
注意,GJB5000A-2008标准关注的是组织的整体成熟度,某个单一过程是已经实施了还是
不完备,这一点并不是主要的关注点。
标准把“初始级”作为成熟度模型的起点。
成熟度等级可用于基准对比、供方选择、合同项目监督、评估和评价活动。
1.4理解成熟度等级
1,初始级,过程通常都是随意、无序的。
组织通常不提供支持过程的稳定环境。
在这些组织中,成功依
赖于其中人员的能力和勤奋,而不依赖于使用已经证实的过程。
尽管是这种随意、无序的环境,组织常常仍能生产可用的产品,提供可接受的服务;不过,他们经常超出其项目的预算和进度。
成熟度等级1的组织的主要特征是过分承诺,在遇到困难时会放弃过程,并且不能重复他们以往的成功。
2,已管理级组织的项目已确保其过程按照方针进行策划并得到执行。
这些项目聘用有专业技能的人员,
这些人员拥有足够的资源,以便产生受到控制的工作产品;这些项目吸纳利益相关方;这些项目都受到监督、控制和评审;这些项目都受到评价,以保证符合其过程说明。
成熟度等级2反映的过程纪律有助于确保在有压力的情况下保持现有的实践。
在这些实践都到位的情况下,项目都能按照其文档化的计划进行实施和管理。
在成熟度等级2,工作产品的状态和服务的交付在己定义的时间点(例如,在主要里程碑和主要任务完成时)对管理者是可见的。
在利益相关方之间建立承诺并在需要时进行修订。
工作产品受到适当的控制。
工作产品和服务满足其已定义过程的说明、标准和规程。
3,已定义级过程己经得到了很好的定义和理解,并用标准、规程、工具和方法进行了描述。
作为成熟度
等级3的基础,组织的标准过程集己经建立,并随着时间的推移而不断改进。
这些标准过程用于建立整个组织的一致性。
项目按照剪裁指南剪裁组织的标准过程集,以建立项目的己定义过程。
成熟度等级2和成熟度等级3的关键区别是标准、过程说明和规程的适用范围。
在成熟度等级2,这些标准、过程说明和规程在过程的各个特定实例(例如,某个具体项目)之间可以有很大差别。
在成熟度等级3,一个项目的标准、过程说明和规程都是为了适合具体项目或组织的情况而从组织的标准过程集甲剪裁出来的,因此,除了剪裁指南所允许的差别之外,这些标准、过程说明和规程都是一致的。
另一个关键区别是:
在成熟度等级3,过程一般描述得比成熟度等级2更加严格。
一个己定义过程明确地阐述了其目的、输入、入口准则、活动、角色、测量、验证步骤、输出和出口准则。
在成熟度等级3,通过对过程活动的相互关系、过程的详细测量值、过程的工作产品和服务的理解,使过程都得到更加积极主动的管理。
在成熟度等级3,组织应使其成熟度等级2的过程域得到进一步的成熟。
为了达到成熟度
等级3,应使用在成熟度等级2中没有阐述的、与共用目标3有关的共用实践。
4,已定量管理级组织和项目为质量和过程绩效建立了定量目标,并将其用作管理过程的准则。
这些定量目标
是根据顾客、最终用户、组织和过程实现者的需要建立的。
质量和过程绩效都按统计术语进行理解并在该过程生存周期间受到管理,对于所选择的子过
程,收集并统计分析该过程绩效的详细测量值。
将质量和过程绩效测量值纳入组织的测量库以支持基于事实的决策。
标识过程变异的特殊原因,并在适当时纠正特殊原因的根源以防再现。
成熟度等级3和成熟度等级4之间的关键区别是过程绩效的可预测性。
在成熟度等级4,过程绩效使用统计技术和其它定量技术加以控制,并且是可定量地预测
的。
在成熟度等级3,过程通常只是定性地可预测的。
5,优化级根据对过程中固有变异的共因的定量理解,组织持续地改进它的过程。
这个级别关注通过增
量式和创新式的过程和技术改进来持续地改进过程绩效。
建立组织的定量过程改进目标,持续地修订过程改进目标以反映日益变化的业务目标,并将
这些目标用作管理过程改进的准则。
对照定量的过程改进目标,测量并评价已部署的过程改进的效果。
无论是项目的已定义过程,
还是组织的标准过程集,它们都是可测量的改进活动的对象。
成熟度等级4和成熟度等级5之间的关键区别是所涉及的过程变异类型。
在成熟度等级4,组织关注过程变异的特殊原因,并提供结果的统计可预测性。
虽然过程可以产生可预测的结果,但是,这些结果可能不足以实现己确定的目标。
在成熟度等级5,组织关注过程变异的共因,并且改变过程(移动过程绩效的均值或者减少过程的固有变异)以改进过程绩效并实现已确定的定量过程改进目标。
6,成熟度等级的提升组织首先通过实现项目级的控制,然后利用定量和定性两种数据进行决策继续发展到最高等
级,以实现整个组织范围的持续过程改进,进而实现组织成熟度的逐步改进。
在成熟度等级2,组织通过建立合理的项目管理己经从随意、无序状况提高到有纪律状况。
每个成熟度等级是下一个等级的必要基础,所以试图跳越成熟度等级通常是达不到预期目标
的。
在尚未建立能支持更有纪律和广泛改进的基础设施时,成熟度等级1的过程改进活动可能主要依赖于过程组成员的洞察力和能力。
不过组织应明白,这些改进的成功是有风险的,因为成功地制度化这些改进的基础尚未建立。
没有适当基础的过程在面临很大压力时,可能会失败。
例如,成熟度等级1的组织实施需求分析、设计、集成和验证.可是,这些活动在成熟度等级3才进行描述,因为有了一致的和妥善集成的工程过程,就不会由于即兴无序的管理过程而失败。
成熟度等级3组织的特征是过程己定义,如果成熟度等级2的管理实践有缺陷,就可能将已定义过程置于很大风险中。
例如,管理者可能作出计划不当的进度承诺,或者不能控制基线化需求的吏改。
类似地,许多组织过早地收集成熟度等级4特性的详细数据,结果发现因为与过程和测量的定义中的数据不一致而导致无法解释。
过程改进工作应关注组织在其业务环境中的需要,而更高成熟度等级的过程域可能满足组织或项目的当前需要。
例如,常常鼓励试图从成熟度等级1发展到成熟度等级2的组织建立一个
过程组,而建立过程组是成熟度等级3中组织过程焦点过程域处理的问题。
过程组不是成熟度
等级2中组织的必要特征,但它可能是组织达到成熟度等级2的有用方法。
1.5共用目标和共用实践
共用目标是应用于所有过程域的必需内容。
下图说明了它包含哪些部分。
共用目标与共用实践
共用目标2制度化已管理过程
共用目标3制度化已定义过程制度化
共用实践2
2.1制定组织方针
2.2策划过程
2.3提供资源
2.4指派职责
2.5培训人员
2.6管理配置
2.7标识并吸纳利益相关方
2.8监督并控制过程
2.9客观评价遵循性
2.10与更高层管理者一起评审状态
共用实践3
3.1建立已定义过程
3.2采集改进信息
注:
共用目标3及其实践并不应用于成熟度等级2的等级评定,但必须应用于成熟度等级3和更高等级的等级评定。
值得指出的是,没有使用共用目标4、共用目标5及其相关的共用实践。
对于成熟度等级
2,只需满足共用目标2;但对于成熟度等级3到成熟度等级5的各个过程域,则除了应满
足共用目标2之外,还应满足共用目标3。
过程域和共用实践的关系
共用实践
过程域在实现共用实践中的作用
共用实践如何递归地用于其相关过程域
共用实践2.2
项目策划:
项目策划过程对所有与项目有关的过程域(除了项目策划本身)能够全部实现共用实践2.2
用于项目策划过程的共用实践2.2,可特征化为“策划此计划”,并覆盖策划项目策划活动。
共用实践2.3
共用实践2.4
项目策划:
通过标识所需的过程、角色和职责,实现项目策划过程专用实践2.4“实施此项目所需资源的计划”,对所有与项目有关过程域支持实施共用实践2.3和共用实践2.4(可能最初项目策划本身除外),以确保项目所需的合适人员、设施、装备和其它资产是可靠的。
共用实践2.5
组织培训:
组织培训过程当用于所有过程域时,通过使实施或支持此过程的那些人员得到涉及战略或组织范围内培训需要的培训,支持实施共用实践2.5。
项目策划:
项目策划过程部分的实施项目策划的专用实践2.5“实施项目所需的知识和技能的计划”与组织培训过程一起,支持所有与项目有关的过程域中共用实践2.5的全部实施。
用于组织培训过程域的共用实践2.5覆盖为实施组织培训活动所进行的培训活动所进行的培训,它涉及管理、创建和完成此培训所需的技能。
共用实践2.6
配置管理:
配置管理过程能对所有与项目有关的过程域和某些组织的过程域全部实施共用实践2.6。
用于配置管理过程域的共用实践2.6,覆盖由配置管理活动产生的工作产品的更改和版本控制。
共用实践2.7
项目策划:
项目策划过程部分的实施项目策划的专用实践2.6“策划利益相关方参与”,能对所
有与项目有关的过程域全部实施共用实践2,7的利益相关方标识部分(前两个子过程)。
项目监控:
项目监控过程部分的实施项目监控的专用实践1.5“监督