敏捷项目实施敏捷开发模式中的需求实现王菁敏捷的基础工作机制1敏捷开发的需求迭代2敏捷开发的需求分解3敏捷开发的估算4基本概念解释我们在敏捷项目管理中常见的一些名词:Sprint、ProductBacklog等名词解释:Sprint:迭代,一个迭代就是一个Sprint;Backlog:需求集合,就是不同规模的需求列表;ProductOwner:决定产品要做成什么样子,需求他说了算,接受或拒绝开发团队的成果;Team:开发、测试等等;Chicken:干系人;用户故事:一个相对独立的功能点;事件:过程中出现的一切事情。角色Scrum团队中一般有三类角色PO、Team、Master敏捷工作机制01敏捷开发模式敏捷是一种有时间约束的、迭代的开发软件的方法。它可以在业务优先级确定之后的短时间内提供潜在的可交付的工作代码,同时提供处理不确定性并适应不断变化的需求的能力。它是从项目开始逐步构建软件,而不是在交付期将至时尝试一次性交付。敏捷Scrum极限编程(XP)Kanban敏捷统一流程(AUP)精益,FDD,TDD,etc是一个包括了一系列的实践和预定义角色的过程。Scrum团队创建可用的(可以随时推出)软件的一个增量,提供高品质的工作,提高可见度和适应性,从而满足经常发布用户可用的版本。ScrumScrum工作机制每个迭代的活动45678910Sprint计划会议SprintDemoSprint回顾会议每日站会123敏捷开发的需求迭代02迭代需求的整理需求规划一个大的项目需求会拆分成很多小的功能完整的需求,以便排定优先级去逐个实现。需求记录每个迭代Backlog的描述都是完整的,包括主题、描述、优先级和验收标准等。需求优先级产品Backlog如果有多条的话开发顺序按照优先级确定,一条Backlog里面的需求优先级一致。Backlog拆分每个Backlog都是可以在单个迭代内完成的;每个Backlog都是可单独验证并上线的。敏捷开发的需求分解03需求分解步骤需求分解逐步细化,将一个长周期的项目分成若干个迭代开发并进行发布,每个迭代可以包含若干Backlog,每个backlog分为若干Story进行开发。多个迭代项目需求几个Backlog多个故事用户故事用户故事是从用户的角度来描述用户渴望得到的功能。一个好的用户故事包括三个要素,来说明作为什么用户,希望如何,这样做的目的或者价值何在。角色为什么需要这个功能,这个功能能带来什么价值。谁要使用这个功能。需要完成怎么样的功能。商业价值活动用户故事有价值(Valuable)用户故事对于最终的用户是有价值的,因此应该站在用户的角度去编写,描述的是一个一个的feature,而非一个一个的task。可以估算性(Estimable)开发团队能够去估计一个用户故事以便确定优先级,工作量,安排计划。短小(Small)一个好的故事在工作量上要尽量短小,用户故事越大,在安排计划,工作量估算等方面的风险就会越大。独立性(Independent)要尽可能的让一个用户故事独立于其他的用户故事。可协商性(Negotiable)用户故事是PO同开发小组的成员共同协商制定的,一个用户群体的需求经常是零散的,通过相关人员的沟通,协商经常可以丰富用户故事。可测试性(Testable))如果一个用户故事无法进行测试,那么也就无法判断该故事是否真的完成。所以,用户故事必须在定义了验收测试通过的标准后才能认为用户故事开发完毕。分解用户故事以一个增加人员功能为例,我看一下如何把backlog里面的功能分解成更细化的故事。•默认页面是学生列表页,需要根据登录老师的权限匹配,例如她教授的课程和班级•单个新增加学生•按照模板批量导入•导出学生名单分解用户故事•新增加(单个)学生业务流如下:分解用户故事•按照模板批量创建业务流如下:分解用户故事•导出业如下:描述用户故事•代表一小部分终端用户功能•一个个独立的,可验收的功能•包含书面文字、口头叙述、图片等•包含了用户故事的验收标准的边界•一个故事包含的点数应该尽量小例子:叙述:作为一个…手机银行的用户我想要…查看我的账户信息所以…我可以了解我的账户活动情况验收标准:给定……我已经登录系统当……我选择在我的手机银行账户查看账户信息时然后……我能根据所选择的账户(账户名称、投资理财方案、外汇购买等)查看账户细节用户故事描述要素描述用户故事•功能点:需求包含了那些功能点•约束条件:每个功能点有什么约束条件•流程图:功能点的业务流程是怎样的•如果有界面的话,需要有页面元素图以及说明。•验收:验收不同于测试用例,主要用来模拟用户的行为以及期望的响应现在我们就以一个简单的登录界面,来讲讲应该怎样去描叙故事。描述用户故事功能点1.用户可输入用户名、密码,响应登录按钮。2.当点击登录时:a.判断用户名、密码是否有为null,有则提示用户,请输入用户名/密码。b.记录密码以及记住用户名、密码,自动登录的状态c.发起登录请求,并响应登录状态。成功则调转到下一个界面,失败则提示用户3.启动登录界面的时候,读取配置文件,访问记住密码和自动登录状态。如果记住密码为true,自动登录为false,则启动登录界面的时候,比对上次退出时的用户名一致,则密码等于上次登录退出时的密码;如果自动登录为true,则默认用户名和密码为上次登录退出时的用户名和密码,直接执行点击登录的事件。描述用户故事流程图1.用户名必须以字母开头,并且包含字母、数字,长度不小于6位,当焦点切换到密码的时候,自动验证输入的用户名的合法性2.密码以*号隐藏约束条件描述用户故事界面描述用户故事验收角色(作为…)功能(我想做什么)价值(期望结果)我输入用户名可以输入输入密码可以输入,并以*显示选择记住登录名可选择,可取消点击登录成功,跳转首页失败,有原因提示验证记录用户名的效果退出后重新登陆,不用输入用户名验证自动登录的效果重新登陆时,系统自动执行登录事件,不需用输入用户名、密码,直接登陆成功进入首页敏捷开发的估算04用户故事估算添加文本用故事点估算故事,故事点是故事复杂度、工作量、或工期的相对估算。Step1.建立一个故事点估算标准,我们可以按照团队一个查询完成的工作量是1个点。①4各等级为:1点、2点、3点、4点②4各等级为:1点、2点、4点、8点故事点估算Step2.将故事的规模估算设定为4各等级。Step3.以团队进行估算,参与估算的人员聚集在一起,主持人抽取故事,读给开发人员听,产品解释疑点。Step4.对故事没有疑问后,每个开发人员在卡片上写下一个估算值用户故事估算添加文本故事点估算①1点、2点、3点、4点的划分方法,估算时采用三角测量法,一个故事点2的故事是一个故事点1的两倍,一个故事点4的故事是不是一个故事点2的两倍,3个点的故事大概比两个点的故事大,比4个点的故事小。②1点、2点、4点、8点的划分方法,估算时采用2的幂测量法,故事点2时故事点1的一倍,故事点4是故事点2的两次方,故事点8是故事点2的三次方。Step4.估算值差距大的话,估算量最大的开发者与最小的开发者给出理由,大家纠正偏差,不同的等级划分方法,采用不同的测量纠正方法。Step4.大家重新估算,估算值差距在1个等级内,取估算大的数值。Step5.给所有故事分配工作量。汇报人:小精灵谢谢大家!