[转]软件开发过程(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
鸡肋——食之无味,弃之可惜”,软件开发过程文档遭遇了鸡肋一样的境遇. 目前敏捷软件开发过程非常流行.相对于软件开发过程文档,敏捷软件开发过程更加重视可运行的程序.关于软件开发过程文档,两个极端都是不可 ...
随机推荐
- HTML5_拖放
拖放(Drag 和 drop)是 HTML5 标准的组成部分.拖放是一种常见的特性,即抓取对象以后拖到另一个位置.在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 支持的浏览器:Inter ...
- BZOJ 2286 消耗战
虚树裸题. 23333以后memset千万慎用. #include<iostream> #include<cstdio> #include<cstring> #in ...
- BZOJ 4631 踩气球
BZOJ上内存小了会WA.... 线段树上挂链表. #include<iostream> #include<cstdio> #include<cstring> #i ...
- HDU 5265 pog loves szh II (技巧)
题意:给一个数字序列,要求再其中找到两个数,其和再模p的结果是最大的,求此和. 思路:先将输入的元素模p,排序.结果可能有两种情况: (1)a+b大于p:肯定由两个最大的数之和来产生. (2)a+b小 ...
- codeforce Codeforces Round #201 (Div. 2)
cf 上的一道好题: 首先发现能生成所有数字-N 判断奇偶 就行了,但想不出来,如何生成所有数字,解题报告 说是 所有数字的中最大的那个数/所有数字的最小公倍数,好像有道理:纪念纪念: #incl ...
- HDU 4608 I-number 2013 Multi-University Training Contest 1
定义一个数 y 为 x 的 I-number.对于 y 有如下要求: 1.y > x; 2.y 的每一位之和要为10的倍数(例如 28 每一位之和为 10 ,为 10 的 1 倍); 3.这样的 ...
- 剑指offer-第三章高质量的代码(输出该链表中倒数第K个节点)
题目:输入一个链表,输出这个链表中倒数第K个节点.(代码的鲁棒性) 思路:用两个指针p1和p2,都指向头节点,开始的时候,p2不动,p1移动k-1次,指向第k个节点.此时,如果p1->next! ...
- Android下实现win8的按钮点击效果
原理就是自定义一个imageButton,实现动画效果 demo源码下载地址: 请戳这里----------------> 关于回弹张力的效果扩展,可以参考Facebook的开源动画库rebo ...
- Mysql 不同版本 说明
Mysql 的官网下载地址: http://dev.mysql.com/downloads/ 在这个下载界面会有几个版本的选择. 1. MySQL Community Server 社区版本,免费,但 ...
- MongoDB中shell基本使用
1.创建一个数据库,名为foobar use foobar 这个foobar数据库没有被真正的被创建.只是在mongo的缓存中 但是直接离开的话,这个数据库会被mongo删除. 2.现在我们给foob ...