课程特色
世界唯一可以直接进行自动功能点估算的需求分析方法。
编写需求的同时,自动获得颗粒度近似的需求条目(用户故事),无需额外的拆分环节。
替代UML、用户故事,快速形成需求框架,效率高达150字/人年。
直接支撑后续工作(划分MVP最小可用产品、微服务、编码、测试)
课程思路
何为好的需求?SEAi需求分析法设定了4个目标。一般的需求分析方法能完成其中一个就很困难,而能同时达成4个目标的,当前只有SEAi需求分析法。
1.客户与用户可以自然阅读需求,并清晰地理解和认可需求的边界
a.“自然阅读”指不借助复杂的工具、图形、规则,而是像阅读普通的文字一样毫无困难地理解需求。
b.“需求边界”指做什么不做什么的边界,这个概念虽然很早就被人提出,但几乎所有方法都未能给出需求边界的形式和精确定义。
2.项目经理可直接基于需求计算工作量、工期、成本等人力数据
a.项目经理可以在不借助外人的情况下,直接由需求给出工作量、工期、成本、合理代码行数、测试用例数、测试缺陷数、发布缺陷数等核心数据。
i.一些敏捷开发方法如Scrum也可以给出某些数据,但均需要开发团队配合(但立项估算时团队很可能还不存在),且一般仅进行当前迭代的估算。
3.开发人员可直接基于需求完成数据库设计,编写页面/接口
a.需求文档的目录层级中,明确包含数据库表、页面/接口这两个层级(但又不会导致非技术人员难以理解),开发人员明确知道要开发什么。
i.一般的“用户故事”则无法明确知道要写多少个页面/接口。
4.测试人员可直接基于需求编写测试用例
a.需求文档的目录层级中,直接包含需求实例这一层级(但又不会导致非技术人员难以理解),测试人员对测试用例的数量、大致内容有明确概念。
课程范围
本培训以SEAi需求分析法为主,主要受众为产品经理。但其扩展应用会涉及项目经理、开发骨干、测试经理的一些技能
QAD量化敏捷开发是一系列课程/咨询的集合,整个体系前后连贯,覆盖需求、管理、技术的各方各面。
产品经理(对应Scrum中的PO,下图黑色人物)和项目经理(对应Scrum中的Scrum Master,下图蓝色人物)是其中的两个主要角色。
产品经理:
以SEAi需求分析法为主
包括从自然语言的简单需求描述,转变为场景、实体、行为、实例,并最终形成MVP,使用DevOpsBan进行管理;用需求实例化产生验收测试用例
核心收益:需求条目的量化,能满足横向、纵向对比
项目经理:
以QAD管理流程(QAP量化敏捷计划,DevOpsBan,QAM量化敏捷度量)为主
包括需求条目化,用户故事地图,整体计划,迭代计划,每日立会,DevOpsBan看板,全程量化管理
核心收益:仅基于需求条目数,就能完成工作量、工期、成本、代码行数、测试用例数、测试缺陷数、发布缺陷数估算
课程体系
SEAi需求分析法(主要内容)
SEAi需求分析法是一种简单易学,使用高效,但却功能强大的描述、拆分模糊需求的方法。
简单易学
步骤化流程化
每个步骤有具体方法
有量化数字协助判断
1分钟即可理解
1小时即可使用此方法完成对自己实际需求的拆解
1小时教学后,拆分结果与创始人的差异即可达到1/7以内
使用高效
10分钟可拆解一个随机的1人年需求到达行为层(大致对应用户故事)
每人天可拆解约30人年的需求到达实体层(大致对应史诗故事)
与代码中的某些元素有固定的对应关系,因此对于已经完成的项目,可以通过对代码的度量而快速重建SEAi需求条目
功能强大
自动量化,即可跳过传统估算环节,直接用需求某些层次的数量,计算得出工作量、工期、成本……测试缺陷、发布缺陷数等
可直接用于类与方法的编码
可直接用于用户界面和接口测试
兼容性强,可直接作为史诗故事、用户故事、用户故事地图上面的条目使用
培训效果
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分
自动化测试能力
实际项目中
讲师第一次在实际项目中使用Web自动化测试,就进行了Mars封装,约10个工作日完成了173个自动化测试用例,生产率约为15~20自动用例/测试人天,远高于实际需要数值(6)
北京某学员仅学习1天,即在周末耗时1天,完成了粗略的零编码自动化测试框架
北京某学员仅学习1天,即使用讲师的零编码策略,在约15工作日后完成其Robot Framework的改造,生产率高达24自动用例/测试人天,团队已有余力完成过去欠缺的测试用例
北京某客户在8天自动化页面测试咨询后,2个测试人员1.5个月完成了1830测试用例的编写,生产率高达30自动用例/测试人天,并为Mars Java框架贡献了约1000行封装代码 此客户在此前曾经接受了14天的原始selenium培训,但无法实际使用
课程大纲
课程以2天的形式进行(7+5小时),第一天讲解产品需求分析,第二天讲解如何使用需求分析的结果。
注意!即使只想学习需求分析,也要听第二天的课程,否则不知道如何使用需求,就不知道如何写需求才能满足使用要求。
第一章:产品需求分析(7小时)
核心目标1:使用正确的方法划分和描述顶层需求
核心目标2:使用SEAi方法拆分顶层需求
课程内容(黑体字环节带有实战沙盘演练)
需求采集
用户访谈与需求采集误区
SEAi需求分析法
识别产品的场景Scenario
建立场景描述语言
需求拆分
从场景描述中发现实体Entity(作为史诗故事)
识别标准,分析完成标准
为每一个实体分析CRUD行为Action(作为用户故事)
识别标准,分析完成标准
为每一个行为按成败顺序拆分需求实例Instance(作为验收测试用例)
练习:基于实际需求进行场景描述和实体拆分(形成史诗故事)
练习:利用CRUD拆分行为(形成用户故事)
练习:( 可2选1 现场授课优先选择A,远程选B)
练习A:建立用户故事地图(适合现场)
练习B:使用《SEAi需求模板》生成整体需求文档
演示:识别跨组需求,创建产品线级看板
第二章:产品版本规划与运营(3~4小时)
核心目标1:按照商业步调制定中长期产品路线图
核心目标2:建立最小可用产品与用户故事地图
核心目标3:基于需求建立中长期的估算
课程内容(黑体字环节带有实战沙盘演练)
版本规划
使用产品路线图表达产品模块间的关系及顺序
案例:滴滴打车的商业步调与产品开发顺序
利用Lean Startup方法分析最小可用产品MVP,并形成迭代需求
使用简化的用户故事地图表达MVP
练习:基于两种策略拆分产品版本
练习:(可2选1 现场授课优先选择A,远程选B)
练习A:在用户故事地图中划分2~3个版本/迭代(适合现场)
练习B:使用《SEAi需求模板》生成迭代需求文档
中长期估算与迭代估算
基于敏捷功能点AFP的估算
可估算2周~无限的工作量、工期、成本、合理代码行、测试用例、测试缺陷、发布缺陷数
基于SEAi需求条目的快速发布周期估算
练习:(可 2选1 现场授课优先选择A,远程选B)
练习A:口算估算《SEAi需求模板》的迭代
练习B:使用Ada Scope工具估算《SEAi需求模板》的整体和迭代
第三章:扩展应用(1~2小时)
核心目标1:建立灵活的微服务策略
核心目标2:基于SEAi快速编写代码结构,并确定需求范围
核心目标3:了解需求实例化生成验收测试用例的技术
微服务
利用微服务规划产品
基于SEAi需求分析的微服务拆分策略
演示:基于两种原则拆分微服务
面向变更的设计与编码
建立SEAi需求(史诗故事+用户故事)与编码之间的关系
需求实例化
从需求到验收测试用例
需求实例化模板
练习:完成单个实体的需求实例化