敏捷开发学习总结(1):传统序列式软件开发方法的缺点,以及迭代开发方法的选择

什么是敏捷开发,敏捷开发落地指南之迭代排期 摘要:到底什么是才是敏捷开发,网上的各有各的说法,从本质上讲,敏捷开发的一个重要目标是建立持续价值交付的能力。这种能力最终必须服务于业务的创新,促进业务的成功。别再说敏捷开发搞不起来了,本篇文章我们先从「如何开展一场高效的迭代排期会」聊起。 阅读详情

大部分公司仍使用传统瀑布模型(或序列式开发方法)进行开发

我所工作过的公司,以及我身边的朋友工作所在的公司,再加上招聘时从求职者那里所了解到的其他一些公 司的开发过程,
基本上都是使用传统的软件开发
模式 ,类拟或者就是瀑布开发模式,这种模式有如下特点:

1) 将项目的生命周期明确地划分为几个阶段,完 成一个阶段才进入下一个阶段。

2) 在项目初期希望细化所有的需求,并希望在一个阶段将需求固定后不再改变。

3) 在需求定义完毕后,在编码之前进行较详细的预 先设计,完成所有或者大部分的设计工作才开始编码。

4) 每一个阶段需要产出大量的文档作为下一阶段的输入。



传统瀑布开发 模式有哪些缺点?


由于现代软件系统的功能和设计越来越复杂,市场需求变化较快,所以 瀑布开发模式所要求的严格地完成一个阶段再进入下一个阶段被认为是太过理想化,原因有如下一些:


1) 现代大部分项目,寄望于在某一个阶段将需求固定是不现实的,太多的诱因会引起需求的变化了,例如:

    1a) 没有真正的用户参与需求定义过程,定义的需求可能很难符合最终用户 的工作习惯。

      1b) 就算把需求定义好给到最 终用户,让最终用户去确认,需求也有改变的风险,原因是用户在看到可运行的系统之前,一切都是假想,有不合理的地方他也不能完全看出来,我就假设这个用户 很认真地配合需求的确认,并假设大部分需求能在这个阶段确认了,但一些非功能性的需求用户是没有办法体现到的,例如性能、操作的流畅度等。 这就像给你一本iPhone的手机说明书,再给你一本其它智能手机的说明书,让你去评价哪一个手机更优秀,除了iPhone外观、 界面漂亮点外,你可能真的看不出iPhone到底有什么突出的优点值得这么多年轻人追棒,直到你真正拿在手上用时,体会了iPhone操作流畅的爽快感, 以及爽心悦目的窗口动态效果时,你才能体会它的与众不同之处。

    1c) 竞争者、市场需求在不断变化,用户的需求也在跟着市场进行变化,特 别是研发性的项目,“用户”与研发部之间,不像一些非研发性质的项目需求的变更有合同来约束。


2) 接下来的设计阶段假设需求已经确定,但如果需求在项目后期还会有较大变化的风险,那么早期就做较详细和较完整的设计工作可能是不适当的。


3) 那么,假设需求能够确定,设计是否能够确定呢?我的理解是,只有在我们对所在的技术领域非常熟悉的情况下才有可能,怎样才算对技术领域非常熟悉呢?

我的理解是就像一些做信息化项目的小企业,他们为A企业开发了OA办公系统,再为B企业开发相拟的 系统时,所用的技术几乎是一样的,只是业务有一些异同而以。

但如果是研发性质的公司,常常需要涉足一些陌生的技术领域,你在投入人力进入这些功能的预研之前,你很难去细化这一部分的设计,但这 些技术的预研工作通常又需要很长的工作时程,可能需要经历较长的项目周期,所以说,要在项目初期就细化好完整的设计可能会事与愿违。

4) 当使用瀑布模型(或序列开发模式)时,如果需求与用户的设想出现了偏离,这 种错误将会贯穿整个项目周期,设计受需求的影响,代码受设计的影响,直到项目接近完成,将产品交付给用户使用测试时,错误才被用户提出,这时项目已处于尾 声,为迟已晚。



