“敏捷开发”之白话篇

  敏捷的意思就是反应迅速,为什么要反应迅速?看看那么多996公司就知道了,市场变化越来越快,客户要求越来越高,为了满足用户的需求,人家一个星期发一个版本, 我们仨月才能憋出一个来,那还不被打的满地找牙?
  问题是如何才能反应迅速?先来看一个场景:
  1、残酷的现实
  软件开发有一大难题就是客户脑子中的需求难于描述出来,我们通常的应对方法是这样:
  先花上几个月整理需求, 天天和客户座谈, 画出几百页的流程图, 写出上千页的文档, 最后把客户都快搞晕了。
  然后是详细设计、开发、测试,我们强悍的技术团队开始发动,一切都严格按照计划进行,一切看起来都很完美,看来项目马上成功结束了!
  但是客户的验收测试给了我们当头一棒:这个界面怎么少了一个选项?那个界面怎么不能跳转,那个功能需要给领导一个后门,还有,我的业务规则怎么不能改?什么? 在代码中写死了?唉,你们做的系统啊,根本就不能用!
  每个人都很郁闷, 几个月的辛苦开发看来要付诸东流了。
  从这个场景中能看出的是,我们从客户那里得到的需求描述和需求文档, 其实离客户真正想要的软件还差的很远。
  在瀑布式的开发模式下,验收测试发现的问题,要想改正代价是非常高昂的。
  2、改进
  一个想法自然而然就浮现出来:为了避免到最后习惯性崩盘,能不能让客户经常性的做验收测试?
  让他们经常性的去使用一个可以工作的软件,从而告诉我们那些地方还有欠缺? 那些地方做错了?这样我们可以迅速的修改, 这样我们就会轻松多了 !
  我们可以把软件开发划分成一个个小的开发周期,例如每个周期就两三周时间,在这两周之内我们完成一个或几个功能,然后就让用户去试用,有问题立刻反馈,在下一个开发周期马上改掉。这样就可以逐步逼近客户的最终目标。
  这还带来了一个额外的好处,不用花费巨长的时间来分析,整理冗长的需求文档了。
  听起来很美是不是?但是仔细想想这里边的问题很多。
  1.  抛弃了冗长的需求文档, 但还是得描述需求啊
  需要发明一个简单的、主要用来促进客户和开发团队沟通的描述形式,  这个新的形式叫做用户故事, 这里有个用户故事的例子:
  这是一个卡片,背面还会记录下针对需求的讨论和验收标准。
  用户故事主要彰显的是: 谁做了什么事, 带来什么商业价值。
  2.  怎么决定每个小开发周期(我们称之为迭代吧)要开发的东西?
  用户故事得有估算, 得有大小,太大了一个迭代开发不完 , 还得拆分一下。
  我们需要对需求按照优先级进行排序,按照优先级从高到低的原则来开发。
  3. 不要架构设计了吗?
  一上来就按优先级选择需求, 直接进入迭代开发, 把架构师撂在一边,合适吗?
  架构工作肯定还是需要的,在正式的迭代周期开始之前需要架构设计, 但是和设计出面面俱到的架构设计不同, 我们更需要演进式的架构, 随着迭代的推进而进化。
  4. 那详细设计怎么办?
  在每个迭代开始的时候,团队在一起把这些用户故事给拆分成一个个小的任务, 这个拆分的过程就相当于详细设计了。  对于一些特别复杂的,例如算法, 当然可以写文档,帮助大家理解。
  5. 由于是迭代式开发, 这个迭代周期修改上一个迭代周期的代码在所难免, 怎么保证不破坏原有的功能? 总不能每次都手工重测一遍吧?
  这个绝对是一大难点, 答案就是自动化的回归测试,包括单元测试和功能测试。
  开发人员写代码的同时,也要写下自动化的单元测试,测试人员需要开发自动化的功能测试, 这样一旦有了代码的修改,就可以运行它们,检查现有功能有没有被破坏。
  像持续集成这样的基础设施是必不可少的,每天、每小时、甚至每次代码提交都会触发编译,打包、部署、测试这样的过程。
  6.  这么短的开发周期, 测试人员怎么测试啊?
  开发和测试需要同步进行, 当开发在澄清需求的时候, 测试需要参与, 当开发在编码的时候, 测试人员在编写测试用例,等到一个用户故事开发完,马上就可以投入测试。
  7. 看来开发、测试之间需要紧密的协作, 它们之间怎么沟通?
  肯定是面对面的沟通,有问题就跑到对方的座位那里去问,大家的座位最好在一起, 扭头就可以讨论,尽可能减少效率不高的电话、QQ/微信等工具的使用。
  开发团队每天都开一个15分钟左右的站会, 展示自己的进展和计划, 让进度保持透明,  及时暴露问题,解决问题。
  8. 客户什么时候可以做验收测试?
  随时欢迎,但是我们更倾向于迭代结束以后,这时候功能会稳定下来,我们会给客户做一个演示,告诉他这个迭代完成的工作,邀请他也测试一下软件,给我们反馈。
  当然客户可能会发现问题,甚至提出新的需求,我们表示欢迎,我们要和客户合作,而不是对抗。
  除了给客户演示之外,我们自己还会反思一下,看看有那些地方做的好,要继续保持;那些地方做的不好,要持续改进。
  估计你也明白了,这种看起来很美的迭代化开发方法实施起来挺不容易的, 如果我们给它起个名字的话, 可以叫做:敏捷软件开发。
    华为已经推出了一款基于敏捷开发的平台—— 华为软件开发云 ,它能在云端进行项目管理、配置管理、代码检查、编译、构建、测试、部署、发布等。对于各个企业来说,可以利用软件开发云的互联网连接能力,能基于需求在云端进行交流、沟通、分析,实现跨区域协同开发,实现DevOps研发模式的落地应用,可大幅度提高开发效率,缩短交付周期、提高代码质量,有效避免了项目返工。实现项目的团队评估能力,提升业务接单的可度量性。
    了解华为软件开发云 ,可扫一扫下图,关注回复“ofo”还可领取小黄车90天月卡(30+30+30)+定制超大竞技游戏鼠标垫+华为小天鹅蓝牙音箱!!
 
