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

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(使用前将#替换为@)

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

  • 敏捷开发

    这两个圆圈表示不同的视角上的敏捷实践 xff0c 包括开发者视角和项目管理的视角 接下来从里向外进行介绍 xff0c 因为有些实践我了解得不清楚 xff0c 如果下面有哪些说得不对的地方也请大家指出 Test Driven Developm
  • 敏捷开发-互联网时代的软件开发方式

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

    每个人都希望软件质量更高 速度更快 对现代软件开发团队的要求是巨大的 从竞争和市场压力的增加 功能和复杂性的增加 到对产品质量 安全性和可靠性的更高期望 敏捷开发方法常常受到追捧 因为它能更快地响应变化 更好地实现客户需求 但是 敏捷和De
  • SOA是什么?

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

    在移动端上线18个月后 剪映有了PC版 11月27日 视频创作工具剪映正式推出Mac专业版 Windows版计划于明年2月上线 去年秋天 剪映的移动端上线3个月即登顶App Store中国区免费榜 本着打造简单好用的产品 降低视频创作门槛的
  • 国外程序员推荐的好书

    1 代码大全 史蒂夫 迈克康奈尔 2 程序员修炼之道 3 计算机程序的构造和解释 4 C程序设计语言 5 算法导论 6 重构 改善既有代码的设计 7 设计模式 8 人月神话 9 计算机程序设计艺术 10 编译原理 龙书 11 深入浅出设计模
  • 在外包干了三年,我废了..… 不吹不黑!

    往期热门文章 1 用鸿蒙跑了个 hello world2 还在写大量 if 来判断 试试用一个规则执行器来替代它3 Spring Boot中的线程池 你真的会用么 4 重磅推荐几个接私活的脚手架利器 5 MySQL究竟是怎么执行的 看完终于
  • 外包干三年,必废!

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

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

    作业1 作业2 作业3 a 成本偏差CV EV AC 10000 进度偏差SV EV PV 20000 成本绩效指数CPI EV AC 1 11 进度绩效指数SPI EV PV 0 83 b 进度绩效指数小于1 落后于进度 正的成本偏差 完
  • 敏捷开发系列之旅 第三站(认识FDD特征驱动开发)

    上篇文章中 我们探讨了 什么是XP极限编程 以及极限编程的管理思想 核心价值观等等 在敏捷开发之旅的第三站 我想要和大家一起分享FDD特征驱动开发方法 特征驱动开发 Feature Driven Development 还是老规矩 讨论之前
  • 存档用【20考研】国家线/34所自划线 集合!【计算机和软件专业】

    为了同学们更方便快捷的了解34所院校的自划线和国家分数线 小编在这里开了一个专区 提供给同学们计算机 软件工程等相关专业的考研分数线 这是20考研的数据 我发现当时没有发 现在发一下存档用的 不发没办法设置链接 什么是A类 什么是B类 可以
  • 敏捷开发“松结对编程”实践之二:计划与设计篇(大型研发团队,学习型团队,139团队,师徒制度,设计评审,预想陈述,共同估算,扑克牌估算)

    转载自 http blog csdn net cheny com article details 6581741 本文是 松结对编程 系列的第二篇 之一 之二 之三 之四 之五 之六 之七 之八 此系列之九及之后文章请见栏目总目录 新人其实
  • LR.net敏捷软件开发平台核心功能详解

    软件开发 程序员就是不断地跟变量 方法 类 接口这些东西打交道 随着开发经验的积累 很多程序员会发现 虽然最终开发出来的软件每个都不一样 但是在开发过程中用到的很多东西却又是相通的 例如 每个软件的底层差不多都需要进行增删改查 文件操作 权
  • 敏捷方法论的前世今生- 敏捷历史,敏捷宣言与敏捷12条原则

    敏捷方法论的前世今生 敏捷方法的历史 敏捷一词来源于2001年初美国犹他州雪鸟滑雪胜地的一次敏捷方法发起者和实践者 他们发起组成了敏捷联盟 的聚会 迭代和增量开发方法最早可以追溯到二十世纪三十年代非软件项目 二十世纪六十年代美国航天局水星计
  • 利用Scrum敏捷工具管理敏捷产品迭代Sprint Backlog

    什么是Sprint Backlog Sprint Backlog是Scrum的主要工件之一 在Scrum中 团队按照迭代的方式工作 每个迭代称为一个Sprint 在Sprint开始之前 PO会准备好产品Backlog 准备好的产品Backl
  • 炒了8年的概念,到底该如何理解DevOps这个词?

    如何实施DevOps成为众多企业迫切面临的问题 本文作者刘相 有10多年的从业经验 他结合自身企业实施DevOps的经验 梳理出DevOps在企业的组织 技术 流程等方面的最佳实践与价值 以及如何搭建DevOps平台来支撑DevOps的落地
  • 解析敏捷开发流程之Scrum:3个角色、5个会议、12原则

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

    1 Assess Discovery Diretion 评估 发现 指导 评估团队 发现问题 提出指导意见 2 Balance Coaching Consulting 平衡教练和咨询的工作 提供咨询方案 也提供教练的工作 3 Catalyz
  • 敏捷开发概述

    一 历史背景 20世纪60年代 软件规模小 已作坊式开发为主 20世纪70年代 硬件快速发展 软件规模和复杂度不同以往 引发软件危机 20世纪80年代 引入瀑布模型 以过程为中心分阶段控制软件开发 20世纪90年代 软件开发过程日益变重 开

随机推荐

  • 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 在一次次的迭代升级中完成 小目标 最终完成那个 大目标 正因为敏捷开发的这种不断迭代升级的开发