专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »项目管理 » 敏捷开发:从瀑布模型、极限编程到敏捷开发 »正文

敏捷开发:从瀑布模型、极限编程到敏捷开发

来源: 发布时间:星期五, 2009年1月9日 浏览:86次 评论:0
  软件Software开发是种对人类智慧管理对人大脑思维“工厂化”管理人是有感情、有情绪、变化、相对独立工作单元这和冰冷机器是不可比所以在中国历史上管理人是最难工作;“学而优则仕”观点就是让最聪明人应该选出来做官做官就是管理人软件Software开发不仅是代码编程而是人员有效组织如何既发挥人主观能动性避免情绪变化对工作影响又可以让大家有效交流让多个大脑思路统快速完成目标呢?多年来软件Software企业管理者直在不断地探索   另外个问题直是软件Software开发管理人员心病:软件Software是工具开发是客户业务应用但客户不了解软件Software开发者不了解业务如何有效沟通是软件Software质量重大障碍把开发者变成客户业务专家是个没有办法办法让软件Software企业付出代价也是昂贵

  瀑布模型、极限编程、敏捷开发是有代表性开发模式在对开发者、客户、最终产品关注上变化体现了软件Software开发管理者在管理模式上变化

  、瀑布开发

  瀑布模型(Waterfall Model)是Royce在1970年提出他把大型软件Software开发分为:分析和编程象工厂流水线样把软件Software开发过程分成各种工序并且每个工序可以根据软件Software产品规模、参和人员多少进步细分成更细工序该模型非常符合软件Software工程学分层设计思路所以成为软件Software开发企业使用最多开发模型



  图2

  极限编程12个实战是极限编程者整理总结实战经典是体现极限编程管理原则对极限编程具有指导性意义但并非定要完全遵守12个实战主要看它给软件Software过程管理带来价值

  1、小版本

  为了高度迭代和客户展现开发进展小版本发布是个可交流好办法客户可以针对性提出反馈但小版本把模块缩得很小会影响软件Software整体思路连贯所以小版本也需要总体合理规划

  2、规划游戏

  就是客户需求以客户故事形式由客户负责编写极限编程不讲求统客户需求收集也不是由开发人员整理而是采取让客户编写开发人员进行分析设定优先级别并进行技术实现当然游戏规则可进行多次每次迭代完毕后再行修改客户故事是开发人员和客户沟通焦点也是版本设计依据所以其管理定是有效、沟通顺畅

  3、现场客户

  极限编程要求客户参和开发工作客户需求就是客户负责编写所以要求客户在开发现场起工作并为每次迭代提供反馈

  4、隐喻

  隐喻是让项目参和人员都必须对些抽象概念理解也就是我们常说行业术语业务本身术语开发人员不熟悉软件Software开发术语客户不理解因此开始要先明确双方使用隐喻避免歧异

  5、简单设计

  极限编程体现跟踪客户需求变化既然需求是变化所以对于目前需求就不必过多地考虑扩展性开发讲求简单设计实现目前需求即可简单设计本身也为短期迭代提供了方便若开发者考虑“通用”原因较多增加了软件Software复杂度开发迭代周期就会加长简单设计包括 4方面含义:(1)通过测试(2)避免重复代码(3)明确表达每步编码代码可读性强(4)尽可能少对象类和思路方法由于采用简单设计所以极限编程没有复杂设计文档要求

  6、重构

  重构是极限编程先测试后编码必然需求为了整体软件Software可以先进行测试对于些软件Software要开发模块先简单模拟让编译通过到达测试然后再对模块具体“优化”所以重构包括模块代码优化和具体代码开发重构是使用了“物理学”个概念是在不影响物体外部特性前提下重新优化其内部机构这里外部特性就是保证测试通过

  7、测试驱动开发

  极限编程是以测试开始为了可以展示客户需求实现测试优先设计测试是从客户实用角度出发客户实际使用软件Software界面着想测试是客户需求直接表现是客户对软件Software过程理解测试驱动开发也就是客户需求驱动软件Software开发

  8、持续集成

  集成理解就是提交软件Software展现由于采用测试驱动开发、小版本方式所以不断集成(整体测试)是和客户沟通依据也是让客户提出反馈意见参照持续集成也是完成阶段开发任务标志

  9、结对编程

  这是极限编程最有争议实战就是两个员合用台计算机编程个编码个检查增加专人审计是为了提供软件Software编码质量两个人角色经常变换保持开发者工作热情这种编程方式对培养新人或开发难度较大软件Software都有非常好效果

  10、代码共有

  在极限编程里没有严格文档管理代码为开发团队(Team)共有这样有利于开发人员流动管理所有人都熟悉所有编码

  11、编码标准

  编码是开发团队(Team)里每个人工作又没有详细文档代码可读性是很重要所以规定统标准和习惯是必要有些象编码人员隐喻

  12、每周40小时工作

  极限编程认为编程是愉快工作不轻易加班今天工作今天做小版本设计也为了单位时间可以完成工作安排

   3、敏捷开发

  极限编程思想体现了适应客户需求快速变化激发开发者热情也是目前敏捷开发思维重要支持者

  2001年17名编程大师分别代表极限编程、Scrum(“棒球”团队(Team)开发模式)、特征驱动开发、动态系统开发思路方法、自适应软件Software开发、水晶思路方法、实用编程等开发流派发表“敏捷软件Software开发”宣言敏捷软件Software开发是个开发软件Software管理新模式用来替代以文件驱动开发瀑布开发模式敏捷方式也称轻量级开发思路方法敏捷软件Software开发宣言内容:

  ◆个体和交互胜过过程和工具

  ◆可以工作软件Software胜过面面具到文档

  ◆可户合作胜过合同谈判

  ◆响应变化胜过遵循计划

  敏捷开发集成了新型开发模式共同特点它重点强调:

  1、以人为本注重编程中人自我特长发挥

  2、强调软件Software开发产品是软件Software而不是文档文档是为软件Software开发服务而不是开发主体

  3、客户和开发者关系是协作不是合约开发者不是客户业务“专家”要适应客户需求是要客户合作来阐述实际需求细节而不是为了开发软件Software把开发人员变成客户业务专家这是传统开发模式或行业软件Software开发企业最大面临问题

  4、设计周密是为了最终软件Software质量但不表明设计比实现更重要要适应客户需求不断变化设计也要不断跟进所以设计不能是“闭门造车”、“自我良好”能不断根据环境变化修改自己设计指导开发方向是敏捷开发目标

  敏捷开发避免了传统瀑布方式弊端主要是吸收了各种新型开发模式“动态”特性关注点从文档到开发者管理方式也从工厂流水线到团队(Team)自我放松式组织整理总结敏捷开发和瀑布模式区别主要是下面几个“敏捷”关注点:

  ◆迭代

  软件Software功能是客户需求界面操作是客户“感觉”对迭代强调是缩短了软件Software版本周期

  ◆客户参和

  以人为本客户是软件Software使用者是业务理解专家没有客户参和开发者很难理解客户真实需求

  ◆小版本

  快速功能展现看似简单但对于复杂客户需求合理地分割和总体上要很好地 2者兼顾是不容易



  敏捷就是“快”快才可以适应目前社会快节奏;要快就要发挥个人个性思维多个性思维增多虽然通过结队编程、代码共有、团队(Team)替补等方式减少个人对软件Software影响力但也会造成软件Software开发继承性下降因此敏捷开发是个新思路但不是软件Software开发终极选择对于长时间、人数众多大型软件Software应用开发文档管理和衔接作用还是不可替代如何把敏捷开发思路和传统“流水线工厂式”管理有机地结合是软件Software开发组织者面临新课题



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: