敏捷方法简介
特点
- 适应性,应对变化
- 以人为本,发挥人的特性
- 迭代增量式开发,逐版本更新
实践
极限编程
- 特点
- 加强交流
- 从简单做起
- 寻求反馈
- 实事求是
水晶系列方法
- 特点
- 以人为中心,机动性
- 一组经过证明、对不同类型项目非常有效的敏捷过程,根据其项目和环境选择最合适的
- 水晶方法基于两种关键假设:
- 首先,团队可以通过简化工作和项目流程来提高自身效率。
- 其次,每个项目都与其他项目不同,都需要一些特定、具体的方法和策略。
- 方法对项目的适用性影响因素
- 团队规模
- 关键程度
- 项目优先级
- 参考: https://www.toolsqa.com/agile/crystal-method/
Scrum
- 特点
- 基于经验主义和精益思维(减少浪费),利用迭代和增量方法应对未来需求和潜在风险
- 包括了一系列实践和预定义角色的过程骨架(是一种流程、计划、模式,用于有效率地开发软件)
- 使用产品 Backlog 来管理产品的需求。产品 Backlog 是一个按照商业价值排序的需求列表。开发时将会开发过程根据 Backlog 分成若干短的过程,每次递交可交付内容
- 基于经验主义的 Scrum 的三个支柱:
- 透明 了解工件的行为
- 检视 了解开发进展
- 适应 调整工作应对当前情况
特征驱动开发方法 (Feature Driven Development,FDD)
- 特征是基本的开发单位,一般可在两周之内实现(过长就需要分解)
- 迭代的开发模型
- 3个要素:人、过程和技术
- 6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家
- 5个核心过程:
- 开发整体对象模型: 主要是收集系统的功能需求,然后使用四色原型进行域建模。得出系统的架构设计图
- 构造特征列表:根据领域专家对领域的划分,将整个领域分成一定数量的区域(主要功能集),每个区域再细化为一定数量的活动。形成了具有层次结构的分类功能列表
- 计划特征开发:根据功能的依赖性、开发小组的工作负荷以及要实现的功能的复杂性,计划实现功能的顺序,完成一个功能开发计划。(它提供了对项目的高层视图,让业务代表了解功能开发、测试和发布日期,以便业务代表和部署小组能够计划交付哪些功能的日期。)
- 特征设计:对功能进行详细设计。同时在域模型的基础上进行分析、设计,得出分析模型、设计模型。
- 特征构建:按照设计进行编码实现,由程序员实现各自负责的类。在代码完成后有必要的组织代码复查、评审
计划特征开发根据构造出的特征列表、特征间的依赖关系进行计划,设计出包含特征设计和特征构建过程组成的多次迭代
比较
极限编程和特征驱动开发方法的比较
- 设计过程:XP过程以在卡片上记录故事开始业务分析。FDD使用特征,执行领域走查,同时要建立一个全面的领域对象模型,以便特征小组对每一组特征产生更好的设计。 FDD具有总体设计
- 开发队伍规模:XP通常不超过10人;FDD的理想团队成员数在16~20人
- 代码所有权:XP鼓励集体拥有代码,任何人都可以在需要时添加或修改代码。与之相反,在FDD中,整个开发团队拥有代码的集体所有权。当需要集体验证譬如说软件架构的设计或用户界面构造的时候,FDD就将类所有者与特征小组和审查结合起来满足需要。(类指派给某人负责)
- 测试:XP利用双人结对编程来不断地在设计和代码层执行走查和非形式化审查。FDD则提倡采用结构化的形式化审查技术。XP中的正确性是由运行单元和功能测试来定义的。在FDD中,单元测试是“按照功能构建”过程的一个部分。FDD没有定义参与测试的形式化等级,由主程序员决定做什么更适合。