一、填空 1、软件设计是要把描述软件“做什么”的 转换为描述“怎么做”的 ,即着手实现软件的需求,并将设计结果记入软件 文档中。 2、软件程序系统结构的设计是以 为基础的。以需求分析的结果为依据,从实现的角度进一步划分为 ,并组成模块的 。 3、数据库的设计指 的设计,主要进行 、 、 的设计。 4、在数据处理系统的功能分析与设计过程中同时要进行数据分析和数据设计,数据库的概念设计和逻辑设计分别对应于系统开发的 与 ,而数据库的物理设计与模块的 相对应。 5、在软件的系统结构中,,模块是可组合、可分解和可更换的单元。模块的基本属性包括功能、 、 和状态。 6、模块内聚与耦合是模块独立性的两个定性标准。在划分模块时,应尽可能作到 内聚、 耦合。 7、一个模块的 范围应在其 范围之内,且判定所在的模块应与受其影响的模块在层次上尽可能 。 8、如果模块之间耦合性太高,每个模块内功能不复杂,可将它们 ,以减少信息的 和 的引用。若有多个相关的模块,应对它们的功能进行 ,消去 。 二、单项选择题
1、结构化设计方法(SD)与结构化分析方法(SA)一样,遵循( )的模型,采用自顶向下,逐步细化的技术。通常SD方法继续SA的工作,根据数据流图设计程序的结构。 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、模块之间的信息可以做“控制信息”用,也可以作为( )用。 A. 控制流 B. 数据结构 C. 控制结构 D. 数据
8、( )数据处理问题的工作过程大致分为三步:即取得数据、变换数据和输出数据。 A. 变换型 B. 事务型 C. 演化型 D. 结构化 9、在多层系统结构图中,其模块的层次数称为结构图的( )。 A. 深度 B. 宽度 C. 控制域 D. 粒度
10、( )着重反映的是模块间的隶属关系,即模块间的调用关系和层次关系。 A. 程序流程图 B. 数据流图 C. 系统结构图 D. 实体关系图
11、( )是指把一些关系密切的软件元素物理地放置到彼此靠近的位置。 A. 信息隐蔽 B. 内聚 C. 局部化 D. 模块独立
12、块间联系和块内联系是评价程序结构质量的重要标准。联系的方式、共用信息的作用、共用信息的数量和界面的( )等因素决定了块间联系的大小。 A. 友好性 B. 健壮性 C. 清晰性 D. 安全性
13、为了提高模块的独立性,模块之间最好是( )。 A. 公共耦合 B. 控制耦合 C. 内容耦合 D. 数据耦合
14、为了提高模块的独立性,模块内部最好是 ( )。 A. 逻辑内聚 B. 时间内聚 C. 功能内聚 D. 通信内聚 15、从下列有关系统结构图的叙述中选出正确的叙述。 A. 系统结构图中反映的是程序中数据流的情况。 B. 系统结构图是精确表达程序结构的图形表示法。因此,有时也可将系统结构当作程序流程图使用? C. 一个模块的多个下属模块在系统结构图中所处的左右位置是无关紧要的。 D. 在系统结构图中,上级模块与其下属模块之间的调用关系用有向线段表示。这时,使用斜的线段和水平、垂直的线段具有相同的含义。 三、选择填空
1、软件的开发工作经过需求分析阶段,进入( A )以后,就开始着手解决“怎么做”的问题。常用的软件设计方法有( B )、( C )、( D )和( E )等方法。 供选择的答案: A~B.① 程序设计 ② 设计阶段 ③ 总体设计 ④ 定义阶段 ⑤ SD方法 ⑥ SP方法 C.① Jackson方法 ② 瀑布法 ③ 快速原型法 ④ 回溯法 D~E. ① LCP(Wanier)方法 ② 递归法 ③ Parnas方法 ④ 自下而上修正 ⑤ 逐步求精法 ⑥ 检测校正法
2、请将下述有关模块独立性的各种模块之间的耦合,按其耦合度从低到高排列起来。 ① 内容耦合 ② 控制耦合 ③ 非直接耦合 ④ 标记耦合 ⑤ 数据耦合 ⑥ 外部耦合 ⑦ 公共耦合
3、请将下述有关模块独立性的各种模块内聚,按其内聚度(强度)从高到低排列起来。 ① 巧合内聚 ② 时间内聚 ③ 功能内聚 ④ 通信内聚 ⑤ 逻辑内聚 ⑥ 信息内聚 ⑦ 过程内聚
4、从供选择的答案中选出正确的答案填入下列叙述中的( )内。 模块内聚性用于衡量模块内部各成份之间彼此结合的紧密程度。 (1) 一组语句在程序中多处出现,为了节省内存空间把这些语句放在一个模块中,该模块的内聚性是( A )的。 (2) 将几个逻辑上相似的成分放在同一个模块中,通过模块入口处的一个判断决定执行哪一个功能。该模块的内聚性是( B )的。 (3) 模块中所有成分引用共同的数据,该模块的内聚性是( C )的。 (4) 模块内的某成份的输出是另一些成份的输入,该模块的内聚性是( D )的。 (5) 模块中所有成份结合起来完全一项任务,该模块的内聚性是( E )的。它具有简明的外部界面,由它构成的软件易于理解、测试和维护。 供选择的答案: A~E: ① 功能内聚 ② 信息内聚 ③ 通信内聚 ④ 过程内聚 ⑤ 巧合内聚 ⑥ 时间内聚 ⑦ 逻辑内聚
5、从供选择的答案中选出正确的答案填入下面的( )中。 块间联系和块内联系是评价程序模块结构质量的重要标准。联系的方式、共用信息的作用、共用信息的数量和接口的( A )等因素决定了块间联系的大小。在块内联系中,( B )的块内联系最强。 SD方法的总的原则是使每个模块执行( C )功能,模块间传送( D )参数,模块通过( E )语句调用其它模块,而且模块间传送的参数应尽量( F )。 此外,SD方法还提出了判定的作用范围和模块的控制范围等概念。SD方法认为,( G )应该是( H )的子集。 供选择的答案: A: ① 友好性 ② 健壮性 ③ 简单性 ④ 安全性 B: ① 巧合内聚 ② 功能内聚 ③ 通信内聚 ④ 信息内聚 C: ① 一个 ② 多个 D: ① 数据型 ② 控制型 ③ 混合型 E: ① 直接引用 ② 标准调用 ③ 中断 ④ 宏调用 F: ① 少 ② 多 G~H:① 作用范围 ② 控制范围
6、从供选择的答案中选出应该填入下列关于软件设计的叙述的( )内的正确答案。 在众多的设计方法中,SD方法是最受人注意的,也是最广泛应用的一种,这种方法可以同分析阶段的( A )方法及编程阶段的( B )方法前后衔接,SD方法是考虑如何建立一个结构良好的程序结构,它提出了评价模块结构质量的两个具体标准——块间联系和块内联系。SD方法的最终目标是( C ),用于表示模块间调用关系的图叫( D )。 另一种比较著名的设计方法是以信息隐蔽为原则划分模块,这种方法叫( E )方法。 供选择的答案: A~B:① Jackson ② SA ③ SC ④ Parnas ⑤ SP C: ① 块间联系大,块内联系大 ② 块间联系大,块内联系小 ③ 块间联系小,块内联系大 ④ 块间联系小,块内联系小 D: ① PAD ② HCP ③ SC ④ SADT ⑤ HIPO ⑥ NS E: ① Jackson ② Parnas ③ Turing ④ Wirth ⑤ Dijkstra
7、从供选择的答案中选出应该填入下列关于软件详细设计的叙述的( )内的正确答案。 软件详细设计工具可分为三类,即:图示工具、设计语言和表格工具。图示工具中,( A )简单而应用广泛、( B )表示法中,每一个处理过程用一个盒子表示,盒子可以嵌套。( C )可以纵横延伸,图形的空间效果好。 ( D ) 是一种设计和描述程序的语言,它是一种面向( E )的语言。 供选择的答案: A~C:① NS图 ② 流程图 ③ HIPO图 ④ PAD图 D: ① C ② PDL ③ RPOLOG ④ PASCAL E: ① 人 ② 机器 ③ 数据结构 ④ 对象
8、Jackson结构化程序设计方法(JSP)是英国人M. Jackson提出的,它是一种面向( A )的设计方法,主要适用于规模适中的( B )系统的开发,其基本步骤依次为( C )、 ( D ) 、( E ) 。 供选择的答案: A:① 对象 ② 数据流 ③ 数据结构 ④ 控制结构 B:① 数据处理 ② 文字处理 ③ 实时控制 ④ 科学计算 C~E:① 建立数据结构 ② 列出基本操作 ③ 建立程序结构 ④ 建立控制结构 ⑤ 建立对象
9、从供选择的答案中选出应该填入下列关于软件设计的叙述的( )内的正确答案。 在完成软件概要设计,并编写出相关文档之后,应当组织对概要设计工作的评审。评审的内容包括: 分析该软件的系统结构、子系统结构,确认该软件设计是否覆盖了所有已确定的软件需求,软件每一成份是否可( A )到某一项需求。分析软件各部分之间的联系,确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足( B )和( C )的要求。模块( D )是否在其( E )之内。 供选择的答案 A: ① 覆盖 ② 演化 ③ 追溯 ④ 等同 ⑤ 连接 B: ① 多功能 ② 高内聚 ③ 高耦合 ④ 高效率 ⑤ 可读性 C: ① 多入口 ② 低内聚 ③ 低耦合 ④ 低复杂度 ⑤ 低强度 D~E:① 作用范围 ② 高内聚 ③ 低内聚 ④ 取值范围 ⑤ 控制范围 四、问答题
1、逐步求精、分层过程与抽象等概念之间的相互关系如何?
2、完成良好的软件设计应遵循哪些原则?
3、如何理解模块独立性?用什么指标来衡量模块独立性?
4、模块独立性与信息隐蔽(反映模块化有效程度的属性)有何关系?
5、模块的内聚性程度与该模块在分层结构中的位置有关系吗?说明你的论据。
6、耦合性的概念和软件的可移植性有什么关系?请举例说明你的论述。
7、递归模块(即自己调用自己的模块)的概念如何能够与本章所介绍的设计原理与方法相适应?
8、举例说明你对概要设计与详细设计的理解。有不需要概要设计的情况吗?
9、如何用PDL语言来实施逐步求精的设计原理?