[架构之路-153]-《软考-系统分析师》- 8-软件工程-3-软件开发模型(时间轴、阶段模型)

news/2025/5/24 8:38:36

目录

第8章 软件工程

8.3 软件开发模型(时间轴模型)

8.3.1软件开发模型

1. 瀑布模型

2. 演化模型

3. 螺旋模型

4. 喷泉模型

5 . 变换模型

6 . 智能模型

7. V 模型

8.3.2 快速应用开发

8.3.3 统一过程

8.3.4 敏捷方法

第8章 软件工程

备注说明:

开发模型,是从时间的角度,为业务软件的开发构建了一个软件开发活动框架。

在该框架下,开展各种软件业务领域活动、计算机领域的活动、软件项目管理活动!!!

软件开发模型、以及软件工程大部分的知识,主要用于项目管理,对业务领域,如5G, ERP等没有太多的帮助,对计算机领域,如软件编程,架构设计等,都没有太多的帮助。

软件工程是指导软件开发人员如何从时间和阶段性的维度,来开展软件各种软件开发活动(包括业务领域和计算机领域)。

软件工程本身并不关注目标软件系统(业务知识+计算机知识)本身,它关注的是,如何按照工程化的方法,构建目标系统。

8.3 软件开发模型(时间轴模型)

软件开发模型给出了软件开发活动各阶段之间的关系,它是软件幵发过程的概括,是软件工程的重要内容。

软件开发模型为软件工程管理提供了里程碑进度表,为软件幵发过程提供了原则和方法。

8.3.1软件开发模型

软件开发模型大体上可分为三种类型。

第一种是以软件需求完全确定为前提瀑布模型

第二种是在软件幵发初始阶段只能提供基本需求时采用的迭代式或渐进式幵发模型,例如,喷泉模型、螺旋模型、统一幵发过程和敏捷方法等;

第三种是以形式化幵发方法为基础的变换模型

1. 瀑布模型

付一个完善的系统,并没有考虑软件的演化特征。其优点是强调开发的阶段性、早期计划及需求调查和产品测试,以这样严格的方式构造软件,开发人员很清楚每一步应该做什么,有利于项目管理。 |

然而,在瀑布模型中,依赖于早期进行的需求调査,不能适应需求的变化;

由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;

风险往往迟至后期的开发阶段才显露出来,从而失去了及早纠正的机会。

在瀑布模型中,需求或设计中的错误往往只有到了项目后期才能够被发现,对于项目风险的控制能力较弱,从而导致项目常常延期完成,开发费用超出预算。

2. 演化模型

演化模型主要针对事先不能完整定义需求的软件开发,是在快速开发一个原型的基础上,根据用户在调用原型的过程中提出的反馈意见和建议,对原型进行改进,获得原型的新版本,重复这一过程,直到演化成最终的软件产品。演化模型的主要优点是,任何功能一经开发就能进入测试,以便验证是否符合产品需求,可以帮助引导出高质量的产品要求。其主要缺点是,如果不加控制地让用户接触开发中尚未稳定的功能,可能对开发人员及用户都会产生负面的影响。

3. 螺旋模型

螺旋模型是瀑布模型与演化模型相结合,并加入两者所忽略的风险分析所建立的一种软件开发模型。螺旋模型是一种演化软件过程模型,它将原型实现的迭代特征与线性顺序模型中控制的和系统化的方面结合起来,使软件的增量版本的快速开发成为可能。在螺旋模型中,软件开发是一系列的增量发布。

螺旋模型沿着螺线进行若干次迭代,每次迭代都包括制订计划、风险分析、实施工程和客户评估4 个方面的工作。螺旋模型强调风险分析,使得幵发人员和用户对每个演化层出现的风险有所了解,继而做出应有的反应。因此,特别适用于庞大、复杂并具有高风险的系统。

与瀑布模型相比,螺旋模型支持用户需求的动态变化,为用户参与软件幵发的所有关键决策提供了方便,有助于提高软件的适应能力,并且为项目管理人员及时调整管理决策提供了便利,从而降低了软件开发的风险。

在使用螺旋模型进行软件幵发时,需要开发人员具有相当丰富的风险评估经验和专门知识。另外,过多的迭代次数会增加幵发成本,延迟提交时间。

4. 喷泉模型

喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上的各阶段是相互重叠和多次反复的,就像水喷上去又可以落下来,类似一个喷泉。各个开发阶段没有特定的次序要求,并且可以交互进行,可以在某个开发阶段中随时补充其他任何开发阶段中的遗漏。在喷泉模型中,各活动之间无明显边界,例如,分析和设计之间没有明显的边界。

这种特性称为无间隙性。由于对象概念的引入,只用类和关系来表达分析、设计和实现
等活动,从而可以较容易地实现活动的迭代和无间隙,提高软件项目幵发效率,节省幵
发时)旬。

5 . 变换模型