如何解决传统瀑布开发模式存在的问题?


针对传统瀑布开发模式 所存在的问题, 业界提出的解决方法就是应用迭代开发方式,而敏捷开发更是在迭代开发的基础上,作了进一步的改进,敏捷开发方法由于它应用迭代和增量的开发模式,所以可以 看作是经过改进的迭代开发方法。


敏捷开发提出了以下的一些原则:
1) 假设需求总是会变化的,并欢迎需求的变化,因为需求的变化可能意味着可以提升产品的商业价值。
2) 设计是演进式的,并要保持简单设计和弹性设计,以便能快速响应需求的变化,而需求变化总是会引起设计的腐化,因此,经常性的对代码进行重构是必须的。
3) 短期持续交付可运行的系统给用户,目的是尽早取得用户的反馈。
4) 更多原则可参考书籍:<<敏捷软件开发:原则、模式与实践>>。


近年来,随着敏捷开发思想的提出,以及UP(Unified Process,统一流程) 、敏捷UP、Scrum 和XP(极限编程实践) 等一系列的实践方法得到应用,迭代、增量的开发模式得到了更多的赞誉声音,目前,最为热门的是以Scrum和XP进行组合的敏捷开发方式,已经被腾讯、华 为、上海贝尔等一些大公司所采用。



迭代、增量的开发模式 是如何进行的?

迭代开发模式会将项目周期分为多个迭代来完成,每一个迭代只实现一小部分功能, 完成一次迭代时就将系统给到用户进行演示或测试,进而及早得到用户的反馈来改进需求和设计,每一次迭代也需要经历需求分析、设计和编码和测试等多个活动, 但通常是轻量级的,项目的整个周期可能要进行十多次或更多这样的迭代。

那么,迭代和增量开发模式又是如何进行的呢?下面作一下简述:
1)    项目初期和我们现用的方法一样,会定义好产品设想以及功能列表,并对产品功能排好优先级,但与传统的开发模式不同的是,这个阶段不会去细化所有需求。
2)    根据优先级,挑选一小部分需求进行细化,项目初始阶段通常挑选高风险的、决定核心架构的、业务性质重要的功能需求来细化。
3)    针对细化的一部分需求进行设计和编码,得到可运行的软件然后交付给用户,或给用户演示并收集反馈。
4)    根据用户的反馈修改需求,并提交新版本的软件给用户,直到用户满意。
5)    重复 2~4,直到完成所有的功能。2~4 被称为一次迭代,每次迭代大约需要数周,不宜太长,越短越好,每个项目可能要经历十多次迭代。
6)    其它活动略



瀑布模型 就一无是处吗?


瀑布模型存在多年,很多项目是用它来开发完成的, 一般是这么认为,如果项目的需求可以比较稳定,开发团队对技术领域非常熟悉,从而设计可以直截了当、理解透彻,则瀑布maybe是可行的。

关于项目如何在瀑布模型(序列开发)和迭代之间进行选择的一些建议,可参考<<代码大全 2>>一 书中,关于序列开发与迭代开发之间的选择的这个章节。


本文总结:

并不是说我们选用某种开发模式,或者更前进的开发技 术,就能保证项目走向成功,我们应该要做的是,参考业界的一些成功的实践经验,不断地对我们所用的方法进行检讨,合理地调整我们的开发方法,使在现有的开 发资源的情况下发挥得最好。




开源处理器Rocket的分支预测机制研究与性能评估(二) Rocket是基于RISC-V指令集架构的开源处理器,具有分支预测功能,其实现了GShare分支预测机制,在分析Rocket处理器分支预测处理过程、分支预测实现原理的基础上,利用模拟器进行了性能测试,并依据测试结果,对Rocket处理器分支预测参数配置给出建议。 阅读详情

相关推荐

MediaCreationToolW11:Windows11系统升级与修复利器

