敏捷开发的26条至理名言 快速迭代式开发使用方法总结

软件工程领域项目管理的敏捷开发实践 在传统“瀑布模型”主导的软件开发时代,“需求变更”曾是项目经理的“噩梦”——一份需求文档需反复确认3个月,开发6个月后客户突然说“想要个新功能”,最终导致项目延期、成本超支甚至失败。据Standish Group统计,2022年全球软件项目中仅26%能按时按预算交付,而采用敏捷方法的项目成功率高达64%。本文将聚焦“如何用敏捷开发应对变化”,覆盖敏捷核心理念、主流框架(Scrum)、关键实践(用户故事、迭代)及实战落地。 阅读详情

敏捷开发真正的问题是什么?其实敏捷主要还是一种观念,一种意识,通过人来推动。

本文总结了26条有关敏捷开发的关键原则,如何快速迭代式开发,供读者参考借鉴,以指引敏捷软件开发团队。


1、完整地干完一件事后在开始另一件事:用厨房比喻来说就是:“先上这道菜,再开始做下一道”。软件开发的最大问题就是同时开始几件事情,这将不可避免的造成某些工作被废弃,从而造成浪费。专注于一件事;完整地实现其功能;运行测试;编写文档;签入所有,把这当做一项工作完成,然后再开始下一件事。

2、不要破坏构建:非常明显,但必须被包含在任何软件开发建议清单中。程序员在签入之前采取所有合适的预防措施进行测试,则永远不会破坏构建。如果构建被破坏,通常是因为有人偷懒了。

3、在用例需要之前,不要实现程序:当你实现一个特定的类,你应该在脑海中有一个特定的用例,同时应该只实现用例需要的方法。你可以考虑该类潜在的功能,写入注释之中,但直到用例真正需要时,才应去实现它。

4、在用例需要之前,不要添加数据成员:同上一条,不过这是从类的数据成员角度考虑的。似乎显而易见地,“客户”记录需要“送货地址”,但直到有用例明确需要送货地址,才应该实现它。

5、不要害怕做决定,不要害怕改变先前的决定:敏捷开发是关于相应变化和快速相应的。开发初期,你没有完整的信息。你应该尽可能的推迟决策,直到你必须做出决策的时候。没有信息,无法支持你的决定,相反,在有效信息的基础上做出最佳决定。有了新的信息,不要害怕改变先前的决定。(某些“恐龙”称之为摇摆不定,但我称之为响应变化的环境)

6、持续学习如何改善质量:这项工作永不会结束,因此你应经常留意可以改善的事情,并收集质量问题被确认和处理的案例。

7、度量、度量、度量:敏捷开发帮助处理未来不确定性问题,但对于过去应没有不确定性。测试应持续运行,每次运行的性能表现应被度量和记录。

8、为人而设计,而不是系统:开发者常常因技术而使设计误入歧途。绝不要忘记设计的最终目标,那就是帮助人们完成工作。

9、测试是产品的一部分:很多开发者和经理认为产品就是交付给客户的东西,而其它所有东西都不那么重要。测试应被认为是产品实实在在的一个部分,值得在设计时仔细考虑,甚至,在很多情况下,和产品一起交付给客户。(后半部分有争议,但是内建测试作为软件交付的一部分仅仅占用无关紧要的空间,却在必要时提供显而易见的好处,这种方式应该被考虑。)

10、在代码之前编写测试:测试本身可以用来阐释真正需要的设计。设计的缺陷常常是通过测试用例被发现的。想想看,编码之前,通过这些用例,可以节约多少时间。但是,为用例1编写测试,然后编码,然后再开始用例2。

11、消除浪费:坦率的说,这是另一个必须包含在任何开发原则清单中的陈词滥调,因为它太重要了。发现浪费并消除它,这项工作没有尽头。消除任何不能增加客户价值的东西。如果你不能确认客户价值,那很可能你并不需要它。

