系统分析师15:系统设计-5 结构化设计

时间:2024-10-02 16:41:14
  • 概要设计【外部设计】∶功能需求分配给软件模块,确定每个模块的功能和调用关系,形成模块结构图

  • 详细设计【内部设计】∶为每个具体任务选择适当的技术手段和处理方法

  • 结构化设计原则

    • 模块独立性原则(高内聚、低耦合)
    • 保持模块的大小适中
    • 扇入/扇出系数合理(多扇入,少扇出)
      • 扇入:有几个模块调用它,扇入就为几
      • 扇出:当前模块,需要几个其他模块配合工作
      • 扇出越高,复杂度越高,耦合增加
    • 深度和宽度均不宜过高
  • 内聚类型

    • 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可
    • 顺序内聚:处理元素相关,而且必须顺序执行
    • 通信内聚:所有处理元素集中在一个数据结构的区域上
    • 过程内聚:处理元素相关,而且必须按特定的次序执行
    • 瞬时内聚(时间内聚):所包含的任务必须在同一时间间隔内执行
    • 逻辑内聚:完成逻辑上相关的一组任务
    • 偶然内聚(巧合内聚):完成一组没有关系或松散关系的任务
      - 自下向上:低内聚 =》高内聚
  • 耦合类型

    • 非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的
    • 数据耦合:一组模块借助参数表传递简单数据
    • 标记耦合:一组模块通过参数表传递记录信息(数据结构)
    • 控制耦合:模块之间传递的信息中包含用于控制模块内部逻辑的信息
    • 外部耦合:一组模块都访问同一全局简单变量,而且不是通过参数表传递该全局变量的信息
    • 公共耦合:多个模块都访问同一个公共数据环境
    • 内部耦合:一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部,两个模块有部分程序代码重叠;一个模块有多个入口
    • 自上向下:高耦合 =》低耦合
  • 模块的四个要素

    • 输入和输出:模块的输入来源和输出去向都是同一个调用者,即一个模块从调用者那儿取得输入,进行加工后再把输出返回调用者
    • 处理功能:指模块把输入转换成输出所做的工作
    • 内部数据:指仅供该模块本身引用的数据
    • 程序代码:指用来实现模块功能的程序

例5
以下关于软件系统模块结构设计的叙述中,正确的是() 。
A:当模块扇出过大时,应把下级模块进一步分解为若干个子模块
B:当模块扇出过小时,应适当增加中间的控制模块
C:模块的扇入大,表示模块的复杂度较高
D:模块的扇入大,表示模块的复用程度高

解析:

  • 扇出是指一个模块直接调用的下级模块的数目。如果一个模块的扇出过大,那么这个模块可能承担了过多的职责,这会导致模块的复杂度增加,维护困难。当模块扇出过大时,应把该模块进一步分解为若干个子模块,以降低模块的复杂度;A错误。
  • 扇入是指一个模块被其他模块调用的次数。如果一个模块的扇入过大,那么这个模块可能被多个模块依赖,这会增加模块的复用程度。模块的扇入大,表示模块的复用程度高;D正确。
  • 模块的扇入大并不表示模块的复杂度高,而是表示模块的复用程度高;C错误。
  • 模块的扇出过小并不一定需要增加中间的控制模块,这取决于具体的系统设计和需求。B错误。

答案:D。

例6
内聚表示模块内部各部件之间的联系程度,()是系统内聚度从高到低的排序。
A:通信内聚、瞬时内聚、过程内聚、逻辑内聚
B:功能内聚、瞬时内聚、顺序内聚、逻辑内聚
C:功能内聚、顺序内聚、瞬时内聚、逻辑内聚
D:功能内聚、瞬时内聚、过程内聚、逻辑内聚

解析
系统内聚度从高到低的排序:功能内聚、顺序内聚、通信内聚、过程内聚、顺势内聚、逻辑内聚、偶然内聚。
答案:C。