白话微服务 —— 大厂是怎么玩的? 项目应用了微服务之后,就代表了一种糙快猛的开发模式 微服务搭配敏捷编程,就带来了如今的996加班和严重化的内卷,因为他们能让项目开发效率快上一个台阶,从应用的发展就能看出。 上古时代的应用 用户访问请求通过各级负载均衡到达了反向代理层,反向代理层会把访问请求转到服务器集群中,这就是经典的单体应用 + 水平扩展 缺点: 牵一发而动全身 每台服务器部署的代码都一样,每一个小的改动都很有可能影响到其它的功能点,所以每次改动都要做一个全链路回归 回滚很痛苦 所有代码一起上线一起回滚,就有可能出现我写好了一 阅读详情

相关推荐

敏捷开发模式Scrum中文介绍PPT

当前非常流行的开发测试模式:敏捷开发模式Scrum的中文介绍PPT,看过之后应该对Scrum有一个很好的理解了。

敏捷开发:最通俗易懂的敏捷开发描述,一看就懂

敏捷开发(scrum)是一种软件开发的流程,强调快速反应、快速迭代、价值驱动。 Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;运用该流程,你就能看到你团队高效的工作。 敏捷开发的特点就是下面4句话: 「个体与交互」胜过「过程与工具」 「可以工作的软件」胜过「面面俱到的文挡」 「客户协作」胜过「合同谈判」 「响应变化」胜过「遵循计划」 敏捷开发(scrum)适用于竞争激烈,快速...

penggerhe的博客 5440

CLion for Mac(m1)配置GCC编译器

条件:电脑已经下载过XCode 一. 下载HomeBrew homebrew是一款macos,linux下的包管理工具,我们需要使用他来下载GCC 下载方法: 1.打开终端(terminal) 2.输入 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ps.有可能会遇到的问题 我当初下载挂了VPN,优快云上还有很多解决问题的方法,可以将错误信

