RUP、CMM和XP的主要特征有哪些?

RUP、CMM和XP的主要特征有哪些?

RUP是Rational统一过程(Rational Unified Process)的简称,它是Rational公司(现归属IBM公司)推出的一种软件过程产品。从软件过程模式角度看,RUP又是一种典型的软件过程模式,它以迭代增量式、架构为中心、用例驱动的软件开发方法、采用UML语言描述软件开发过程为主要特征,其中以用例驱动乃是贯穿软件开发始终的方法。

什么是 CMM?

CMM(Capability Maturity Model)是卡耐基梅隆大学软件工程研究院( SEI ,Software Engineering Institute)受美国国防部委托制定的软件过程改进评估模型也称为 SW-CMM(Software Capability Maturity Model) ,该模型于 1991年发布并发展为系列标准模型全世界已经有1万多家软件企业经过 CMM认证CMM目前通用版本是 1.1 版。按照 SEI 的原计划, CMM 的改进版版本 2.0 版 要在 1997年的11月完成。但是美国国防部办公室要求 SEI 延迟发放公布 CMM V 2.0 ,直至他们完成另一个更为紧迫的项目 —CMMI 。

CMM 对软件产业的作用和影响

著名数据研究机构 Standish group 的研究报告说,目前 84% 的软件企业不能按期、按成本完成,其中成本超过 189% ,时间上超过 222% 。主要的原因就在于软件过程的成熟度不够。

多年以来,人们认识到要想高效率、高质量和低成本地开发软件,必须以改善软件生产过程为中心,全面应用软件和质量管理手段。这是世界和中国软件产业迟早都要走的道路。目前, CMM 是国际上普遍采用的一种方法,同时也是一种比较衫的软件生产过程标准,因为它是结合质量管理和软件工程的双重经验,专门针对软件生产过程制订的一套规范。

CMM 的主要用途

  • 用于软件过程评估 。 在评估中,一组经过培训的软件专业人员确定出一个企业软件过程的状况,找出该企业所面对的与软件过程有关的、最急需解决的所有问题,以便取得企业领导层对软件过程改进改进的支持。
  • 用于软件过程的改进 ( SPI) 。 帮助软件企业对其软件过程向更好的方向改变,进行计划、制定以及实施。
  • 软件能力评价。在能力评价中,一组经过培训的专业人员鉴别出软件承包者的能力资格;或者是,检查、监察正用于软件制作的软件过程的状况。

设计 CMM, 就是为了指导软件企业通过判断当前自身的过程成熟度,提出几个对软件质量和过程提高最为关键的问题,以此来选择过程的提高策略。这样就可以将注意力放在几个有限的任务上,并努力实现这些任务,企业就能平衡地提高自身的企业级软件开发管理过程,保证持续地、长久地提高软件过程能力。

根据SEI 的统计,以目前业界的通行标准:每千行源代码所包含的BUG 数,CMM1 级为 11.95 个, CMM2为 5.52个,CMM3 为 2.39 个,CMM4为 0.92 个,而CMM5则只有 0.32 个。在可靠性提高的同时, CMM5 软件开发周期是 CMM1的36% ,而生产成本是CMM1的19% ,平均每个软件开发人员的生产率会提高四倍。软件企业在引入CMM 管理后,劳动生产率平均增长 35 %,错误比率平均减少 39 %,平均成本回报率为 5 ∶ 1 。

CMM 的内容

SEI 给 CMM下的定义是:对于软件组织在定义、实现、度量、控制和改善其软件过程的进程中各个发展阶段的描述。这个模型便于确定软件组织的现有过程能力和查找出软件质量及过程改进方面的最关键的问题,从而为选择过程改进战略提供指南。 CMM 为软件企业的过程能力提供了一个阶梯式的进化框架,目的是适应不同机构使用的需要。这种阶梯式的框架把软件开发机构按照不同开发水平划分为 5 个级别:Initial( 初始级 )、Repeatable( 可重复 )、Defined( 已定义 )、Managed (已管理)和 Op-timizing( 优化中 ) 。

以下是 CMM 的分级结构和其主要特征:

  • 初始级――软件过程的特点是无秩序的。软件过程定义几乎处于无章法和可循的状态,软件产品所取得的成功往往依赖极个别人的努力和机遇。
  • 可重复级――已建立了基本项目管理流程,可用于对成本、进度和功能特性进行跟踪。对类似的应用项目,有章可循并能重复以往所取得的成功。
  • 已定义级――用于管理的和工程的软件过程均已文档化、标准化,并形成了整修软件组织的标准软件过程。全部项目均采用与实际情况相吻合的、适当修改后的标准软件过程来进行操作。
  • 已管理级――软件过程和产品质量有详细的度量标准。软件过程和产品质量得到了有效地认识和控制。
    RUP、CMM和XP的主要特征有哪些?
  • 优化级――通过对来自过程、新概念和新技术等方面的各种有用信息的综合分析,能够不断地、持续性地对过程进行改进。

这种结构的一个重要特点是:那些与判定成熟度等级有关的组成部分处于模型的顶层。它们是:成熟度等级 ( Maturity Levels) 、 关键过程域 ( Key Process Area) 与各个关键过程域的目标 。 这个模型细节的组成部分――关键实践 ( Key Practices) , 从属活动以及基础构造 ( Infrastructure or Activities) 都是可参考的。这些可参考的部分指导 CMM 的使用者运用他们的专业判断力来做出应用上的决定。

关键过程域