12、建立对构建破坏立即响应的文化:要明白当构建被破坏,会影响项目中的每一个人,因此,最重要的是确认核心代码被构建并合理测试。我曾见过有些团队放任失败测试持续数月,因为那是其它人的工作。每个人都痛苦,但没人采取行动。想反,必须形成共识,那就是小工作能为团队获得大的回报。

13、所有团队成员应理解客户需要:大型的复杂项目定然被分解为独立的团队,进而被分派给开发人员。但是,不应在此范围内做的是,失去关注最终项目真正用户的期望和目标。

14、把相关定义放在一起:组织代码以使高度相关的事情在一起,或在一个类中。这是标准面向对象设计封装原则。理想情况下,所有的类外的代码不需要知道内部工作细节。一些开发者乐于将细节扩散到多个文件中以便按不同方式组织,如所有相同的数据类型放在一起,或者按字母顺序组织。例如,在他们要用的不同包中,将所有常量放在一个类里,这增加了不必要的程序复杂性。指导原则应该是按相关性分组从而隐藏复杂性。

15、始终在签入之前运行测试:这条准则帮助你满足“不要破坏构建”准则。

16、过早的优化时万恶之源:引用高德纳被证实的话:代码应编写良好以避免微观层面的浪费,但独立方法层次以外的优化应等待整个程序基于真实的最终用户使用情景的压力测试的进行。仅仅基于对代码的静态理解,直觉地判断对整体性能什么是重要的,结论几乎总是错误的。相反,度量整个系统的行为,辨别1%真正影响性能的代码,并专注于此。

17、减少积压未完成的编码任务:当开发人员开始一个用例,会发生成本,跟已修改却未完成和测试的代码相关联。留着未完成的变化几天或几个星期会累积成巨大的重做风险。考虑每个估算需要一天的三个任务,同时开始这三个任务,并在3天内同时进行,意味着9个单位的累计成本。但是顺序进行每个任务,完成一个再开始下一个,意味着只有3个单位的成本。这个不是直觉,直觉告诉我们,在工作完成之前,我们不妨同时做三件事情。但软件不像物理构造。短小,快速和完整的工作不仅减少认知的负担,而且减少未完成工作与他人未完成工作之间冲突的可能。

18、不要过度强调代码的通用性:这就是著名的“YAGNI-你不会需要它”。当编写一个特定类的时候,程序员总喜欢认为该类可能用于其它用途。如果现在的用例需要这些用途,这很好,但是,程序员经常考虑未被提及的用途,或者那些实际上永远不需要的。(这常常让我联想到经典的周六现场滑稽短剧,关于某产品既是地板蜡,也是糕点上的甜食。)

19、两行代码能行,就不要用三行:有人阅读时,简洁的代码总能获得回报。但不要将代码压缩到难以阅读。更小的,编写良好的代码比之冗长的,编写华丽的代码更容易维护,也更容易发现错误。始终尽可能简化,但别过分。

20、不要用行数来度量代码:完成特定任务所需的代码行数,不同的程序员之间和编码风格之间差异很大。代码行数不能告诉你代码完成和质量的些许东西。代码质量可以相差200倍,这足以抵消代码行数的作用。应该统计功能用例的数目。

21、持续地重新设计和重构:谨慎地使用这条准则,因为有些代码脆弱而难以改变,但通常你不应害怕更改代码以符合实际使用情况。一个数据成员过去可能是整数,但是当一个用例要求它是一个浮点数时不要害怕去改变它。

22、删除死代码:涉及到大量不能很好理解的代码是,有个倾向是不自找麻烦。一个例子就是往类中增加新的方法去替换另一个,开发人员常常会留下旧的方法以防万一。必须努力检查方法是否必须,如果没有证据表明它是必须的,那就删除它。最糟糕的就是注释掉大量的代码,并把它留在那儿。注释掉的代码应在测试通过后尽快删除,当然应在签入之前。因此,某个时候你发现一些东西可能并不需要,付出小小的努力去验证并消除此代码能让代码基线更易维护。