supermario19的博客 7845

大白话聊聊:DevOps

有小伙伴后台私信我聊下DevOps,网上文章很多,今天我结合软件开发周期聊一下DevOps的流程。DevOps并不是什么神秘的黑科技,而是一种理念和方法论,通过优化流程、提升自动化水平,让开发和运维团队能够更紧密地合作,共同推动项目的成功。。为了实现这个目标,我们需要关注整个软件开发生命周期中的各个环节,并对其进行优化和整合。

bing_gege的博客 755

03.Linux下目录动态扩容,以分配home的部分空间给root为例

本篇文章将介绍Linux下分配home目录的部分空间给root目录。大致思路:卸载home,解除其磁盘容量占用->扩容root,增加其磁盘空间->重建恢复home操作演示环境为CentOS系统,其他操作系统例如openEuler也可作为参考。01.Linux下目录扩容,以增加root目录的磁盘容量分配为例操作系统版本如下名称版本CentOS7.6+

ChennyWJS的博客 2337

SAP Business One自定义表与字段实战:从零构建企业专属数据模型

本文详细介绍了如何在SAP Business One中创建自定义表与字段,从零构建企业专属数据模型。通过实战案例和避坑指南,帮助用户掌握业务适配、流程优化和权限隔离等关键技巧,提升系统灵活性和数据管理效率。特别适合需要扩展标准功能的SAP Business One用户。

weixin_28730927的博客 359

通俗理解DevOps

运维需要做的事情,慢慢的都沉淀到了各个平台上面,例如监控,有专门的监控组件和可视化,基础服务例如服务器,CDN,负载均衡等基础服务可以外包到云服务厂商,日志也有专门的日志工具,链路追踪也有专门的组件和可视化,还有网关等,渐渐的,只要这些都配置好了,开发也可以做运维的部分工作,毕竟开发才是最了解代码的人,哪里出了问题看看监控日志,可以最快速度定位到问题,于是DEVOPS开发模式诞生了,开发也是运维。第一,公司发展到BAT这种体量,会招很多人,JAVA,PHP,GO 技术栈都会有,需要协调技术栈;

modi000的博客 323

保姆级教程:将YOLOv8模型封装成Docker镜像,集成到CVAT实现自动标注

本文提供了一份详细的保姆级教程,指导如何将YOLOv8模型封装成Docker镜像并集成到CVAT平台,实现自动化标注。通过环境配置、模型服务化封装、Docker镜像构建与优化、CVAT平台集成等步骤,帮助开发者高效完成计算机视觉项目的自动标注工作流,显著提升标注效率。

weixin_28692817的博客 412

DevOps到底是什么?

DevOps是什么? 其实DevOps是两个英文字的缩写,Development(开发)和Operations(运维),同时DevOps其实是一个文化和概念,并不是特定指某一个做法。 这个其实和敏捷(Agile)是一个概念,敏捷也是一个文化和概念。敏捷基本核心概念是把周期缩短,通过快速开发,通过失误提前发现问题,提前做调整,也就是Fail Fast的概念。 摘抄自网络的一句话,非常有代表意义,敏捷执行下来能够带来的一个好处 所有系统都有bug,但是当bug被修复的速度超过客户能够发现和反馈的时候,就不算是b

SHUIHAN_007的博客 2018

FPGA实战:MIG IP核AXI接口DDR3读写优化指南

本文详细解析了FPGA中MIG IP核AXI接口的DDR3读写优化策略,涵盖关键参数配置、突发传输技巧及时序收敛方案。通过AXI接口优化和突发长度选择,可实现高达12.8GB/s的理论带宽,提升DDR3访问效率。文章还提供了Vivado配置实例和调试技巧,助力开发者解决FPGA内存控制中的实际问题。

weixin_29168393的博客 545

【STM32项目】基于AI技术的多功能消防机器人(完整工程资料源码)

