Agile Maturity Model 敏捷成熟度评估 © ThoughtWorks 2009 1 Agenda • • • • • 什么是AMM 为什么做AMM? AMM的结构 如何做AMM评估 AMM维度介绍 © ThoughtWorks 2009 2 AMM简介 • AMM(敏捷成熟度模型)是一套用来评估软件开发团队或者整个开发 组织的当前敏捷状态和将来的目标状态的框架,评估的结果用来帮助 团队识别改善点。 什么是AMM • AMM关注于敏捷方法的具体展现形式即软件开发过程。因此,AMM只评 估软件开发团队的开发过程和实践,并不能用来评估一个组织的所有 方面。 What benefits is our organization realizing from agile adoption? Benefits Platforms Are our software platforms amenable to rapid change? Do they hinder or support agile practices? People To what extent do our staff and partners possess the skills and expertise required for effective agile development? Process To what extent do our processes leverage and exploit agile best practices? © ThoughtWorks 2009 4 什么是AMM • AMM从若干个维度进行评估,每个维度有若干个级别,这些维度的级 别一起揭示了组织的“敏捷成熟度” © ThoughtWorks 2009 5 The Agile Maturity Model is • AMM是ThoughtWorks对全球敏捷组织转型经验的一个提炼 • AMM评估帮助项目关键涉众取得一个对当前状态和未来目标的统一理 解 • AMM是一个不断演化的框架 • AMM易于理解和使用 Is not • • • • AMM不是一个标准 AMM不是一个级别认证或者一套规章制度 AMM不是一套事先制定和强制执行的治理框架 AMM不是一个庞然大物 © ThoughtWorks 2009 7 为什么要使用AMM • AMM用来评估一个IT组织的敏捷程度,其评估结果可以被用来设定该 组织敏捷实施的未来阶段性目标。 © ThoughtWorks 2009 8 维度 • 管理实践 – – – – – – Shared Responsibility – 职责共享 Requirements – 需求 Responsiveness – 快速响应 Assurance – 交付保障 Communication – 沟通 Governance - 治理 • 技术实践 – – – – Build – 软件构建 Testing – 测试 Simplicity – 简单性 Configuration Management – 配置管理 Levels - 级别 • Innovating – 当前团队有能力发明新的技术和实践 解决前所未遇的问题。一个典型特点 是团队能够积极贡献和回馈更广大的 软件开发社区。 • Adaptive – 当前团队的过程已经足够成熟,能够 良好地相应变化 • Operating – 通过对相关技术的掌握和相应的纪律 支持了敏捷软件开发的持续实施 • 3+ Innovating 3 Adaptive 2 Operating 1 Collaborative 0 Neutral -1 Regressive Neutral – 既不阻碍也不有利于敏捷软件开发 • State Description Collaborative – 具备实施敏捷软件开发的基础 • Level Regressive – 当前的过程限制了敏捷的实行 状态评估 • • • • 评估当前状态和未来的阶段性目标 显示每一阶段目标的关注焦点和对人 员、技能以及角色的影响和要求 帮助我们识别每一阶段的改变程度和 相应影响 帮助我们识别出应该改变的方面 AMM Assessment - By Practice Area Shared Responsibility 3 Governance Build 2 1 Communication 0 Requirements -1 Configuration Management Testing Simplicity Responsiveness Assurance TW Deep TW Wide Current State 按照类别评估 • 按照管理实践和技术实践组织评估结 果 允许我们: – 清晰展示当前状态和期望状态之间的 差距 – 展示不同阶段的状态演变 – 识别出我们的努力方向 AMM Assessment Technical • Management Current State Stage 1 Stage 2 AMM Level 3 按维度评估 • 识别出各个维度上的当前状态和未来阶段性目标 • 识别出各维度上的目标和具体行动计划 如何进行AMM评估 © ThoughtWorks 2009 14 谁来进行评估 • 由有敏捷实践经验的ThoughtWorks敏捷实践者进行评估 – – – – 不是checklist驱动,而是经验驱动 使用AMM帮助评估者描绘和勾划团队的当前过程 是一个动态的了解团队当前动态的过程 不同的评估者的评估过程可能不同 © ThoughtWorks 2009 15 避免 • 为了评级而评估 • 逐条检查各个维度的问题单来确定个维度级别 • 评估过程变成自评过程 © ThoughtWorks 2009 16 对谁进行评估 • • • • • • PM/PL 分析师/SE 工程师/首席工程师/架构师 测试人员 QA Etc. © ThoughtWorks 2009 17 评估时间 Team Size Interview Time Reporting Time Small(<15 people) 0.5 days 1.5 days Medium(15 to 50 people) 1.5 days 1.5 days Large(50 to 100) 2 to 3 days 2 days Bigger than Large(100+) 3 to 4 days+ 2 days+ © ThoughtWorks 2009 18 Iteration 0 • 识别评估对象 • 制定访问计划 • 评估团队培训 让所有评估团队成员在开始评估前清楚什么时候,对什么人,如何进行评估 © ThoughtWorks 2009 19 评估流程 • • • • • • 理想状态下,被评估团队集中在同一地点 Kick-off meeting,根据团队规模 评估团队进行访谈和调研,辅以实地考察 纪要和交付物整理 小规模成果展示,收集客户反馈,修正交付物 全团队成果展示 © ThoughtWorks 2009 20 交付物 • • • • 评估结果总结陈述 以不同形式展现的当前成熟度、推荐的未来目标和中间阶段性目标 描述对每个维度上的改善所带来的预期收益 一系列关于如何达到下一阶段目标的推荐措施(通常经过优先级排序 ) • 评估过程产物(访谈记录等) © ThoughtWorks 2009 21 Agile Maturity Model 技术实践 Build – 软件构建 Theme Level 3+ 3 2 1 0 -1 State Description Reference Implementations External Gatekeeper Functional testing tools (Watir, Selenium, Marathon Man) are integrated as gatekeeper events to the build. Integration tests with external tools and products. 对外防御 在构建过程中集成功能测试工具(Watir、Selenium、Marathon Man),并将其作为构 建成功的条件。对与外部工具和产品的集成进行测试 Internal Gatekeeper Unit tests and code characteristics are implemented as gatekeeper events that will prevent a build from completing. 对内防御 在构建过程中集成单元测试和代码特征检查,并将其作为构建成功的条件。 Constant Build velocity is maximized - that is, build is happening with the maximum frequency. State of the build the responsibility of the team. 频繁执行 尽快构建-即保持最高的构建频率。整个团队对构建状态负责。 Repeating Build is repeatable and automated, but doesn’t happen with maximum frequency as permitted by the technology. State of the build is a responsibility of the team. 重复执行 构建过程是自动化的、可重复的,但受限于技术原因不能保持最高的构建频率;整 个团队对构建状态负责。 Repeatable Build process is repeatable and static, but still likely performed manually and infrequently; the build may be owned by a specific member of the team 具备重复执行能力 构建流程是可重复的,但并不活跃,往往手动触发,而且频率较低。构建由团队中 某个特定的成员负责。 Custom Build is manually performed, custom every time, and infrequently performed; it may be owned by a specific member of the team 不可重复 构建必须手动执行,每次执行都需要专门做一些配置,执行频率较低;构建由团队 中某个特定的成员负责。 Testing – 测试 Theme Level 3+ State Description Comprehensive, Integrated 全面的、集成的 Analysts are part of test planning 分析师会参与制定 测试计划 3 TDD, Integrated TDD、集成的 Reference Implementations Owned by QA/Dev/Analyst, complete integration with build, non-functional and integration testing in an advanced state 测试由测试人员和Dev以及Analyst共同负责。非功能测试和集成测试均完整地集成进构 建过程中。 Owned by QA/Dev/Analyst, non-functional and integration testing undergo complete inspection tests. Functional testing is integrated with the build. Developers practice TDD. 测试由测试人员和Dev以及Analyst共同负责。非功能测试和集成测试由完整的审查过程 来保障。功能测试被集成进构建过程中。 2 Developers are part of testing 开发人员会参与测 试 1 Shared by QA and Development, Integrated Owned by QA/Dev. Non-functional and integration testing undergo complete inspection tests, functional testing is integrated with the build. 测试与开发共享、集成的 测试由测试人员和Dev负责。非功能测试和集成测试由完整的审查过程来保障;功能测 试则被集成进构建过程中。 Shared by QA and Development 测试与开发共享 Owned by QA/Dev. Functional testing is not integrated with the build and may still be a full inspection process. Non-functional and integration tests might be incrementally integrated or End of Lifecycle 测试由测试人员和Dev负责。功能测试未集成进构建过程,由完整的审查过程来保障。 非功能测试和集成测试可能是增量集成的,或者是在软件开发周期的末尾阶段执行的。 0 Independent, Inspection 独立的,审查 测试由测试人员负责。功能测试是一次完整的检查,而未集成进构建过程中。增量的非 功能测试和集成测试中仅包含基本的审查测试,或者这些检查仅在软件开发周期的末尾 阶段执行。 Testing is a QA problem 测试只是测试人员 的事情 Owned by QA. Functional testing is full inspection and not integrated with the build. Incremental non-functional and integration tests are rudimentary inspection tests, or performed only at End of Lifecycle. -1 Independent, End of Lifecycle 独立的,位于软件开发周期末尾阶段 Owned by QA. Functional, Non-functional and Integration testing performed at End of Lifecycle. 测试由测试人员负责。功能测试、非功能测试和集成测试仅在软件开发周期的末尾阶段 执行。 Simplicity – 简单性 Theme Advanced technology risk mitigation – externally focused Level 3+ JIT Re-use 即时重用 高级技术风险降低— —关注外部 Advanced technology risk mitigation – internally focused State Description 3 JIT Design 即时设计 2 1 0 预先假想所有技术风 险 Ad-hoc design 临时设计 忽视技术风险 Assume all technology risk upfront Refactoring introduced 引入重构 技术风险降低雏形 Ignores technology risk Mature refactoring 成熟的重构 有效的技术风险降低 Embryonic technology risk mitigation 组件超市:“组件在可重用之前必须可用。” Component supermarket: “a component must be usable before it can become reusable” YAGNI文化 关注简单性;可工作、交流、无重复、尽量少的晦涩片段 YAGNI culture Focus on simplicity: works, communicates, no duplication, fewest moving parts 高级技术风险降低— —关注内部 Effective technology risk mitigation Reference Implementations -1 有效地应用设计模式;支持重构的测试实践。 Effective application of design patterns; testing practices support refactoring 无纪律的重构,重构不充分;结对编程、每日站立会议、迭代回顾。 Undisciplined refactoring is not sufficient; indicators of discipline include pair programming, daily stand-ups, iteration retrospectives 应激性设计(“工作即可”);拼凑组件。 Reactive design (‘whatever works”); component “bazaar” Big up-front design 花费大量精力预先设计框架;传统的企业级重用程序(如组件库);误用SOA(如根据 推理定义分类);导致高耦合、脆弱的实现,降低响应能力。 大规模预先设计 Significant investment in up-front frameworks; traditional enterprise re-use program (e.g., component libraries); SOA done wrong (e.g., speculative taxonomy defined); leads to highly coupled and brittle implementations that reduce responsiveness) Configuration Management – 配置管理 Theme Level State Description Reference Implementations Enterprise CM 可以在多个提供商提供的解决方案之间协调配置管理。 企业级配置管理 CM is coordinated across vendor supplied solutions 3 Coordinated CM 在同一个程序内协调多个项目的配置管理。 协调的配置管理 CM is coordinated across projects within the same programme 2 Automatic CM 自动化的配置管理流程意味着更少的意外。乐观锁。通过构建和测试保证CM纪律。原 子提交。 3+ 1 0 -1 自动化配置管理 Integrated CM 集成配置管理 The “code fairy does not run free” state – automation of CM rules. Optimistic locking. Build/test enforces CM discipline. Atomic commits. 配置管理与IDE集成在一起。手动的代码管理方式意味着代码很难控制,(如果未遵守 纪律,就可能出现意外) CM integrated with the IDE. Manual discipline means “the code fairy runs free” (unexpected changes are possible when manual discipline not maintained) Rudimentary CM Strategy 基本的代码版本管理 基本的配置管理策略 Basic code versioning CM is an impediment 无规矩 配置管理是一项负担 版本信息只保存在每个人的心里 Wild west Gatekeeper approach (“pay the CM troll”) Tacit knowledge in lieu of versioning Agile Maturity Model 管理实践 Shared Responsibility – 职责共享 Theme Level 3+ State Description 组织级结对 Organizational Pairing 3 2 1 0 -1 Reference Implementations 与业务人员实时结对;跨团队协作 Real time pairing with the business; cross-team collaboration 跨域结对 跨角色结对以实现需求 Cross-Discipline Pairing Cross-role pairing on requirements execution 有管理的结对 使用结对阶梯表以确保结对被经常轮换,整个团队以结对方式工作 Pairing is Managed Pair stairs are used to ensure rotation; pair teams sign up for requirement execution 鼓励结对 有机会结对并且结对是受鼓励的 Pairing is Encouraged Opportunities to pair are identified and encouraged 不受限访问 开发人员可以不受限制地访问开发产物 Unencumbered Access Developers have unrestricted access to change development artifacts 制度化,专业化 开发人员角色固定并且能力受限 Institutionalized Specialization Developers are in specified roles with limited ability to make changes Requirements – 需求 Theme Level 3+ 3 适时获取需求 增量价值,可测试 Incrementally valuable and granularly testable 1 0 预先需求分析 Requirements are elicited upfront 可协商 Negotiable 2 Requirements are explored / defined at time of need 独立 Independent 持续获取需求 Requirements are continuously expressed State Description -1 Reference Implementations 需求描述了交付团队需要完成的事项,是独立的,可执行的。 估计和协商的 方式可以改变。 Requirements are independent, actionable statements of things to be done by a delivery team. The nature of estimation and negotiation will change. 需求是关注业务的,是在与业务人员沟通时获取的,而不是从正式的文档或流 程提取的。并且需求是可以协商的 Requirements are not derived / extracted from formal documentation or process but are captured at time of expression by the business in a business-focused manner 敏捷故事:需求是业务价值的体现,而不是待完成的技术任务 Agile Stories: requirements are expressions of business value, not technical tasks that need to be performed 短小,可估计, 需求会被进一步分解成可互相依赖的任务(技术需求)以提高估计的准确性。 Short, estimable Requirements are further decomposed to have greater estimation accuracy. This will consist of a number of “tasks” promoted as “technical requirements,” among which there will be interdependencies 概要,模糊,业务导向的表达 需求过大,表述概括。估计不准确, 需求描述过于概括导致难以协商 High-level, vague, businessoriented expressions of need Requirements are decomposed into high-level expressions (“epics”) of what the business needs done. Estimation accuracy is unreliable; the statement of need is too high level to negotiate 详细的,高度耦合 冗长的用例, 缺乏完整背景的大段描述 Detailed, highly coupled specifications Verbose use cases; large expressions / statements without complete context Responsiveness – 快速响应 Theme Level 3+ State Description 持续变更管理 Continuous Change Management 3 持续业务参与 Continuous Business Involvement 2 迭代变更管理 Iterative Change Management 1 短交付周期 Short Delivery Cycle 0 应激式变更控制,风格不统一 Reactive Change Control, Inconsistent Style -1 缺乏灵活性, 长交付周期 Change Inflexibility, Long Delivery Cycle Reference Implementations 流畅的变更决策 Change decisions are fluid 业务人员积极参与交付的每个阶段 The business is actively involved in each phase of delivery 新特性和优先级可在每个迭代调整 Iterative cycle enables new features and re-prioritization with each iteration 新特性和优先级可在每次发布调整 Release cycle enables new features and re-prioritization with each release 非正式的变更控制 Low ceremony change control “Pile-it-on” 极为正式的变更控制。 变更控制导致或反映了对变更的抵抗。规范是冻结的。 High ceremony change control. Change control contributes to or reflects change resistance. Specifications are frozen. Assurance – 交付保障 Theme Level 3+ 流畅的计划内和计划外 风险管理 Fluid on-plan and offplan risk containment 3 State Description 项目管理最大程度支持业务 Project management maximizes business impact 自适应项目管理 Adaptive Project Management 2 项目状态报告反映项目路径? On-plan and off-plan risk awareness current with decision horizon 1 决策视角是迭代长度 应激式风险应对(对执 行的关注胜过风险意识) 0 计划内和计划外风险在 决策视角内得到关注 Risk reactive (execution focus trumps risk awareness) 计划内风险受管理,不 容许计划外风险 On-Plan risks are mapped, no tolerance for off-plan -1 Status reporting reflects project path taken Decision horizon is iteration length 决策视角是发布长度 Decision horizon is release length 固定的项目计划, 决策视角是项目长度 Fixed project planning, decision horizon is project length Reference Implementations 存在统一机制以报告项目是否满足业务需求(Business Case) A consistent mechanism for reporting whether project are meeting their business case is applied across the portfolio. 项目计划是有业务人员参与的协作过程, 每个迭代都会进行并可能得到更新 。项目计划 能够指明当前期望在哪个迭代交付哪些业务功能。 Project planning is a collaborative process with the business, done as frequently as each iteration, meaning the project plan may be refreshed with each iteration. The project plan communicates the current expectation to the iteration level of when specific business functionality will be delivered 项目状态报告反映了项目路径,在业务层面传达目前为止已交付的功能 Project status reporting is an expression of the project path taken, communicating in business terms the functionality delivered to date. 决策视角是一个较短的时间窗,通常不超过3个星期。需求以能在此时间窗内完成的方式 表达。 The decision horizon spans a shorter time-box, typically no longer than 3 weeks. Requirements are expressed in such a way that they can be completed in this time box. 决策视角是一个较短的时间窗,通常不超过3个月。需求以能在此时间窗内完成的方式表 达。 The decision horizon spans a shorter time-box, typically no longer than 3 months. Requirements are expressed in such a way that they can be completed in this time box. 项目时间表作为计划,决策视角是项目长度,有可能几年。项目状态是以执行与计划的匹 配程度来报告的。 Project schedule acts as a plan. The decision horizon is the length of the project or program, potentially spanning years. Status is reported as compliance with or exception to the plan. Communication – 沟通 Theme Communication are the social system 流畅沟通 Level 3+ 3 Communication are fluid 沟通自动化 Communication are automatic 结构化沟通体系 2 1 Communication are structured 双向沟通 Bidirectional communication is possible 0 -1 单向沟通 Communication is unidirectional State Description Reference Implementations 企业级协作 与业务相关的活动对团队无侵入性;业务和开发组成统一团队 Enterprise Collaboration Business participation is non-invasive to the team 协作执行 跨角色结对 Collaborative execution Pairing across team roles 协作基础设施 面向所有涉众的交流(主动的、被动的)均有工具支持 Collaborative Infrastructure Tools facilitate active and passive communications to multiple stakeholders 协作式专题讨论 有结构化、有规律的沟通和会议支持协作 Collaborative Forums Regular meeting events structured to facilitate collaboration 定期会议 定期(通常是每周)小组会议以供团队成员讨论 Regular Meetings Regular (typically weekly) team meetings provide a forum that allows team collaboration 单向沟通 管理层向团队通报进度 Unidirectional communication Progress updates from management to the team. 不定期小组会议 Irregular team meetings 各执一词的吵架会议 Death-by-meetings, participants state their objectives and priorities. Governance – 治理 Theme Level 3+ 3 强化原则,弱化 规则 Increasing extent of principles in favor of rules. 缺乏明确的规则 或原则 Prescriptive, Rules based Reference Implementations 巩固 与业务成果挂钩 Consolidated Linkage to business results 平衡 连通各个维度 Balanced Connectedness across dimensions 指标可支持详细分析, 没有繁琐的收集和报告 2 Enabling; drives action Metrics that support detailed analysis; non-burdensome collection and reporting 1 Grass-roots multi-disciplined reporting Pragmatic – proposed by delivery leaders. Multi-disciplined (e.g., it is more than just development metrics); delivery people are responsible, accountable and empowered 0 应激性的 临时的,甚至是混乱的 Reactionary Ad-hoc, possibly chaos 文过饰非 重量级的,障碍性的,便于出错时好有借口 CYA Heavy-weight, gets in people’s way, focused on providing cover in case something goes wrong. The absence of rules or clear principles 规定的, 基于规 则的 State Description -1