敏捷开发想要解决什么问题?

Posted 知行库

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了敏捷开发想要解决什么问题?相关的知识,希望对你有一定的参考价值。


敏捷开发的实际应用,有以下几种常见的情形:

  • 很多团队想敏捷开发,但不知道该怎么上手;

  • 有的团队已经应用了一些敏捷开发的实践,然而效果不理想,不知道

    是敏捷开发的问题,还是自己实践方式不得当;

  • 有的团队听说了敏捷开发,但是并不知道它是什么。

 

什么是敏捷开发?

 

诞生背景:在2001年,瀑布模型还是主流,瀑布模型是一种“重型”的开发模式,整个流程走完通常周期很长,少则数月,多则数年。长周期导致风险增加、难以响应变化。于是由瀑布模型衍生出很多模型,试图去改善瀑布模型存在的问题,如轻量级的软件开发方法,例如极限编程(Extreme Programming, XP)、Scrum等。

 

2001年初,17位代表轻量级软件开发过程流派的领军人物聚集在一起,讨论瀑布模型这种轻量级软件开发过程的新方法。

 

但是没能达成一致,所以退而求其次,大家把认同的理念整理出来,也就是后来的敏捷宣言。这些人还一起成立了敏捷联盟。

 

      图片来源:敏捷开发宣言

 

敏捷不是一种方法论,也不是一种软件开发的具体方法,更不是一个框架和过程,而是一套价值观和原则。

 

各种敏捷框架、方法论和工具,就像是“术”,告诉你敏捷开发方式,而敏捷则是“道”,是一套价值观和原则,指导你在软件项目开发中做决策。

 

当开发做决策的时候,遵守了敏捷开发的价值观和原则,不管是不是用Scrum或者极限编程,都可以算是敏捷开发。

 

敏捷开发想解决什么问题?

 

敏捷开发就是想解决瀑布模型这样重型软件开发方法存在的问题,用一种轻量的、敏捷的方法来改善甚至是替代它。瀑布模型的典型问题就是周期长、发布烦、变更难,敏捷开发就是快速迭代、持续集成、拥抱变化。

 

敏捷开发和瀑布模型的差异

 

1. 敏捷开发是怎么做需求分析的?

 

瀑布模型的一个重要阶段就是需求分析,要有严谨的需求分析,产生详尽的需求分析文档。而敏捷开发的需求,主要来源于一个个小的用户故事,用户故事通常是写在卡片上的一句话,在Sprint的开发中,再去确认需求的细节。

 

2.敏捷开发是怎么做架构设计的?


瀑布模型在需求分析完了以后,就需要根据需求做架构设计。


而在敏捷开发中,并不是基于完整的用户需求开发,每个Sprint只做一部分需求,所以是一种渐进式的架构设计,当前Sprint只做适合当前需求的架构设计。

 

这种渐进式的架构设计,迭代次数一多,就会出现架构满足不了需求的现象,产生不少冗余代码,通常我们叫它技术债务,需要定期对系统架构进行重构。

 

3.敏捷开发怎么保证项目质量的?


瀑布模型在编码完成后,会有专门的阶段进行测试,以保证质量。


在敏捷开发的Sprint 中,并没有专门的测试阶段,这就需要开发功能的同时,要编写单元测试和集成测试代码,用自动化的方式辅助完成测试。

 

自动化测试为主的方式,质量确实有些影响。Windows 10之前,Windows的开发模式是传统的类瀑布模型,质量有很好的保障,Windows 10 开始,采用的是敏捷开发的模式,每月发布更新,稳定性稍微差一些。

 

4.敏捷开发是怎么发布部署的?

 

瀑布模型通常在编码结束后,开始部署测试环境,然后在测试阶段定期部署测试环境。测试验收通过后,发布部署在生产环境。

 

在敏捷开发中,用持续集成的方法来进行部署的,持续构建、持续发布整个过程是全自动化的。

 

该不该选择敏捷开发?

 

敏捷开发需要满足的条件:

  • 团队要小,人数超过一定规模就要分拆;

  • 团队成员之间要紧密协助,客户也要自始至终深度配合;

  • 领导们得支持。敏捷需要扁平化的组织架构,更少的控制,更多的发

    挥项目组成员的主动性;

  • 写代码时要有一定比例的自动化测试代码,要花时间搭建好源码管理

    和持续集成环境。

 

另外,敏捷开发是否适合所有的行业?如航空业、工业,我看未必。




以上是关于敏捷开发想要解决什么问题?的主要内容,如果未能解决你的问题,请参考以下文章

软工笔记|基础篇-05|08-敏捷开发要解决什么

敏捷开发 个人感想

力软敏捷开发框架能做啥方面的开发啊

京东PMO | 为你深入解读“敏捷开发”

什么叫敏捷开发?

敏捷开发方法综述