机器人通过巡逻扫描环境空间与障碍物、定位导航、探测物体/环境进行建模/自动地图测绘、扫描火焰、获取温湿度大小、获取空气安全情况来判断当前环境地点是否安全,检测到温度过高或检测到易燃、烟雾、有毒气体或摄像头识别到火焰时能够通过高压水泵喷射器来实现火焰隔离工作,蜂鸣器进行现场鸣笛报警,同时将当前环境温湿度大小、空气情况、环境地图、是否安全信息,将各个传感器来接收获取到的信息,实时发送到用户手机中的微信小程序,实现与用户远程监视功能,用户同时也能通过手机与电脑远程下发命令来操控机器人来实现交互功能

嵌入式技术开发 1万+

敏捷、DevOps和嵌入式系统测试

如今人们在提到“测试”时,通常指代的是软件测试,而本文着墨对象则为嵌入式系统测试。嵌入式系统测试,特指对嵌入式系统中的软件部分进行测试,与软件测试有所不同。

digi2020的博客 426

[QMT量化交易小白入门]-四十九、中小盘策略是否还有未来,市值再平衡策略,年化收益率124%

该策略旨在通过定期再平衡持仓,保持投资组合中股票数量恒定(),并优先持有市值较小的股票。具体来说,策略每两天(period = 2)进行一次再平衡,根据当前市值对持仓进行调整,以实现微盘股的投资目标。中小市值策略对资金量要求有限制,资金量太大由于流动性不足,滑点可能较大,资金量太小,可能不能达到10-20只持仓,来分散风险,10-100w可能是比较理想的,后续可以根据波动率动态调仓,或波动率大于一定值时触发再平衡加入ROE或其他财务指标,或者研发投入强度大的专精特新企业,进行组合优化。

木头大左的博客 1184

项目管理--敏捷开发

什么是敏捷开发? 敏捷它不是一套方法论,过程,或者框架 用最近网络上比较火????的一句话来描述它:啥也不是!因为敏捷是一种思想,结合具体的实践会有不同的定义,很多公司的团队都说自己在使用敏捷,但是真正拿出来的时候,发现每个团队的工作模式都不太一样。因此,敏捷仅仅是一种思想,没有具体的定义,而大家所听说过的,所使用过的敏捷,仅仅是这个思想的一种实践而已。 敏捷,拼音是mǐn jié,意思指反应(多指动作或言行)迅速快捷。如:敏捷地跳上敞篷车,敏捷地翻身上马,敏捷地躲过攻击。出自《汉书·酷吏传·严延年》

weixin_41603244的博客 929

第9.3章 从CMake基础到自动驾驶实战:构建跨平台C/C++项目的全能指南

《CMake构建实战:项目开发卷》精要指南 本文系统梳理了许宏旭《CMake构建实战》核心内容,涵盖C++构建全流程: 基础构建:详解MSVC/GCC编译器使用、Makefile编写及静态/动态库构建方法 CMake核心:解析语法结构、变量控制、文件操作等关键命令,阐述项目全生命周期管理 实战应用:通过快速排序、手写数字识别项目演示现代CMake实践,特别针对自动驾驶领域给出多传感器融合、SLAM等场景的CMake配置方案 特色价值:本书填补了官方文档实例不足的空白,提供300+代码示例,是掌握工业级C++

行知SLAM 1343

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

如何应用项目管理软件进行敏捷开发管理

在国内众多的主流项目管理软件中,我们选取一家使用UniPro的制造业企业作为迭代样本。

LCDPyyds的博客 1530

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

敏捷转型大白话指南 第一集 概述

注:原文首发于微信公众号敏捷变革中心。欢迎关注,新文发布抢先读。 本系列文章旨在用家常话解读图书《Scrum精髓-敏捷转型指南》,希望大家由此学习不犯困,妈妈再也不用担心你的学习。 闲言少叙,开整。 第一章 引子  2000年6月21日,作者走上了人生巅峰,出任Genomica公司执行副总裁。同时,娇妻诞下健康男婴一枚。真是美好的一天,直到他收到CEO的邮件。邮件内容很简单,紧急消息,早上...