23、不要发明新语言:程序员喜爱使用文本文件配置在运行时驱动功能。没有配置文件能够不编译而改变程序的行为。XML的出现推动了无休止的专门定制“脚本语言”的浪潮,以使功能能被最终用户定制而不需要编译。这种推理的缺陷在于,离开某个特定实施的环境,操作行为几乎从来没能很好地精确定义,同时,那些脚本语言只对那些对问题领域代码的内部运行有深入了解的人有用。因此,不具备详尽内部知识的真实最终用户永远不可能知道预料复杂的命令组合的效果需要什么。脚本语言有用,也不能被消除,但是设计者必须采取非常非常保守的态度,尽可能使用现有的语言,避免新的发明。

24、在你准备实现并测试前,别做设计:你应该有行进的总体思路和对系统架构的概览,但是,直到开发迭代允许设计被实现和测试前,不要做详细设计,不要编写功能实现的详细说明。详细设计应当只涉及到处理目前的用例。软件开发中最大的浪费源于将时间花在设计那些不需要,或者因为某些错误的设计假定而需要重新设计的事情之上。

25、设计是可塑的:不像物理制造,软件可以很容易地获得显著改变。事实上,有大量证据证明软件本身比描述软件的设计说明书更容易改变。此外,软件比说明书更有效地传达设计。因此,你应该把时间用于直接实现设计,让客户能看见设计的细节。如果你犯错并改变设计,改变软件比改变规格更容易。但最重要的是,客户看到代码运行后,你关于客户想要什么的信息大为完善。

26、花时间编写发现和报告异常情况的代码中的问题的完整描述:程序员往往很懒惰,抛出粗浅描述错误的异常。认为他们永远是唯一会看到这个问题的人,并且他们从含糊的描述会记得这个问题的意思。但实际上,在客户支持环境,不准确或者不完整的错误报告比其它原因浪费更多的时间。编写每个错误消息,就好像你正向某个正好走进房间并且没有此代码经验的人解释状况。客户和客户支持团队毕竟没有此代码的经验。

这些介绍没有特定的顺序,欢迎留言讨论我忽略的原则,或者(如果是这种情况)你不认同的敏捷开发原则。
【GNSS】软件定义战争,但美军仍在“瀑布式”开发 软件能力决定武器性能,但美军的采办流程仍为“造铁疙瘩”服务。软件采购路径使用率极低,多数项目困在传统开发模式中。 ps:看完报告感觉就是再给国防部的老爷叭叭说要优化流程创造就业等等 阅读详情

相关推荐

多尺度仿真软件:Copasi_(26).项目管理与团队协作

项目总结和回顾是项目管理中的重要环节,可以帮助团队总结经验教训,改进后续项目。项目报告:编写项目报告,总结项目的成果和不足。报告内容可以包括项目目标、开发过程、遇到的问题和解决方案。团队贡献可以通过邮件、会议或公司内网进行表彰。

kkchenjj的博客 674

敏捷宣言、原则及SCRUM敏捷实践

敏捷宣言、原则及SCRUM敏捷实践。

weixin_38697817的博客 1866

快速迭代项目流程图

主要是整理出一个项目需求从进来,到开发,到测试,到上线的全部流程,以及责任划分的流程梳理,适合巨大多数互联网公司,特别是快速迭代敏捷开发一类的项目管理流程

《敏捷宣言》

一、《敏捷宣言》四大价值观 1、个体以及互动而不是过程和工具 2、可用的软件而不是完成的文档 3、客户合作而不是合同谈判 4、应对变更而不是遵循计划 二、《敏捷宣言》十二大原则 1、我们的最高目标是,通过尽早持续交付有价值的软件来满足客户的需求。 2、欢迎对需求提出变更,即使在项目开发后期也不例外。敏捷过程善于利用需求变更,帮助客户获得竞争优势 3、要经常交付可用的软件,周期从几周到几个月不等,且越短越好。 4、项目实施过程中,业务人员与开发人员必须始终通力协作。 5、要善于激励项目人员

