[转]软件开发过程(CMMI/RUP/XP/MSF)是与非?
引用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
|
代码复审、版本管理方法、文档管理、人员招聘、重测试和重风险管理等。
|
编码和设计活动融为一体,弱化了架构。
用例、单元测试、迭代开发和分层的架构。
|
|
其它
|
通用性强,但复杂、高成本。
|
强调风险驱动,以保障可用产品的持续性交付为前提,尽量减少不必要的过程工件,使度量、文档最小化以获得弹性和应变能力。
|
提供了一系列指南,用于规划企业的基础技术设施,流程化商业的运作过程,并鼓励重用性。
|
拥抱变化,强调人性化、简单、沟通。尽量减少文档。
个体和交互胜过过程和工具。
|
概括起来, 不存在一种通用的或一成不变的适合软件开发和维护所有项目的软件过程模型。在组织软件过程中,存在不同的企业文化和业务环境、不同的层次和规模、不同的架构和产品类型、不同的资源和能力等因素制约,需要根据不同的项目、不同时期来选择和运用不同的过程模型和方法。不断吸收已有过程的思想,不断探索、不断实践,最终慢慢形成适合自己的自我定义的过程。
[转]软件开发过程(CMMI/RUP/XP/MSF)是与非?的更多相关文章
- 统一软件开发过程(rup)理解
不好意思,没有内容,请看百科吧http://baike.baidu.com/link?url=-zXA6oXiHRts5Z1THGzie7seH-YRigfiR7KRppP6TYcnnb7_Bxc_f ...
- RUP(Rational Unified Process),统一软件开发过程
RUP(Rational Unified Process),统一软件开发过程 https://baike.baidu.com/item/RUP/8924595?fr=aladdin RUP最重要的它有 ...
- 敏捷开发系列之旅 第五站(不一样的RUP统一软件开发过程)
概述 RUP,统一软件开发过程,是一个面向对象且基于网络的程序开发方法论.根据Rational的说法,RUP就好像一个在线的指导者,他可以为所有方面和层次的程序开发提供指导方针.模板以及事例支持. ...
- 统一软件开发过程(RUP)的概念和方法
统一软件开发过程(Rational Unified Process,RUP)是一种面向对象且基于网络的程序开发方法论. 根据Rational(Rational Rose和统一建模语言的开发者)的说法, ...
- Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计
Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计 1.1. software development methodology (also known as SDM 1 1 ...
- RUP---统一软件开发过程
更详细的见:http://www.ibm.com/developerworks/cn/rational/r-rupbp/ 本文引用:http://baike.baidu.com/view/223583 ...
- 【转】UML图与软件开发过程那点关系
首先,软工文档, 软工文档,也就是计划,设计,描述,使用软件的一些文件,它最大的特点就是固定不变,用来给不同的人和计算机来阅读.在期间,文档起到了桥梁的作用,看这张图很形象: 在这里在看一下国家统一规 ...
- 软件开发过程中的审查 (Review)
http://blog.csdn.net/horkychen/article/details/5035769 软件开发过程中的审查 (Review) 希望别人做些什么->定义出流程 希望别人 ...
- 软件开发过程文档-cgaowei
鸡肋——食之无味,弃之可惜”,软件开发过程文档遭遇了鸡肋一样的境遇. 目前敏捷软件开发过程非常流行.相对于软件开发过程文档,敏捷软件开发过程更加重视可运行的程序.关于软件开发过程文档,两个极端都是不可 ...
随机推荐
- pl/sql programming 03 语言基础
PL/SQL 块结构 最小的有意义的代码单元叫做 块(block). 一个块是一组代码, 这个块给出了执行边界, 也为变量声明和异常处理提供了作用范围, pl/sql 准许我们创建匿名块和命名块, 命 ...
- 【转载】Javascript中的this关键字
看了这篇文章 http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html 分情况讨论. 情况一:纯粹的函数 ...
- How can I work smarter, not just harder? Ask it forever
How can I work smarter, not just harder? 记住,永远要问自己这个问题.当你发现在做一件事情时,总是那么的繁琐无味,那么一定是出了什么问题. 如果一味地强调更加 ...
- 解决 border-radius 元素在应用了 transform 的子元素 时overflow:hidden 失效的问题
受大家启迪,于是最近深入研究了一下Css3中的一些属性.之中也是碰到了个不为我知的问题,在这里特此总结并与大家分享. 问题重现:在父元素上应用了 border-radius 的圆角属性.加上 ove ...
- UVa 1626 (输出方案) Brackets sequence
正规括号序列定义为: 空序列是正规括号序列 如果S是正规括号序列,那么[S]和(S)也是正规括号序列 如果A和B都是正规括号序列,则AB也是正规括号序列 输入一个括号序列,添加尽量少的括号使之成为正规 ...
- 浅析extendedLayout, automaticallyAdjustsScrollViewInsets, extendedLayoutIncludesOpaqueBars
参考文章: http://stackoverflow.com/questions/18798792/explaining-difference-between-automaticallyadjusts ...
- 对于fmri的设计矩阵构造的一个很直观的解释-by 西南大学xulei教授
本程序意在解释这样几个问题:完整版代码在本文的最后. 1.实验的设计如何转换成设计矩阵? 2.设计矩阵的每列表示一个刺激条件,如何确定它们? 3.如何根据设计矩阵和每个体素的信号求得该体素对刺激的敏感 ...
- Myeclipse提示失效?
- HiveQL 与 SQL的异同
1 select 别名 (1)别名一定要加as 例:select ID as stuID from students (2) Hive QL不支持在group by, order by 中使用sele ...
- ORA-00257错误
Archiver error,connect internal only,until freed 表示归档日志目录已满,用户不能再连接数据库,现有用户可继续查询数据库,但是不能执行DML语句 插删 ...