南京理工大学软件工程习题Word文件下载.docx
- 文档编号:20912027
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:13
- 大小:76.22KB
南京理工大学软件工程习题Word文件下载.docx
《南京理工大学软件工程习题Word文件下载.docx》由会员分享,可在线阅读,更多相关《南京理工大学软件工程习题Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
E.尽管有不合法的输入,软件仍能继续正常工作的能力。
①可测试性②可理解性③可靠性④可移植性
⑤可使用性⑥兼容性⑦容错性⑧可修改性
⑨可接近性⑩一致性
【7-6】改错性维护与“排错”是否是一回事?
为什么?
【7-7】从下列叙述中选出5条与提高软件的可移植性有关的叙述。
①把程序中与计算机硬件特性有关的部分集成在一起。
②选择时间效率和空间效率高的算法。
③使用结构化的程序设计方法。
④尽量用高级语言编写程序中对效率要求不高的部分。
⑤尽可能减少注释。
⑥采用表格控制方式。
⑦文档资料详尽、正确。
⑧在有虚拟存储器的计算机系统上开发软件。
⑨减少程序中对文件的读写次数。
⑩充分利用宿主计算机的硬件特性。
【7-8】软件可移植性是用来衡量软件的(A)的重要尺度之一。
为了提高软件的可移植性,应注意提高软件的(B)。
采用(C)有助于提高(B)。
为了提高可移植性,还应(D)。
使用(E)语言开发的系统软件具有较好的可移植性。
A.①通用性②效率③质量④人机界面
B.①使用的方便性②简洁性③可靠性④设备独立性
C.①优化算法②专用设备③表格驱动方式④树型文件目录
D.①有完备的文件资料②选择好的宿主计算机③减少输入输出次数
④选择好的操作系统
E.①COBOL②APL③C④SQL
【7-9】下面有关软件维护的叙述有些是不准确的,请将它们列举出来。
①要维护一个软件,必须先理解这个软件。
②阅读别人写的程序并不困难。
③如果文档不齐全也可以维护一个软件。
④谁写的软件就得由谁来维护这个软件。
⑤设计软件时就应考虑到将来的可修改性。
⑥维护软件时一件很吸引人的创造性工作。
⑦维护软件就是改正软件中的错误。
⑧维护好一个软件是一件很难的事情。
【7-10】什么是程序修改的副作用?
程序修改的副作用有哪几种?
试举例说明?
【7-11】讨论高级语言对适应性维护的影响。
使程序适应新的环境是可能的吗?
【7-12】在软件计划中是否应该把维护费用计划在内?
实际情况如何?
【7-13】软件再工程是一类软件工程活动,它能够使我们:
ⅰ)增进对软件的理解;
ⅱ)准备或直接提高软件自身的(A)、(B)或演化性。
第ⅱ部分旨在改善软件的(C),使得软件更容易为人们服务。
纯粹是出于改善性能的代码优化(D)软件再工程。
逆向工程属于上述软件再工程的第(E)部分。
A,B.①可靠性②灵活性③可维护性④可复用性⑤可修改性
C.①静态质量②动态质量③性能④功能
D.①属于②不属于
E.①ⅱ②ⅰ
【7-14】关于软件再工程的定义有这样两种说法。
ⅰ)软件再工程是变更系统(或程序)的(A),
或是系统(或程序)的(B),而不变更其(C)
的一种工
程活动。
ⅱ)检查并改进对象系统,按新的模式对系统进行
(D),进而实现其新的模式。
多数软件再工程工具可按图示的自动进行再工程
的模式工作。
请选择合适的答案完成这个图示。
A~D.①外部环境②接口
③内部机制④流程图
⑤重构⑥数据结构
⑦功能性⑧层次性
E~H.①其它产品②软件工具③信息库④软件
⑤软件的新视图
【7-15】
(A)是软件的一种表达形式,或是有关软件的一种报告。
(A)可分为4类:
软件的规格说明属于(B),PDL或DFD属于(C),规格说明文本的图索引属于(D),程序和程序段属于(E)。
(A)得到工具支持时,就成为(F),可用其支持加入、变更或浏览信息。
A,F.①软件说明②概要设计③软件视图④信息库
⑤视图编辑器⑥软件设计
B~E.①A类视图②1类视图(非过程性描述和∕或元描述)
③2类视图(伪过程性描述和∕或面向体系结构的描述)
④3类视图(纯过程性描述或直接导出的信息)
习题解答
【7-1】A.②,B.③,C.⑥,D.⑤,E.①,F④,G⑥,H②,I⑦
其中,A、B、C答案顺序可互换,D、E、F答案顺序可互换,G、H、I答案顺序可互换。
对于软件产品来说,有4个方面影响着产品的质量,即开发技术、过程质量、人员素质及成本、时间和进度等条件。
这4个方面因素对产品质量究竟有多少影响又取决于项目的项目的规模和项目的类型。
重视软件过程的质量是近年来质量管理理论和实践的新发展,但不能把产品质量的控制与过程质量的控制相对立起来。
重视软件过程质量的控制,其部分原因可能是,相对于产品质量的控制来说,过程质量的控制是先期的、主动的、系统的,而产品质量的控制是事后的(产品已经生产出来)、被动的(发现了不合格产品只能报废或采取其它补救措施)、个别的(逐个产品的质量检验
)。
【7-2】A②,B⑤,C⑩,D④,E⑨,F⑧,G⑥,H⑦
其中,A、B、C、D答案顺序可互换,E、F答案顺序可互换,G、H答案顺序可互换。
McCall质量模型如图所示。
用户对于已经投入使用的软件,会特别关注软件运行以后所表现出来的运行特性、修正特性和转移特性。
它们直接关系到软件的使用寿命。
因此,软件的11个质量特性应分为3组,分别隶属于这3个方面。
其中,属于产品运行特性的有正确性、可靠性、可使用性、完整性和效率。
属于产品修正特性的有可维护性、可测试性及灵活性。
属于产品转移特性的有可移植性、可复用性和互连性等。
【7-3】在软件开发完成交付用户使用后,为了保证软件在一个相当长的时期能够正常运行,就需要对软件进行维护。
软件维护的类型有4种:
改正性维护、适应性维护、完善性维护和预防性维护。
其中,改正性维护是要改正在特定的使用条件下暴露出来的一些潜在程序错误或设计缺陷;
适应性维护是要在软件使用过程中数据环境发生变化或处理环境发生变化时修改软件以适应这种变化;
完善性维护是在用户和数据处理人员使用软件过程中提出改进现有功能,增加新的功能,以及改善总体性能的要求后,修改软件以把这些要求纳入到软件之中。
由这些原因引起的维护活动可以归为以下几类:
预防性维护是为了提高软件的可维护性、可靠性等,事先采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试,为以后进一步改进软件打下良好基础。
软件维护的过程如图所示。
第一步是先确认维护要求。
这需要维护人员与用户反复协商,弄清错误概况以及对业务的影响大小,以及用户希望做什么样的修改,并把这些情况存入故障数据库。
然后由维护组织管理员确认维护类型。
对于改正性维护申请,从评价错误的严重性开始。
如果存在严重的错误,则必须安排人员,在系统监督员的指导下,进行问题分析,寻找错误发生的原因,进行“救火”性的紧急维护;
对于不严重的错误,可根据任务、机时情况、视轻重缓急,进行排队,统一安排时间。
对于适应性维护和完善性维护申请,需要先确定每项申请的优先次序。
若某项申请的优先级非常高,就可立即开始维护工作,否则,维护申请和其它的开发工作一样,进行排队,统一安排时间。
并不是所有的完善性维护申请都必须承担,因为进行完善性维护等于是做二次开发,工作量很大,所以需要根据商业需要、可利用资源的情况、目前和将来软件的发展方向、以及其它的考虑,决定是否承担。
尽管维护申请的类型不同,但都要进行同样的技术工作。
这些工作有:
修改软件需求说明、修改软件设计、设计评审、对源程序做必要的修改、单元测试、集成测试(回归测试)、确认测试、软件配置评审等。
在每次软件维护任务完成后,最好进行一次情况评审,对以下问题做一总结:
▪在目前情况下,设计、编码、测试中的哪一方面可以改进?
▪哪些维护资源应该有但没有?
▪工作中主要的或次要的障碍是什么?
▪从维护申请的类型来看是否应当有预防性维护?
情况评审对将来的维护工作如何进行会产生重要的影响,并可为软件机构的有效管理提供重要的反馈信息。
【7-4】A.③,B.①,C.④,D.②,E.②
在软件维护的实施过程中,为了正确、有效地修改,需要经历以下3个步骤:
分析和理解程序、修改程序和重新验证程序。
经过分析,全面、准确、迅速地理解程序是决定维护成败和质量好坏的关键。
有如下几种方法:
分析程序结构图、数据跟踪、控制跟踪及其它方法。
在将修改后的程序提交用户之前,需要通过静态确认、计算机确认和维护后的验收,保证修改后的程序的正确性。
【7-5】A.④,B.⑤C.⑥,D.③,E.⑦
论述A是指可移植性。
可移植性的定义是:
将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需工作量的大小。
论述B是指可使用性。
可使用性的定义是:
程序方便、实用、及易于使用的程度。
用户一有请求,就能对每一个操作方式作出解释,始终如一地按照用户的要求运行。
计算其按用户请求实现指定功能的概率,是一种度量准则。
论述C是指兼容性。
有两类基本的兼容性:
向下兼容和交错兼容。
向下兼容是软件新版本保留它早期版本的功能的情况;
交错兼容是共同存在的两个相关但不同的产品之间的兼容性。
软件可以在不同系统约束和不同用户需求下完成指定的工作。
论述D是指可靠性。
可靠性的定义是:
一个程序按照用户的要求和设计目标,在给定的一段时间内正确执行的概率。
论述E是指容错性。
容错性的定义是:
系统出错(机器临时发生故障或数据输入不合理)时,能以某种预定方式,做出适当处理,得以继续执行和恢复系统的能力。
【7-6】改错性维护与“排错(调试)”不是一个概念。
调试是作为测试的后继工作而出现的,是当测试发现软件中的错误后,进一步诊断和改正程序中潜在的错误的活动。
而改正性维护是指在软件交付使用后,由于开发时测试的不彻底、不完全,必然会有一部分隐藏的错误被带到运行阶段来,这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。
为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用所进行的诊断和改正错误的过程。
调试在程序编码阶段、测试阶段、运行和维护阶段都可以发挥作用,它实际上是一种工具或手段。
在软件交付运行之后,用户实际充当了测试员的角色,一旦发现软件运行中的错误或缺陷,就会将问题报告通报软件销售商,申请软件维护。
其后软件维护人员可以利用调试手段来诊断和改正软件中存在的错误。
这时可能涉及的范围不只包括程序,还有文档和数据,不仅可能修改程序代码,而且可能需要修改设计。
甚至需求。
所以改正性维护是在更大范围中做工作。
【7-7】正确的叙述有①、③、④、⑥、⑦。
为了提高软件的可移植性,应当尽可能用高级语言编写源程序代码。
对于与硬件或操作系统有关的部分,或对效率要求很高的部分,应当为它们建立专门的模块,将用汇编语言写的程序封装在这些模块中,与程序中其它部分以事先约定的标准方式接口。
这样,一旦硬件环境或操作系统环境发生变化,只需修改个别模块即可。
采用表格控制方式,将所有的外部设备接口或与其它系统的接口,包括信息传递、驱动程序入口等都用表格控制,即使将来硬件、相关软件发生的变化,只需修改表格中的登记项,原来的程序一律可以不改。
为了将来修改方便,不致于引入新的错误,相关文档一定要齐全、正确,程序中必须有必要的注释,并使用如结构化程序设计方法这样的良好的程序设计方法来编写程序。
至于算法选择,与效率有关,与可移植性无关。
其它叙述,如⑧、⑨、⑩,都不利于可移植性。
【7-8】A.③,B.④,C.③,D.①,E.③
软件可移植性是用来衡量软件质量的重要尺度之一。
为了提高软件的可移植性,应注意提高软件的设备独立性。
采用表格驱动的方式有助于提高软件的设备独立性。
为了提高可移植性,还应有完备的文档资料。
使用C语言开发的系统软件具有较好的可移植性。
【7-9】软件维护人员通常不是改软件的开发人员,这给软件维护带来很大的困难。
特别是有些软件在开发时没有遵循软件开发的准则,没有开发方法的支持,维护这样的软件就更困难。
下面列举一些与软件维护有关的问题。
①要维护一个软件,首先必须要理解它。
而理解一个别人编写的程序通常是很困难的,尤其是对软件配置(指各种相关的文档)不齐全的软件,理解起来就更加困难。
②需要维护的软件往往缺少合格的文档,或者文档资料不齐全,甚至根本没有文档。
在软维护中,合格的文档十分重要,它有助于理解被维护的软件。
合格的文档不仅要完整正确地反映开发过程各阶段的工作成果,而且应当容易理解并应与程序源代码一致。
而错误的文档会把对软件的理解引入歧途。
③在软件维护时,不要指望得到原来开发该软件的人员的帮助。
开发人员开发完一个软件后,往往会从事另一软件的开发,甚至已离开原开发单位。
即使原来的开发人员还在,也可能时间太久而忘却了实现的细节。
。
④多数软件在设计时没有考虑到将来的修改,这给软件的修改造成了困难。
而且在修改软件时很可能引入新的差错。
⑤软件维护通常不是一件吸引人的工作。
从事维护工作常使维护人员缺乏成就感,这也严重影响维护工作,从而影响了维护质量的提高。
【7-10】所谓副作用是指因修改软件而造成的错误或其它不希望发生的情况,有以下三种副作用:
①修改代码的副作用:
在使用程序设计语言修改源代码时,都可能引入错误。
例如,删除或修改一个子程序、删除或修改一个标号、删除或修改一个标识符、改变程序代码的时序关系、改变占用存储的大小、改变逻辑运算符、修改文件的打开或关闭、改进程序的执行效率,以及把设计上的改变翻译成代码的改变、为边界条件的逻辑测试做出改变时,都容易引入错误。
②修改数据的副作用:
在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件出错。
数据副作用就是修改软件信息结构导致的结果。
例如,在重新定义局部的或全局的常量、重新定义记录或文件的格式、增大或减小一个数组或高层数据结构的大小、修改全局或公共数据、重新初始化控制标志或指针、重新排列输入/输出或子程序的参数时,容易导致设计与数据不相容的错误。
③文档的副作用:
对数据流、软件结构、模块逻辑或任何其它有关特性进行修改时,必须对相关技术文档进行相应修改。
否则会导致文档与程序功能不匹配,缺省条件改变,新错误信息不正确等错误。
使得软件文档不能反映软件的当前状态。
如果对可执行软件的修改不反映在文档里,就会产生文档的副作用。
例如,对交互输入的顺序或格式进行修改,如果没有正确地记入文档中,就可能引起重大的问题。
过时的文档内容、索引和文本可能造成冲突,引起用户的失败和不满。
【7-11】所谓适应性维护,是指修改软件以适应外部环境(新的硬、软件配置)或数据环境(数据库、数据格式、数据输入∕输出方式、数据存储介质)发生的变化。
使用高级语言,如FORTRAN,C等,它们以接近自然语言的方式编写程序。
这样的程序可理解性强,结构化、模块化都很好,除了与硬件、相关软件(如操作系统)和数据库管理系统有关的部分外,都可以用它们编写程序。
但每一种类型的计算机,即使提供同一种高级语言,也有可能渗入它自己特有的功能。
为作到可移植,必须避开这些特殊的功能,使用语言的标准文本来编写程序。
当前。
许多软件开发商以一些高级语言为核心,开发了众多功能强大的软件编程环境,如Delphi(以Pascal为编程语言),VasualC++(以C++为编程语言),VasualBasic(以Basic为编程语言),Powerbuilder(以C++为编程语言)等。
在这些软件中提供了大量的控件或类库,可以帮助程序员以最小的工作量实现多种功能,还可以与多种数据库接口。
所有这些,对于适应性维护,都有有利的影响。
但事情也不是绝对的。
在MSWindows*.*或NT环境下开发的软件不一定能够直接转移到Linux环境下。
虽然许多人在这方面正在努力。
国外一些计算机厂商在硬、软件结合的环境下综合考虑软件跨平台使用的问题。
例如,Oracle数据库管理系统在几乎所有的硬件平台上,微软和苹果的Windows环境下都可以安装,这样使用OracleSQL编写的程序在多种硬件平台上,多种数据库和操作系统的环境下,不用修改程序,或修改少量程序,就可以直接运行。
【7-12】针对不同的工作目标,软件计划的可以有以下多种类型:
①项目实施计划(或称为软件开发计划)──这是软件开发的综合性计划,通常应包括任务、进度、人力、环境、资源、组织等多个方面。
②质量保证计划──把软件开发的质量要求具体规定为每个开发阶段可以检查的质量保证活动。
③软件测试计划──规定测试活动的任务、测试方法、进度、资源、人员职责等。
④文档编制计划──规定所开发项目应编制的文档种类、内容、进度、人员职责等。
⑤用户培训计划──规定对用户进行培训的目标、要求、进度、人员职责等。
⑥综合支持计划──规定软件开发过程中所需要的支持,以及如何获取和利用这些支持。
⑦软件分发计划──软件开发项目完成后,如何提供给用户。
并未专门考虑软件的维护费用问题。
但实际上,为了提高软件的可维护性,在软件开发的具体操作时,必须考虑将来的维护,采取必要的措施,以降低将来维护的费用。
【7-13】A③,B④,C①,D②,E②。
其中,A、B答案的顺序可互换。
软件再工程是一类软件工程活动,它能够使我们:
ⅱ)准备或直接提高软件自身的可维护性、可复用性或演化性。
上述软件再工程的第ⅱ部分旨在改善软件的静态质量,使得软件更容易为人们服务。
但是如果修改的目的并不是为了提高可维护性、可复用性或演化性或是帮人们更好地理解,那么应当把这种修改排除在软件再工程之外。
如纯粹是出于改善性能的代码优化或对其重构,都不能算做软件再工程。
逆向工程是属于上述软件再工程的第ⅰ部分。
因为逆向工程所得到的软件表达信息(如源程序)能够帮助人们理解该软件,或是便于对它做进一步的处理。
【7-14】A③,B⑥,C⑦,D⑤,E④,F⑤,G③,H①。
其中,A、B的答案顺序可互换;
关于软件再工程的定义有这样两种说法。
ⅰ)软件再工程是变更系统(或程序)的内部机制,或是系统(或程序)的数据结构,而不变更其功能性的一种工程活动。
ⅱ)检查并改进对象系统,按新的模式对系统进行重构,进而实现其新的模式。
多数软件再工程工具可按图示的自动进行再工程的模式工作。
图中大的矩形框表示某个再工程工具。
在分解器中进行语法分析和语义分析之后,将相关信息送到信息库。
信息库中的信息经过合成器,可以在软件维护中生成各种视图和其它产品,对于进一步分析,自动进行维护以及进行相关的研究都很有价值。
【7-15】A.③,B.②,C.③,D.①,E.④,F⑤
软件视图的示例如下图所示。
有规格说明、数据流图(DFD)、源程序、度量值、根据静态源程序导出的报告、以及表明软件性能的测试数据等。
图中的软件视图包含了视图信息。
在视图得到视图编辑器的支持时,可以使用这种工具加入、变更和浏览视图的信息。
视图分为4类:
①1类视图:
非过程性描述和∕或元描述。
例如,软件的规格说明和数据库的概念模式即属于此类。
②2类视图:
伪过程性描述和∕或面向体系结构的描述。
例如,软件设计、PDL描述和软件的体系结构(如模块调用层次图、数据流图DFD)即属于此类。
③3类视图:
纯过程性描述或直接导出的信息。
例如,源程序、程序段、数据、源程序中的数据定义、由视图分解得到的对象、关系和语法树均属于此类。
④A类视图:
伴随以上各类的分析视图。
▪A1类视图是对1类视图的分析信息。
例如,规格说明文本的图索引。
▪A2类视图是有关2类视图的分析信息,如源模块的耦合度。
▪A3类视图是有关3类视图的分析视图,如源程序中的模块数。
下面将有关视图的概念解释一下。
①信息库:
信息库是有关软件的信息仓库。
通常,把有关软件的信息存入信息库,有3种方法:
▪将软件分解成为对象和关系;
▪逐步得到对象和关系,借助工具将它们送入信息库;
▪从其它信息库引入信息。
①分解:
把视图变换成信息库中存放的对象和关系。
例如,编译器将程序分解为抽象的语法树表示。
②合成:
根据信息库中的信息生成视图信息。
合成器(工具或完成合成工作的人员)在信息库中寻找有关的对象和关系,组合成视图信息,然后根据要求将视图格式化,以显示视图信息。
例如,编辑器的后端常常借助于扫视语法树或其它类似成分产生程序代码。
③变换:
变换是再工程的核心活动。
再工程可在同一类视图或前一类视图上把一个软件视图的信息变换成为另一个视图的信息。
例如,再工程变换可以是把源代码(属3类视图)变换成结构化源代码(3类视图)、更新的设计(2类视图)、修正的规格说明(1类视图),或是计算出的静态度量值(A3类视图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南京理工大学 软件工程 习题