敏捷开发入门教程 冷不防 2022-10-01 13:58 173阅读 0赞 敏捷开发(agile development)是非常流行的软件开发方法。据[统计][Link 1],2018年90%的软件开发采用敏捷开发。 但是,到底什么是敏捷开发,能说清的人却不多。本文尝试用简洁易懂的语言,解释敏捷开发。 ![bg2019030701.jpg][] ## 一、迭代开发 ## **敏捷开发的核心是迭代开发(iterative development)。敏捷一定是采用迭代开发的方式。** 那么什么是"迭代开发"呢?迭代的英文是 iterative,直译为"重复",迭代开发其实就是"重复开发"。 对于大型软件项目,传统的开发方式是采用一个大周期(比如一年)进行开发,整个过程就是一次"大开发";迭代开发的方式则不一样,它将开发过程拆分成多个小周期,即一次"大开发"变成多次"小开发",每次小开发都是同样的流程,所以看上去就好像重复在做同样的步骤。 ![bg2019030702.jpg][] 举例来说,SpaceX 公司想造一个大推力火箭,将人类送到火星。但是,它不是一开始就造大火箭,而是先造一个最简陋的小火箭 Falcon 1。结果,第一次发射就爆炸了,直到第四次发射,才成功进入轨道。然后,开发了中型火箭 Falcon 9,九年中发射了70次。最后,才开发 Falcon 重型火箭。如果 SpaceX 不采用迭代开发,它可能直到现在还无法上天。 **迭代开发将一个大任务,分解成多次连续的开发,本质就是逐步改进。**开发者先快速发布一个有效但不完美的最简版本,然后不断迭代。每一次迭代都包含规划、设计、编码、测试、评估五个步骤,不断改进产品,添加新功能。通过频繁的发布,以及跟踪对前一次迭代的反馈,最终接近较完善的产品形态。 ## 二、增量开发 ## 迭代开发只是要求将开发分成多个迭代,并没有回答一个重要的问题:怎么划分迭代,哪个任务在这个迭代,哪个任务在下个迭代?这时,一般采用"增量开发"(incremental development)划分迭代。 **所谓"增量开发",指的是软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。** ![bg2019030703.jpg][] 举例来说,房产公司开发一个10栋楼的小区。如果采用增量开发的模式,该公司第一个迭代就是交付一号楼,第二个迭代交付二号楼......每个迭代都是完成一栋完整的楼。而不是第一个迭代挖好10栋楼的地基,第二个迭代建好每栋楼的骨架,第三个迭代架设屋顶...... **增量开发加上迭代开发,才算真正的敏捷开发。** ## 三、敏捷开发的好处 ## ### 3.1 早期交付 ### **敏捷开发的第一个好处,就是早期交付,从而大大降低成本。** 还是以上一节的房产公司为例,如果按照传统的"瀑布开发模式",先挖10栋楼的地基、再盖骨架、然后架设屋顶,每个阶段都等到前一个阶段完成后开始,可能需要两年才能一次性交付10栋楼。也就是说,如果不考虑预售,该项目必须等到两年后才能回款。 敏捷开发是六个月后交付一号楼,后面每两个月交付一栋楼。因此,半年就能回款10%,后面每个月都会有现金流,资金压力就大大减轻了。 ### 3.2 降低风险 ### **敏捷开发的第二个好处是,及时了解市场需求,降低产品不适用的风险。** 请想一想,哪一种情况损失比较小:10栋楼都造好以后,才发现卖不出去,还是造好第一栋楼,就发现卖不出去,从而改进或停建后面9栋楼? 对于软件项目来说,先有一个原型产品,了解市场的接受程度,往往是项目成功的关键。有一本书叫做《梦断代码》,副标题就是"20+个程序员,三年时间,4732个bug,100+万美元,最后失败的故事",这就是没有采用敏捷开发的结果。相反的,Instagram 最初是一个地理位置打卡 App,后来发现用户不怎么在乎地理位置,更喜欢上传照片,就改做照片上传软件,结果成了独角兽。 由于敏捷开发可以不断试错,找出对业务最重要的功能,然后通过迭代,调整软件方向。相比传统方式,大大增加了产品成功的可能性。如果市场需求不确定,或者你对该领域不熟悉,那么敏捷开发几乎是唯一可行的应对方式。 ## 四、如何进行每一次迭代 ## 虽然敏捷开发将软件开发分成多个迭代,但是也要求,**每次迭代都是一个完整的软件开发周期,必须按照软件工程的方法论,进行正规的流程管理。** ![bg2019030704.jpg][] 具体来说,每次迭代都必须依次完成以下五个步骤。 > 1. 需求分析(requirements analysis) > 2. 设计(design) > 3. 编码(coding) > 4. 测试(testing) > 5. 部署和评估(deployment / evaluation) 每个迭代大约持续2~6周。 ## 五、敏捷开发的价值观 ## 《敏捷软件开发宣言》里面提到四个价值观。 > * 程序员的主观能动性,以及程序员之间的互动,优于既定流程和工具。 > * 软件能够运行,优于详尽的文档。 > * 跟客户的密切协作,优于合同和谈判。 > * 能够响应变化,优于遵循计划。 ## 六、十二条原则 ## 该宣言还提出十二条敏捷开发的原则。 1. 通过早期和持续交付有价值的软件,实现客户满意度。 2. 欢迎不断变化的需求,即使是在项目开发的后期。要善于利用需求变更,帮助客户获得竞争优势。 3. 不断交付可用的软件,周期通常是几周,越短越好。 4. 项目过程中,业务人员与开发人员必须在一起工作。 5. 项目必须围绕那些有内在动力的个人而建立,他们应该受到信任。 6. 面对面交谈是最好的沟通方式。 7. 可用性是衡量进度的主要指标。 8. 提倡可持续的开发,保持稳定的进展速度。 9. 不断关注技术是否优秀,设计是否良好。 10. 简单性至关重要,尽最大可能减少不必要的工作。 11. 最好的架构、要求和设计,来自团队内部自发的认识。 12. 团队要定期反思如何更有效,并相应地进行调整。 ## 七、参考链接 ## ![20190612135905234.png][] * [Iterative development: the secret to great product launches][Iterative development_ the secret to great product launches], Pavlo Zinchenko * [Agile software development][], Wikipedia 作者: [阮一峰][Link 2] [http://www.ruanyifeng.com/blog/2019/03/agile-development.html][http_www.ruanyifeng.com_blog_2019_03_agile-development.html] [Link 1]: https://www.statista.com/statistics/673786/worldwide-software-development-survey-agile-development-continuous-integration-adoption/ [bg2019030701.jpg]: /images/20220118/d77c984987084920bcd704b13914fc0b.png [bg2019030702.jpg]: /images/20220118/7e77df382e9b400cb8c4afb71a99fad5.png [bg2019030703.jpg]: /images/20220118/262bab01f4824b48beee6a50c642d78f.png [bg2019030704.jpg]: /images/20220118/70e6fe17a3cc43858cd916cbbe118fbc.png [20190612135905234.png]: https://img-blog.csdnimg.cn/20190612135905234.png [Iterative development_ the secret to great product launches]: https://www.mindk.com/blog/iterative-development/ [Agile software development]: https://en.wikipedia.org/wiki/Agile_software_development [Link 2]: http://www.ruanyifeng.com/ [http_www.ruanyifeng.com_blog_2019_03_agile-development.html]: http://www.ruanyifeng.com/blog/2019/03/agile-development.html
相关 敏捷开发 为什么敏捷可以拥抱变化? ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNz 短命女/ 2022年12月11日 08:00/ 0 赞/ 10 阅读
相关 敏捷开发入门教程 敏捷开发(agile development)是非常流行的软件开发方法。据[统计][Link 1],2018年90%的软件开发采用敏捷开发。 但是,到底什么是敏捷开发,能说清 冷不防/ 2022年10月01日 13:58/ 0 赞/ 174 阅读
相关 敏捷开发 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行 Bertha 。/ 2022年07月13日 03:41/ 0 赞/ 191 阅读
相关 敏捷开发 > [敏捷软件开发宣言][Link 1] ![这里写图片描述][SouthEast] -------------------- > 知乎问题[:敏捷开发需要写哪些文档?] ゝ一纸荒年。/ 2022年06月16日 11:06/ 0 赞/ 317 阅读
相关 敏捷开发 背景 > 过去我们用合同死死地固定住需求,然后乙方千方百计的只按照合同办事,没有发挥更大的创造力,而甲方在固定的成本面前,不想多花一分钱,却不停的要求新功能。那么甲乙双方 太过爱你忘了你带给我的痛/ 2022年05月30日 08:11/ 0 赞/ 321 阅读
相关 敏捷开发 以下文章转载自知乎,暗灭-京华九月秋近寒,浮沉半生影长单. ![1240][] [暗灭][Link 1] 京华九月秋近寒,浮沉半生影长单 366 人赞同了该回答 旧城等待,/ 2022年05月27日 04:24/ 0 赞/ 273 阅读
相关 敏捷开发 Agile Process (敏捷的开发流程) 是一种软件开发流程的泛称,几项共通的特性 : 客户与开发人员形成密切合作的团队,因为客户无法于初期定义完整的规格,而开发 电玩女神/ 2022年05月08日 01:22/ 0 赞/ 314 阅读
相关 敏捷开发 Web 敏捷开发 VítorEstêvãoSilvaSouza,EspíritoSantoAv联邦大学计算机科学系。 Fernando Ferrari,S / N Goi 水深无声/ 2022年04月10日 07:19/ 0 赞/ 378 阅读
相关 敏捷开发 下面放一些link吧,自己有见解的会写出来。 [https://blog.csdn.net/iteye\_2638/article/details/82213904][htt 快来打我*/ 2021年12月21日 04:45/ 0 赞/ 411 阅读
还没有评论,来说两句吧...