软件工程环形复杂度计算方法有哪些_软件工程复习6165组考题

6785ae46668201e26eb437c902d87396.png

黑色体为原本答案,蓝色字体修改补充了

复习题组「61-65/61-65/13/13」

一、名词解释

61.确认测试

检查已实现的软件是否满足了需求规格说明中所确定的各种需求,以及软件配置是否完全、正确。(过程:功能性测试---软件配置复查---验收测试----α测试和β测试)

(补充)确认测试也称为验收测试,它的目标是验证软件的有效性
通常,验证指的是保证软件正确地实现了某个特定要求的一系列活动;确认指的是为了保证软件确实满足了用户需求而进行的一系列活动。

62.过程模式(未找到答案)

所谓软件过程模型就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。对一个软件的开发无论其大小,我们都需要选择一个合适的软件过程模型,这种选择基于项目和应用的性质、采用的方法、需要的控制,以及要交付的产品的特点。一个错误模型的选择,将迷失我们的开发方向。

63.RMMM计划(Risk Mitigation, Monitoring and Management Plan)

翻译为:风险缓解,监测和管理计划,又称软件项目风险管理,是软件项目管理的重要内容。在进行软件项目风险管理时,要辩识风险,评估它们出现的概率及产生的影响,然后建立一个规划来管理风险。风险管理的主要目标是预防风险。

软件项目风险是指在软件开发过程中遇到的预算和进度等方面的问题以及这些问题对软件项目的影响。软件项目风险会影响项目计划的实现,如果项目风险变成现实,就有可能影响项目的进度,增加项目的成本,甚至使软件项目不能实现。

风险管理策略可以包含在软件项目计划中,或者风险管理步骤也可以组织成一个独立的风险缓解、监控和管理计划(RMMM计划)。RMMM计划将所有风险分析文档化,并由项目管理者作为整个项目计划中的一部分来使用。

64.耦合

耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。

65.多态性

同一操作作用于不同的类的实例,将产生不同的执行结果,即不同类的对象收到相同的消息时,得到不同的结果。对象根据所接受的消息而做出动作,同样的消息被不同的对象接收时可能导致完全不同的行为,这种现象称为多态性。

(补充)在面向对象的设计中,多态主要体现在向不同的对象发送同一个信息,不同的对象在接收时会产生不同的行为(即方法),对像可以用自己的方法去响应共同的信息。( 多态:在同一个时刻,体现出来的不同状态)

二、简答题

61.简述模型在软件开发中的作用。

软件开发是一个复杂的过程,建立模型可降低复杂度.

建立模型可以使开发者有效地交流.

软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。

62.软件维护有哪些特点?

1、结构化维护与非结构化维护差别巨大

2、维护的代价高昂

3、维护的问题很多

下面列出和软件维护有关的部分问题:

(1)理解别人写的程序通常非常困难,而且困难程度随着软件配置成分的减少而迅速增加。如果仅有程序代码没有说明文档,则会出现严重的问题。

(2)需要维护的软件往往没有合格的文档,或者文档资料显著不足。认识到软件必须有文档仅仅是第一步,容易理解的并且和程序代码完全一致的文档才真正有价值。

(3)当要求对软件进行维护时,不能指望由开发人员给我们仔细说明软件。由于维护阶段持续的时间很长,因此,当需要解释软件时,往往原来写程序的人已经不在附近了。

(4)绝大多数软件在设计时没有考虑将来的修改。除非使用强调模块独立原理的设计方法学,否则修改软件既困难又容易发生差错。

  (5)软件维护不是一项吸引人的工作。形成这种观念很大程度上是因为维护工作经常遭受挫折。

上述种种问题在现有的没采用软件工程思想开发出来的软件中,都或多或少地存在着。不应该把一种科学的方法学看做万应灵药,但是,软件工程至少部分地解决了与维护有关的每一个问题。

63.模块化的三个重要特征是什么,阐明各自的作用。

1.相对独立性,可以对模块单独进行设计、制造、调试、修改和存储,这便于由不同的专业化企业分别进行生产;  

2.互换性,模块接口部位的结构、尺寸和参数标准化,容易实现模块间的互换,从而使模块满足更大数量的不同产品的需要; 

3.通用性,有利于实现横系列、纵系列产品间的模块的通用,实现跨系列产品间的模块的通用。

64.单元测试时,为什么需要开发驱动模块和桩模块?

这是因为在开发设计的初级阶段,完成一个单元的开发任务后,这个单元相关联上面、下面的模块尚未开发出来,为了要测试所开发单元,所以要驱动模块和桩模块

在底层进行的测试叫做单元测试,也叫做模块测试。

驱动模块:

