敏捷开发-互联网时代的软件开发方式

2023-05-16

一、什么是敏捷开发

敏捷开发简单的描述为:是一种应对需求快速变化的软件开发方式。

敏捷开发的核心思想就是小步快跑、不断迭代,在一次次的迭代升级中完成【小目标】最终完成那个【大目标】。正因为敏捷开发的这种不断迭代升级的开发模式,使得其很适合当前瞬息万变的互联网产品。

我们先来看一张图:

假设市场或者客户要求企业制造一个代步工具,并且最好是汽车,交付时间很紧迫,你有两种选择:

第一种:如图1

先出设计稿为汽车,设计通过后开始施工,先造轮胎->底盘->发动机->外壳->内饰->喷漆->打磨抛光->验车->交付,当你没日没夜的终于赶在工期前自信满满的把车交到客户手上的时候,客户却告诉你,我一年前想买一辆汽车,现在觉得这太low了,还是要一辆特斯拉 Model 3吧,这时你的一脸懵逼何处安放。。。

第二种:如图2

先做辆酷炫滑板车,满足部分需求;再改造成时尚单车,满足客户上班骑行的需求;再改造成哈雷摩托,满足客户周末拉风的需求;最后依据客户迭代升级成敞篷酷炫的电动特斯拉跑车,各方不同客户满意

如果是你,会选哪种?

其实如果把造车换成开发一个软件项目的话,那么第一种方式我们称为传统的瀑布式开发;第二种方式就是我们的敏捷式开发。

请注意上述例子中有两个关键词:需求变更和迭代升级

由于现实生活中,客户的需求是随着市场在不断变化的,因此那种一张图纸做到底的方式显然无法适应客户频繁变化的需求;通过迭代升级,每一次迭代都能够交付一个最小可用的产品(MVP),客户可以基于此产品继续提出新的需求来不断完善。

如上图所示,一个大的项目在敏捷开发的模式中被分解成多个【小目标】,通过完成所有这些小目标,一个大的项目随之完成。

二、互联网时代为什么需要敏捷开发?

这个问题总结下来有两点:快速试错和拥抱变化

微信张小龙在WXG大会上提到:

我们今天可以想一些与众不同的点子,然后我们可以很快就看到效果,因为我们可以很快把它上线了,然后可以去验证,如果不对就下线,如果还有改进余地,下个版本再去改它。这是一个能够持续实现你的想法的过程”。

张小龙所说的上线、验证、改进的持续循环流程实际上就是一个快速试错和拥抱变化的过程。 当今的互联网,市场变化日新月异,在不断变化的市场中取得成功就要拥有快速试错的能力。

下面是滴滴打车最新的客户端截图。从图中可以看到,滴滴支持的全部车辆服务已经覆盖到了快车、小巴、出租车、顺风车、专车等多达10种服务,而大众刚刚熟悉滴滴时,滴滴仅有出租车、快车和顺风车三种车型。

试想如果滴滴从一开始就计划设计出10种车型再开始上线推广,那估计现在满街跑的就该是Uber或者快的或者什么滴而不是滴滴了。商机转瞬即逝,正是在一次次的上线中,从车主、用户及市场的反馈中不断调整迭代,才造就了今天的滴滴,而这正是敏捷思想的精髓所在。

三、有哪些公司在使用敏捷开发

可以说,在如今的软件开发领域,敏捷开发模式已经成为主流,从BAT等互联网一线大厂到中小创业公司,从传统的银行、保险等企业,再到北大、清华的图书馆,都在使用敏捷开发。

国外使用敏捷开发的公司更不用说, 微软、Google、Facebook的工程师们都已采用敏捷开发的模式进行软件项目的开发。

四、敏捷开发适合哪些项目?

实际上,敏捷开发比较适合时间要求紧急项目复杂高需求比较新颖充满未知团队自主性强的项目。

传统的瀑布模型无法在如此短的时间内做出快速反应,保持对项目的紧张性和专注性是敏捷开发的优势之一。

