[chjmailbox]的博客:
http://chenji.mypm.net
软件过程管理与敏捷性研究(2) 

1.重载软件过程管理研究
软件工程理论提出以来,在Deming、Crosby和Juran等的质量管理理论的基础上,以质量为中心的软件过程管理理论得到迅速的发展。主流的过程管理理论以业务流程改进(Business Process Improvement,BPI)/软件过程改进(Software Process Improvement,SPI)为基本的切入点,目标是提高过程的能力。过程能力是指一个过程产生预计结果的固有能力,通过加强过程能力,就可以预测和度量过程,并且控制或消除质量低劣和生产率不高的因素。对一个组织的过程能力稳定地进行改善,该组织也就变得“成熟” 。
Carnegie Mellon大学Software Engineering Institute(SEI)作为传统过程管理理论集大成者,1991年正式推出了软件成熟度模型(Capability Maturity Model ,CMM)1.0版本,其后又出了CMM 1.1,CMM提出了一个过程管理框架,将软件过程改进的进化步骤组织成5个成熟等级,为过程改进奠定了循序渐进的基础。由于CMM未提供有关实现CMM关键过程域(KPA)所需的具体知识和技能,SEI又随后开发出了个体软件过程(Personal Software Process,PSP) 和团队软件过程(Team Software Process,TSP) ,形成CMM/PSP/TSP体系。2000年SEI把软件开发成熟度模型(SW-CMM 2.0版)、系统工程能力成熟度模型(SE-CMM、EIA/IS 731)、人力资源(People CMM)、集成化产品开发(IPD-CMM)等成熟度模型进行了集成而发布了能力成熟度模型集成(Capability Maturity Model Integration,CMMI),希望用单一的过程改进框架指导跨越多学科的过程改进。CMMI对新业务环境下的过程管理提出新的观点和方法,用集成化的过程改进来应对系统复杂性的增长和并行工程与交叉学科群组带来的组织需求的变化。CMMI对一些新的软件项目管理原理提供了支持,如:用迭代生命周期在早期防御风险、用循环工程工具使变更更自由、提供过程的客观质量控制的手段、建立一个可升级的、可配置的过程等。CMMI强调了集成化过程改进中模型的进化,一个演进的框架定义不断地把更多的过程观点和实践吸收到模型中来。
CMM/CMMI对于软件生产,尤其是在国际化的软件外包项目中发挥了非常重要的作用。印度软件企业非常重视基于CMM的评估和改进,这是印度迅速成为一个软件大国重要原因。