驱动模块是用来模拟被测模块的上一级模块,相当于被测模块的主程序。它接收数据并将相关数据传送给被测模块,启用被测模块并打印出相应结果。驱动模块的目的很单纯,就是访问类库的属性和方法来确定类库是否正确。

桩模块:

桩模块是模拟被测试模块所调用的模块,而不是软件产品的组成部分。主程序作为驱动模块,与之直接相连的模块是桩模块,也称为“替身模块”。桩模块本身不执行任何功能,只在它作为替身被调用时返回静态值。

65.什么是Use Cases Model,主要作用是什么?

是系统既定功能及系统环境的模型

用例模型最重要的作用是将系统行为传达给客户或最终用户。

用例(Use Case)是一种描述系统需求的方法,使用用例的方法来描述系统需求的过程就是用例建模。

使用用例的方法来描述系统的功能需求的过程就是用例建模,用例模型主要包括以下两部分内容:

用例图(Use Case Diagram)
确定系统中所包含的参与者、用例和两者之间的对应关系,用例图描述的是关于系统功能的一个概述。

用例规约(Use Case Specification)
针对每一个用例都应该有一个用例规约文档与之相对应,该文档描述用例的细节内容、

用例模型的作用

首先,用例模型是一种标准的语言,很容易成为开发人员之间交流和沟通的媒介,用例模型可以精确地定义软件需求,出现歧义的可能性很小,这可以保证用户和开发人员对需求理解的一致性

其次,用例模型可以成为我们评估压法工作量的一个标准,特别是对于迭代式开发言。迭代式开发模型里,通常依据用例模型来划分软件的开发周期:优先级别高的用例会在早期的迭代周期中实现,而优先级别低的用例则被安排在后续的迭代周期中完成。可以通过限制每个迭代周期中的用例个数来保证迭代周期长度的合理性

再次,用例模型在整个开发过程中都扮演着非常重要的角色,它可以驱动软件的分析和设计逐步细化

最后,测试过程中使用的测试用例-----特别是那些关注软件功能的测试用例---往往也是根据用例模型来确定的

三、论述题

13.讨论不同软件过程模型与软件开发的关系

常见的过程模型有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型等。

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。通常使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。常见的过程模型有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型等。

1.瀑布模型

这个特点有两重含义:

1.必须等前一阶段的工作完成之后,才能开始后一阶段的工作;

2.前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。

瀑布模型每个阶段都应坚持两个重要做法:

1.每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。完整、准确的合格文档是软件开发时期各类人员之间相互通信的媒介,也是运行时期对软件进行维护的重要依据。

2.每个阶段结束前都要对所完成的文档进行评审,以便迟早发现问题,改正错误。事实上越是早期阶段犯下的错误,暴露出来的时间就越晚,排除故障改正错误所需付出的代价也越高。因此,及时审查,是保证软件质量,降低软件成本的重要措施。

可以说瀑布模型是由文档驱动的。这个事实也是它的一个缺点,在可运行的软件产品交付给用户之前,用户只能通过文档来了解产品是什么样的。瀑布模型历史悠久、广为人知的,它的优势在于它是规范的、文档驱动的方法;这种模型的问题是,最终开发出的产品可能并不是用户真正需要的。

(1)传统的瀑布模型:(2)实际的瀑布模型:

2.快速原型模型

所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。快速原型的本质是“快速”,开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用作是获知用户的真正需求,一旦需求确定了,原型系统将被抛弃。

快速原型模型正是为了克服瀑布模型的缺点而提出来的。它通过快速构建一个可在计算机上运行的原型系统,让用户试用原型系统并收集用户反馈意见的办法,获取用户的真实需求。

3.增量模型

增量模型也称为渐增模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。

优点:

1.能在较短的时间内向用户提交可完成部分工作的产品。

2.逐步增加产品功能可以使用户有充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。

增量模型具有可在软件开发的早期阶段使投资获得明显回报和较易维护的优点,但是,要求软件具有开放的结构是使用这种模型时固有的困难。 

4.螺旋模型

螺旋模型的基本思想就是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作每个阶段之前都增加了风险分析过程的快速原型模型。

螺旋模型主要适用于内部开发的大规模软件项目。如果进行风险分析的费用接近整个项目的经费预算,则风险分析是不可行的。事实上项目越大,风险也越大,因此进行风险分析的必要性也越大。此外只有内部开发的项目,才能在风险过大时方便中止项目。

螺旋模型的主要优势在于,它是风险驱动,但是,这也可能是它的一个弱点。除非软件开发人员具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还认为一切正常。

