CMMi RUP XP相关

发布于:2021-10-02 07:41:02

???? CMMi是个超重量级的模型,Rational Unified Process (RUP)是一个重量级的软件过程,而极限编程(eXtreme Programming )则是轻量级开发过程的典型代表,但无论何种过程模型,其终极目标皆是在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品。CMMi总结了软件工程领域数十年的经验教训,其中定义的关键域,关键操作,关键产品输出对于任何一个软件开发团队都具有指导意义,尤其CMMi已然成为衡量开发团队成熟度的一个硬性的通行的指针。但从CMMi的实施要求和实施成本考虑,国内大多数软件开发团队或公司恐怕没有能力完全遵照CMMi的定义来构建自身的软件过程。在这种情况下,RUP和XP对于确保软件质量、降低开发维护成本、提高客户满意度、提升开发团队整体素质等诸多方面,其实是很好的选择。个体软件过程(PSP)当然也是可供每个项目经理、软件工程师认真学*实践的指南,但就个体而言,难以实现精确的量化管理,而且个体的目标与团队的目标通常是存在冲突的,这样便更需要在软件系统产品开发过程中,以整体的力量弥补个体的不足。

?


cmm/cmmi 与 agile 的区别主要有:


1、CMM更注重质量,Agile更注重生产率


错。


Agile 至少与 CMM 一样注重质量,只不过它采取了更为轻便的、成本更低的方式来保证质量。生产率并不是 Agile 追求的主要目标,只是一个迭代轻量过程的副产品。


正确的说法是:


Agile 与 CMM/CMMI 都非常注重质量,差别在于一种是轻量方法,另一种是重量方法,分别有各自适用的项目开发环境。


2、CMM强调过程的可观测性,Agile强调可观测的结果(可运行软件)


大致对。


3、CMM注重管理和过程,Agile注重技术和效率


错。


Agile 不但包含敏捷工程技术,也包含敏捷管理和敏捷过程。Agile 至少与 CMM 一样注重管理和过程,区别在于 Agile 采用的是一种更为轻便、灵活、高效的方式。


难道一定要采用重型方法,制定大量的细节行为规范,编写大量的文档,采集大量的数据,才叫管理和过程?轻型方法就不能做好软件研发的管理和过程?显然,这没有道理。


在 Agile 支持者眼中,对于他们所从事的项目开发环境,Agile 是远比 CMM 更为有效、先进和成熟的方式方法。


认为只有 CMM 注重管理、过程和质量,而 Agile 不注重管理、过程和质量,显然是一种错误的偏见。


正确的说法是:


CMM/CMMI 与 Agile 是两种不同的软件研发管理和过程体系,区别在于前者重量,后者轻量;Agile 包含了更多具体、实用的软件工程技术方法,而 CMM/CMMI 提供了更多以数学统计为基础的过程管理和质量控制技术方法。在适用条件下,轻量过程通常会带来了更高的开发效率。


?


?


?


?Rational Unified Process(简称RUP)是一套软件工程过程【1】。RUP本质是风险驱动的、基于Use Case技术的、以架构为中心的、迭代的、可配置的软件开发流程。 可以针对RUP所规定出的流程,进行客户化定制,定制出适合自己组织的实用的软件流程。 因此RUP是一个流程定义*台,是一个流程框架【2】。RUP中有9个核心工作流,分为6个核心过程工作流(Core Process Workflows)和3个核心支持工作流(Core Supporting Workflows)【3】这些核心工作流有点像CMMI里的关键过程域,不过CMMI里的关键过程域比这多。CMM是一个软件过程改进模型.RUP、XP是项目的开发方法,按照RUP来做,你的项目可能可以达到CMM的一定级别,但是这仅仅可以针对一个或几个项目,而非组织性的行为.CMM本身需要融合在一个软件组织的体系当中,也就是说软件组织的各级、各层、各个组织部分,甚至个人需要在软件过程、软件过程的不同阶段能够以成熟规范的方式来协调和运作,由此获得最佳的项目成果【4】。



???? XP(eXtreme Programming)极限编程,这是一个颇有争议的软件开发方法。如果去搜索相关资料,会发现有人很推崇,有人很反对。XP是一个轻量级的、灵巧的软件开发方法.它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。XP是一种*螺旋式的开发方法.它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程【5】。XP有它的适用范围,在一个小型的团队开发有限集成和独立的软件产品事有效的。如果在大型团队和复杂集成中应用可能会带来混乱。同样,XP与CMMI的关系,如同RUP和CMMI的关系,RUP、XP都是项目的开发方法,CMMI没有限制用什么方法。CMMI的范畴要比RUP和XP更广





软件开发过程(CMMI/RUP/XP/MSF)是与非



?经
常看到和听到大家在争论敏捷过程、RUP和CMM 哪个软件开发过程更好或者哪个过程不好,各自都有理由、争论得不亦乐乎......实际上,没有十全十美的过程,也不存在更好的过程。关键是什么样的过程适合自己(的组织),适合自己的过程才是好的过程。更重要的是,适合自己的过程需要时间积累、需要不断实践,对已定义的过程进行剪裁、补充和完善,才会建立最适合自己的软件开发过程。

项目

CMM/CMMI

RUP

MSF

XP

周期

螺旋模型。

演进式迭代周期,过程框架

瀑布模型和螺旋模型的结合

演进式迭代周期。软件开发方法学

核心

过程改进

架构、迭代

里程碑、迭代

以代码为中心。

范围

需求严格而极少变化的项目。

适合不同类型的项目

适合不同类型的项目

进度紧、需求不稳定的小项目、小型发布和小团队

组织

个人(PSP)、团队(TSP)和组织的3个层次,组间协作、培训

跨团队协作

强调产品的愿景,6种基本角色

以团队为基础,小团队、团队成员能力相当

技术

传统结构化方法

面向对象技术

综合技术

面向对象技术

管理

侧重于过程的定义、度量和改进。一切用数字和文档说话。

从组织角度出发,侧重于过程建模、部署。

业务建模、部署、过程管理等概念。

侧重于具体的过程执行和开发技术,计划设计。

活动

通过过程域来定义活动

整个团队在整个过程中关注质量

项目管理、风险管理和就绪管理

以人为本,如每周40小时工作制、结对编程

实践

各类级别的关键实践。

重视关键基础设施。

满足了CMM 2-3 级KPA 的要求,而基本上没有涉及CMM 4-5 级的KPA

代码复审、版本管理方法、文档管理、人员招聘、重测试和重风险管理等。

编码和设计活动融为一体,弱化了架构。

用例、单元测试、迭代开发和分层的架构。

其它

通用性强,但复杂、高成本。

?

强调风险驱动,以保障可用产品的持续性交付为前提,尽量减少不必要的过程工件,使度量、文档最小化以获得弹性和应变能力。

提供了一系列指南,用于规划企业的基础技术设施,流程化商业的运作过程,并鼓励重用性。

拥抱变化,强调人性化、简单、沟通。尽量减少文档。

个体和交互胜过过程和工具。





经过实践检验和积累的、自我定义的软件过程才是最好的过程。

相关推荐

最新更新

猜你喜欢