在日常使用Windows11系统的过程中,我们可能会遇到一些棘手的问题,比如系统更新时出现异常导致无法成功更新,或者系统本身出现异常需要进行无损修复。此外,当我们的电脑尚未升级到Windows11,而我们又希望进行升级时,一款高效且可靠的工具就显得尤为重要。接下来,MediaCreationToolW11将开始下载Windows11的安装文件,并创建Windows11介质。在“选择你要执行的操作”界面中,选择“ISO文件”。此时,你可以使用你的账户登录系统,并开始使用全新的Windows11系统了。

nntxthml的博客 2407

递进迭代敏捷

Level1.规范的编码能力 Level2.解决问题的思维方式 Level3.整体构架的深刻理解 Level4.对计算,存储等基本元素精髓的认知 Level1.规范的编码能力 1.规范编码能力 2.复用代码能力 3.简化代码能力 4.安全编码能力 1.仔细阅读和实践大厂的编程语言规范,如《谷歌/华为Java编程规范》 2.仔细阅读工作中自己和别人的代码,发...

weixin_30877181的博客 134

基于 MATLAB 的综合能源系统建模案例 

电平衡约束:P_{gt}(t)+P_{grid}(t)-P_{eb}(t)-P_{load}(t)=0,其中 P_{grid}(t) 为与外部电网的交互功率(正表示购电,负表示售电)。- 电锅炉的热输出功率 Q_{eb} 与输入电功率 P_{eb} 的关系为:Q_{eb}=\eta_{eb}\times P_{eb},其中 \eta_{eb} 为电锅炉的热效率。- 燃气轮机的余热回收功率 Q_{gt} 与发电功率也存在一定关系,例如:Q_{gt}=c\times P_{gt},c 为余热回收比例系数。

qq_57128262的博客 1395

敏捷迭代

敏捷迭代 是一种项目管理的核心思想 项目开发以用户需求为核心,小步快跑,不断迭代,敏捷迭代相对于传统的瀑布流势开发来讲,会把我们的产品拆分为多个项目模块,每一个项目模块之间是独立的,而且还会有交集,每一个独立的模块都可以作为一个项目,交付于我们的客户。 瀑布流势开发会把我们一个大的项目拆分为多个阶段,每一个新的阶段的开发,一定是基于,上一个阶段的结果而进行的,当所有的阶段都完成后,才能够交付于我们的客户。耗时长节奏慢效率低。 在敏捷迭代里面一定要记住几个名词,user stories用户故事,一个大的产品需

m0_61361434的博客 1330

单目视觉定位:深入解析PNP算法在机器人导航中的实战应用

本文深入解析了PNP算法在机器人单目视觉定位中的核心原理与实战应用。通过拆解坐标变换四步,详细阐述了如何从二维图像点反求相机三维位姿。文章结合OpenCV的solvePnP函数,提供了算法选择、参数调优及结果后处理的实用指南,并针对机器人导航中的特征匹配、尺度不确定性等挑战,给出了鲁棒性优化与实时性平衡的解决方案。

weixin_29083649的博客 419

HFSS实战(三)——过孔via TDR仿真

在上一讲中,主要是通过观察S参数确定via的优化是否达到目标。但S参数只能看到一个整体的结果,并不知道via真实的阻抗是多少?想要单独确定via的阻抗,最好还是通过TDR的仿真。

luohuo9844的博客 1万+

敏捷项目管理术语大全

敏捷项目管理术语大全

slb190623的博客 2077

偏最小二乘回归分析原理详解和案例分析实例

偏最小二乘回归分析原理详解背景偏最小二乘回归分析 Partial least squares regression analysis基本思想建模步骤步骤一:分别提取两变量组的第一对成分,并使之相关性达最大步骤二:建立 y1,⋯ ,yp\boldsymbol{y}_{1}, \cdots, \boldsymbol{y}_{p}y1​,⋯,yp​ 对 u1\boldsymbol{u}_{1}u1​ 的回归及 x1,⋯ ,xm\boldsymbol{x}_{1}, \cdots, \boldsymbol{x}_{

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 9977

传统序列式软件开发方法的缺点,以及迭代开发方法的选择

程读书笔记 大部分公司仍使用传统瀑布模型(或序列式开发方法)进行开发 我所工作过的公司,以及我身边的朋友工作所在的公司,再加上招聘时从求职者那里所了解到的其他一些公 司的开发过程, 基本上都是使用传统的软件开发模式,类拟或者就是瀑布开发模式,这种模式有如下特点: 1)将项目的生命周期明确地划分为几个阶段,完 成一个阶段才进入下一个阶段。 2)在项目初期希望细化所有的需求,并希望...

