软件工程中五种常用的软件开发模型整理

笑着哭i 提交于 2019-12-11 00:56:11

软件工程期末考试复习资料整理,顺便码了个博客,emmm~
下面都是我对各位博主文章种我认为写的比较好的内容的截取
引言
软件将要经历一个定义、开发、运行维护,直至被淘汰这样的生命周期。
为了使软件生命周期中的各项任务能够有序地按照规程进行,需要一定的工作模型对各项任务给予规程约束,这样的工作模型被称为软件过程模型。

1.瀑布模型

瀑布模型是将软件生存周期中的各个活动规定为依线性顺序连接的若干阶段的模型,包括需求分析、设计、编码、测试、运行和维护。它规定了由前至后、相互衔接的固定次序,如同瀑布流水逐级下落
下面两张图摘自博客:https://blog.csdn.net/m18330808841/article/details/78452747
在这里插入图片描述

特点
1.阶段间具有顺序性和依赖性
具体指的是必须等前一阶段的工作完成才能开始后一阶段的工作,
前一阶段的输出文档就是后一阶段的输入文档,因此只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果
2.推迟实现的观点
瀑布模型的编码之前设置了系统分析和系统设计的各个阶段,分析与设计阶段的基本任务规定,这两个阶段主要考虑目标系统的路基模型,不涉及软件的物理实现,清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现
3.质量保证的观点
每个阶段必须完成规定的文档;每个阶段结束前都要对所完成的文档进行评审
实际中的瀑布模型带有反馈
在实际的软件项目中存在着许多不稳定因素,例如,开发中的工作疏漏或通信误解;在项目实施中途,用户可能会提出一些新的要求;开发者也可能在设计中遇到某些未曾预料的实际困难,希望在需求中有所权衡等。为了解决这些问题,考虑到许多实际项目中阶段之间有通信的需要使瀑布模型带有信息反馈环,能够逐级地将后续阶段的意见返回,并在问题解决之后,再逐级地将修正结果下传。
在这里插入图片描述
缺点分析
1.在可运行的软件交付给用户之前,用户只能通过文档来了解产品是什么样的
2.要求用户不经过实践就提出完整准确的需求,在许多情况是不切实际的

快速原型模型

快速原型模型是不带反馈环的,软件产品的开发基本上是线性顺序进行的,快速原型地本质是快速,原型的用户是获知用户的真正需求
在这里插入图片描述
特点
1.原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户地需求,因此在开发过程中不会因为发现了规格说明文档地错误而进行较大地返工
2.开发人员通过建立原型系统已经学到了许多东西,因此在设计和编码阶段发生错误地可能性比较小

增量模型

增量模型也称渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。
增量模型与瀑布模型,快速原型模型想反,它分批地逐步向用户提交产品,整个软件产品被分解为许多个增量构件
在这里插入图片描述
优点
1.能在较短时间内向用户提交可完成部分工作地产品
2.逐步增加产品功能可以使用户有较充裕地时间学习和适应新产品
3.开发顺序灵活。 开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整
困境
1.在每个新的增量构件集成到现有软件体系结构中,必须不破坏原来已经开发出的产品
2.在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性

螺旋模型

螺旋模型很像我们高中时候学习的四象限它分为制定计划,风险分析,实施工程和客户评估阶段,整个螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。
螺旋模型在每个阶段之前及经常发生的循环之前,都必须要进行风险评估。在实践中,螺旋法技术和流程变得更为简单。迭代方法体系更倾向于按照开发/设计人员的方式工作,而不是项目经理的方式。
在这里插入图片描述
优点
1.设计上灵活, 可以在项目的各个阶段进行变更
2.以小的分段来构建大型系统,使成本计算变得简单容易。
2.客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
4.随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
5.客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。

喷泉模型

喷泉模型主要适用于利用面向对象技术的软件开发项目,可弥补瀑布模型不支持软件重用和多项开发活动集成的不足,可使开发过程具有迭代性和无间隙性
在这里插入图片描述
特点
1.开发过程中的各个阶段相互重叠,反映了软件过程并行性的特点
2.以分析为基础,资源消耗呈塔形,在分析阶段消耗资源最多
3.强调增量开发,依据分析一点、设计一点的原则,并不要求一个阶段的彻底完成,整个过程一个迭代的逐步提炼的过程
4.是对象驱动的过程,对象是活动作用的主体,也是项目管理的基本内容
5.实现中由于活动不同,可分为系统实现和对象实现,这既反映了全系统的开发过程,也反映了对象族的开发和重用过程

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!