装修就是一个很好的敏捷项目实践,举个例子:

小明是一名Web开发程序员,经过多年奋斗终于在帝都买了一套100平米的豪宅,接下来的头等大事就是装修。 装修可以看成一个很典型的使用敏捷开发的项目:

紧迫感--恩,装修的工期是非常有限的,因此必须保证在规定时间内完成

复杂度--装修过的人懂的,丈量、设计、采购、装修等等环节,每个环节之间的配合都很关键

团队自主性--全家总动员,热情节节高,你懂的~

我们可以把每个环节想象成一次小的迭代过程,通过完成一次次的迭代最终完成整个项目。

五、相比传统,为何高效

敏捷开发讲求Idea的快速落地、高效实践。

怎么理解这句话呢?我们还是先来看一下敏捷开发和瀑布式开发的流程图,左下方是瀑布式开发,右上方是敏捷开发。

首先是人员成本:

试想你是一个程序员,如果你工作在瀑布模型中,那么当需求人员在与客户沟通需求中,需求文档还没有出来,由于瀑布模型以文档驱动,此时你是处于空闲状态的,你后面的测试兄弟也是如此;而在敏捷模式中,每个开发测试人员都是全程参与每个迭代的,因此人员充分参与所有过程。

其次是沟通成本:

在传统的瀑布模型中,需求、开发、测试人员都在不同的Team中,假设开发要与需求沟通,那么要跨Team去沟通,时间和空间无法保证同步,因此沟通成本较高;而敏捷开发团队中的人员都在一个Scrum Team中,团队不大,沟通起来成本很小。

最后是风险成本:

对于瀑布模式,最大的风险成本来源于一旦开发过程中有需求变更或者严重的问题,所有流程都要回滚到上个阶段推倒重来,且越到后期风险越高,修改的成本越大;而对敏捷模式,可以很灵活轻松的面对需求变更,有任何bug、需求更改可以放到下一个迭代去做,大大降低了开发过程中的风险成本。

六、以人为本

敏捷开发的十二条原则中有一条叫做:激发个体的斗志,以他们为核心搭建项目。

敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,在敏捷开发过程中,人是第一位的,过程是第二位的,当然也对个人的能力和自主性提出了更高的要求

七、敏捷开发流程总览

说了这么多,来看一张真正的敏捷开发过程SCRUM的完整流程图吧:

这张图描述了一个敏捷开发项目(Scrum)中的团队成员、流程、交付结果及主要事件

附为大家推荐的几个敏捷开发网站:

敏捷开发宣言:agilemanifesto.org

Scrum Guide:scrumguides.org

Scrum Primer:Short Introduction to Scrum

文章来自于特邀嘉宾极客学院高端培训品牌魔鬼程序员教学总监

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

