软件工程习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题三答案

一、选择题

1.SD方法的设计总则是( )。

A) 程序简洁、操作方便B) 结构清晰、合理

C) 模块内聚性强D) 模块之间耦合度低

2.软件设计的主要任务是( )。

A)将分析阶段获得的需求说明转换为计算机中可实现的系统

B)完成系统的数据结构和程序结构设计

C)完成模块的编码和测试

D)对模块内部的过程进行设计

3.设计阶段应达到的目标有( )。

A) 提高可靠性和可维护性B) 提高应用范围

C) 结构清晰D) 提高可理解性和效率

4.从工程管理的角度来看,软件设计分两步完成( )。

A) ①系统分析②模块设计B) ①详细设计②总体设计

C) ①模块设计②详细设计D) ①总体设计②详细设计

5.模块独立性准则由以下定性指标来衡量( )。

A) 分解度B) 耦合度C) 屏蔽性D) 内聚性

6.用户界面设计的任务包括( )。

A) 确定用户界面类型B) 建立任务模型

C) 建立用户模型D) 建立功能模型

7.SP方法中的基本控制结构有( )。

A) 顺序结构B) 选择结构C) 重复结构D) GOTO结构

8.为使程序中数据说明更易于理解和维护,必须遵循以下原则( ) 。

A)数据说明的次序应当规范化

B)一个语句说明多个变量时,各变量名按字母顺序排列

C)对于复杂的数据结构,要加注释,说明在程序实现时的特点

D)定义变量名应按字母顺序排列

9.在详细设计翻译转换成源程序代码后,算法效率反映为对程序的哪几个方面的要

求( )。

A) 读写速度B) 代码长度C) 存储容量D) 执行速度

二、判断题

1.划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。( )

2.在网状结构中任何两个模块都是平等的,没有从属关系,所以在软件开发过程中

常常被使用。( )

3.信息隐蔽原则有利于提高模块的内聚性。( )

4.中心变换型的DFD图可看成是对输入数据进行转换而得到输出数据的处理,因

此可以使用事务分析技术得到初始的模块结构图。( )

5.当模块的控制范围是其作用范围的子集时,模块之间的耦合度较低。( )

6.项目应用领域是选择语言的关键因素。( )

7.良好的程序设计风格简单说就是高的编程技巧。( )

三、简答题

1. 模块内联系和模块间联系有哪些种类?

答:

(1)块间联系的类型,按照耦合度由大到小分为:

内容型:直接引用另一模块的内部信息;

公共型:两个模块引用共同的全程数据区;

控制型:模块间传送的信息用于控制模块的内部逻辑;

复合型:模块间传送复合的数据结构;

数据型:模块间传送单个数据项。

(2)块内联系的类型,按照内聚性从小到大分为:

偶然型:模块内部没有必然联系;

逻辑型:逻辑上相似的功能放进一个模块;

瞬时型:将同时执行的语句放在一个模块;

通信型:模块中的各部分引用共同的数据;

顺序型:模块中一部分的输出是另一部分的收入;

功能型:模块中刚好包含了完成一个基本任务所必需的成分。

2. 下图是修改文件记录的DFD图,请确定其主加工。

解:主加工为:账号、修改、写记录。

4.按照“降低块间联系,提高块内联系”的设计总则对模块进行修改,具体从哪些

方面进行改进?

解:

(1)尽可能建立功能模块;

(2)消除重复功能;

(3)模块的作用范围与控制范围,即当作用范围为控制范围的子集时,才能获

得较低的块间联系;

(4)模块的大小适当;

(5)模块的扇入扇出数不宜太多。

5. 根据模块的作用范围与控制范围的原则,判定a、b两图的正确性。

解:显然,图a不满足作用范围应与控制范围的原则,模块F的作用范围不在控制范围之内。

图b的模块设计合理。

6. 编码阶段的主要任务是什么,应交付的结果是什么?

答:编码阶段的主要任务是为每个模块编写程序。即是:将详细设计的结果转换为用某种计算机语言写的程序——源程序代码。编码阶段应交付的结果是带有“程序内部文档”的、不再含有语法错误的程序。

7.SP法的自顶向下,逐步求精方法的优点有哪些?

答:此法符合人们解决复杂问题的普遍规律,可提高软件开发的成功率和生产率;

而且用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程,开发出来的程序具有清晰的层次结构,因此程序容易阅读和理解。这样,程序自顶向下,逐步细化,分解成一个树型结构。

因此,在同一层次的节点上做细化工作,相互之间没有联系,它们之间的细化工作相互独立;在任何一步发生错误,一般只影响它下层的节点,同一层其他节点不受影响;在以后的测试中,也可以先独立地一个节点一个节点地做,最后再集成。

这样,程序清晰和模块化,使得在修改和重新设计一个软件时,可复用的代码量最大。

8.为了使程序具有良好的设计风格,应注意哪些方面的问题?

答:(1) 标识符应按意取名。

标识符即符号名,包括:模块名、常量名、标号名、子程序名、数据区名、缓冲区名等。这些名字应能反映它所代表的实际东西,应有一定实际意义,使其能够见名知意,有助于对程序功能的理解。

(2) 程序应加注释,它分为两类:序言性注释和功能性注释。

序言性注释应置于每个模块的起始部分,主要内容有:①说明每个模块的用途,功能;②说明模块的接口即调用格式、参数描述及从属模块的清单;③数据描述;

④开发历史。

功能性注释是嵌在源程序体中的,用于说明其后的程序段或语句的功能以及数据的状态;也就是解释下面要“做什么”,或是执行下面的语句会发生什么情况;而不是解释下面“怎么做”,因为怎么做常常是与程序重复的,且对读者理解程序没有什么帮助。

9.怎样评价程序的执行效率?它与程序清晰性的关系是怎样的?

答:许多程序员往往片面追求效率,其实程序系统的成本不仅包括运行所需的机时,同时还应把程序员及操作员所花费的人力考虑进去。在编程时为追求效率而损害可读性或可靠性,会给以后的维护工作带来困难,所以从整体上看来是不值得的。

此外,还应该认识到,提高程序效率的根本途径在于:选择良好的设计方法、良好的数据结构与算法,而不是靠编程时对程序语句进行调整。

相关文档
最新文档