04 总体设计
一、选择题
(1) 模块的内聚性最高的是(  D  )
A.逻辑内聚        B.时间内聚
C.偶然内聚        D.功能内聚
(2) 总体设计的目的是确定整个系统的( B )
A.规模            B.功能及模块结构
C.费用            D.测试方案
(3) 一个模块内部各程序都在同一数据结构上操作,这个模块的内聚性称为(  C )
A.时间内聚        B.功能内聚
C.通信内聚        C.过程内聚
(4) 软件总体设计是指软件总体结构设计和数据设计,该阶段的主要任务不包括()。
A. 设计软件的模块结构        B. 定义接口并建立数据结构
C. 模块设计                  D. 生成概要设计规格说明
(5) 如果某种内聚要求一个模块中包含的任务必须在同一段时间内执行,则这种内聚为(  A  )
A.时间内聚    B.逻辑内聚    C.通信内聚    D.信息内聚
(6) 为了提高模块的独立性,模块之间最好使用( D   )
A. 控制耦合    B. 公共耦合      C. 内容耦合  D. 数据耦合
(7) 结构化程序设计的一种基本方法是(  D  )。
A.筛选法      B.递归法        C.归纳法    D.逐步求精法
(8) 对软件进行分解,是为了( B  )
A.降低模块间接口的复杂程度
B.降低模块的复杂程度
C.降低模块的复杂程度,并降低模块间接口的复杂程度
D.降低模块的复杂程度,并提高模块间接口的复杂程度
(9) 在软件工程中,描绘软件结构的图形工具不包括()。
A. 层次图      B. HIPO          C.PAD      D.H
(10) 两个模块彼此传递的信息中有控制信息,这种耦合称为( )。
A.数据耦合    B.公共环境耦合  C.内容耦合  D.控制耦合
(11) 耦合是对软件不同模块之间互连程度的度量。各种耦合按从强到弱排列如下:(  C  )
A. 内容耦合,控制耦合,数据耦合,公共环境耦合。
B. 内容耦合,控制耦合,公共环境耦合,数据耦合。
C. 内容耦合,公共环境耦合,控制耦合,数据耦合。
D. 控制耦合,内容耦合,数据耦合,公共环境耦合。
(12) 结构化设计又称为( B )
A. 概要设计     B. 面向数据流设计
C. 面向对象设计   D. 详细设计
(13) 按照总体设计中的启发式规则,模块的作用域和模块的控制域之间的关系应为( A )
A. 模块的作用域应在模块的控制域之内。
B. 模块的控制域应在模块的作用域之内。
C. 模块的控制域与模块的作用域互相独立。
D. 以上说法都不对。
(14) SD方法中全面指导模块划分的最重要的原则是 (  D  )
A.程序模块化  B.模块高内聚  C.模块低耦合  D.模块独立性
(15) 软件总体设计是指软件总体结构设计和数据设计,该阶段的主要任务不包括(  C  )。
A. 设计软件的模块结构        B. 定义接口并建立数据结构
C. 模块内部算法设计模块化设计名词解释          D. 生成概要设计规格说明
二、填空
1. 软件设计的主要任务是根据        导出系统的实现方案。
(软件需求规格说明书)
2. 一个模块拥有的直属下级模块的个数称为      ,一个模块的直接上级模块的个数称为     
(模块的扇出、模块的扇入)
3. 将数据流图映射为软件结构时, 所用映射方法涉及信息流的类型。
其信息流分为                      两种类型。
(变换型数据流图、事务型数据流图)
4. 耦合的强弱取决于            的复杂性、进入或调用模块的位置以及
通过界面传送数据的多少等。
(模块间接口)
5. 总体设计确定模块的   ,而详细设计确定模块的   
(外部结构、内部结构)
6. 软件结构是以   为基础而组成的一种控制层次结构。
(模块)
三、判断题
1. 耦合是影响软件复杂度的重要因素。设计时应尽量使用内容耦合,少用控制耦合和特征耦合,限制公共环境耦合,完全不用数据耦合。(  F 
2. 采用信息隐藏原理指导模块设计可以支持模块的并行开发,减少软件测试和软件维护的工作量。
3. 模块接口设计要简单,以便降低复杂程度和冗余度。(  T 
4. 在模块化原理中,模块的作用域应该在控制域内。(  T 
5. 系统分析阶段和系统设计阶段一般不考虑测试。                    F
6. 改造程序结构,要降低耦合度,提高内聚度。                      T
7. 一个软件系统中可能会出现所有模块之间没有任何联系的情况。      F 
8. 概要设计也称总体设计,其过程由确定设计方案和结构设计两个阶段组成。(  T 
9. 模块的扇入是指该模块被其它模块调用的个数,扇入应尽可能的小。 
    10. 软件概要设计包括软件系统结构设计以及数据结构和数据库设计。( T
四、名词解释
1. 结构化设计
    基于数据流的设计方法,该方法定义了一些不同的“映射”,利用这些映射可以把数据流图变换成软件结构。
2. 耦合
    是指软件结构中各模块间相互联系的紧密程度的一种度量。
3. 内聚
    是指一个模块内的各个元素彼此结合的紧密程度的度量。
4. 深度
    是指软件结构中模块的层次数
5. 宽度
    同一层次中最大的模块个数
五、简答题
(1) 什么是模块化?模块化的根据是什么?采用模块化原理的优点是什么?
    答:1.模块化
是指解决一个复杂的问题时自顶向下逐层把软件结构划分成若干模块的过程。
  2.由大化小,各个击破
把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。
  3.采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读。模块化有助于提高软件的可靠性也有助于提高软件开发工程的组织管理。一个复杂的大型程序可以由许多程序员分工编写不同的模块,并且可以进一步分配技术熟练的程序员编写困难的模块。
(2) 简述总体设计过程应该遵循的基本原理。
    答:1.模块化
    是指解决一个复杂的问题时自顶向下逐层把软件结构划分成若干模块的过程。
      2.抽象
      是指抽出事物的本质而暂不考虑它的细节。
      3.逐步求精
      是为了能集中精神解决主要问题而尽力推迟考虑问题的细节。
      4.信息隐藏
      是在设计中确定模块时,使得一个模块内包含的信息(过程和数据),对于不需要这些信息的其他模块来说,是不能访问的。
      5.局部化
      把一些关系密切的软件元素物理地放得彼此靠近。
      6.模块独立性
      是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。
(3) 软件结构设计的启发式规则有哪些?
答:1:模块独立性准则
设计出软件的初步结构后,应该审查分析这个结构,通过模块分解和合并,力求做到降低耦合提高内聚,保持模块相对独立性。
2.模块的作用域在控制域内
模块的作用域指受该模块内一个判断影响的所有模块的集合。
模块的控制域指模块本身以及其所有直接或者间接从属于它的模块集合。
一个模块的影响范围应在其控制范围内,且判定条件所在的模块应与其受影响的模块在层次上尽量接近。
3.软件结构的形态特征准则
模块结构的深度、宽度、扇入和扇出。
4.模块大小准则
在考虑模块的独立性时,为了增加可理解性,模块的大小最好在50-150条语句左右,可以用1-2页纸打印,便于人们阅读与研究。
5.模块接口准则
  1)模块接口设计要简单,以便降低复杂程度和冗余度。
  2)设计功能可预测并能得到一个验证的模块。
  3)适当划分模块规模,以保持其独立性。