风险驱动的螺旋模型适用于内部开发的大型软件项目,但是,只有在开发人员具有风险分析和排除风险的经验及专门知识时,使用这种模型才会获得成功。

(1)简化的螺旋模型 (2)完整的螺旋模型

4.喷泉模型

喷泉模型对软件复用和生存周期中多项开发活动的集成提供了支持,以面向对象的软件开发方法为基础,它适合面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。系统某个部分常常重复工作多次,相关功能在每次迭代中随之加入演化的系统。无间隙是指在分析、设计和实现等开发活动之间不存在明显的边界。

按照在软件生命周期过程中应完成的任务的性质,在概念上可以把软件生命周期划分成定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试以及运行维护等8个阶段。实际从事软件开发工作时,软件规模、种类、开发环境及使用的技术方法等因素,都影响各阶段的划分。

软件过程是为了获得高质量的软件产品所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。由于没有适用所有软件项目的任务集合,科学、有效的软件过程应该定义一组适合所承担的项目特点的任务集合。通常使用软件过程模型简洁地描述软件过程,它规定了把软件生命周期划分成的阶段及各个阶段的顺序

四、应用题

13.下列是一段伪码程序:

START

   INPUT (A,B,C)

   IF A>5  

THEN  X=10

ELSE X=1

ENDIF

IF B>10

  THEN Y=20

  ELSE Y=2

ENDIF

IF C<15

  THEN Z=30

  ELSE Z=3

ENDIF

PRINT(X,Y,Z)

STOP

问题:(1)画出控制流程图(10分)

(2)采用基本路径测试,给出独立的路径(10分)

(3)写出路径覆盖用例(10分)

fab87542df89b89468b343e9bba0ff38.png

797768c703a339b7900b89f5f29241e6.png

0531e2f7e215a577eb11e33284e1eaca.png

0f3813376c6c02608946949c19306608.png

f94a5c5aee0915624fe2296632087e17.png

fe49bb1c0b6a0a135f551c0b08b9ac93.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

配置frp报错start error: type [http] not support when vhost_http_port is not set

配置frp 问题描述 服务端配置frpc.ini[common] bind_port 7000 vhost_http_port 6001客户端配置frpc.ini[common] server_addr 公网ip server_port 7000 [ssh] type tcp local_ip192.168.50.130 local_port 8080 remote_port6001报错&#xff1a;start error: type [htt…

多线程导出excel高并发_大牛带你深入java多线程与高并发:JMH与Disruptor,确定能学会?...

前言今天我们讲两个内容&#xff0c;第一个是JMH&#xff0c;第二个是Disruptor。这两个内容是给大家做更进一步的这种多线程和高并发的一些专业上的处理。生产环境之中我们很可能不自己定义消息队列&#xff0c;而是使用Disruptor。我们生产环境做测试的时候也不是像我说的那样…

动环监控系统接线图_机房动环监控系统报价

原标题&#xff1a;机房动环监控系统报价机房动环监控系统报价需要根据业务需求来进行报价的&#xff0c;一般机房动环监控系统的价格跟机房的监控面积的大小以及监控的项目是息息相关的&#xff0c;比如一个IDC机房和小型的基站机房的动环监控系统的价格就是完全不一样&#x…

Ubuntu 下PySpark安装

操作系统&#xff1a;Ubuntu20.04所需软件&#xff1a; Java 8 &#xff0c;Python 3.5 , Scala 2.11.12安装Java 8 sudo apt-get updatesudo apt-get install openjdk-8-jdkjava -version安装scalasudo wget https://downloads.lightbend.com/scala/2.12.8/scala-2.12.8.deb …

数据集_自动驾驶数据集

前面介绍了自动驾驶的仿真平台&#xff0c;接下来又收集了目前主要的自动驾驶数据集。抱着这个想法&#xff0c;何不做一个awesome&#xff0c;在git上搜索&#xff0c;已经有人建了一个awesome了&#xff0c;也免得重复造轮子。但是作者很久没更新了&#xff0c;于是决定也加入…

rdd.foreach(print)报错SyntaxError: invalid syntax

问题 解决方法from __future__ import print_function如图&#xff1a;

地铁框架保护的原理_继电保护的基础知识和原理(地铁)

1&#xff0e;继电保护技术发展简史上世纪60年代以前&#xff0c;我国的继电保护主要由传统的机电型继电器构成&#xff0c;其中包括了电磁型继电器和感应型继电器。60年代末70年代初&#xff0c;晶体管保护和整流型保护得到了应用。90年代起&#xff0c;集成电路保护和微机型保…

golang如何生成随机数

