常见的软件开发模型有哪些常见问题

本教程操作环境:windows10系统、DellG3电脑。

常见的软件开发模型有:

1、边做边改模型(Build-and-FixModel)

遗憾的是,许多产品都是使用"边做边改"模型来开发的。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。在这个模型中,开发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本。在提供给用户使用后,如果程序出现错误,或者用户提出新的要求,开发人员重新修改代码,直到用户满意为止。这是一种类似作坊的开发方式,对编写几百行的小程序来说还不错,但这种方法对任何规模的开发来说都是不能令人满意的,其主要问题在于:

(1)缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改;

(2)忽略需求环节,给软件开发带来很大的风险;

(3)没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难。

2、瀑布模型(WaterfallModel)

1970年WinstonRoyce提出了著名的"瀑布模型",直到80年代早期,它一直是唯一被广泛采用的软件开发模型。瀑布模型中,如图所示,将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:

(1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;

(2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;

(3)早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。

我们应该认识到,"线性"是人们最容易掌握并能熟练应用的思想方法。当人们碰到一个复杂的"非线性"问题时,总是千方百计地将其分解或转化为一系列简单的线性问题,然后逐个解决。一个软件系统的整体可能是复杂的,而单个子程序总是简单的,可以用线性的方式来实现,否则干活就太累了。线性是一种简洁,简洁就是美。当我们领会了线性的精神,就不要再呆板地套用线性模型的外表,而应该用活它。例如增量模型实质就是分段的线性模型,螺旋模型则是接连的弯曲了的线性模型,在其它模型中也能够找到线性模型的影子。

3、快速原型模型(RapidPrototypeModel)

快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。

4、增量模型(IncrementalModel)

增量模型(IncrementalModel)又称演化模型。与建造大厦相同,软件也是一步一步建造起来的。在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。但是,增量模型也存在以下缺陷:

(1)由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。

(2)在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。在使用增量模型时,第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。例如,使用增量模型开发字处理软件。可以考虑,第一个增量发布基本的文件管理、编辑和文档生成功能,第二个增量发布更加完善的编辑和文档生成功能,第三个增量实现拼写和文法检查功能,第四个增量完成高级的页面布局功能。

5、螺旋模型(SpiralModel)

1988年,BarryBoehm正式发表了软件系统开发的"螺旋模型",它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。如图所示,螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:

(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;

(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;

(3)实施工程:实施软件开发和验证;

(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下:

(2)如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。

(3)软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险。一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段。

6、喷泉模型(fountainmodel)

喷泉模型(fountainmodel)(也称面向对象的生存期模型,OO模型)喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。

7、智能模型(四代技术(4GL))

8、混合模型(hybridmodel)

9、RUP模型(迭代模型)

(1)增量迭代,每次迭代都遵循瀑布模型能够在前期控制好和解决风险;

(2)模型的复杂化,需要项目管理者具有较强的管理能力。

10、IPD模型

IPD(IntegratedProductDevelopment)流程是由IBM提出来的一套集成产品开发流程,非常适合于复杂的大型开发项目,尤其涉及到软硬件结合的项目。IPD从整个产品角度出发,流程综合考虑了从系统工程、研发(硬件、软件、结构工业设计、测试、资料开发等)、制造、财务到市场、采购、技术支援等所有流程。是一个端到端的流程。在IPD流程中总共划分了六个阶段(概念阶段、计划阶段、开发阶段、验证阶段、发布阶段和生命周期阶段),四个个决策评审点(概念阶段决策评审点、计划阶段决策评审点、可获得性决策评审点和生命周期终止决策评审点)以及六个技术评审点。IPD流程是一个阶段性模型,具有瀑布模型的影子。该模型通过使用全面而又复杂的流程来把一个庞大而又复杂的系统进行分解并降低风险。一定程度上,该模型是通过流程成本来提高整个产品的质量并获得市场的占有。由于该流程没有定义如何进行流程回退的机制,因此对于需求经常变动的项目该流程就显得不大适合了。并且对于一些小的项目,也不是非常适合使用该流程。

THE END
1.10种软件开发模型整理软件开发模型(SoftwareDevelopment Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。 软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不https://blog.csdn.net/Python_cocola/article/details/139201333
2.软件开发的演变:从瀑布模型到敏捷开发再到DevOps以及更进一步在充满活力的技术世界中,我们用来创建软件的方法和过程发生了重大变革。软件开发方法论的演变证明了我们不断追求效率、质量和适应性的执着。早期的软件开发是一个线性而严格的过程,常常被比喻为建筑物的构造过程。这种被称为瀑布模型的方法是第一种结构化的软件开发方法论。然而,随着软件项目的复杂性和规模的增长,https://baijiahao.baidu.com/s?id=1772626118339722000&wfr=spider&for=pc
3.结构化软件开发方法12篇(全文)结构化软件开发方法 第1篇 随着计算机技术的普及和推广, 各类型软件广泛受到各行业人员的青睐, 人们对软件产生了极大的依赖, 随着这一趋势的不断发展, 人们对软件的质量要求越来越高, 如何保证软件的质量已成为软件工程领域的一项重要任务。软件质量决定了软件的寿命, 软件质量关系到软件的使用与维护。任何软件在投入https://www.99xueshu.com/w/ikeyiz6c3hxc.html
4.“项目经理”都会的软件开发七大过程模型腾讯云开发者社区六、Rational统一模型 七、微软过程模型 Hello,你好呀!我是灰小猿,一个超会写bug的程序猿! 今天来和大家分享一下在进行系统的软件开发的过程中常用的七大软件过程模型,熟悉软件开发常用的几种模型方法。助力每一个程序员小伙伴都可以尽早成为项目经理哟! https://cloud.tencent.com/developer/article/1992167
5.12软件工程形式化方法模型:建立在严格数学基础上的一种软件开发方法,主要活动是生成计算机软件形式化的数学规格说明。 信息系统开发方法 结构化方法 结构是指系统内各个组成要素之间的相互联系、相互作用的框架。 结构化方法也称为生命周期法,是一种传统的信息系统开发方法,由结构化分析(Structured Analysis.SA)、结构化设计(Structhttps://www.jianshu.com/p/7bc53361b193
6.测试开发工程师笔试题4、关于软件测试模型,描述正确的是( C ) A、V模型测试的对象就是程序本身,测试与开发可以同一阶段进行 B、W模型测试的对象是程序,需求、设计等,可以支持迭代的开发模型 C、H模型软件测试过程活动完全独立,贯穿产品整个生命周期,与其他流程并发地进行。 https://www.yjbys.com/qiuzhizhinan/show-433971.html
7.专刊征文“面向知识图谱和大模型的工业软件的开发新方法为此,《武汉大学学报(理学版)》与中国软件大会(ChinaSoft2024)合作征稿,出版“面向知识图谱和大模型的工业软件的开发新方法”专题,旨在探讨知识图谱和大模型在工业领域软件开发相关基础理论、关键技术、支撑平台等问题,以及相关成果在产业界的应用。《武汉大学学报(理学版)》是国内知名期刊,也是北大核心期刊和CSCD-C收录https://issi.xidian.edu.cn/info/1019/1442.htm
8.第3章软件开发过程管理解析.ppt第3章软件开发过程管理解析.ppt,3.2.5 螺旋模型 螺旋模型总结 基于风险驱动的开发模型, 使用原型法或其它方法来尽量降低风险。 适用于需求不明确的大规模软件项目 本章内容提要 CMM和ISO9000 传统软件开发生命周期模型 扩展软件开发生命周期模型 3.1 质量计划 3.4 案例分析 https://max.book118.com/html/2017/0118/84874806.shtm
9.UML技术等五种实现面向对象的软件开发方法解析在软件开发过程中经常会用到UML技术,这里就向大家简单介绍一下几种面向对象软件开发方法的主要思想,欢迎大家一起来学习,相信本文的介绍一下会让你受益。 上节我们介绍了UML技术的一些基础知识,本节向大家介绍一下几种常用的面向对象的软件开发方法,主要从五个方面来介绍,相信通过本节的学习大家对UML技术有深一步的https://www.51cto.com/article/204376.html
10.高正贤:寻找产品开发中的“达芬奇密码”新闻频道其实,在台上展示的任何一个产品功能点,都是台下无数工程师、设计师,经过无数产品的软件和硬件的巨量设计,开发,测试、和各专项准备工作,一起共同努力的最终成果。一个产品解构下来商业成功,都是客户,企业,和行业共同进步,凝结成的结晶。 今天主要跟大家分享六个部分内容:https://news.hexun.com/2020-04-28/201175728.html
11.CMMI5项目经理角色访谈学习笔记CMMI认证项目特有环境,例如:开发服务器。 3、关键过程举例说明 ⑴、项目过程定义(过程剪裁) 在项目过程定义中,在项目级QA的协助下,参考《组织过程裁剪指南》和《软件生命周期》裁剪定制适合于项目的生命周期模型,制定《项目定义过程》。例如:接口设计过程,在项目定义中剪裁到详细设计文档中体现。 https://www.cmmirz.com/cmmi5-project-manager-interview-note/
12.软件开发模型有哪些?各有什么特点软考软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。那么软件开发模型有哪些?各有什么特点? 1、原型模型 典型的原型开发方法模型。适用于需求不明确的场景,可以帮助用户明确需求。 2、瀑布模型 瀑布模型是将软件生存周期中的各个活动规定为依线性顺序连接的若干阶段的模型,包括需求分析https://www.educity.cn/rk/5024807.html
13.软件设计师一篇文章让你读懂什么是软件工程与系统开发原型是预期系统的一个可执行版本,反应了系统性质的一个选定子集。一个原型不必满足目标软件的所有约束,其目的是为了能快速,低成本构建原型。能够采用原型方法是因为开发工具的快速发展,使得能过迅速地开发出一个能被用户看得见的系统。 开发原型系统首先确定用户需求,开发初始模型,然后征求用户对初始模型的改进意见,然后https://developer.aliyun.com/article/1515202
14.软件系统开发中常用的建模方法有哪几类(2)平台无关模型(PIM)(3)平台相关模型(PSM),又称平台特定模型从1到3,从抽象到具体 2、基于模型的软件开发生命周期业务建模:计算无关模型,CIM需求:需求分析:平台无关模型,PIM设计:平台有关模型,PSM编码:代码 3、软件建模方法: 结构化方法 (Structured Method)面向对象方法(Object Oriented Method)基于构件的开发https://zhuanlan.zhihu.com/p/88324971
15.软件工程案例教程:软件项目开发实践第4版——韩万江姜立新br />2.2.9 模型驱动开发方法422.2.10 无代码开发模式432.3 软件工程方法对比442.4 软件逆向工程442.5 基于容器技术的软件工程化管理442.6 MSHD项目案例说明452.7 小结462.8 练习题46第3章 软件项目的需求分析483.1 软件项目需求概述483.1.1 需求定义493.1.2 需求类型493.1.3 需求的重要性503.2 传统需求工程http://m.cmpedu.com/books/book/5606545.htm
16.汽车软件开发V模型V模型是一个软件开发生命周期模型,其中的流程执行是以V形顺序进行。它也称为Verification和Validation模型。 这里先介绍一下:Verification和Validation都有“验证”的意思,区别请看下表。 V模型是瀑布模型的扩展,它最大的特点就是每个开发阶段都对应一个测试阶段。这是一个高度严格的模型,下一阶段必须在上一阶段完成后https://www.yoojia.com/ask/17-11761094752671053585.html