软件开发模式“四国鼎立”

msdn2100 2008-09-29 06:59:58
CMMI、RUP、MSF和敏捷是当今企业中最流行的四种开发模式,分别由SEI、IBM、Microsoft和ThoughtWorks在90年代发布。正所谓大千世界没有十全十美的事物,所以也没有哪一种模式能适合所有的组织,关键在于自己需要不断实践和积累,对已定义的模式进行裁剪、补充和完善,才能建立最适合自己组织的开发模式。两年前我非常推崇CMMI和IPD,经过一年的敏捷实践后才发现自己更喜欢敏捷开发,下面结合自己的理论知识和实践经验谈谈这几种开发模式。

CMMI即能力成熟度集成模型,以系统的框架来指导组织进行过程改进,提高了企业的质量管理素质。近几年来,很多企业都纷纷通过了CMMI 3或4级评估,使整个软件行业朝着规范化发展,但同时也暴露出一些问题,如缺少有丰富实施经验的咨询团队、服务质量不高、盲目追求证书等。记得曾经的一个小型项目采用CMMI,由于客户需求不明确又经常改变,再加上和客户沟通太少,最后导致项目延期,可以说重视文档轻视沟通是CMMI让我印象最深的缺点。外包企业大多实施CMMI,否则就会失去很多商机。

RUP即统一软件过程,强调用例驱动,以架构为中心,划分多个模块并配对相应的用例模型,一般会在Rose、CC、CQ等集成工具的辅助下进行迭代和增量开发。基于RUP的项目有4个阶段:起始、细化、构造、交付,每个阶段都会有一次或多次的迭代。RUP属于重量级而且过于理论化,从本质上说还是在强调设计和规范,仅针对一次迭代来说与传统的瀑布模式类似,不太适合小型项目。现在很多大中型企业针对不同类型的项目把RUP进行适当的裁减后也取得了很好的效果,这确实是一种灵活适应的方法。

MSF即微软解决方案框架,强调瀑布螺旋式的迭代开发,对过程的每一个阶段有相应的定义,同时也定义了6个角色:产品管理、程序管理、开发、测试、用户体验、发布管理,通过这6个角色,项目可以迅速完善地实施。MSF的核心是沟通、信任、敏捷、重视商业价值,其方法以“边规划、边设计”为基础。MSF好比引擎,它是一种准则,以工业化模式制定出具体的解决方案,大大提高了软件开发效率,在微软的合作伙伴中运用比较广泛,现在在国内也越来越得到企业的认可。

敏捷即一种以人为核心,迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。相比防守型的CMMI,敏捷是攻击型的,其3个特点是社会工程、轻量级、技术实践,换句话说就是以人为本、拥抱变化、持续改进。现在最流行的两种敏捷方法是Scrum和XP。实施Scrum相对简单一点,不像XP必须有深入地技术实践,Scrum的实践围绕一个迭代和增量的过程骨架展开,由3个角色、3种会议、3项工件组成。XP把软件开发变成自我管理的挑战,追求沟通、简单、反馈、勇气、尊重,其重要过程有测试驱动开发、持续集成、重构、现场客户、简单设计等。XP把软件开发过程重新定义为聆听、测试、编码、设计的迭代循环过程,确立了测试、编码、重构的软件开发管理思路。敏捷是个很不错的方法,相信在不久的将来会逐渐得到国内企业的广泛认可。

一个成功的项目应该在进度、成本、质量这三者之间有一个比较好的平衡,这三个方面都要做得比较好。针对目前国内的企业状况,将CMMI、RUP和敏捷三者进行有效融合、相互补充,即CMMI的体系+RUP的过程+敏捷的实践,这也是软件开发方法的平衡之道。


欢迎大家交流!


...全文
1587 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
me1001 2010-05-10
  • 打赏
  • 举报
回复
学习,,
收藏
码农哈里 2008-10-09
  • 打赏
  • 举报
回复
同意,我们在实践中也是根据具体项目制定合适的开发模型。

但是不同意搂主这句:‘仅针对一次迭代来说与传统的瀑布模式类似’。虽然迭代是一个袖珍项目,但是迭代不是小瀑布。迭代内也是递增的方式逐步集成的。可将一个迭代划分为几个小里程碑来管理。这样即使有几个迭代目标没有实现,那么迭代内还是有一个了稳定的增量。
msdn2100 2008-10-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sp1234 的回复:]
说“Scrum是等待”可能有点不够准确,准确地说是强调了太多“分解”,因而其实是给那些习惯了官僚方法的人用的。

另外,敏捷并不解决设计的根本问题,它只是一种工程组织方式,但是丝毫不能取代优秀的设计思想,顶多是可以让激发那些原本有着优秀思想的人的应激反应。因此,如果你的团队的架构师是只会挑设计文档的格式毛病而不会设计中的创意原则的过分学术化人才,他绝对撑不了多久就要建议老板请人来搞设计。
[/Quote]

说的很有道理!相比XP,Scrum简单一些且易于控制,正是由于它的“分解”,使得企业和开发人员更容易上手。
CMMI、RUP、MSF就好比“降龙十八掌”,敏捷就好比“散打”,无论是哪种都必须要有扎实的武功底子,所以一个项目也必须要有好的架构,再选择合适的开发模式。


ICONX,我没用过,呵呵。
binjuny 2008-10-04
  • 打赏
  • 举报
回复
东西多了就不好了
不是过程太繁琐就是文档太呆板,最后还得整天去更新文档啊,一个字“乱”


不知道有没有试用过ICONX这种方法?
  • 打赏
  • 举报
回复
说“Scrum是等待”可能有点不够准确,准确地说是强调了太多“分解”,因而其实是给那些习惯了官僚方法的人用的。

另外,敏捷并不解决设计的根本问题,它只是一种工程组织方式,但是丝毫不能取代优秀的设计思想,顶多是可以让激发那些原本有着优秀思想的人的应激反应。因此,如果你的团队的架构师是只会挑设计文档的格式毛病而不会设计中的创意原则的过分学术化人才,他绝对撑不了多久就要建议老板请人来搞设计。
  • 打赏
  • 举报
回复
[Quote=引用楼主 msdn2100 的帖子:]
相比防守型的CMMI,敏捷是攻击型的[/Quote]

我喜欢这句。

我讨厌Scrum,觉得太鱼目混珠。我倾向于XP。当然,我自己写各种平台下的测试引擎,以及项目追踪系统,而不是期望别人的或者等待。我想Scrum是等待,而XP是进攻。

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