敏捷开发-互联网时代的软件开发方式 的相关文章

  • 敏捷开发-互联网时代的软件开发方式

    一 什么是敏捷开发 敏捷开发简单的描述为 xff1a 是一种应对需求快速变化的软件开发方式 敏捷开发的核心思想就是小步快跑 不断迭代 xff0c 在一次次的迭代升级中完成 小目标 最终完成那个 大目标 正因为敏捷开发的这种不断迭代升级的开发
  • SOA是什么?

    写这样的blog很容易被人砸砖头 而且我现在在专心做BPEL的研究 http hongsoft iteye com admin blogs 287353 也没有必要现在趟这个混水 不过想想 还是有话要说 定义 SOA是一种做架构的范式 这个
  • 愿每一个人的创造力都能被激发:剪映Mac版来了!

    在移动端上线18个月后 剪映有了PC版 11月27日 视频创作工具剪映正式推出Mac专业版 Windows版计划于明年2月上线 去年秋天 剪映的移动端上线3个月即登顶App Store中国区免费榜 本着打造简单好用的产品 降低视频创作门槛的
  • 敏捷:什么是用户故事(User Story)

    摘要 一件用户通过系统完成他一个有价值的目标 买一罐饮料 的事 这样的过程就叫 用户案例 user case 或者 用户故事 user story 本文描述了敏捷开发的技巧 如何以用户故事管理项目 什么是用户故事 user story 假定
  • 外包干三年,必废!

    点击上方 Java基基 选择 设为星标 做积极的人 而不是积极废人 源码精品专栏 原创 Java 2020 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 Rock
  • Scrum认证Scrum Master(CSM)认证课

    课程简介 Scrum是目前运用最为广泛的敏捷开发方法 是一个轻量级的项目管理和产品研发管理框架 旨在最短时间内交付最大价值 根据2021年全球敏捷状态报告 Scrum及Scrum衍生方法的应用占比达到81 在企业的敏捷转型历程中 Scrum
  • Python测试驱动开发(TDD)

    Python测试驱动开发 TDD 前言 TDD是一种敏捷开发模式 而不是测试方法 测试很难 难在坚持 一直做下去 现在花时间编写的测试不会立即显出功效 要等到很久以后才有作用 或许几个月之后避免在重构过程中引入问题 或者升级依赖时捕获回归异
  • 敏捷开发流程

    一 敏捷起源 2001年2月 Martin Fowler Jim Highsmith等17位著名的软件开发专家齐聚在美国犹他州雪鸟滑雪圣地 举行了一次敏捷方法发起者和实践者的聚会 在这次会议上面 他们正式提出了Agile 敏捷开发 这个概念
  • 敏捷开发系列之旅 第三站(认识FDD特征驱动开发)

    上篇文章中 我们探讨了 什么是XP极限编程 以及极限编程的管理思想 核心价值观等等 在敏捷开发之旅的第三站 我想要和大家一起分享FDD特征驱动开发方法 特征驱动开发 Feature Driven Development 还是老规矩 讨论之前
  • 什么是Scrum?如何实施Scrum(敏捷开发)以及敏捷工具

    什么是Scrum Scrum是一个敏捷开发框架 它是一个增量的 迭代的开发过程 它被广泛应用于敏捷软件开发 在Scrum中 开发过程由若干个短的迭代周期组成 每个迭代周期称为一个Sprint 那么Scrum如何实施呢 Scrum实施过程可分
  • 敏捷--寻求更小发布集

    鱼骨思维 核心主线 优先级模型 差异化功能 具有明显竞争优势的功能特性 搅局功能 瞄准并用于叫板差异化产品的功能特性 快速低价或者强势营销的方式进入市场 降成本功能 可以降低组织成本的功能 基础功能 参与市场竞争的必要性基础功能 mvp理解
  • 敏捷方法论的前世今生- 敏捷历史,敏捷宣言与敏捷12条原则

    敏捷方法论的前世今生 敏捷方法的历史 敏捷一词来源于2001年初美国犹他州雪鸟滑雪胜地的一次敏捷方法发起者和实践者 他们发起组成了敏捷联盟 的聚会 迭代和增量开发方法最早可以追溯到二十世纪三十年代非软件项目 二十世纪六十年代美国航天局水星计
  • 敏捷开发中asp.net MVC的开发次序感受(先开发View?先开发Model?先开发Controller!)

    转载自 http blog csdn net cheny com article details 6592493 各种思路和顺序都试过 最开始时先编写Model 毕竟Model是所有一切的基础 再说没有Model Controller里边用
  • 一文说清产品经理、项目经理、产品负责人的区别

    以下为译文 原文链接 https nealcabage com product vs project vs program management 太多的团队无法区分Product Manager Product Owner Program
  • 敏捷开发“松结对编程”实践之三:共同估算篇(大型研发团队,学习型团队,139团队,师徒制度,敏捷设计,估算扑克,扑克牌估算)

    转载自 http blog csdn net cheny com article details 6587277 本文是 松结对编程 系列的第三篇 之一 之二 之三 之四 之五 之六 之七 之八 此系列之九及之后文章请见栏目总目录 估算是经
  • 敏捷开发系列终极之旅 第六站(像橄榄球运动一样富有激情的SCRUM)

    由来 为什么是Scrum Scrum原本的意思是橄榄球运动的一个专业术语 指 在橄榄球比赛中 双方前锋站在一起紧密相连 当球在他们之间投掷时他们奋力争球 在敏捷开发系列中 把一种开发流程命名为Scrum 其实就意味着 这种敏捷开发的流程 就
  • 解析敏捷开发流程之Scrum:3个角色、5个会议、12原则

    本文主要从Scrum的定义和目的 敏捷宣言 Scrum中的人员角色 Scrum开发流程 敏捷的12原则等几方面帮助大家理解Scrum敏捷开发的全过程 一 Scrum的定义和目的 Scrum是一个用于开发和维护复杂产品的框架 是一个增量的 迭
  • ScrumAlliance对Agile Coach的能力定义了五个部分

    1 Assess Discovery Diretion 评估 发现 指导 评估团队 发现问题 提出指导意见 2 Balance Coaching Consulting 平衡教练和咨询的工作 提供咨询方案 也提供教练的工作 3 Catalyz
  • IT自由职业者的成功秘诀

    原文作者Greg Jorgensen是一位典型的程序员 他从1974年开始编程 曾在耐克和苹果等公司任职 他专攻修复和完善受损 被遗弃和 半生不熟 的Web应用程序 尤其是后台语言是PHP的网站 我从事自由职业已有十余年了 有时候在我有全职
  • 【Easy-RL】中科院-清华-北大3位作者贡献的200页强化学习总结笔记

    深度强化学习实验室 官网 http www neurondance com 论坛 http deeprl neurondance com 编辑 DeepRL 核心贡献者 王琦 杨毅远 江季 关于本书 Easy RL 由开源组织 Datawh

