Agile敏捷软件开发方法

来源:互联网 发布:淘宝客服是职责是什么 编辑:程序博客网 时间:2024/05/31 19:32

20012月,新方法的一些创始人在美国犹他州成立Agile 联盟(http://www.agilealliance.org/ )

Agile方法是在保证软件开发有成功产出的前提下,尽量减少开发过程中的活动和制品的方法。笼统的讲就是,“刚刚好”(Just enough),即开发中的活动及制品既不要太多也不要太少。

 

 

   基于适应而非预测

   以人为导向而非过程导向

 

 

我预言XP对当今时代的作用可与CMM在八十年代和九十年代初的作用相媲美

     -- Tom DeMarco, Cutter Trends Report

 

 

新方法在实践中取得了巨大的成功

   IONA公司的Obix技术支持小组在采用了XP方法后,软件生产率提高了67%

   SPG( software productivity group) Capers Jones则称,SCRUM方法可提高生产率6

 

 

Agile 具体方法:

   Extreme Programming (简称XP)

   SCRUM

   Crystal Methodologies (简称Crystal)

   Feature Driven Development(简称FDD)

   Dynamic Systems Development Methodology(简称DSDM)

   Adaptive Software Development(简称ASD)

   Pragmatic Programming

 

 

   Kent Beck提出,是Agile方法中最引人注目的一个

   XP最初实践于1997Crysler公司的C3项目 (Smalltalk开发)

   适用于10人以下项目组、开发地点集中的场合

   广泛用于需求模糊和挥发性强的场合

 

Website:

     http://www.xprogramming.com

     http://www.extremeprogramming.org/

 

XP方法(4个核心价值):

交流(Communication

  项目相关人员之间充分、多渠道(最好面对面)的沟通

简化(Simplicity

   在系统可运转的前提下,做最简洁的工作

   在开发中不断优化设计,时刻保持代码简洁、无冗余

反馈(Feedback

  强调各种形式(如小交付、短迭代等)的反馈

胆识(Courage

  面对压力做正确的判断并敢于付诸行动(如敢于丢弃设计不良的代码,疲惫时立即休息等)

 

SCRUM方法:

   Ken Schwaber Jeff Sutherland 提出

   名称来自Rugby Scrum(英式橄榄球)

   最初实践于Easel公司(1993)

   是对迭代式面向对象方法的改进

   基于复杂性理论,过程分为确定性(Defined)过程和经验性(Empirical)过程

   适用于需求难以预测的复杂商务应用产品的开发

 

   提出的SCRUM MeetingSprintBacklogSCRUM MasterSCRUM TeamDemo等模式已被PLOP (Pattern Language Of Programs)作为组织和过程模式(Organizational and Process Pattern)的标准

   被认为可提高生产率6倍(微软的开发过程与此类似,另一与此类似的开发过程是Borland Quattro项目,每人周产出1000行的交付代码)

Website:

     http://www.controlchaos.com/

     http://www.jeffsutherland.org/scrum/index.html

 

SCRUM方法(开发过程):

   (1)    计划和体系结构设计(确定性过程)

     Backlog(急待完成的一系列任务,包括:未细化的产品功能要求、Bugs、缺陷、用户提出的改进、具竞争力的功能及技术升级等)按优先级排序形成Backlog 列表,根据该表和风险评估制订产品交付基线。

        建立系统体系结构(如为已有系统改进,则只作有限分析、调整),将Backlog项按高内聚低耦合的原则分解为一系列问题包(Packets,每个Packet是一组对象或构件的集合) ,依据同样原则相应划分若干个开发小组(SCRUM 小组),分配各小组合适的Backlog项或问题包。建立开发运行环境。

 

(2)    Sprint(经验性过程)

该过程由若干个迭代的冲刺(Sprint) 活动组成,直至风险评估认为产品可交付为止。一个Sprint是在限定时间段内(Sprint周期,通常为1~6周,可在前一个Sprint结束时调整)的一系列开发活动(包括分析、设计、编码、测试等),每个SCRUM小组并行开发且必须步调一致(在一个Sprint结束后,均须完成所分配的Backlog项并有可执行的产出)。

 

每个Sprint包含以下活动:

     开发。对分配的Backlog工作进行分析,打开packets,进行领域分析,然后设计、开发、实施、测试、文档化这些改动。

     打包(Wrap)。封装packets,产生一个满足Backlog需求的可执行版本。

     评审(Review)。所有的SCRUM小组一起开会,提交各自的工作并演示(Demo),然后提出和解决问题(Issue)及难点(problem,增加新的Backlog项;发布、审查或调整产品的标准规范;进行风险评估并提出合适的对策;确定下一个Sprint的工作内容和结束时间。

     调整(Adjust)。根据评审会汇集的信息,对受影响的Packets进行适当调整和巩固。

   (3)   交付和巩固(确定性过程)

   一旦根据风险评估结果认为可交付产品时,即进入该阶段。该阶段的活动包括:组装,系统测试和回归测试(Regression),准备培训材料,完成最终文档。

       SCRUM过程认为一个产品的开发将一直持续下去,除非经风险评估后认为应停止。产品交付后的巩固活动类似于传统方法中的维护和改善,目的在于整理Sprint期压力下忽略的工作,为下一阶段的开发做准备,以便轻装上阵。

 

项目管理组。由产品经理领衔,包括总设计师,各SCRUM小组组长,市场、销售的高级职员及典型用户。 若干个SCRUM小组。各小组由组长(SCRUM Master)领衔。每个小组都是跨专业的(通常包括开发人员、文档人员、质量控制人员或用户代表等),通常为3~7人,以使小组内有充分的交流。

SCRUM OF SCRUM

SCRUM会议(SCRUM Meeting)。

Sprint评审会议。

 

推荐书籍:

Agile Project Management with Scrum

《硝烟中的scrum-and-xp

 

原创粉丝点击