Scrum漫谈Scrum是什么?Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;把一个开发流程的名字取名为Scrum,你一定能想象出你的开发团队在开发一个项目时,大家像打橄榄球一样迅速、富有战斗激情、人人你争我抢地完成它,你一定会感到非常兴奋的。Scrum特指一种敏捷开发的模型。敏捷是什么?•是一种从2000代开始逐渐引起广泛关注的一些新型软件开发方法。–XP(ExtremeProgramming)–Scrum特点:摒弃了大多数重量型过程中的中间产物(诸如甘特图、状态报告,以及多卷需求文档等)来提高软件开发速度非敏捷-瀑布式开发•软件开发的经典模型瀑布模型的主要缺陷:–程序的维护成本会越来越高(需要很多人)–团队氛围压抑(感受不到激情)–不方便做需求变更(引起客户不满)需求,设计阶段的问题开发,维护阶段的问题Scrum开发模型Sprint流程图产品需求Imp:重要性;Est:大致相当于一个“理想的人天(man-day)”Scrum中的三个角色产品负责人(ProductOwner)主要由产品经理担任,其为确定产品的方向和愿景,定义产品发布的内容、优先级及交付时间,为产品ROI(profitabilityofproduct)负责。主要职责包括:确定产品的功能;决定发布的日期和发布内容;根据市场价值确定功能优先级;每个sprint中,根据需要调整功能和优先级(每个sprint开始前调整);接受或拒绝开发团队的工作成果;参与ScrumPlanningMeetings(Sprint计划会议),SprintReviewMeeting(Sprint评审会)和SprintRetrospectiveMeeting(Sprint回顾会)。ScrumMaster担当团队leader,可以是开发Leader或者TeamLeader,和Productowner紧密合作,及时为团队成员提供帮助。主要职责包括:保证团队资源合理利用;保证各个角色及职责良好协作;解决团队开发中的障碍;作为团队和团队外部的接口,协调解决沟通中的问题;保证开发过程按计划进行,组织ScrumPlanningMeetings(Sprint计划会议),DailyStand-upMeeting(每日站会),SprintReviewMeeting(Sprint评审会)和SprintRetrospectiveMeeting(Sprint回顾会)。团队(Team)一般情况人数在5-9人。团队成员包括产品经理、开发人员、测试人员、前端开发、UED等。团队成员最好都是在项目的一个sprint中是全职的,在一个Sprint中成员不容许更换。在项目范围内有权利做任何事情已确保达到sprint的目标;向Productowner演示产品功能。Sprint计划会议•计划会议要有足够的时间,最好至少8个小时•取出部分产品需求做成sprint需求,并写成backlog•确定backlog的优先级和工作量•进行工作认领(不是分配)•确定每日站立会议的时间和地点•确定好演示会议和回顾会议的日期backlog场景展示-计划纸牌场景展示-故事看板站立会议•10-15分钟•迟到将接受惩罚•自问自答三个问题–昨天做了什么–今天要做什么–遇到了什么问题•更新燃尽图场景展示-每日站立会议场景展示-燃尽图还Sprint开发周期•使用好任务看板•需求,设计,开发,测试,维护•注意燃尽图•不要使用软件取代看板•可以选择性的和XP的某些方式结合–测试驱动开发–结对编程场景展示-任务看板场景展示-任务看板演示会议•演示是跨团队的,会产生不同团队之间的交流•不要关注太多的细节,以主要的功能为主•让老板和客户看到•非常的重要,绝对不可以被忽略回顾会议•时间在1-3个小时•找最舒适的地方(要有回顾看板)•开始的时候轮流发言,而不是主动发言•记录问题,总结,并讨论改进的方法,放在回顾看板上•每人三个磁铁,将最重要的2-3个改进点,成为下一轮的产品需求场景展示-回顾会议看板回顾会议问题举例•我们应花更多时间,把故事拆分成更小的条目和任务•我们办公室的环境太吵太混乱了•我们做出了过度的承诺,最后只完成了一半工作•Scrum的主要缺陷:–压力大–不方便跨时区,跨语言–程序维护成本偏高–无法被中断•如何改善:–结合XP:•和客户坐在一起•结对编程•测试驱动开发(TDD)•使用编码规范结对编程图书介绍谢谢!