由于软件开发过程中存在的各种问题,我们引入了敏捷开发,这篇博客就写写我对敏捷开发的简单总结,整体思路:
1、几种软件开发模型的分析
2、敏捷开发方法
3、敏捷开发的实施(Scrum)
4、Scrum实施流程
一、几种软件开发模型
1.瀑布模型:
最早出现的软件开发模型,1970年由Winston Royce提出,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,逐级下落。优点:文档驱动,提供了一套工程化的里程碑管理模式,能够有效保证软件质量,并使得软件容易维护。
缺点:系统可能不满足客户的需求
2. 快速原型模型
快速原型模型的第一步是建造一个快速原型,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。优点:快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。
缺点:关注满足客户需求,可能导致系统设计差、效率低、难于维护。
3. 螺旋模型
由四部组成,制定计划、风险分析、实施工程、客户评估。优点:风险驱动
缺点:风险分析人员需要经验且经过充分训练,由于费用问题,这种风险驱动方式适合于大型项目。
4.演化模型
该模型可以表示为:第一次迭代(需求->设计->实现->测试->集成)->反馈->第二次迭代(需求->设计->实现->测试->集成)->反馈->……,适用于对软件需求缺乏准确认知的情况。二、敏捷开发
敏捷开发是一种以用户的需求进化为核心、迭代、循序渐进的开发方法。
是针对传统的瀑布开发模式的弊端而产生的提高开发效率和响应能力的一种新的开发模式。
贴近实际开发来理解,就是把一个大项目分为多个相互联系,但也可以独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
概括成一句话,就是敏捷开发是一种应对快速变化的开发方法。
三、敏捷开发实施
有没有经常听到这两个词XP、Scrum……?他们和敏捷开发是什么关系呢?
XP(eXtreme Programming,极限编程),是一种轻量级的、灵巧的软件开发方法。是指对比传统的项目开发方式,XP强调把它列出的每个方法和思想做到极限、做到最好;其它XP所不提倡的,则一概忽略(如开发前期的整体设计等)。
Scrum是一种迭代式增量软件开发过程。通常用于敏捷开发,包括了一系列实践和预定义角色的过程骨架。
敏捷开发是一种软件开发的宏观指导思想,XP和Scrum分别是两种实施方式。可以自己去了解一下XP和scrum的区别。
四、Scrum实战
我们的开发中使用的是Scrum,所以,接下来全部都是关于Scrum的介绍。将从哪些人通过什么方式做什么工作达到什么目的这个连贯的问题来介绍,希望大家看完后也是这样一个清晰的思路。
(一)角色:
【Product Owner】——部门经理/产品经理/策划人,负责整理user Story,对其进行优先级排序、指定发布计划、对产品负责。【Scrum master】——开发团队的指导者,负责整个Scrum进程,召开各种会议,协调项目,修订计划,为研发团队服务。
【Team Member】——开发人员,完成每一次迭代的目标,交付产品。
(二)项目分解:
【user Story】——用户故事/需求【backlog】——可以预知的所有任务
【sprint】——一次迭代/一个开发周期
【sprint backlog】——一个sprint所需要完成的任务
(三)实施过程:
【Sprint Planning Meeting】——迭代计划会,每个迭代开始时进行。由产品负责人召开。会前条目化需求,并排优先级。目的是选择和估算本次迭代的任务,参与讨论并回答与需求相关的问题。【Standup Meeting】——每日立会,迭代周期的每天。由Scrum Master负责,主要是团队之间进行沟通,时间限定在15——20分钟左右。
【Review Meeting】——评审会议,一个迭代结束,展示迭代成果。
【Retrospective Meeting】——反思会议,每个迭代结束后召开。总结经验教训、制定改进计划。
读完上面的文字,好好看看这张图,上面所有的描述全部都能从图中找到。
【谁通过什么方式做什么工作达到什么目的】
(四)日常跟进:
看板
燃尽图
跟进表
像禅道、JIRA这些项目管理工具都带有看板和燃尽图的功能。