敏捷开发-互联网大厂们都在用的软件开发模式

前言

近些年随着中国移动互联网的高速发展,几乎所有互联网公司和软件开发公司都在实践敏捷开发,那敏捷开发究竟是什么,相比于传统的瀑布开发有什么好处。对于小白程序员来讲,非常有必要了解何为敏捷开发。
请添加图片描述

什么是敏捷开发

维基百科中是这样解释敏捷开发的 :

敏捷软件开发(Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用。

我的理解:

敏捷开发就是面向真实的用户需求,持续迭代,小步快走,拥抱变化,保持灵活,以更低的风险,更高的效率,更好的质量,交付出更有价值的产品。

这里有一份关于敏捷开发的资料,点击这里访问链接即可,无任何套路

什么是敏捷方法

敏捷开发有许多不同方法,这些方法都符合敏捷原理但侧重点各有不同,有的敏捷方法专注于实践如XP,有的敏捷方法专注于工作流程管理如Scrum,Kanban,有的支持需求规范和开发如FDD,目前在中国互联网行业实践较多方法是Scrum,Kanban,XP。

  • Scrum

    Scrum 是一个用于开发和维护复杂产品的框架 ,是一个增量的、迭代的开发过程。在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2到4周。

  • Kanban

    Kanban是把敏捷的过程和产品进行可视化的方法。Kanban的目的在于可视化工作流程,将所有的Task进度显示看板上,每个人都可以了解当前任务的进度。

  • XP

    极限编程(ExtremeProgramming,简称XP)是一个轻量级的、灵巧的软件开发方法,同也是一个非常严谨和周密的方法。它将复杂的开发过程分解为一个个相对比较简单的小周期,通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。

  • Crystal

    水晶(Crystal)方法论由Alistair Cockburn在20世纪90年代末提出。他把开发看做是一系列的协作游戏,而写文档的目标是帮助团队在下一个游戏中取得胜利。水晶方法的工作产品包括用例、风险列表、迭代计划、核心领域模型,以及记录了一些选择结果的设计注释。

  • FDD

    FDD含义是功能驱动开发。首先对整个项目建立一个整体模型,然后通过两周一次的“设计功能->实现功能”的迭代方式来完成项目开发。

  • Lean

    精益(Lean)管理的思想起源于丰田公司,旨在创造价值的目标下,通过改良流程不断地消除浪费。这种方法现已被广泛用于生产制造管理,对于IT系统建设,精益开发的常用工具模型是价值流模型。

敏捷方法Scrum的迭代流程

Scrum 是一个用于开发和维护复杂产品的框架 ,是一个增量的、迭代的开发过程。在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2到4周。在Scrum中,使用Product Backlog来管理产品的需求,Product Backlog是一个按照商业价值排序的需求列表,Scrum团队总是先开发对客户具有较高价值的需求。Scrum团队从Product Backlog挑选最高优先级的需求进行开发,挑选的需求在迭代计划会议上经过讨论、分析和估算得到相应的任务列表,我们称它为Sprint Backlog。

  • 迭代前

    1. Product Backlog

      产品负责人编写需求卡,维护一个可渐进,已排序,较清晰的产品需求清单列表。

    2. IPM

      迭代计划会议,简称IPM(Iteration Planning Meeting),确定本次迭代范围需求并评估工作量。

    3. Sprint Backlog

      开发团队负责将需求卡拆分成Sprint任务清单,拆分后的任务用点数(1/2/3/8)代表该任务的潜在工作量。

  • 迭代中

    1. 每日站会

      定点,定时,人齐,会短
      团队成员依次更新任务卡的状态,昨天做了什么?今天要做什么?遇到哪些困难、阻碍、风险?

    2. 迭代进度跟踪

      跟踪任务卡的状态,通常用Jira等项目管理工具。

      分析中->待开发->开发中->开完完成待测试->测试中->测试完成->功能验收->生产发布

  • 迭代后

    1. Sprint Review Meeting

      Sprint评审会议,部分团队成员参加,一是做Sprint交付版本的验收,二是总结和完善后续Sprint的开发。

    2. Sprint Retrospective Meeting

      Sprint回顾会议,全体团队成员参加,匿名反馈本阶段“做得好”与“做得差”的事项,然后全体成员投票选举出最需要提高的3项,根据投票结果制定出行动来提高不足之处。

敏捷开发VS传统瀑布开发

瀑布开发模型是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。

瀑布流开发敏捷开发
假设前提需求非常确定,极少变更需求不明确,变更频繁
适合的项目确定性强的产品确定性不强,需要市场及时反馈的产品
优点1. 提交做好所有规划安排,每个时间节点的任务明确 2. 流程工作明确,按时间节点完成1. 反馈周期短,迅速响应需求变化 2. 需求容错率高,修正成本低
缺点1. 响应变化的成本高,越后期越高 2. 对前期规划阶段要求极高,前期规划耗时长 3. 反馈周期长1. 需要频繁沟通 2. 对需求评估和节奏控制要求高
敏捷开发的良好实践

  • TDD

    测试驱动开发(Test Driven Development)简称TDD,是一种软件开发过程,它依赖于在软件完全开发之前将软件需求转化为测试用例,并通过对所有测试用例重复测试软件来跟踪所有软件开发。

  • Refactor

    重构(Refactor)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和可维护性。重构改变代码的结构,而不是代码的行为。重构有助于防止代码腐烂,产品发布后,代码腐烂是典型的综合征,如果允许代码腐烂,过不了多久系统就需要重写,通过不断地重构,并且在一些小问题变成大问题前不断地修复,保持我们的应用程序不会腐烂。

  • CI

    持续集成(Continuous Integration)简称CI,持续集成强调开发人员提交了新代码之后,立刻自动的进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。

  • CD

    CD有两层含义,包含持续交付(Continuous Delivery)和持续部署(Continuous Deployment)

    持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的类生产环境中,交付给质量团队测试,如测试通过代码随时可以进入生产环境。持续部署是指当交付的代码通过评审之后,自动部署到生产环境中,持续部署是持续交付的最高阶段。持续交付也与持续部署容易混淆,持续部署意味着所有的变更都会被自动部署到生产环境中,持续交付意味着所有的变更都可以被部署到生产环境中,但是出于业务考虑,可以选择不部署。如果要实施持续部署,必须先实施持续交付。

  • DevOps

    DevOps是Development和Operations缩写,传统的开发过程中与运维相关的部分比如打包发布,程序部署会花费较长时间,往往开发人员和运维人员之间有着一定信息差,两者沟通效率低。为了解决这个问题,使开发部署的效率提高,就有了DevOps这理念,DevOps核心理念就是快速、自动化、持续交付,目的就是为了迅速响应市场变化。

结语

敏捷开发在互联网和软件开发领域已经逐渐演变为行业中的主流开发模式,将产品开发引向了快速迭代、小步快跑的路线上。敏捷开发让企业拥抱需求变化,企业为了产品能更快响应市场需求变更,在敏捷开发过程中又引入了持续集成,持续交付和持续部署的方法来更高效的进行敏捷开发。
许多程序员不喜欢敏捷开发,认为需求变更会降低开发效率和开发体验,但无论喜欢与否,敏捷开发前进的步伐不会停歇,瀑布开发模式将逐渐退出舞台。了解敏捷开发的基本概念和流程,相信一定会对刚进入软件开发领域的程序员有一定帮助。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值