MarvinChen003的专栏 1029

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

一文理解什么是DevOps,通俗易懂白话文

devops是什么devops概念提出单体架构+瀑布模式分布式架构+敏捷开发模式微服务架构+DEVOPSdevops深度理解devops实现相关工具devops平台搭建工具 devops是什么 ❝ DevOps维基百科定义 DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。 ❞ 这里先给出维基百

阿甘的码路 2万+

Scrum大白话总结

Scrum 大白话总结 Scrum是敏捷过程中比较著名的一个过程框架,被很多团队采用。 Scrum使用迭代的开发方式,每一次迭代中,都会经历一个“计划->实施->验证->反思”的过程。这是一个开发过程,同时也是一个对项目的认识过程,这样的设计其实也是遵循了哲学的认知论.   名词解释: Sprint:每一次迭代称为一个Sprint。 Backlog:其实就是需求列表。 S

one_lamp的博客 1492

敏捷转型大白话指南 第二集 Scrum框架

书接上回,今天咱们讲,Scrum框架 概述 Scrum不是标准化过程,不能保证你在有条不紊地按照步骤一步一步顺序执行后,就能在制定的时间和预算内产出让客户满意的高质量产品。(大白话,这东西,生搬硬套不好使。) 相反,Scrum是一个用于组织和管理工作的框架。Scrum框架建立在一套价值观,原则和实践之上,在这个框架的基础上,各个组织可以添加相关工程实践特有的实现方式以及在实现Scrum实践时...

MarvinChen003的专栏 664

敏捷转型大白话指南 第三集 敏捷原则

书接上回,今天咱们讲,敏捷原则   在深入了解Scrum之前,先理解推动并影响Scrum方法的基本原则是很有帮助的。这篇文章将帮助大家理解Scrum与各种传统产品开发方式的差异,为后续解读打下基础 。 把敏捷原则与传统开发原则进行对比,目的不是为了说明Scrum好而计划驱动的顺序开发不好。这两种方法都是专业开发人员工具箱中的工具。没有不好的工具,只有使用时机不当的工具。(大白话,火箭炮是武器...

MarvinChen003的专栏 608

软件项目管理实战:Walston-Felix与COCOMO Ⅱ模型在敏捷开发中的成本优化应用

本文探讨了在敏捷开发环境中,如何有效结合Walston-Felix模型与COCOMO Ⅱ模型进行软件项目成本优化。通过将Walston-Felix的快速宏观估算与COCOMO Ⅱ的分阶段精细导航相结合,构建了“宏观锚定,微观调整”的动态成本控制循环,帮助团队在拥抱变化的同时,实现对项目预算的可靠预测与管理。

g5h6i7j的博客 765

Scrum大白话

Scrum是敏捷过程中比较著名的一个过程框架,被很多团队采用。 Scrum使用迭代的开发方式,每一次迭代中,都会经历一个“计划->实施->验证->反思”的过程。这是一个开发过程,同时也是一个对项目的认识过程,这样的设计其实也是遵循了哲学的认知论.   名词解释: Sprint:每一次迭代称为一个Sprint。 Backlog:其实就是需求列表。 SM:Scrum Master,Scru

Jackxin Xu IT技术专栏 1328

白话透解验收标准(AC)与完成标准(DoD)的区别

Accept criteria 与 Definition of Done是敏捷开发中的两个概念,容易混淆。 AC是针对每个需求定义的。 DoD是针对所有需求,任务,迭代,交付定义的。 打个比方解释二者的区别: 需求1:晚饭吃饱。 验收标准AC: 1 牛肉+蔬菜+啤酒; 2 18点到19点之间完成。 需求2:午饭吃饱。 验收标准AC: ...

麦哲思科技 7410
上一篇: 十个最有“钱景”的IT技能 你掌握了哪个?
下一篇: 让开发者相见恨晚?!华为云软件开发云实现云上敏捷开发
devopscsdn
博客等级 码龄10年 124粉丝 205原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值