软件工程习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.怎样评价程序的执行效率?它与程序清晰性的关系是怎样的?
答:许多程序员往往片面追求效率,其实程序系统的成本不仅包括运行所需的机时,同时还应把程序员及操作员所花费的人力考虑进去。在编程时为追求效率而损害可读性或可靠性,会给以后的维护工作带来困难,所以从整体上看来是不值得的。
此外,还应该认识到,提高程序效率的根本途径在于:选择良好的设计方法、良好的数据结构与算法,而不是靠编程时对程序语句进行调整。