软件开发模式之敏捷开发(scrum)
[原文]https://blog.csdn.net/xiajun2356033/article/details/81513957
[RbY本文转发时已对原文适当整理并纠错;]
转载说明:
- 敏捷开发(scrum), 从上世纪90年代开始在国外提出, 2010年以后逐渐引起国内关注;
- 有人对敏捷开发的理解是“快”,其实只是其正确实施的结果; 这不是敏捷开发的本质;
- 软件工程实践, 跟造房子那样的土木工程完全不一样; 软件工程是用逻辑构件来搭建,不是物理结构,整个逻辑大厦任何一个节点不合格,软件就可能崩塌;
- 试着把设计和编码分两个阶段,期望在设计阶段就把需求理清楚,结果证明不可行,而需求还在不断改变,甚至需求可能还是冲突矛盾的;
- 人类大脑很少拥有完美的理性思维;我们的理性很多时候只能保障一个小环节,涉及到复杂系统就勉为其难了; 于是,敏捷开发就有用了。
- 敏捷开发的特点就是“摸着石头过河”,又有点像深度学习中的梯度下降法,我们走一步看一步,每一步都走得很踏实(本地测试),逐渐趋近目标。
- 敏捷开发比瀑布式开发对团队的要求相对低些,不一定要有高级架构师,不要求完全理性正确,每走一步都有及时的测试来验证。
- 敏捷开发成功实施的前提是,团队成员对用到的技术栈要熟悉,大家对敏捷流程要认同。
- 敏捷开发是用来提升协作效率的, 也引入了用来提高软件质量的迭代; 但却难以提升团队成员技术能力; 因此对开发人员个人素质要求更高些;
- 敏捷开发也适合基于英特网的虚拟团队, 可远程协作分布式开发;尤其对3~12人的小团队更有优势。
本人看过国内最早提到"敏捷性"(介绍敏捷方法的使用,包括极限编程)的书, 是2010年版"图灵计算机科学丛书"之一的《软件工程(第4版)》; [美]Shari Lawrence Pfleeger & [加]Joanne M.Atlee 著; 杨卫东 译;
书名原文:Software Engineering: Theory and Practice , Fourth Edition.
阅读链接:
敏捷开发推荐书:敏捷革命
《敏捷革命:提升个人创造力与企业效率的全新协作模式》该书由【美】杰夫·萨瑟兰所著,于2017年4月由中信出版社出版发行。
-
- 敏捷开发简介
这几年关于敏捷开发在互联网企业中越来越广泛被使用到,运用的比较多的当属scrum敏捷开发和xp极限开发,人人都在谈论敏捷开发。那什么才是敏捷开发呢?
- 本文目录
1.什么是敏捷开发?
2.传统的开发模式和敏捷开发模式的对比。
3.敏捷开发scrum的实施。
- 一. 什么是敏捷开发
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
- 二. 传统的开发模式和敏捷开发模式的对比
瀑布模型:–传统的开发模式
优点:
- 为项目提供了按阶段划分的检查点。
- 当前一阶段完成后,您只需要去关注后续阶段.
- 它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
缺点:
- 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
- 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
- 通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
- 瀑布模型的突出缺点是不适应用户需求的变化。
敏捷模型:–敏捷开发模式
优点:
敏捷开发的高适应性,以人为本的特性。
更加的灵活并且更加充分的利用了每个开发者的优势,调动了每个人的工作热情。
缺点:
由于其项目周期很长,所以很难保证开发的人员不更换,而没有文档就会造成在交接的过程中出现很大的困难。
- 三. 敏捷开发scrum的实施
Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;把一个开发流程的名字取名为Scrum,相当于大家像打橄榄球一样迅速、富有战斗激情; 而Sprint意思是短跑冲刺。Scrum就是这样的一个开发流程。
Scrum开发流程中的三大角色
– 产品负责人(Product Owner)
主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。
– 流程管理员(Scrum Master)
主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。
–开发团队(Scrum Team)
主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5~10人左右,每个成员可能负责不同的技术方面,但要求每成员必须要有很强的自我管理能力,同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到Sprint的目标。
scrum开发流程图
1、我们首先需要确定一个Product Backlog(产品需求列表),这个是由PO负责的(如图(一))。
图(一)
2、有了Product Backlog列表,我们需要通过 Sprint Planning Meeting(Sprint计划会议) 来从中挑选出一个Story作为本次迭代完成的目标,这个目标的时间周期是1~4个星期,然后把这个Story进行细化,形成一个Sprint Backlog。
3、Sprint Backlog是由Scrum Team去完成的,每个成员根据Sprint Backlog再细化成更小的任务(细到每个任务的工作量在2天内能完成);
4、在Scrum Team完成计划会议上选出的Sprint Backlog过程中,需要进行 Daily Scrum Meeting(每日站立会议),每次会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,每个人回答完成后,要走到黑板前更新自己的 Sprint burn down(Sprint燃尽图)(如图(二)和如图(三))。
图(二)
图(三)
5、做到每日集成,也就是每天都要有一个可以成功编译、并且可以演示的版本。
6、当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行 Srpint Review Meeting(演示会议),也称为评审会议,产品负责人和客户都要参加(最好本公司老板也参加),每一个Scrum Team的成员都要向他们演示自己完成的软件产品。
7、最后就是 Sprint Retrospective Meeting(回顾会议),也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中。
图(四)
本文链接:
敏捷开发管理工具:teambition
现代软件工程讲义4 Scrum/Sprint
参考链接:
敏捷开发之Scrum扫盲篇
百度百科
敏捷开发 模型讲解