经常看到和听到大家在争论敏捷过程、RUP和CMM 哪个软件开发过程更好或者哪个过程不好,各自都有理由、争论得不亦乐乎......实际上,没有十全十美的过程,也不存在更好的过程。关键是什么样的过程适合自己(的组织),适合自己的过程才是好的过程。更重要的是,适合自己的过程需要时间积累、需要不断实践,对已定义的过程进行剪裁、补充和完善,才会建立最适合自己的软件开发过程。
引用
Alistair Cockburn的一句话 “不同的项目需要不同的方法论,一个项目的最佳过程是这个项目所能负担的最小过程。”, 这说明,对一个组织,往往有几种方法并存,而对不同类型的项目,采用不同的方法。选择一个合适的生命周期模型对于任何软件项目的成功都是至关重要的。大量项目严重拖延、产品迟迟不能交付,究其根本原因往往是与错误运用了生命周期模型有关,这其中就包括存在明显缺陷的瀑布模型所引起的误区,虽然70年代提出的瀑布模型多年来一直被我们的软件工程教育奉为经典来传授,实践上瀑布模型往往会将软件过程引入歧途。与之不同是,新的过程方法论,不论轻型、重型, 还是XP、RUP或者TSP,无一例外地都主张采用能显著减少风险的迭代演进式生命周期模型,强调迭代。但过分强调迭代,可能会忽视需求分析和定义、忽视设计,在后期不断改动,使软件开发的不良成本(返工、修正缺陷等)大大增加,增加了企业成本。
例如,越来越多的人在讨论、推崇敏捷过程、极限编程(XP),实际也是有问题的,虽然敏捷过程、极限编程适合Web的开发、适合免费的Web服务、适合永远的Beta版本,其中也有许多思想也确实值得应用,如持续集成、重构、强调测试等,但也存在其它问题,如结队编程、计划博弈、代码集体所有等。极限编程只适合小型团队、适合开源社区等,而不适合大型软件企业;在软件开发过程的全局上,更适合采用统一过程(RUP)、微软软件开发框架(MSF),而在局部、细节,吸收敏捷思想。有位美国朋友告诉我,XP可能昙花一现。不管他说得对否,当软件作为成熟的产业,肯定是不会允许完全像“XP”这种做法的。
由于篇幅和时间有限,在这里,可以将目前的流行的过程模式进行一个对比分析,大家就会对不同的软件过程的优缺点,一目了然。
项目
|
CMM/CMMI
|
RUP
|
MSF
|
XP
|
周期
|
螺旋模型。
|
演进式迭代周期,过程框架
|
瀑布模型和螺旋模型的结合
|
演进式迭代周期。软件开发方法学
|
核心
|
过程改进
|
架构、迭代
|
里程碑、迭代
|
以代码为中心。
|
范围
|
需求严格而极少变化的项目。
|
适合不同类型的项目
|
适合不同类型的项目
|
进度紧、需求不稳定的小项目、小型发布和小团队
|
组织
|
个人(PSP)、团队(TSP)和组织的3个层次,组间协作、培训
|
跨团队协作
|
强调产品的愿景,6种基本角色
|
以团队为基础,小团队、团队成员能力相当
|
技术
|
传统结构化方法
|
面向对象技术
|
综合技术
|
面向对象技术
|
管理
|
侧重于过程的定义、度量和改进。一切用数字和文档说话。
|
从组织角度出发,侧重于过程建模、部署。
|
业务建模、部署、过程管理等概念。
|
侧重于具体的过程执行和开发技术,计划设计。
|
活动
|
通过过程域来定义活动
|
整个团队在整个过程中关注质量
|
项目管理、风险管理和就绪管理
|
以人为本,如每周40小时工作制、结对编程
|
实践
|
各类级别的关键实践。
重视关键基础设施。
|
满足了CMM 2-3 级KPA 的要求,而基本上没有涉及CMM 4-5 级的KPA
|
代码复审、版本管理方法、文档管理、人员招聘、重测试和重风险管理等。
|
编码和设计活动融为一体,弱化了架构。
用例、单元测试、迭代开发和分层的架构。
|
其它
|
通用性强,但复杂、高成本。
|
强调风险驱动,以保障可用产品的持续性交付为前提,尽量减少不必要的过程工件,使度量、文档最小化以获得弹性和应变能力。
|
提供了一系列指南,用于规划企业的基础技术设施,流程化商业的运作过程,并鼓励重用性。
|
拥抱变化,强调人性化、简单、沟通。尽量减少文档。
个体和交互胜过过程和工具。
|
概括起来, 不存在一种通用的或一成不变的适合软件开发和维护所有项目的软件过程模型。在组织软件过程中,存在不同的企业文化和业务环境、不同的层次和规模、不同的架构和产品类型、不同的资源和能力等因素制约,需要根据不同的项目、不同时期来选择和运用不同的过程模型和方法。不断吸收已有过程的思想,不断探索、不断实践,最终慢慢形成适合自己的自我定义的过程。
经过实践检验和积累的、自我定义的软件过程才是最好的过程。
参考“七人分粥”- 《软件过程管理》前言合理的软件过程是软件质量的基础-论CMM/CMMI的缺点 CMM和CMMI过程域的比较分析 第1回 V模型,我的完整诠释
分享到:
相关推荐
RUP(Rational Unified Process)即统一软件过程,以架构为中心,划分多个模块并配对相应的用例模型。RUP 的优点是可以帮助企业提高软件开发的质量和效率,但缺点是过于理论化,且不太适合小型项目。 MSF...
### 关于RUP统一软件开发过程的分析 #### RUP的开发前景 RUP(Rational Unified Process)作为一套先进的软件开发方法论,其核心优势在于能够为软件开发的各个环节提供全面的指导和支持。RUP的开发前景主要体现在...
**CMMI(Capability Maturity Model Integration)**是能力成熟度模型集成,是软件行业内广泛采用的一种过程改进框架,旨在提升组织的软件开发能力和产品服务质量。CMMI涵盖项目管理、过程管理、质量管理、配置管理...
火龙果软件工程技术中心本文内容包括:为什么要将CMMI和RUP结合起来?映射RUP和CMMI在RUP/CMMI结合中面临的挑战及其解决方案参考资料本文对CMMI和RUP的结合进行了全方位的探索:为什么这么做?如何开始?将会面临...
总结来说,这份资料包深入浅出地介绍了CMMI在软件开发过程规范、文档管理和项目管理中的应用,是软件工程师和项目经理的宝贵参考资料。通过理解和实施CMMI,可以有效提升团队的软件开发能力和项目管理水平,从而确保...
**CMMI(Capability Maturity Model Integration)**是能力成熟度模型集成,是软件行业内一套广泛采用的过程改进框架,旨在提升组织的软件开发和服务提供能力。CMMI模型分为五个等级,从初始级到已优化级,分别代表...
CMMI提供过程改进的方向,PMI提供了项目管理的理论基础,MSF则提供了适用于软件开发的具体实践。而VSTS作为工具平台,使得这些理论和实践得以落地,帮助团队实现规范化、敏捷化和自动化的开发流程。通过合理运用这些...
《CMMI4软件开发过程和管理文档模板详解》 在软件行业中,高效有序的开发流程和严格的管理规范是确保项目成功的关键因素。CMMI(Capability Maturity Model Integration,能力成熟度模型集成)作为国际认可的质量...
* 需求规格书:是软件开发的输入文档,描述了软件的功能和非功能需求。 * 需求清单列表:是软件开发的输出文档,列出了软件的所有需求。 * 架构设计书:是软件开发的输出文档,描述了软件的系统架构和技术方案选择。...
5. **所建议的系统**:对推荐的系统进行详细描述,包括数据流程、处理流程,与原有系统的比较,以及对设备、软件、运行、开发、环境和经费的影响或要求。同时指出系统的局限性。 6. **经济可行性**:进行了成本-...
【CMMI与软件质量管理】是关于提升软件开发过程中质量管理能力的主题。CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是一种国际认可的过程改进框架,旨在帮助组织优化其软件开发流程,提高...
《MSF for CMMI Process Improvement - 4.0 中文版》是针对软件开发过程改进的一个重要参考资料,它基于CMMI(能力成熟度模型集成)框架,并结合了微软解决方案框架(MSF)的理念。CMMI是全球广泛认可的质量管理和...
CMMI3标准文档模板大全(完整)+CMMI3级软件过程改进方法与规范+CMMI3CMMI3标准文档模板大全(完整)+CMMI3级软件过程改进方法与规范+CMMI3CMMI3标准文档模板大全(完整)+CMMI3级软件过程改进方法与规范+CMMI3CMMI3...
《软件开发规范与CMMI改进在项目管理中的实践》 在软件开发行业中,一套完善的规范和有效的项目管理是确保项目成功的关键因素。本资料"ZL0004整套详细软件开发完整过程规范CMMI改进软件工程文档项目管理必需.zip...
**CMMI(Capability Maturity Model Integration)是软件开发过程改进和能力成熟度评估的模型,旨在提升组织的软件开发效率、质量和可靠性。CMMI2.0是该模型的最新版本,它提供了更灵活、实用的过程改进框架。** 在...
2. **需求分析文档**:需求分析是软件开发的基础,需要详细记录用户的需求,并转化为可操作的功能规格说明书。这包括需求收集、需求分析、需求优先级排序和需求验证等环节。 3. **设计文档**:设计文档描述了软件的...
CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是软件行业内广泛采用的一种评估和改进软件开发过程的方法,其目标是提升组织的软件开发效率、质量和可靠性。CMMI3级代表“已定义”级别,意味着...
软件过程度量的用户包括项目管理者、开发团队、质量保证人员等,他们对度量的需求和应用各有侧重。 过程度量的重点包括进度、资源、费用、稳定性、质量、开发性能和技术完备性。这些因素之间相互关联,技术完备性是...
CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是一个用于提高企业对软件和系统开发过程改进的框架。CMMI由多个成熟度等级构成,这些等级定义了企业组织能力的等级,从初始级到优化级,共有五...