qq_38234594的博客 2024

Leads、SDR、MQL、SQL、L2C术语概念,线索创建与清洗、线索分级模型、线索流转策略、线索的统计与分析

CRM中的“Leads”是什么?笔者在文中不仅较为全面地介绍了相关术语概念,还分析了线索的创建与清洗、线索的分级模型、线索流转策略以及线索的统计与分析。

盼盼学士 5960

Kappa函数:测量一致性并计算置信区间的R语言包

Kappa函数是一种常用的统计量,用于衡量两个评估者之间的一致性。在R语言中,有一个名为"vcd"的包提供了计算Kappa函数以及相应的置信区间的功能。本文将介绍如何使用"vcd"包来计算Kappa函数的值,并进一步计算置信区间。Kappa函数的值介于-1和1之间,值越接近1表示评估者之间的一致性越高,值越接近-1表示评估者之间的一致性越低,值接近0表示评估者之间的一致性接近于随机。通过以上步骤,我们成功地使用R语言中的"vcd"包计算了Kappa函数的值和置信区间。接下来,我们可以使用"vcd"包中的。

2301_79331230的博客 1875

【软考】软件过程模型

本文系统介绍了软件工程中的主要过程模型,包括传统序列式模型(瀑布模型、V模型)、迭代与演进式模型(增量模型、原型模型、螺旋模型)、现代敏捷模型(敏捷开发、Scrum、极限编程)以及混合模型和基于构件的开发模型。每种模型从核心思想、特征(优缺点)和适用场景三方面进行解析,帮助读者根据项目特点选择合适的方法。传统模型适合需求明确的项目,迭代模型适用于逐步完善系统,敏捷模型则针对快速变化的开发环境。文章还特别强调了基于构件的开发模型和形式化方法模型的特点与应用场景。

墨染天玑的博客 628

2、机器人控制技术:阻抗/导纳控制与强化学习的融合

本文探讨了阻抗/导纳控制与强化学习在机器人控制中的融合应用。阻抗/导纳控制广泛应用于外骨骼和跟踪控制,通过改进方案提升建模误差下的鲁棒性;强化学习则为解决维度灾难、实现最优交互提供了有效途径,尤其在大输入空间、连续时间系统、冗余机器人及鲁棒控制中表现突出。结合近似器与合理奖励设计,强化学习可在无模型情况下实现高效控制。未来,两者融合有望推动更智能、更安全的机器人系统发展。

ice55的博客 300

代码大全(读书笔记)

代码大全(读书笔记) 2021.06.27 开始阅读此书,这篇文章记录了一些读此书或者这款时间工作生活的一些心路,希望自己能持续从此受益。 2021.08.05 此次阅读的关注点在第 3/4/6/7/12/13 章 我虽然是计算机行业从业者,但本身不是计算机专业出身,很惭愧没能更早的耳濡目染更多基础但不可忽略的知识,虽此行业已被很多其他行业从业者开始逐步进入,但私以为最基本的素养不应该被降低,也因此不断提醒和鞭策自己,学习是一件不得不做且应该去做的事。—2021.06.27 文章目录代码大全

LynnWonder 562

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

序列化开发与迭代开发的选择

今天看了一篇文章,其中说到一些敏捷开发的优势,它说开发应该尽可能早的开始进行,不断迭代和重构,这样才能快速构建出系统,最终达到较好的效果。它举了一个例子,说是将管理者,一般工作人员和小孩子放在一个房间里,各自完成一个任务,将某种物品叠加起来,看谁搭得最高,最后总是小孩子完成得最出色,因为小孩子不会想什么,直接就开始行动,尝试各种情况,最后会找一种比较好的方法,而管理者或者一般成人则会不断的思考用什

