敏捷开发 - 敏捷软件开发理论及流程

什么是敏捷软件开发

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

敏捷开发和传统开发(比如瀑布模型)有何区别

敏捷开发的核心是迭代开发(iterative development)。敏捷一定是采用迭代开发的方式。对于大型软件项目,传统的开发方式是采用一个大周期(比如一年)进行开发,整个过程就是一次"大开发";迭代开发的方式则不一样,它将开发过程拆分成多个小周期,即一次"大开发"变成多次"小开发",每次小开发都是同样的流程,所以看上去就好像重复在做同样的步骤。

敏捷开发的好处

早期交付敏捷开发的第一个好处,就是早期交付,从而大大降低成本。降低风险敏捷开发的第二个好处是,及时了解市场需求,降低产品不适用的风险。由于敏捷开发可以不断试错,找出对业务最重要的功能,然后通过迭代,调整软件方向。相比传统方式,大大增加了产品成功的可能性。如果市场需求不确定,或者你对该领域不熟悉,那么敏捷开发几乎是唯一可行的应对方式。

敏捷软件开发的流程

图片来源于网络,这张图相对全面的体现了敏捷软件开发的流程

敏捷软件开发的原则

Robert大叔的《敏捷软件开发》大体上给出了12个原则

  1. 我们最优先要做的是通过尽早地、持续地交付有价值的软件来使客户满意。交付得越频繁,最终产品的质量越高。
  2. 我们欢迎需求的变化,即使到了开发后期,敏捷过程依然能够驾驭变化,为客户创造竞争优势。
  3. 经常交付可以工作的软件,从几个星期到几个月,时间间隔越短越好。
  4. 在整个项目开发期间,业务人员和开发人员必须朝夕相处在一起。
  5. 围绕斗志高昂的人构建项目。
  6. 在团队内部,最有效率也最有效果的信息传达方式,就是面对面的交谈。
  7. 可以工作的软件是进度主要的度量标准。
  8. 敏捷过程提倡可持续开发。出资人、开发者和用户应该总是保持文档的开发速度。
  9. 对卓越技术和良好设计的不断追求有助于提高敏捷性。
  10. 简单-尽可能减少工作量的艺术是至关重要的。
  11. 最好的架构、需求和设计都源自自我组织的团队。
  12. 每隔一段时间,团队都要总结如何更有效率,然后相应地调整自己的行为。

敏捷软件开发常见方式

通过如下报告(大概是16年左右),大致上可以看到敏捷在整个开发方式的趋势,敏捷中Scrum独占鳌头

常见的敏捷开发方式如下:

敏捷开发 - 面向工程管理:极限编程(XP)
极限编程(ExtremeProgramming,简称XP)是由KentBeck在1996年提出的,是一种软件工程方法学,是敏捷软件开发中可能是最富有成效的几种方法学之一。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。极限编程透过引入基本价值、原则、实践方法等概念来达到降低变更成本的目的。

敏捷开发 - 面向过程管理:Scrum方式

Scrum是迭代式增量软件开发过程,是敏捷方法论中的重要框架之一,通常用于敏捷软件开发。Scrum包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括同项目经理类似的Scrum Master角色负责维护过程和任务,Product Owner代表利益所有者,Developer Team包括了所有开发人员。

典型的中小团队开发流程详解

一直想总结一个比较完善的开发流程,但是各个公司的规模,文化和开发方式有很大的差异;后期会加入其它公司的研发流程。

项目研发流程规范

  1. 比较适合大一点的公司和团队,需求,UI,测试,产品经理和开发独立;
  2. 采用前后端分离, 前端采用前端开发框架提供页面,后端提供数据接口等;
  3. 有完善的CI&CD环境;完善的代码分支,权限控制和分配;
  4. Scrum敏捷开发,每个Sprint为2-4周,周期根据User Story量进行调整;
  5. 这个研发流程中最好再 加入不同的部门及角色负责相应流程的标注;
  6. 以及各个阶段,各个角色所需要有的产出;
posted @ 2023-09-05 21:08  kisshappyboy  阅读(149)  评论(0编辑  收藏  举报