Chapter 2 迭代、进化和敏捷
Chapter 2 迭代、进化和敏捷
本章目标 口定义迭代( (iterative)过程和敏捷( agile)过程 ■迭代/瀑布 ■敏捷/重型 口定义统一过程中的基本概念
本章目标 定义迭代(iterative)过程和敏捷(agile)过程 ◼ 迭代/瀑布 ◼ 敏捷/重型 定义统一过程中的基本概念
软件过程 口什么是软件过程 软件过程定义了软件开发、部署和维护的步骤。 口软件过程本身就是软件 软件过程是一种被由人构成的虚拟机执行的软件。 口软件过程为什么重要(为什么不应该那么重要)
软件过程 什么是软件过程 软件过程定义了软件开发、部署和维护的步骤。 软件过程本身就是软件 软件过程是一种被由人构成的虚拟机执行的软件。 软件过程为什么重要(为什么不应该那么重要)
软件过程的谱系 口软件过程 软件过程描述开发、部署和维护软 Software Processes 件系统的步骤 口迭代式开发 工 terative Processes 迭代式开发将软件开发过程分解为 系列小的,固定周期的(比如,4 Unified Process 个星期)的小项目,每个小项目称 为一个迭代。 XP RUP Agile 口统一过程( Unified process UP 种采用OOA/D方法学开发项目 的过程( Ivar Jacobson 口敏捷建模UP( Agile UP) 引入了敏捷概念的UP,是UP的一个 Water Fall 简集。 Others
软件过程的谱系 软件过程 软件过程描述开发、部署和维护软 件系统的步骤。 迭代式开发 迭代式开发将软件开发过程分解为 一系列小的,固定周期的(比如,4 个星期)的小项目,每个小项目称 为一个迭代。 统一过程 (Unified Process) 一种采用OOA/D方法学开发项目 的过程(Ivar Jacobson)。 敏捷建模UP( Agile UP ) 引入了敏捷概念的UP,是UP的一个 简集。 Software Processes Water Fall Others… Iterative Processes XP Unified Process RUP Agile UP
迭代式开发 口瀑布生命周期 在瀑布生命周期过程中,试图在编写代码之前定义几 乎所有的需求,以及明确详尽的时间表 迭代式的生命周期 通过多次的迭代获得周期性的反馈,以这些反馈为驱 动力,对系统进行不断的扩展和精化 ■迭代式开发将软件开发过程分解为一系列小的,固定 周期的(比如,4个星期)的小项目,每个小项目称为 个迭代
迭代式开发 瀑布生命周期 ◼ 在瀑布生命周期过程中,试图在编写代码之前定义几 乎所有的需求,以及明确详尽的时间表。 迭代式的生命周期 ◼ 通过多次的迭代获得周期性的反馈,以这些反馈为驱 动力,对系统进行不断的扩展和精化。 ◼ 迭代式开发将软件开发过程分解为一系列小的,固定 周期的(比如,4个星期)的小项目,每个小项目称为一 个迭代
迭代式开发 Requirements Requirements Feedback from iteration N leads to Design Design refinement and Time adaptation of the Implementation Implementation requirements and Test Integration Test Integration design in iteration More Design ∏& More Design N+1 Final Integration Final Integration System Test System Test 4 weeks(for example) I Iterations are fixed in The system grows length, or timeboxed incrementally Figure 2. 1 Iterative and incremental development
迭代式开发
每一次迭代的周期 口迭代的一个关键思想是时间定量,即时间长度固 定 口大部分迭代方法建议迭代时间在2到6周之间
每一次迭代的周期 迭代的一个关键思想是时间定量,即时间长度固 定。 大部分迭代方法建议迭代时间在2到6周之间
示例 口在项目开始为期3周的迭代中 周一启动会议,明确本次迭代的任务和目标。其间一小时制作 UML图,打印最重要的部分 其他时间团队成员结对在白板上用UML图建模。 ■开发,测试 发布,给客户 Review本次迭代的成果,获取反馈。 计划下一次的迭代 口注意 ■没有匆忙地开始编码,也没有长期的,试图完全定义系统的设计 ■迭代的成果不是用完后就抛弃的原型,而是最终产品的子集 ■获取用户反馈并不断改进是项目的主要驱动力量
示例 在项目开始为期3周的迭代中 ◼ 周一启动会议,明确本次迭代的任务和目标。其间一小时制作 UML图,打印最重要的部分。 ◼ 其他时间团队成员结对在白板上用UML图建模。 ◼ 开发,测试。 ◼ 发布,给客户Review本次迭代的成果,获取反馈。 ◼ 计划下一次的迭代。 注意: ◼ 没有匆忙地开始编码,也没有长期的,试图完全定义系统的设计。 ◼ 迭代的成果不是用完后就抛弃的原型,而是最终产品的子集。 ◼ 获取用户反馈并不断改进是项目的主要驱动力量
迭代的过程 Early iterations are farther from the"true path"of the system. via feedback and In late iterations, a significant change in adaptation, the system converges towards requirements is rare, but can occur. Such the most appropriate requirements and late changes may give an organization a design competitive business advantage one iteration of design plement, integrate, and test After a series of structured, build-feedback-adapt cycles, the system ill be stable
迭代的过程 After a series of structured, build-feedback-adapt cycles, the system will be stable
拥抱变化 现实 方案A 仔细地分析和设计 和客户签订合同 变化不可避免 抱怨 ●变化非常昂贵 方案B 迭代式的开发 欢迎变化 与客户一起成功
拥抱变化 现实 变化不可避免 ⚫ 变化非常昂贵 方案 A ⚫ 仔细地分析和设计 ⚫ 和客户签订合同 ⚫ 抱怨 方案 B ⚫ 迭代式的开发 ⚫ 欢迎变化 ⚫ 与客户一起成功