燃烧JAVA 1479

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

代码大全读书笔记(二)

代码大全 第三章 三思而后行:前期准备

qq_38313386的博客 322

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

敏捷开发的优劣势

如果想知道敏捷开发是什么,以及敏捷开发的流程,请参考我另一篇文章:scrum敏捷开发流程介绍和心得 敏捷开发的优势: 1.短期目标明确 开发的最终意义就是为了完成目标,而如果一个目标过于长远,那么就容易造成短期的盲目乐观,认为工期还早,从而造成短期的任务完成不及时,从而最终导致接近项目交付时工作量暴增,甚至出现延期交付的情况。 有短期的目标,开发目标明确,知道什么节点该做什么。每一期......

分享+记录 7044

敏捷开发优点和缺点

https://blog.youkuaiyun.com/jpmsdn/article/details/94625843 一、敏捷开发技术的几个特点和优势: 1.个体和交互胜过过程和工具 2.可以工作的软件胜过面面俱到的文档 3.客户合作胜过合同谈判 4.响应变化胜过遵循计划 二、敏捷开发技术的12个原则: 1.我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。 2.即使到了开发...

tianyeshiye 1万+

Qt优秀开源项目之十一:酷炫的飞行仪表盘QFlightInstruments

这个没啥好介绍的,懂得自然懂github地址: https://github.com/wyyrepo/QFlightInstruments

草上爬的博客 8172

《代码大全2》第3章 三思而后行,前期准备

在开始构建之前,首先要满足的一项先决条件是,对这个系统要解决的问题做出清楚的陈述。这有时称为“产品设想/product vision ”、“设想陈述/visionstatement”、“任务陈述/mission statement” 或者“产品定义/product definition”。这里将它称为“问题定义/problem definition”。由于这本书是关于软件构建的,本节不打算告诉你如何去写问题定义,而是告诉你如何辦认是否已经写好了问题定义,以及它能否成为构建活动的良好基础。..........

qq_43783527的博客 2126

四个开发模型的优缺点

关于四个开发模式的优缺点,包括V模型、W模型、迭代模型、敏捷开发。

Dreamer_HUI的博客 1万+

瀑布式开发及与迭代式开发的区别

瀑布式开发及与迭代式开发的区别

1万+

软件开发模式介绍和对比(瀑布、迭代、敏捷等)

1.瀑布模型   1.1 瀑布模型介绍   1970年温斯顿·罗伊斯(Winston Royce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。   1.2 瀑布模型核心思想   瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件

orclight的专栏 4万+

软件开发模型和优缺点

目录边做边改模型(Build-and-Fix-Model)瀑布模式(Waterfall-Model)螺旋模型(Spiral-Model)快速原型模型(Rapid-Prototype-Model)增量和迭代模型增量模型(Incremental-Model)迭代模型(Stagewise-Model)(迭代增量式开发/迭代进化式开发)喷泉模型(Fountain-Model)演化模型(Evolutiona...

Jason 1万+

论敏捷开发的优缺点

踏入软件开发行列时间不算短了,也使用过很多项目管理软件和方法,但是在使用过程中多多少少都会遇到一些问题吧,同行们或多或少也会有相应的体验。近期试用了一下华为最新推出的项目管理工具-华为软件开发云,接触了敏捷开发,产生一些想法。以下是使用体验,仅供同行们参考。一、敏捷开发技术的几个特点和优势:1.个体和交互胜过过程和工具2.可以工作的软件胜过面面俱到的文档3.客户合作胜过合同谈判4.响应变化胜过遵循...

devopscsdn的博客 5897
上一篇: Qt4中利用Meta Object实现类拟.NET和Java的反射(Reflection)功能
下一篇: 敏捷开发学习总结(2):敏捷和迭代开发的问与答
kwiner
博客等级 码龄24年 41粉丝 32原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值