需求分析:SEAi需求分析法(用户故事拆分),需求实例化
估算计划:敏捷功能点与故事点估算,QAP量化敏捷计划
日常跟踪:每日例会,看板,DevOpsBan
技术管理:QAC量化敏捷编码/重构,QAT量化敏捷测试,DevOps流水线
敏捷度量:QAM量化敏捷度量
扩展模块:Scrum进阶,敏捷教练进阶,SAFe规模化敏捷框架,用QAD实现CMMI4/5
课程特色与思路
传统敏捷开发培训课程一直存在以下问题:
1. 不同角色分别上课,难以形成企业级敏捷框架
项目管理者学习Scrum和看板,研发人员学习DDD、微服务、重构、编码规范,测试人员学习自动化测试,教练学习教练技术……
2. 体系互不兼容,重复工作量大
Scrum中的backlogitem和看板纸片是不是一个东西?DDD的分析结果可以用来当用户故事吗?史诗故事和用户故事变成了代码中的什么?给定20个用户故事应该写多少测试用例?又应该测试出多少缺陷?
3. 学习成本高昂
上述课程每个都按2天计算,需要数十天的学习成本
QAD量化敏捷开发的思路则是:
所有团队角色参加一个培训,使用各自团队的实际产品做贯穿练习
沿着以下脉络,每个团队使用同一个产品的需求贯穿始终,依次学习和练习以下内容(下划线后的数字是练习个数[1]):
(产品线)需求拆分3
>(管理线)>整体规模估算1>用户故事地图1 > MVP规划1 > 迭代计划1>DevOps看板1
> Scrum的四个会议 > 敏捷度量1> 敏捷成熟度评估1
>(技术线)微服务划分1 > 从需求到代码 > 从需求到测试用例1
1. 前后步骤衔接,概念复用,使得跨角色的工作互相支撑,减少重复劳动
(产品线)需求拆分为四层(S场景,E实体代替史诗故事,A行为代替用户故事,i需求实例)
>(管理线)>E实体用于整体规模估算1
>SEA三层自动转换为用户故事地图的三层结构> 并用于划分MVP
> 使用A行为进行迭代计划>A行为作为DevOps看板上的纸片
>每个A行为=5.4FP(功能点)进行敏捷度量> 基于功能点的6个核心指标完成敏捷成熟度评估
>(技术线)微服务划分为三类:场景微服务,实体微服务,行为微服务
> 编码时,E实体=数据库表/实体类/Controller,A行为=接口或页面
>测试时,一个i需求实例=1测试用例
2. 同时降低学习和工作成本
2天讲完练完20天课程 ≈ 2天干完20天实际工作
课程范围
QAD量化敏捷开发是一系列课程/咨询的集合,整个体系前后连贯,覆盖需求、管理、技术的各方各面,建议核心人员完整参加。
课程对象
以下角色可以在QAD系列课程中受益(因参与人员职务、比例的差异,可以定向定制课程内容):
产品经理:
● 以SEAi需求分析法拆分用户故事为主
● 包括从自然语言的简单需求描述,转变为场景、实体、行为、实例,并最终形成MVP,使用DevOpsBan进行管理;用需求实例化产生验收测试用例
● 核心收益:需求条目的量化,能满足横向、纵向对比
项目经理:
● 以QAD管理流程(QAP量化敏捷计划,快速估算,DevOpsBan,QAM量化敏捷度量)为主
● 包括需求条目化,用户故事地图,整体计划,迭代计划,每日立会,DevOpsBan看板,全程量化管理
● 核心收益:仅基于需求条目数,就能完成工作量、工期、成本、代码行数、测试用例数、测试缺陷数、发布缺陷数估算
开发经理/开发骨干:
● 以QAC量化敏捷编码为主
● 包括理解SEAi需求条目与代码的对应关系,控制代码量以提升可维护性
● 核心收益:能利用编码消耗率LLOC/FP来整体把控编码的简洁性水平
测试经理:
● 以QAT量化敏捷测试为主
● 包括测试驱动开发,自动化测试,持续集成,持续发布(含少量版本管理)的计划、跟踪等管理活动
● 核心收益:能利用功能点,合理评价产品的质量;能利用功能点测试密度的概念,评价测试本身的工作完成情况
敏捷教练:
● 以理解和推动完整量化敏捷开发流程为主
● 包括跟踪团队实战并深入理解敏捷开发的完整步骤和具体做法,敏捷转型中的主要困难,如何度量敏捷团队的绩效,以及评价转型的成功与否
● 敏捷教练的软技能部分另有《06-2-09-02 高级敏捷教练培训课程(主推★★★★★)》课程覆盖
《高级教练》课程授课对象是敏捷教练,主要以团队建设、自组织团队原理、敏捷转型规划、绩效管理、团队不同角色的职业生涯规划等为主,甚至会涉及到相关的心理学、经济学内容。
典型应用场景
QAD量化敏捷开发可用于多种不同的场景,例如:
1. 替代Scrum(2001年)、看板(2005年)作为敏捷开发导入培训
2. 大型企业进行多团队的敏捷转型(150+研发人员,20+研发团队)
3. 大型新开发项目或重构项目的全程管理、监理(50+研发人员,50万+行代码)
4. 敏捷转型 +CMMI/GJB5000A的4~5级(量化管理、持续优化)
课程大纲
以下是最常见的2天课程的简要大纲正常授课6小时/天,第一天7小时,第二天5小时
● 学员按实际项目分组,每个组必须有一个产品经理,以提供一个实际产品需求
● 以组为单位,以实际产品需求(最佳选择是正在开发中的需求和马上要开发的需求)为练习目标
第一天:基础课程——端到端量化敏捷开发过程 | |
上午(3小时) QAD模型框架 ● 敏捷开发的历史与局限 ● QAD宣言与体系 需求建模,拆分与实例化 ● SEAi需求分析法 ○ SEAi-场景识别及案例 · 场景识别的20字标准 · 练习 ○ SEAi-实体识别及案例(史诗故事) · 实体穷举标准 · 实体的表述与排序标准 · 特殊情况分析 · 实体的量化分析 · 练习 ○ SEAi-行为识别及案例(用户故事) · 行为穷举标准 · 行为分析模板 ●增查查改删,增查查败成,增查查 · 实体的量化分析 · 练习 | 下午(4小时) 估算,版本规划与DevOpsBan ● QAP量化敏捷计划 ○ QAP-估算工作量、测试工作量、测试用例、缺陷数等核心数据,并学会自动化计算 ○ 练习 ● 用户故事地图 ○ 用SEAi条目生成用户故事地图 ○ 练习 ● 版本规划技术 ○ MVP最小可用产品 ○ MVR最小可用发布 ○ 两种版本规划策略 ○ 练习 ● DevOpsBan研发运维一体化看板 ○ 多版本的看板管理 ○ 练习 |
第二天:进阶课程——全流程量化管理 | |
上午(3小时) 完整案例分析 ● 一个完整案例 进阶课程 ● QAP进阶 ○ 三种估算与度量的比较 ○ 静态应用与动态开发功能点 ○ 维护型项目与二次开发项目的估算 ○ 多端开发中的估算 ● Scrum进阶 ○ Scrum方法回顾 ○ 计划会+敏捷开发领导力 ○ 每日立会+代码公有制 ○ 评审会+MVR最小可用发布 ○ 反思会+量化敏捷度量QAM ● QAC量化编码与重构进阶 ○ 基于SEAi的微服务划分 ○ 练习 ○ 量化敏捷重构的管理 · 实际案例分析 ○ 量化敏捷编码核心度量项 | 下午(2小时) ● QAT-基于SEAi的需求实例化 ○ 实例化模板 ○ 实例化的量化分析 ○ 练习 ● QAT量化敏捷测试 ○ 量化敏捷测试过程 · 基于功能点的质量、测试度量 ○ 基于4个100%的自动化测试转型框架 · 功能覆盖率100%,测试用例密度100%,自动化率100%,测试人员100% 进阶课程(可选) ● 开发团队强化模块 ○ 自组织团队,松结对编程, ● 敏捷教练强化模块 ○ 自组织团队原理,敏捷转型规划,敏捷转型评价 ● QAM量化敏捷度量 ○ 度量项总览,基于度量项的绩效评价 ○ 练习(难度大) ● 用敏捷开发实现CMMI4/5 ○ CMMI核心实践 RDM需求管理+EST估算+PLAN计划+MC监控+MPM管理性能与度量+CAR根因分析与解决方案 ○ 基于敏捷开发的一体化度量方案,性能基线与预测模型 |
培训效果与实际项目数据
QAD系列课程的目标设计
● QAD系列课程的需求建模课程,可以仅通过短期课程培训达到远高于业界平均水平的效果。
● QAD系列课程的自动化测试目标设定数值极高,除了少数学员外,几乎不可能仅仅通过培训达到,需要辅以咨询。
● QAD系列课程关注实际应用的情况,而非培训效果本身,从而避免了培训课堂气氛热烈,实际工作中无法推广的情况。
QAD系列课程的验证项
● 课堂练习的验证
● 课间实战训练的验证
以下是QAD系列课程的量化效果:QAD只以量化指标评价研发水平,因此也只用量化指标来评价课程/咨询效果
需求建模与实际项目偏差
● 实际项目中,讲师建模结果与产品完成时偏差:约5%(建模34个页面,完成时实际36个页面)页面≈用例
● 课堂练习中,学员讲师偏差:约10~14%即讲师只发现10~14%的页面级元素存在问题,需要增加、修改、拆分等。2020年培训普遍偏差只有10%左右,部分学员可达到3%
需求建模速度
● 讲师大会分享中
○ 可在10~15分钟左右,对随机听众的随机需求(一般在6~12个月工作量)完成用例级建模
○ 分享30分钟可完成:建模,估算,用户故事地图,看板
● 课堂练习中
○ 学员可在约20分钟左右不包括分组、推选组长、选择产品的额外约5~10分钟时间,完成约100~240人天真实需求的场景、实体、行为建模
● 实际项目中
○ 讲师可在1小时内使用QUML完成4个人月需求的建模
○ 广州某学员在培训后10日内,耗时3天完成了960人天(约4人年)的需求建模,且对需求进行了额外的描述
○ 讲师带领两位熟悉需求的学员,耗时2.5小时左右,对已经完成的15人年项目 30人团队,15程序员,已开发6个月完成了需求逆向工程,重建了实体级别的需求模型,并与编码、工作量、测试用例、测试缺陷等数据对比后确认无误
编码/重构
● 课程培训中
○ 可在60分钟左右,对随机听众的随机需求进行编码,形成主观分100分级别的主框架,必要时包括自动化测试代码以展示代码运行情况
● 实际咨询中
○ 一天内将2000行代码重构为140行
○ 某客户定期讲述需求中的难点 经统计共12个,讲师为客户完成实际代码框架
○ 协助客户将25万行代码中的约14万行通过减半
○ 通过使用“编码整洁指数”,在9个月将11个团队的平均分从1.5提升到3.3分 满分5分
项目管理能力
● 实际项目中
○ 在完成两天导入培训后,经过3轮次迭代,4~10个团队能完成以下数据的填报:功能点数,功能点生产率,工期,测试用例密度,测试缺陷密度
○ 生产率P75-P25稳定性可达-20~+30%之间
○ 缺陷密度P75-P25稳定性可达-21~+68%之间
自动化测试能力
● 实际项目中
○ 讲师第一次在实际项目中使用Web自动化测试,就进行了Mars封装,约10个工作日完成了173个自动化测试用例,生产率约为15~20自动用例/测试人天,远高于实际需要数值(6)
○ 北京某学员仅学习1天,即在周末耗时1天,完成了粗略的零编码自动化测试框架
○ 北京某学员仅学习1天,即使用讲师的零编码策略,在约15工作日后完成其RobotFramework的改造,生产率高达24自动用例/测试人天,团队已有余力完成过去欠缺的测试用例
○ 北京某客户在8天自动化页面测试咨询后,2个测试人员1.5个月完成了1830测试用例的编写,生产率高达30自动用例/测试人天,并为MarsJava框架贡献了约1000行封装代码 此客户在此前曾经接受了14天的原始selenium培训,但无法实际使用