笔试题目总结之二——软件工程中的开发模式

笔试题目总结之二——软件工程中的开发模式

网申的许多职位都是软件开发相关的,所以软件开发模式也是必须要了解的。

以下转自:http://topic.csdn.net/u/20080929/18/e8fe492b-c8f3-46c8-8bd0-9cec0aca52f5.html

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的过程+敏捷的实践,这也是软件开发方法的平衡之道。

顺便可以参考一下大的软件企业是如何使用软件开发模式的

微软:http://news.chinabyte.com/182/1884182.shtml

IBM: http://www.ibm.com/developerworks/cn/rational/

PS: 说到软件产业,不能不提印度,这些年来,印度软件产业发展很快,对此研究的文章也很多,可以算是课外阅读吧,面试的时候也许用的上。但是根据2009福布斯公布的全球企业2009强看,印度的软件也得规模还是比较小的。

附1:《福布斯》2009年5月26日评出了全球排名前2000家企业,仅有35家软件服务企业位列其中,排名最靠前的是全球最大的信息技术和业务解决方案公司IBM,随后是排名在49位的微软和128位的甲骨文。另外,软银、Google和雅虎等也都榜上有名。

以下为前十位软件企业的具体排名:

28、IBM;

49、微软;

128、甲骨文(Oracle);

155、Google;

240、软银;

268、SAP;

355、埃森哲;

516、美国计算机科学公司;

667、雅虎;

710、凯捷(Capgemini)。

附2:印度软件业相关

人民网:软件业:印度比中国强在哪 印度软件业的成就与隐忧 印度软件外包凭什么比中国强

中国与印度软件工程师之比较 我所看到的印度软件业 印度软件业崛起的奥妙

Comments are closed.