随机推荐

  • arp欺骗

    ARP工作的过程 原理及现象 ARP全称是地址解析协议 xff08 address resolution potocol xff09 xff0c 是在仅仅知道主机的IP地址时确定其物理的地址的一种协议 ARP协议的工作过程 场景 xff1a
  • LeetCode中stdout结果是正确的,输出没有

    没有返回值 xff0c 加一行return
  • gstreamer学习(一) gstreamer-rtsp-server环境安装

    gstreamer rtsp server环境安装 Linux环境下 两种方式 xff1a 第一种方式 xff0c 通过官网安装 xff08 如果是Linux环境 xff0c 可以直接通过软件包工具进行安装 xff09 xff0c 点击进入
  • 用C++打开指定网址

    用C 43 43 打开指定网址原理 system 命令 就像这样 xff1a span class token macro property span class token directive hash span span class t
  • 项目遇到的各种异常抛出及解决方法

    项目遇到的各种异常抛出及解决方法 xff1a 1 java lang NumberFormatException xff1a 类型格式异常 第一次遇到的异常抛出原因及解决方法 xff1a 项目运行没有问题 xff0c 各种接口能正常查询出数
  • 【STC8学习笔记】STC8A8K64S4A12精准延时函数设置

    在设置单片机精准的延时函数的时候 xff0c 给大家一个方法 xff0c STC ISP有一个延时函数计算器 xff0c 可以计算出想要的延时 我的例程也是基于这个软件生成的 xff0c 我生成一个1ms和1us出来 xff0c 剩下的我再
  • vc版本与vs版本对应关系

    vc版本与vs版本对应关系 最近在整理之前代码 xff0c 用cmake编译一直报错 xff0c 忘记了opencv3 1 0不支持vs2019 xff0c 所以在这里总结下vc版本与vs版本对应关系 VC版本号 VS对应版本 vc6 VC
  • cmake编译依赖opencv的c++库

    前面一篇主要讲了c 43 43 项目怎么在本地配置opencv过程 xff0c 这种方式缺点就是只能在开发着本地环境编译 xff0c 换台电脑就会出现环境配置问题 接下来主要讲解 xff0c 使用cmake编译 xff0c 生成一个依赖op
  • c++ stl 迭代器iterators(traits编程技法)

    文章目录 1 1 迭代器设计思维 stl关键所在1 2 迭代器是一种smart pointer1 3 迭代器相应型别 xff08 associated types xff09 1 4 traits编程技法 stl源代码门匙1 4 1 val
  • 如何用算法把一个十进制数转为十六进制数-C语言基础

    这一篇文章要探讨的是 如何用算法实现十进制转十六进制 并不涉及什么特别的知识点 属于C语言基础篇 在翻找素材的时候 xff0c 发现一篇以前写的挺有意思的代码 xff0c 这篇代码里面涉及的知识点没有什么好讲的 xff0c 也没有什么特别的
  • 关于 Qt使用QJsonObject解析失败的问题。

    1 问题 在QJsonObject转 toInt toLongLong 等类型时 xff0c 转换失败 但是转toString xff08 xff09 没有任何问题 列如 xff1a 解决方法 xff1a 这样 xff0c 就可以结局问题
  • char 和 string 的相互转换

    一个char字符转为string span class token keyword char span ch span class token operator 61 span span class token char 39 A 39 s
  • C++STL标准库学习总结/索引/学习建议

    前言 xff1a 如果刚刚开始学习STL标准库 xff0c 不知道从哪里入手学习的话 xff0c 建议去中国大学mooc平台 xff0c 先学习北京大学郭炜老师的 程序设计与算法 xff08 一 xff09 C语言程序设计 xff08 ht
  • Python 调用API接口方式,通过http.client调用api接口,远程调用flask接口方式

    一 创建接口 xff08 如果调用别人的接口 xff0c 跳过此条 xff09 如果没有api xff0c 首先自己写一个接口玩一下 xff1a 必备知识 xff1a 一个项目最基本的文件 xff0c 接口run py文件 config文件
  • git tag和branch的区别

    tag 和branch的区别 Git tag是一系列commit的中的一个点 xff0c 只能查看 xff0c 不能移动 branch是一系列串联的commit的线 git tag的用法 我们常常在代码封板时 使用git 创建一个tag 这
  • 结构体对齐计算(超详细讲解,一看就会)

    想要计算结构体大小 xff0c 咱就先要清楚结构体内存对齐的规则 xff1a 1 结构体的第一个成员直接对齐到相对于结构体变量起始位置为0处偏移 2 从第二个成员开始 xff0c 要对齐到某个 对齐数 的整数倍的偏移处 3 结构体的总大小
  • RTK差分编码

    一 概念 DCB xff08 Differential Code Bias 差分码偏差 xff09 是全球卫星导航系统 xff08 GNSS xff09 中 xff0c 通过不同信号得到的观测值之间存在的系统性偏差 DCB是由卫星和接收机硬
  • 详解JAVA的事件监听机制和观察者设计模式

    一 事件监听机制的三要素 事件源 事件监听器 xff0c 事件对象 监听器一般是JAVA接口 xff0c 用来约定可以执行的操作 二 事件监听机制简要说明 事件源注册一个或者多个事件监听器 xff0c 事件源对象状态发生变化或者被操作时 x
  • Nginx控制IP(段)的访问策略配置

    Nginx engine x 是一个高性能的HTTP和反向代理web服务器 xff0c 同时也提供了IMAP POP3 SMTP服务 有着负载均衡 动静分离等强大的功能 xff0c 而且还有众多三方插件来满足应用要求 这里重点介绍nginx
  • 敏捷开发-互联网时代的软件开发方式

    一 什么是敏捷开发 敏捷开发简单的描述为 xff1a 是一种应对需求快速变化的软件开发方式 敏捷开发的核心思想就是小步快跑 不断迭代 xff0c 在一次次的迭代升级中完成 小目标 最终完成那个 大目标 正因为敏捷开发的这种不断迭代升级的开发