u010011737的专栏 5470

STM32F4用FSMC驱动AX58100 EtherCAT从站芯片,保姆级配置流程与避坑指南

本文详细介绍了STM32F4通过FSMC接口驱动AX58100 EtherCAT从站芯片的完整配置流程,包括硬件连接、时序优化、协议栈移植及TwinCAT主站集成。针对工业自动化场景,提供高性价比的实时控制解决方案,特别适合机械臂、CNC机床等精确同步应用,并分享关键调试技巧与性能优化方法。

weixin_27869497的博客 306

测站坐标系、地心非惯性系、经纬高互转

目录 一、经纬高转直角坐标系互转 1.1 python代码 二、wgs84转cgcs2000的转换矩阵如下 虽然cgcs2000与wgs84差别很小,但是我比较较真,还是做了两个坐标系的转换。 一、经纬高转直角坐标系互转 此处可参考链接(百度文库用手机浏览器可以打开看全部的): (1)第四章地球椭球及其数学详解 (2)第四章椭球数学变换16节 (3)大地测量学基础[1](7)(控制) 转换公式如下: LBH转XYZ: a为半长轴,e为偏心率 XYZ转LBH: a为半长轴

${王小贱}的博客 2万+

敏捷.0.敏捷宣言、原则、概念-结构化记忆

敏捷宣言的12条原则的结构化记忆

助力开发者进阶为高效技术管理者,记录沉淀打造可复用的工程方法论体系 4538

超声波探伤技术在风电叶片检测中的实战应用(含设备选型指南)

本文深入探讨了超声波探伤技术在风电叶片高空检测中的实战应用,重点分析了相控阵超声、激光超声等技术的选择与挑战。文章提供了详细的设备选型指南,对比了奥林巴斯、GE及国产品牌的优劣,并解读了典型缺陷的超声图谱特征,旨在帮助风电运维工程师安全、高效地完成叶片内部损伤的无损检测与预防性维护。

desk3的博客 885

敏捷宣言:四大核心价值观和十二条原则

敏捷四大核心价值观: 个体和互动高于 流程和工具 工作的软件高于 详尽的文档 客户合作高于 合同谈判 响应变化高于 遵循计划 也就是说,尽管右项有其价值,我们更重视左项的价值。 敏捷十二条原则: 我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。 欣然面对需求变化,即使在开发后期也一样。善于掌控变化,帮助客户获得竞争优势。 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。 业务人员和开发人员必须相互合作,项目中的...

sunxianhua0532的博客 8829

使用Hyper-V使用下载下来的macOS安装引导安装macos

然后关闭工具返回安装界面选择第二个reinstall,选择119g那个硬盘。我的资源上传了:macOS Monterey on Hyper-V.7z。设置固件的启动顺序,引导安装盘放到第一位,mac安装110g放第二。选择disk utility格式化那个110g。下载解压的macos引导挂载到虚拟硬盘。其他设置安全禁用,检查禁用,集成都选中。新建一个虚拟硬盘装mac,110g。

viviliving的专栏 3023

手把手教你学simulink(43.2)--光伏发电场景示例:基于Simulink开发一个光伏发电系统仿真模型:采用神经网络控制策略进行优化

需求分析光伏发电系统(Photovoltaic System, PV)是将太阳能转换为电能的重要手段,广泛应用于分布式发电、并网发电和离网供电等领域。随着光伏技术的发展,如何提高光伏发电系统的效率和稳定性成为研究的重点。传统的控制策略(如PID控制器)虽然简单易实现,但在复杂工况下(如光照强度变化、温度波动等)难以达到最优性能。因此,引入先进的控制策略,如神经网络控制(Neural Network Control, NNC),可以显著提升系统的响应速度和鲁棒性。

MHD0815的博客 438

4.敏捷宣言 - 12大原则