在 CMM 中每个成熟度级 ( 除第一级外 ) 规定了不同的关键过程域,一个软件组织如果希望达到某一个成熟度级别,就必须完全满足关键过程区域所规定的不同要求,即满足每个关键过程区域的目标。所谓关键过程区域是指一系列相互关键的操作活动,这些活动反映了一个软件组织改进软件过程时必须集中力量改进的几个方面。换句话说,关键过程域标识了达到某个成熟程度级别时所必须满足的条件。当这些活动在软件过程中得以实现,就意味着在软件过程中对提高软件过程能力起关键作用的目标就达到了。目标可以被用来判断一个组织或项目是否有效地实现了某个特定的关键过程域。即目标确定了关键过程域的界限、范围、内容和关键实践。

RUP、CMM和XP的主要特征有哪些?
在 CMM 中一共有 18 个关键过程域,分布在 2-5 级中。他们在 CMM 实践中起了至关重要的作用。如果从管理、组织和工程方面划分,关键过程域可以归结为下图所示的情况。

CMM的关键过程域

CMM中每个成熟度等级(第1级除外)规定了不同的关键过程域,一个软件组织如果希望达到某一个成熟度等级,就必须完全满足关键过程域所规定的不同要求,即满足每个关键过程域的目标。所谓关键过程域是指一系列相互关联的操作活动,这些活动反映了一个软件组织改进过程时必须集中精力改进的几个方面。换句话说,关键过程域标识了达到某个成熟度等级时所必须满足的条件。在CMM中一共有18个关键过程域,分布在2~5级中。

1)第2级(可重复级)有6个关键过程域,主要涉及建立软件项目管理控制方面的内容。

需求管理(Requirements ManagementRM

软件项目计划(Software Project PlanningSPP

软件项目跟踪与监控(Software Project Tracking and OversightSPTO

软件子合同管理(Software Subcontract ManagementSSM

软件质量保证(Software Quality AssuranceSQA

软件配置管理(Software Configuration ManagementSCM

2)第3级(定义级)有7个关键过程域,主要涉及项目和组织的策略。使软件组织建立起对项目中的有效计划和管理过程的内部细节。

组织过程焦点(Organization Process FocusOPF

组织过程定义(Organization Process DefinitionOPD

培训程序(Training ProgramTP

集成软件管理(Integrated Software ManagementISM

软件产品工程(Software Product EngineeringSPE

组间协调(Intergroup CoordinationIC

同级评审(Peer ReviewsPR

3)第4级(管理级)有2个关键过程域,主要的任务是为软件过程和软件产品建立一种可以理解的定量的方式。

定量过程管理(Quantitative Process ManagementQPM

软件质量管理(Software Quality ManagementSQM

4)第5级(优化级)有3个关键过程域,主要涉及的内容是软件组织和项目中如何实现持续不断的过程改进问题。

缺陷预防(Defect PreventionDP

技术变更管理(Technology Change ManagementTCM

过程变更管理(Process Change ManagementPCM

以上每个 KPA 分为五个部分,称为共同特性:

  • 执行约定:执行约定机构为确保过程的建立和持续而必须采取的一些措施。典型内容包括建立机构策略和领导关系。
  • 执行能力:执行能力描述了项目或机构完整地实现软件过程所必须有的先决条件。典型内容包括资源、培训、机构结构和工具。
  • 执行活动:执行活动描述了执行一个关键过程域所必须的活动、任务和规程。典型内容包括制定计划和规程、执行和跟踪以及必要时采取纠正措施。
  • 测量和分析:测量和分析描述了为确定与过程有关的状态所需的基本测量实践。这些测量可用来控制和改进过程。典型内容包括可能采用的测量实例。
  • 验证实现:验证实现描述了为确保执行的活动与已建立的过程一致所采取的步骤。典型内容包括管理部门和软件质量保证组实施的评审和审核。

这个共同特性中的实践描述了建立一个过程能力所必须完成的活动。

关键做法 ( CMM 有 316 个关键做法 ) 描述有效实现与构造关键过程域的基础结构和活动。关键做法描述干什么,而不指定怎么干,不要求流水式或螺旋式之类的特定软件寿命周期模型,不要求特定机构性结构,不规定产品实现的技术方法和使用的开发工具。它们只是提出建议,而不强求,使各个机构可以选择自己的方法。 CMM 是个管理模型,提供如何管理软件过程的准则,而不规定产品开发的技术方面和开发人员的性能。

极限编程(XP)是一种轻量级的软件开发方法论,XP从实践中来,是对实践的总结,也是经过实践检验的,其主要特征是要适应环境变化和需求变化,充分发挥开发人员的主动精神。XP承诺降低软件项目风险,改善业务变化的反应能力,提高开发期间的生产力,为软件开发过程增加乐趣,相信这些足以吸引每个人的眼球。

在XP的项目开发中,首先引入了四个变量:成本、时间、质量和范围,通过研究变量之间的相互作用,将项目开发分析的更加透彻,成功讲述一个项目成功的原则。

为了能成功地实施XP,XP制定四个准则:沟通、简单、反馈和勇气

和十二条原则:计划游戏、小版本、隐喻、简单设计、测试、重构、结队编程、代码集体所有、持续集成、每周工作40小时、现场客户、编码标准

以及对开发人员的工作要求:编码、测试、倾听和设计。

XP是一个非常庞大的知识库,每一项都是一门值得深究的学问。提出这些要求和原则后,XP有提出了一系列的解决方案,也就是策略,其中包含:管理策略、设施策略、计划策略、开发策略、设计策略和测试策略。在真正去实现XP时,XP又提供了将策略成功应用的实践。可以说XP为你的软件开发的指导老师。

XP是从实践中来的,应此有好多人围绕XP发表了一些自己的实践经验,其中主要包括:测试驱动开发、结队编程、重构和极限编程工具。