第一部分:初识Scrum
参考资料: 敏捷开发之Scrum扫盲篇 Scrum 总结 硝烟中的Scrum 和 XP 什么是敏捷开发? 敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发;
什么是迭代?
迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。什么是Scrum?
敏捷软件开发有多种版本,Scrum是最受欢迎的版本之一,接受《2015年敏捷现状》报告调查的受访者中70%表示,他们采用Scrum或Scrum混合方法。这是一种协作框架,最先由杰夫·萨瑟兰(Jeff Sutherland)在1993年发明。它把复杂项目分成了多个简短的迭代开发周期(sprint),每个迭代开发周期为期两到四周,它注重勇气、专注、承诺、尊重和开放性这五个价值观。 精益软件开发 虽然精益开发通常与敏捷开发联系起来,但精益开发的原则实际上源自丰田公司的精益制造流程。这套开发方法依赖七个关键的原则:消除浪费、促进反馈、尽量延迟决策、快速交付、融入完整性、授权团队和着眼整体。2003年,精益首次引起了软件开发界的注意,当时玛丽·波彭代克(Mary Poppendieck)和汤姆·波彭代克(Tom Poppendieck)出版了《精益软件开发:敏捷工具包》一书。 看板 看板是敏捷软件开发的另一个变种,灵感源自丰田公司。它为开发人员提供了一种直观的方法,可以查看什么工作需要完成,让他们得以在有精力时可以“拉取”工作,而不是“推送”工作,以完成某些任务。看板依赖三个核心原则:可视化今天处理的工作,限制在制品,并改进流动。关于Scrum和XP
前面说了敏捷它是一种指导思想或开发方式,但是它没有明确告诉我们到底采用什么样的流程进行开发,而Scrum和XP就是敏捷开发的具体方式了,你可以采用Scrum方式也可以采用XP方式;Scrum和XP的区别是,Scrum偏重于过程,XP则偏重于实践,但是实际中,两者是结合一起应用的,这里我主要讲Scrum。Scrum 工具
禅道JIRA+GreenHopper
Scrum 中的角色
Scrum Master——项目负责人、项目经理保护团队不受外界干扰,是团队的领导和推进者,负责提升 Scrum 团队的工作效率,控制 Scrum 中的“检视和适应”周期过程。与 Product Owner 一起将投资产出最大化,他确保所有的利益相关者都可以理解敏捷和尊重敏捷的理念。
Team——开发人员、测试人员、美工设计、DBA等全职能性团队
团队负责交付产品并对其质量负责,团队与所有提出产品需求的人一起工作,包括客户和最终用户,并共同创建 Product Backlog 。团队按照大家的共识来创建功能设计、测试 Backlog 条目交付产品。
Product Owner——产品负责人、产品经理、运营人员
从业务角度驱动项目,传播产品的明确愿景,并定义其主要特性。Product Owner 的主要职责是确保团队只开发对于组织最重要的 Backlog 条目,在 Sprint 中帮助团队完成自己的工作,不干扰团队成员,并迅速提供团队需要的所有信息。
User——最终用户、运营人员、系统使用人员
很多人都可能成为最终用户,比如市场部人员、真正的最终用户、最好的领域专家,也可能是因其专业知识而被雇佣的资讯顾问。最终用户会根据自己的业务知识定义产品,并告知团队自己的期望,提出请求。
Manager——管理层、投资人
管理层要为 Scrum 团队搭建良好的环境,以确保团队能够出色工作,必要的时候,他们也会与 Scrum Master 一起重新组织结构和指导原则。
Customer——客户、系统使用人员、运营人员
客户是为 Scrum 团队提出产品需求的人,她会与组织签订合同,以开发产品。一般来说,这些人是组织中的高级管理人员,负责从外部软件开发公司购买软件开发能力。在为内部产品的公司中,负责批准项目预算的人就是客户。
Scrum流程图
如何进行Scrum开发?
1.我们首先需要确定一个Product Backlog(按优先顺序排列的一个产品需求列表),这个是由Product Owner 负责的;2、Scrum Team根据Product Backlog列表,做工作量的预估和安排;
3、有了Product Backlog列表,我们需要通过 Sprint Planning Meeting(Sprint计划会议) 来从中挑选出一个Story作为本次迭代完成的目标,这个目标的时间周期是1~4个星期,然后把这个Story进行细化,形成一个Sprint Backlog;
4、Sprint Backlog是由Scrum Team去完成的,每个成员根据Sprint Backlog再细化成更小的任务(细到每个任务的工作量在2天内能完成);
5、在Scrum Team完成计划会议上选出的Sprint Backlog过程中,需要进行 Daily Scrum Meeting(每日站立会议),每次会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,每个人回答完成后,要走到黑板前更新自己的 Sprint burn down(Sprint燃尽图);
6、做到每日集成,也就是每天都要有一个可以成功编译、并且可以演示的版本;很多人可能还没有用过自动化的每日集成,其实TFS就有这个功能,它可以支持每次有成员进行签入操作的时候,在服务器上自动获取最新版本,然后在服务器中编译,如果通过则马上再执行单元测试代码,如果也全部通过,则将该版本发布,这时一次正式的签入操作才保存到TFS中,中间有任何失败,都会用邮件通知项目管理人员;
7、当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行 Srpint Review Meeting(演示会议),也称为评审会议,产品负责人和客户都要参加(最好本公司老板也参加),每一个Scrum Team的成员都要向他们演示自己完成的软件产品(这个会议非常重要,一定不能取消);
8、最后就是 Sprint Retrospective Meeting(回顾会议),也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中;
第二部分:小组协作开发
小组成员:曹晨冰、舒梦娇、杨琼、李琛、张旋
开发计划:
李琛:负责分析项目需求,安排任务,协调各组员分功
张旋:测试 杨琼:对用户的需求充分了解,编写需求文档 舒梦娇:沟通用户,了解需求,和团队交互 曹晨冰:编写代码 小组github地址