变换模型是基于形式化规格说明语言和程序变换的软件幵发模型,它对形式化的软
件规格说明进行一系列自动或半自动的程序变换,最后映射为计算机能够接受的软件系
统。为了确认形式化规格说明与软件需求的一致性,往往以形式化规格说明为基础开发
一个软件原型,用户可以从人机界面、系统主要功能和性能等方面对原型进行评审。必
要时,可以修改软件需求、形式化规格说明和原型,直至原型被确认为止。这时,开发
人员即可对形式化的规格说明进行一系列的程序变换,直至生成计算机可以接受的 H 标
代码。
程序变换是软件幵发的另一种方法,其基本思想是把程序设计的过程分为生成阶段
和改进阶段。首先,通过对问题的分析制订形式规范并生成一个程序,通常是一种函数
型的递归方程。然后,通过一系列保持正确性的源程序到源程序的变换,把函数型风格
转换成过程型风格,并进行数据结构和算法的求精,最终得到一个有效的面向过程的程
序。这种变换过程是一种严格的形式推导过程,所以只需对变换前的程序的规范加以验
证,变换后的程序的正确性将由变换法则的正确性来保证。
变换模型的优点是解决了代码结构经多次修改而变坏的问题,减少了许多中间步骤
(例如,设计、编码和测试等)。但是,变换模型仍有较大局限,以形式化开发方法为基
础的变换模型需要严格的数学理论和一整套开发环境的支持。

6 . 智能模型

智能模型也称为基于知识的软件开发模型,它综合了上述若干模型,并把专家系统结合在一起。该模型应用基于规则的系统,采用规约推理机制,帮助开发人员完成幵发工作,并使维护在系统规格说明一级进行。为此,需要建立知识库,将模型本身、软件工程知识与特定领域的知识分别存入知识库。

7. V 模型

V 模型是在快速应用开发模型基础上演变而来,由于将整个幵发过程构造成一个 V字形而得名。 V 模型应用在软件测试方面,和瀑布模型有着一些共同的特征。 V 模型中的过程从左到右,描述了基本的开发过程和测试行为,其价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程各阶段的对应关系,如图8-3所示。在 V 模型中,单元测试是基于代码的测试,最初由开发人员执行,以验证程序代码的各个部分是否己达到预期的功能要求;集成测试验证了两个以上单元之间的集成是否正确,并有针对性地对详细设计中所定义的各单元之间的接口进行检査;在所有单元测试和集成测试完成后,系统测试开始以客户环境模拟系统的运行,以验证系统是否达到。

8.3.2 快速应用开发

R A D 只能用于管理信息系统的开发,不适合技术风险很高的情况。例如,当一个新系统要采用很多新技术,或当新系统要与现有系统有较髙的互操作性时,就不适合使用 R A D 。

8.3.3 统一过程

 

 

8.3.4 敏捷方法

 

 


https://dhexx.cn/news/show-2005034.html

相关文章

JavaScript 事件基础补充

JavaScript事件是由访问Web页面的用户引起的一系列操作,例如:用户点击。当用户执行某些操作的时候,再去执行一系列代码。 一.事件介绍 JavaScript有三种事件模型:内联模型、脚本模型和DOM2模型。 二.内联模…

单台服务器LAMP环境自动搭建脚本

先上效果图:然后是脚本内容:#!/bin/bash#LAMP install#By liupengfang ----2015-07-21----echo -e "\033[35m--欢迎使用LAMP自动安装脚本--\033[0m"sleep 3cd /lampecho -e "\033[35m--Apache安装--\033[0m"echo -e "\033[35m文…

linux下执行tp5控制器中的方法

linux 下执行: php /home/wwwroot/项目/public/index.php index/index/textwrite 注释: 我的项目指定运行目录是public下, index/index/textwrite[模块/控制器/方法]

一年级数学题,10人做9人错,不信,你做做试试!

这是一道一年级的数学题,估计现在的幼儿园里也该开始学了。但是千万别将问题看简单了,据说10人做9人错,不信,你做做试试!题目:一天有个年轻人来到王老板的店里买了一件礼物,这件礼物成本是18元&…

从今日起正式加入水果党

想来我现在的笔记本也用了将近3年,虽然至今没有出现过任何问题,但更新换代似乎也不是件让人无法接受的事情——再加上老爸正好也需要一台笔记本,于是我想,不如就乘此机会升一下级吧。不过其实我本没有打算那么着急,只是…

Qt中利用QDomDocument读写xml小Demo

1.写入xml文档中 bool protProjectInfo::SaveXml() {//QFile file(mProjectInfoPath.filePath("projectconfig.xml"));    QFile file("c:/projectconfig.xml");if(! file.open(QIODevice::WriteOnly)) {//logger()->error("open file fail %…

PHP 判断端口是否占用

$ip127.0.0.1;//ip $port1234;//端口 $sock socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_set_nonblock($sock); socket_connect($sock,$ip, $port); socket_set_block($sock); $return socket_select($r array($sock), $w array($sock), $f array($sock), 3); …

asp.net用url重写URLReWriter实现任意二级域名(续)

asp.net用url重写URLReWriter实现任意二级域名(续) 更高级的内容看这里:http://www.cnblogs.com/notus/archive/2007/03/13/673222.html最近有个朋友要做url重写的东西,我帮他弄了弄,回头看当年自己写的那个文章,当时以为自己写的很容易理解.但现在再看却觉得写的不好.而今天百…

给SQLServer数据库减肥

1.打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以…

thinkphp5 使用workerman

中间可能有些报错啥的,可在评论区留言,或加QQ:3053916151 1. 下载workerman,放到extend目录中 下载地址: https://www.workerman.net/download 解压之后 2. 根目录添加Worker.php文件 [application同级目录] <?php define(APP_PATH, __DIR__ . /application/); define…