目录如何生成随机数示例&#xff1a;未写随机数种子&#xff1a;加上随机数种子后&#xff1a;如何生成随机数 在go语言中&#xff0c;生成随机数需要先添加一个***随机数种子***&#xff0c;否则每次运行生成的随机数都是同样顺序的数字 rand.Seed(time.Now().UnixNano()) r…

js string转两位小数_js保留两位小数的函数有哪些

js保留两位小数的函数有&#xff1a;1、【toFixed()】函数&#xff1b;2、【Math.floor()】函数不四舍五入 &#xff0c;向下取整&#xff1b;3、使用字符串匹配方法&#xff1b;4、四舍五入保留2位小数&#xff1b;5、浮点数保留两位小数。js保留两位小数的函数有&#xff1a;…

golang基础学习笔记

golang基础学习golang1. 认识golang和goland使用1.1 goland插件2. 数据类型2.1 结构体3. 流程控制ifswitchselectforrangeGoto、Break、Continue4. 函数4.1 匿名函数4.2 闭包、递归4.3 延迟调用什么是deferdefer的常见用途释放已经获取的资源从panic中恢复延迟闭包参数即时求值…

lamda获取参数集合去空_(转)Java8使用lambda表达式进行集合的遍历

本文转自我们经常会用到各种集合&#xff0c;数字的&#xff0c;字符串的还有对象的。它们无处不在&#xff0c;哪怕操作集合的代码要能稍微优化一点&#xff0c;都能让代码清晰很多。在这章中&#xff0c;我们探索下如何使用lambda表达式来操作集合。我们用它来遍历集合&#…

git@github.com:Permission denied(publickey).fatal: Could not read form remote repository错误

文章目录前言问题分析解决方法配置客户端配置服务端验证前言 在使用goland从github下载依赖时(git clone github.com/gin-gonic/gin)出现gitgithub.com:Permission denied(publickey).fatal: Could not read form remote repository错误。 问题分析 Permission denied(publi…

go出现missing go.sum entry for module providing package 错误

文章目录前言问题分析解决方法前言 从github下载了别人的代码后直接执行&#xff0c;报missing go.sum entry for module providing package错误 问题分析 代码中使用了第三方库&#xff0c;但是go.mod并没有跟着更新 解决方法 在项目目录下打开终端&#xff0c;执行go mo…

的计时器设置_如何选择最适合自己的计时器?

本文作者是Ultraman&#xff0c;他为了找到最适合自己的计时方法&#xff0c;试验了十多种计时器或者沙漏&#xff0c;总结出了非常棒的经验&#xff01;相信本文一定会对你有所帮助。 ——李长太大家对番茄工作法一定已经不陌生了&#xff0c;那么进行番茄工作法的时候&#x…

npm install报错 npm ERR,code ERESOLVE npm ERR,ERESOLVE unable to resolve dependency tree

文章目录前言问题分析解决方法转载于前言 在下载npm时报错npm ERR! code ERESOLVE npm ERR! ERESOLEVE unable to resolve dependency tree 问题分析 我的npm版本为8.x&#xff0c;npm6.x之后的版本更加严格了&#xff0c;所以会报错 解决方法 方法1&#xff0c;降级到np…

go的time.Time格式相关转换

文章目录time.Time 转 字符串time.Time 转 时间戳时间戳 转 time.Time时间戳 转 日期字符串日期字符串 转 time日期字符串 转 时间戳其他日期字符串yyyy-MM-dd转换为日期字符串yyyyMMddtime.Time 转 字符串 t.Format("2010-12-06") t.Format("2010-12-06 12:01…

go TypeError: Failed to execute ‘fetch‘ on ‘Window‘: Request with GET/HEAD method cannot have body.

文章目录前言问题分析解决方法前言 使用swagger测试一个Get路由时&#xff0c;想要传入form-data数据时报错TypeError: Failed to execute ‘fetch‘ on ‘Window‘: Request with GET/HEAD method cannot have body. 问题分析 GET把参数包含在URL中 POST把通过request body…

卡顿严重_微软Win 10游戏模式致《使命召唤:战区》等游戏出现严重卡顿现象

IT之家5月8日消息 据Windowslatest报道&#xff0c;有部分用户报告称Windows 10游戏模式可能对某些硬件的游戏性能产生负面影响。一位用户表示&#xff0c;启用游戏模式后&#xff0c;搭载Radeon RX 5700 XT、RX 480、R9 290等AMD显卡设备以及GTX 980和GTX 1080 Ti等Nvidia显卡…

gin的Bindxxx和ShouldBindxxx的区别

区别 Bindxxx&#xff1a;解析错误会在head中添加400的返回信息 ShouldBindxxx&#xff1a;解析错误直接返回&#xff0c;返回什么错误状态码由自己决定。