敏捷开发 - 敏捷软件开发理论及流程
敏捷开发 - 敏捷软件开发理论及流程
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
什么是敏捷软件开发
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
敏捷开发和传统开发(比如瀑布模型)有何区别
敏捷开发的核心是迭代开发(iterative development)。敏捷一定是采用迭代开发的方式。
对于大型软件项目,传统的开发方式是采用一个大周期(比如一年)进行开发,整个过程就是一次"大开发";迭代开发的方式则不一样,它将开发过程拆分成多个小周期,即一次"大开发"变成多次"小开发",每次小开发都是同样的流程,所以看上去就好像重复在做同样的步骤。
敏捷开发的好处
- 早期交付
敏捷开发的第一个好处,就是早期交付,从而大大降低成本。
- 降低风险
敏捷开发的第二个好处是,及时了解市场需求,降低产品不适用的风险。
由于敏捷开发可以不断试错,找出对业务最重要的功能,然后通过迭代,调整软件方向。相比传统方式,大大增加了产品成功的可能性。如果市场需求不确定,或者你对该领域不熟悉,那么敏捷开发几乎是唯一可行的应对方式。
敏捷软件开发的流程
图片来源于网络,这张图相对全面的体现了敏捷软件开发的流程
敏捷软件开发的原则
Robert大叔的《敏捷软件开发》大体上给出了12个原则
1.我们最优先要做的是通过尽早地、持续地交付有价值的软件来使客户满意。交付得越频繁,最终产品的质量越高。
2.我们欢迎需求的变化,即使到了开发后期,敏捷过程依然能够驾驭变化,为客户创造竞争优势。
3.经常交付可以工作的软件,从几个星期到几个月,时间间隔越短越好。
4.在整个项目开发期间,业务人员和开发人员必须朝夕相处在一起。
5.围绕斗志高昂的人构建项目。
6.在团队内部,最有效率也最有效果的信息传达方式,就是面对面的交谈。
7.可以工作的软件是进度主要的度量标准。
8.敏捷过程提倡可持续开发。出资人、开发者和用户应该总是保持文档的开发速度。
9.对卓越技术和良好设计的不断追求有助于提高敏捷性。
10.简单-尽可能减少工作量的艺术是至关重要的。
11.最好的架构、需求和设计都源自自我组织的团队。
12.每隔一段时间,团队都要总结如何更有效率,然后相应地调整自己的行为。
敏捷软件开发常见方式
通过如下报告(大概是16年左右),大致上可以看到敏捷在整个开发方式的趋势,敏捷中Scrum独占鳌头
常见的敏捷开发方式如下:
极限编程(ExtremeProgramming,简称XP)是由KentBeck在1996年提出的,是一种软件工程方法学,是敏捷软件开发中可能是最富有成效的几种方法学之一。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。极限编程透过引入基本价值、原则、实践方法等概念来达到降低变更成本的目的。
Scrum是迭代式增量软件开发过程,是敏捷方法论中的重要框架之一,通常用于敏捷软件开发。Scrum包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括同项目经理类似的Scrum Master角色负责维护过程和任务,Product Owner代表利益所有者,Developer Team包括了所有开发人员。
参考文章
- 《敏捷软件开发》
- https://www.mindk.com/blog/iterative-development/
- https://baike.baidu.com/item/敏捷开发/5618867
- https://www.ruanyifeng.com/blog/2019/03/agile-development.html
- https://www.scrumalliance.org/ScrumRedesignDEVSite/media/ScrumAllianceMedia/Files and PDFs/State of Scrum/State0fScrum_2016_FINAL.pdf?aliId=261272923