新型软件开发过程模型
目前流行的软件开发过程模式有CMMI、RUP、XP、MSF等。
CMMI(Capability Maturity Model Integration):软件能力成熟度集成模型。其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面。
RUP(rational unified process):统一软件开发过程,是一个面向对象且基于网络的程序开发方法论。它是用例驱动的,以构架为核心,迭代和增量的软件过程框架,具有一种演进的特性。(下图为RUP思维导图;来源://img-blog.csdn.net/20140127145426343?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDkyNjk2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
RUP具有很优点:提高了团队生产力,在迭代的开发过程、需求管理、基于组件的体系架构、可视化建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。但同时它也存在一些不足: RUP只是一个开发过程,并没有涵盖软件的全部内容,例如它缺少关于软件运行和支持等方面的内容;此外,它没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。
XP(ExtremeProgramming):极限编程是由KentBeck在1996年提出的,XP是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气(四大核心价值);即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。 XP十二种经典规划策略(The Planning Game): 结对编程(Pair programming) 测试(Testing) 重构(Refractoring)简单设计(Simple Design)代码集体所有权(Collective Code Ownership)持续集成(Continuous Integration)现场客户(On-site Customer)小型发布(Small Release)每周40小时工作制(40-hour Week)编码规范(Code Standards)系统隐喻(System Metaphor)。详情可查看:http://www.baike.com/wiki/极限编程#5。XP的一个成功因素是重视客户的反馈——开发的目的就是为了满足客户的需要。XP方法使开发人员始终都能自信地面对客户需求的变化。XP强调团队合作,经理、客户和开发人员都是开发团队中的一员。团队通过相互之间的充分交流和合作,使用XP这种简单但有效的方式,努力开发出高质量的软件。XP的设计简单而高效;程序员们通过测试获得客户反馈,并根据变化修改代码和设计,他们总是争取尽可能早地将软件交付给客户。XP程序员能够勇于面对需求和技术上的变化。
MSF:MSF是一套大型系统开发指南,它描述了如何用组队模型、过程模型和应用模型来开发C/S结构的应用程序,是在微软的工具和技术的基础上建立并开发分布式企业系统应用的参考。
对几种开发模型进行对比:(表格来源:http://blog.csdn.net/ljh081231/article/details/28265573)
项目 |
CMM/CMMI |
RUP |
MSF |
XP |
周期 |
螺旋模型。 |
演进式迭代周期,过程框架 |
瀑布模型和螺旋模型的结合 |
演进式迭代周期。软件开发方法学 |
核心 |
过程改进 |
架构、迭代 |
里程碑、迭代 |
以代码为中心。 |
范围 |
需求严格而极少变化的项目。 |
适合不同类型的项目 |
适合不同类型的项目 |
进度紧、需求不稳定的小项目、小型发布和小团队 |
组织 |
个人(PSP)、团队(TSP)和组织的3个层次,组间协作、培训 |
跨团队协作 |
强调产品的愿景,6种基本角色 |
以团队为基础,小团队、团队成员能力相当 |
技术 |
传统结构化方法 |
面向对象技术 |
综合技术 |
面向对象技术 |
管理 |
侧重于过程的定义、度量和改进。一切用数字和文档说话。 |
从组织角度出发,侧重于过程建模、部署。 |
业务建模、部署、过程管理等概念。 |
侧重于具体的过程执行和开发技术,计划设计。 |
活动 |
通过过程域来定义活动 |
整个团队在整个过程中关注质量 |
项目管理、风险管理和就绪管理 |
以人为本,如每周40小时工作制、结对编程 |
实践 |
各类级别的关键实践。 重视关键基础设施。 |
满足了CMM 2-3 级KPA 的要求,而基本上没有涉及CMM 4-5 级的KPA |
代码复审、版本管理方法、文档管理、人员招聘、重测试和重风险管理等。 |
编码和设计活动融为一体,弱化了架构。 用例、单元测试、迭代开发和分层的架构。 |
其它 |
通用性强,但复杂、高成本。
|
强调风险驱动,以保障可用产品的持续性交付为前提,尽量减少不必要的过程工件,使度量、文档最小化以获得弹性和应变能力。 |
提供了一系列指南,用于规划企业的基础技术设施,流程化商业的运作过程,并鼓励重用性。 |
拥抱变化,强调人性化、简单、沟通。尽量减少文档。 个体和交互胜过过程和工具。 |
可以说各种开发模式都有其相对的优缺点,大家可根据自己项目的情况自主合理地选择哪种开发模式。