2.轻载软件过程管理研究
基于优化模型的理论假设是过程可以通过持续的改进而提高能力,而过程的能力意味着产出可预测的结果。但是以优化和预测为特征的传统过程管理并不能解决所有的问题。变化与不可预测性是长期困扰软件开发项目的难题。人们不可能在软件开发之前准确地把握当时的需求及其之后的走势。传统过程管理在应变能力和经济性上存在很多的缺点。
轻载过程在上世纪90年代得到蓬勃的发展,目标是以较小的代价获得与重载方法相当的效果。这一时期提出了XP、SCRUM、FDD、Crystal、ASD、DSDM等许多有代表性的软件过程,开发过程是增量的(不断交付小软件,周期短而快)、协作的(客户、开发者紧密交流,一起工作)、直接的(方法本身容易掌握、修改和记录)并且强适应性的(能应付最后一秒的改变)。
1999年Kent Beck提出的Extreme Programming (XP)是轻载方法中最引人注目的一个。XP基于沟通、简单、反馈、勇气四个核心价值提出了完整团队(Whole Team)、计划博弈(Planning Game)、隐喻(Metaphor)、小规模交付(Small release)、单元测试(Unit test)、简单设计(Simple Design)、结对开发(Pair Programming)、重构(Refactoring)、持续集成(Continuous Integration)、代码集体所有制(Collective code Ownership)、编码标准(Coding Standard)、可持续步调(Sustainable Pace)等十二个核心实践。XP是目前发展应用得最活跃的方法,适用于需求模糊和挥发性强的场合。从2000年起,关于XP研究的年会年年召开,对XP方法的过程、原则、适用性等各方面的讨论大大丰富了XP的方法和理论。Mark C. Paulk提出XP是CMM的一个截面,Laurie Williams在结对编程方面进行了深入的研究,Roy W. Miller对XP实践进行了修订,提出XP的19个实践。
1993年Ken Schwaber和 Jeff Sutherland 提出SCRUM ,是对迭代式面向对象方法的改进。SCRUM提出的SCRUM Meeting、Sprint等模式。SCRUM将工业过程控制中的概念应用到软件开发中来,认为软件开发过程更多是经验性过程(Empirical Process),而不是规约性过程(Defined Process)。
1999年Alistair Cockburn提出Crystal Methodologies。与其它敏捷方法的提出者不同,Cockburn的研究基于对IBM公司近四十个项目案例的调查。他认为不同的项目需采用不同的开发方法,并随着开发,进行连续不断的过程改进。据此他提出了一系列方法(Crystal Clear、Crystal Yellow、Crystal Orange、Crystal Red等)。Crystal方法强调以人和沟通为中心,强调对方法的选择和调整要考虑两个因素,一是充分发挥考虑人的特长,二是满足待开发软件的可靠性要求。刚好够用的方法论成为Crystal的基本原则之一。相对于人和团队,过程是第二位的,因此,过程应该被最小化,即“刚好够用”。
1994年Dynamic Systems Development Methodology(DSDM)由英国16家公司的联盟发起,应用范围也不再限于IT行业。DSDM的基本观点是,任何事情都不可能一次性的圆满完成,在时间进度和可用资源预先固定的情况下,力争需求的最大化满足,提出了时间框(TimeBox)技术、MoSCoW(Must dO,Should do,Could dO,Won't do)优先级排序、工作间(Workshop)等方法。
Feature Driven Development(FDD)是由Peter Coad、Jeff de Luca 、Eric Lefebvre共同开发的一套针对中小型软件开发项目的开发模式。所谓的特征点(Feature)是一些用户认为有用的小功能项,一个特征点能在两周或更短的时间内被实施,且产生可见的、能运行的代码。FDD将开发过程分为五个过程,每个过程指南采用ETVX(Entry Criteria,入口准则;Task,任务;Verification,评审确认;eXit Criteria,出口准则)方法描述,并明确了哪些角色参与哪些子任务,哪些子任务是可选的、哪些是必须的。
1994年J.Holland在圣达菲(Santa Fe Institute,SFI)研究所正式提出了比较完整的复杂自适应系统(Complex Adaptive System,CAS)理论,认为在一定环境中的主体相互竞争和合作,导致系统产生突变。Jim Highsmith基于复杂自适应系统理论提出了自适应软件开发(Adaptive Software Development,ASD),旨在通过提高组织的自适应力以应对极度变化、难以预测的快速软件开发要求。开发组织的首要目标是快速响应变化,即提高适应力,而适应力只能孕育,不能通过命令和控制来获得,ASD提出“领导—协作”模型来提高组织的自适应力。Highsmith提出了基于有机原则的模式概念以区别于机械的过程,认为过程的实现方式必须能让项目团队成为一个有机的活跃的生态系统。他给出了一种过程分类方案:严密过程、灵活过程、问题求解过程,并强调问题求解过程是软件开发的创新核心。
Bob Charette提出精益开发(Lean Development,LD)引入了精益生产和大规模定制的思想。组织应该具备快速有效适应广泛的用户需求的能力,构建稳定的、不断改进的内部过程的能力。
Open Source(开放源码)是一种完全基于Internet的开发方法,其典型的成功案例是Linux。Eric Raymond在一书中对该方法进行了总结并提出了19条经验。
Rational RUP与轻载方法的结合也是最近较热门的话题,John Smith 将RUP与XP进行了比较,Peter Merel将XP、RUP和微软的MSF结合到一起,Craig Larman对RUP按轻载思想进行了剪裁,Robert Martin 将RUP与XP结合提出了dX过程 。

chjmailbox 发表于 2007/2/12 15:42:00 阅读全文 | 回复(0) | 引用通告 | 编辑 | 收藏该日志

发表评论:

    昵称:
    密码:
    主页:
    标题:
公 告
登 陆
日志日历
搜 索
日 志
评 论
链 接
统 计