敏捷方法(实践)
“敏捷方法”是一个囊括了各种框架和方法的涵盖性术语,它指的是符合《敏捷宣言》价值观和原则的任何方法、技术、框架、手段或实践。
第一节敏捷概述中有提到,常用的敏捷实践有:精益、看板、Scrum、XP极限编程、水晶、DSDM动态系统开发、FDD功能驱动开发、AUP敏捷统一过程、OpenUP。《敏捷实践指南》将敏捷方法和看板方法视为精益方法的子集。这样做的原因是,它们都是精益思想的具体实例,都反映了诸如以下概念:“关注价值”、“小批量”和“消除浪费”。
一、精益软件开发(LSD)
精益软件开发由Tom 和 Mary Poppendieck 引入敏捷群体。它采用来自丰田生产系统(TPS)的原则和实践。
1、TPS 开发旨在
解决影响生产过程的问,例如:
- 过度:对于雇员和过程施加不必要的额外压力
- 违规:不切实际的需求导致过程中的不均匀
- 浪费:非增值活动或过程
2、精益7原则
- 消除浪费:对客户没有带来价值的事务就是浪费
- 尽快交付:短期迭代或者小批量提供有价值的反馈,促进有效的决策制定。
- 增强学习:通过短迭代周期、重构、集成测试和频繁的客户反馈会议增强学习。
- 团队授权:精益专注于团队,因为决策制定和管理的来源让团队了解最佳选择和成本。
- 较迟决定:管理不确定性的最佳方法是收集信息,最后的责任时刻给予承诺,打破部件 间的依赖关系。
- 建立整体:确保质量是嵌入在整个系统的,系统需要构建自动化测试,安装和持续集成。
- 目光长远,脚踏实地,快速试错,快速学习。
二、SCRUM
Scrum是用于管理产品开发的单个团队过程框架。该框架包含Scrum角色、事件、工件和规则,采用迭代方法来交付工作产品。Scrum是运行在1个月或更少时间的时间盒上的,其中包含持续时间一致的多个冲刺,在这些冲刺中会产生潜在可发布的产品增量。
1、Scrum团队包含产品负责人、开发团队和 Scrum主管。
- 产品负责人负责实现产品价值的最大化。
- 开发团队是一个跨职能自组织团队,其开发成员拥有所需的一切资源,可在不依赖团队外部其他资源的情况下交付工作产品。
- Scrum主管负责确保 Scrum过程获得相应支持且 Scrum团队遵从实践和规则,并指导团队消除障碍。
2、Scrum事件:
- 冲刺Sprint
- Sprint 计划会议
- 每日 Scrum 站会
- Sprint 评审会议
- Sprint 回顾会议
3、Scrum 工件:
- 产品待办列表
- 冲刺Sprint 待办列表
- 增量
三、极限编程
极限编程 (XP)是一种基于频繁交付周期的软件开发方法。该名称基于这样一个理念:将特定最佳实践提炼到最纯粹和最简单的形式,然后在整个项目周期内持续运用该实践。XP最受关注的地方在于推广旨在改进软件项目成果的整套实践。该方法最初包含十二种主要实践, 随后逐渐演变,采用了一些其他推论实践。
该演变是通过筛选核心价值观(沟通、简洁、反馈、勇气、尊重)并根据主要原则(人性化、经 济、互惠互利、自相似、改进、多样性、反思、流程、机会、冗余、失败、质量、循序渐进、承担 的责任)信息来设计和采用技术的结果。
四、看板方法
看板是日本的信号板的说法,是由丰田生产系统(TPS)开发;
- 看板方法是从精益思维原则衍生而来,是一个跟精益和及时制生产相关的概念;
- 敏捷采用了看板方法去反映冲刺或迭代的吞吐量;
- 看板通过识别瓶颈,设定“在制品(WIP)”限制,用一个视图展示整个生产系统状态来管理过程的吞吐量。
五、水晶方法
水晶是一种方法论家族。水晶方法论旨在根据项目规模(项目中涉及的人员数量)以及项目的关键性来量化并提供方法严格程度选择。
水晶方法认识到每个项目可能需要一系列轻量剪裁的策略、实践和过程,以匹配项目的独特特征。该方法论家族根据“重要性”使用不同的颜色来确定要使用的方法。“水晶”一词的使 用源自宝石,它的不同面代表了根本的核心原则和价值观。不同面代表了技术、工具、标准和角色。
六、功能驱动开发(FDD)
功能驱动开发 (FDD)的开发目的是满足大型软件开发项目的特定需求。小型商业价值功能重视能力。功能驱动开发项目中有六个主要角色,每个人可以担任以下一个或多个角色:
- 项目经理;
- 首席架构师;
- 开发经理;
- 首席编程人员;
- 类负责人;
- 领域专家。
功能驱动开发项目分为五个过程或活动,以迭代方式执行:
七、动态系统开发方法DSDM
动态系统开发方法 (DSDM)是一种敏捷项目交付框架,最初的设计目的是提高20世纪 90年代普及的迭代方法的严格程度。该框架开发为行业领导者之间的非商业性协作方式。DSDM因强调制约因素驱动交付而著称。该框架从一开始便可设置成本、质量和时间,然后利用正式的范围优先级来满足这些制约因素的要求。
八、AUP敏捷统一过程
敏捷统一过程 (AgileUP)是软件项目中统一过程 (UP)的分支。与紧前统一过程相比,该过程具有加速周期和轻量级的过程。其目的在于在七个主要因素之间执行更多迭代的周期,并在正式交付之前纳入相关反馈。表 A3-5中列出了因素以及指导原则。
九、OpenUP
OpenUP是资源开放的一个变量,IBM在2006年将这个概念向公众发布。它是统一软件开发过程的一个变量。
OpenUP:
- 是精益统一过程,在结构化的生命周期中采用迭代和增量型方法;
- 结合敏捷哲学专注软件开发的协同; Ø是一个与工具无关,不关注细节的过程;
- 目标小,集中型团队。
OpenUP 将项目划分为迭代:有计划的、有时限的迭代操作,通常以周为单位。迭代使团队注重以一种可预见的方式向涉众发送增量式的价值。
OpenUP 将项目生命周期分为四个阶段:启始、精化、构建和产品化。项目生命周期为利益相关者和团队成员提供可见度和决策点。这将更有效的进行管理,并且允许你在适当的时间做出是否继续的决定。项目计划定义了生命周期,我们得到的最终结果是一个可发布的应用程序。
以上敏捷实践中,SCRUM是最受欢迎的敏捷技术,超过50%以上的项目在运用这项方法,后面会做详细介绍。