《敏捷宣言》背后有十二个原则,如图2-3所示,句首关键字可帮大家抓住要点。 (http://agilemanifesto.org/iso/zhchs/principles.html)。 (1)我们最重要的目标,是通过持续不断地及早交付有价值的软件来使客户满意。 ● 客户满意和有价值的软件是关键词。要确保我们开发的软件产品能够给客户带来真正的价值,这完全取决于在开发期间与客户的密切合作。产品需求管理是确保客户需求在开发期间被正确理解的关键。我们应该集中精力在对客户最有价值的工作上。 ● 尽早并持续交

记录项目交付的日常 2582

TIA protal与SCL从入门到精通(1)——SCL编程入门

SCL语言是由Pascal而生的结构化程序语言,与梯形图相(LAD)比,SCL语言的灵活程度更高,易于编写控制算法。 本教程基于的平台如下 软件:TIA 15.1 CPU 1516 (1)直接创建纯SCL的程序块儿; (2)在LAD/FBD中在插入SCL程序段。 在程序段中直接右击插入即可,但是插入的程序段并不能完全使用SCL语法,GOTO等跳转指令就不能使用。在SCL中一般不能使用绝对地址进...

苦走一口田 7万+

敏捷开发

快速迭代,循序渐进 敏捷开发宣言—— 个体和交互 胜过 过程和工具 可以工作的软件 胜过 面面俱到的文档 客户合作 胜过 合同谈判 响应变化 胜过 遵循计划 虽然右项也有价值,但是我们认为左项具有更大的价值。 http://blog.youkuaiyun.com/alvanchen/article/details/5749872 (敏捷开发流程总结) htt

cyp798752401的专栏 1165

YOLO26改进105:全网首发--使用BiFPN改进特征金字塔网络

YOLOv6 v3.0在目标检测领域实现重大突破,通过改进网络架构和训练方案显著提升性能。该版本在COCO数据集上展现出优越表现:YOLOv6-N达到37.5% AP/1187 FPS,YOLOv6-S实现45.0% AP/484 FPS,均超越同类检测器。大模型YOLOv6-M/L分别达到50.0%/52.8% AP,L6版本更创下实时检测新纪录。关键技术包括RepVGGBlock、BiFusion等新型模块,通过多分支融合和高效重参数化设计提升性能。研究团队已验证各改进模块有效性,代码已开源。

AIcurator的博客 95

错误代码105(ERR_NAME_NOT_RESOLVED)详解与解决方案

错误代码105表示"",当您的浏览器无法将网站域名转换为IP地址时就会出现此错误。这是最常见的网络连接问题之一,通常与DNS(域名系统)有关。

欢乐打代码! 1万+

2020年9月26日-02-软件工程-工程化思维+瀑布模型+敏捷开发

此博客用于记录2020年9月26日每日分享, 软件工程中的集中常见模式,瀑布模型,敏捷开发等 日期:2020年9月26日 主题: 讨论讨论怎么使用软件工程的思想来解决问题 软件工程中的集中常见模式,瀑布模型,敏捷开发等 文章目录软件工程常见的开发模型瀑布模型敏捷开发小结 软件工程   软件工程是一门用工程化方法解决软件项目问题的学科,其本质也是一门工程学科,这门课的知识在学完后,不仅可以应用在软件项目中,还可以应用于日常生活中遇到的一些问题。 Everything is a project。  .

qq_33820545的博客 622

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

敏捷开发,快速验证:45天让智能体跑起来的落地方法论

长达数月的开发,等来的却是无法匹配业务需求的“半成品”——这是智能体项目ZUI常见的“死亡陷阱”。本文提出一套颠覆性的“敏捷实施”方法论:摈弃“交钥匙”工程,采用模块化搭建与快速迭代,通过4个阶段、45天的快速推进,让智能增长力加速兑现。

KLWL_2022的博客 394

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

「敏捷开发」适合什么样的团队

如今互联网行业,每天有无数的公司倒下,同样也有无数的公司站起来。 越来越多的人将「敏捷开发」搬上台面大谈特谈,或是为了抢占市场先机、或是为了不断修正需求方向、或是表现出相当的创业精神进而“骗取”资本热钱。 有太多太多的原因让人们追捧「敏捷开发」,这些追捧既有目的性极强的也有无脑跟风的。我在好多论坛或者交流群也见过有人问关于自己的团队适不适合「敏捷开发」的问题。 所以今天,我来说说

inny100_100的博客 988

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

「敏捷开发」适合什么样的团队?

如今互联网行业,每天有无数的公司倒下,同样也有无数的公司站起来。越来越多的人将「敏捷开发」搬上台面大谈特谈,或是为了抢占市场先机、或是为了不断修正需求方向、或是表现出相当的创业精神进而“骗取”资本热钱。有太多太多的原因让人们追捧「敏捷开发」,这些追捧既有目的性极强的也有无脑跟风的。我在好多论坛或者交流群也见过有人问关于自己的团队适不适合「敏捷开发」的问题。所以今天,我来说说究竟什么样的团队才适合「

pmcaff2008的博客 560

INSPIRED启示录 读书笔记 - 第26章 合理运用敏捷方法

十大秘诀 1、产品经理即是产品负责人,他代表了客户的需求,因而需要与产品开发团队保持密切的联系,协助督促开发进程,及时解决出现的问题 2、使用敏捷方法绝不等于省略产品规划。规划周期应该适度缩短,反复迭代,采用轻量级的机会评估方法替代冗长的市场需求文档 3、产品经理和设计师的工作进度应该比开发团队领先一两个迭代周期,确保你们有足够的时间攻克难题。始终让开发人员参与评估产品设计和产品原...

197

高效的敏捷测试第十一课 敏捷测试分析、策略和方法

第26讲:基于上下文驱动思维的测试分析 从这一讲开始,我们就进入了第 5 部分内容的学习:敏捷测试分析与计划。在这一部分你将学到:测试需求分析、测试风险的识别、测试策略及测试计划的制定。今天先从基于上下文驱动的测试分析开始。 关于上下文驱动的测试思维,我在第 4 讲中简单介绍过,就是我们要关注项目的上下文(所处的环境、所要满足的条件),并认识到上下文是会变化的,测试策略和方法要根据上下文来制定,并根据其变化及时调整、不断优化。上下文驱动的测试思维是主要的敏捷思维方式之一,也是敏捷模式下测试分析的基础,需要专

fegus的博客 2856

中台之上(十):业务架构设计“笨重”,它能跟敏捷沾边吗?

传说中和现实中的双模开发“天下武功唯快不破”。电影《功夫》中火云邪神这句台词可谓深得互联网时代竞争的要旨,也不乏业内人士常常感叹,一个产品的成功可能只是领先对手一周甚至两三天的上市时间,产品创新速度、市场响应速度越来越被企业重视,但这两个指标似乎都是大型企业,特别是传统行业中大型企业的弱项。所以,不少人都致力于教大象跳舞,不断有关于软件过程、项目管理的概念应运而生。比如,Gartner在2014年...

weixin_34413065的博客 98

南京工业大学2024软件工程复习指导

好的软件有哪些属性P8上方,p5上方可接受性、可依赖性信息安全性、效率、可维护性(采用那种模型可以比较好的来具备这些属性)什么是软件工程这个活动什么样的模型更好去维护?为什么?(偏开放性)敏捷开发模型优势:敏捷模型强调快速迭代、持续交付和响应变化。在每次迭代结束后,都会产出可工作的软件,这有助于及时收集反馈并调整方向。由于其高度的灵活性和重视代码质量、测试驱动开发的实践,敏捷团队能够更容易地应对需求变更和进行维护工作。

qq_61683188的博客 990
上一篇: Android 4.2 上Wi-Fi Display(Miracast)的开启和使用 无线显示
下一篇: Android 一张图片(BitMap)占用内存的计算 图片内存优化
___小星星丶
博客等级 码龄16年 164粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值