『软件工程11』结构化系统设计:解决软件“怎么做”问题

结构化系统设计——解决软件“做什么”问题

  • 一、设计的目标和任务
    • 1、目标
    • 2、任务
    • 3、开发阶段的信息流
    • 4、软件设计的重要性
    • 5、软件设计的技术观点和管理观点
  • 二、设计基础
    • 1、结构图(体系结构图、模块结构图)
      • (1)分析结构图三者间的关系
      • (2)结构图图例
    • 2、模块化(思想)
    • 3、抽象化(“开门”)
      • (1)抽象化是什么
      • (2)抽象化的类型
      • (3)抽象化举例
    • 4、信息隐藏
  • 三、模块的独立性
    • 1、模块
      • (1)属性
      • (2)特性
    • 2、模块的独立性
      • (1)模块的独立性是什么
      • (2)两个准则
      • (3)模块独立性的14字经
    • 3、耦合的七种类型
      • (1)非直接耦合(Non-direct Coupling)
      • (2)数据耦合
      • (3)标记耦合
      • (4)控制耦合
      • (5)外部耦合
      • (6)公共耦合
      • (7)内容耦合
    • 4、内聚的七种类型
      • (1)功能内聚
      • (2)信息内聚
      • (3)通信内聚
      • (4)过程内聚
      • (5)时间内聚
      • (6)逻辑内聚
      • (7)巧合内聚
  • 四、软件的体系结构设计
    • 1、体系结构风格
      • (1)以数据为中心的体系结构
      • (2)数据流体系结构
      • (3)调用和返回体系结构
      • (4)面向对象体系结构
      • (5)层次式体系结构
    • 2、衡量体系结构复杂度
    • 3、映射需求到软件体系结构
      • (1)步骤
      • (2)系统结构图中的模块
      • (3)变换型系统结构图
      • (4)事务型系统结构图
      • (5)变换分析
      • (6)事务分析
      • (7)混合结构
      • (8)软件模块结构的改进
  • 五、数据库设计
    • 1、数据模式需满足的条件
    • 2、数据的规范化形式
      • (1)非规范化形式示例
      • (2)数据的规范化形式
      • (3)数据库的三大范式
  • 六、处理过程设计
    • 1、处理过程设计是什么/li>
    • 2、处理过程设计的方法
      • (1)程序流程图
      • (2)N-S图(盒图)
      • (3)问题分析图(PAD)
      • (4)伪代码
  • 七、界面设计
  • 八、写在最后

在上一篇文章中我们了解到,结构化系统分析得到系统的逻辑模型,解决软件“做什么”的问题。而在我们接下来的这篇文章中,将讲解结构化系统设计,那么结构化系统设计可以做什么呢构化系统设计是为了得到目标系统的物理模型,解决软件“怎么做”的问题。先用一张图来了解从逻辑模型到物理模型的过渡。

『软件工程11』结构化系统设计:解决软件“怎么做”问题

从上图可知,从设计到编码阶段,软件要经过数据设计、系统结构设计、接口设计和过程设计。

4、软件设计的重要性

所以,软件设计是后续开发步骤和软件维护工作的基础。如果一个软件没有设计,那么会整个系统结构将会是非常不稳定的。

『软件工程11』结构化系统设计:解决软件“怎么做”问题

从上图中可以看到,在一个软件中,从管理层面来看,管理层的人一般负责概要设计和详细设计。而从技术层面来看,技术人员主要负责数据设计、系统结构设计、接口设计和过程设计。

二、设计基础

1、结构图(体系结构图、模块结构图)

结构图反映模块之间的层次调用关系和联系:它以特定的符号表示模块模块间的调用关系模块间信息的传递

(1)分析结构图三者间的关系

1)模块: 模块用矩形框表示,并用模块的名字标记它。

如图所示:

『软件工程11』结构化系统设计:解决软件“怎么做”问题

3)模块间信息的传递: 当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使得被调用模块能够运行。而被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块。

如图所示:

下图所表示的是,在模块A的箭头尾部有一个菱形符号,表示 有条件地调用另一个 。如果一个箭头尾部以一个弧形符号表示,表示反复调用。如下图所示, 反复调用 和 。

『软件工程11』结构化系统设计:解决软件“怎么做”问题

2、模块化(思想)

(1)模块化是什么: 指把一个大的系统划分成若干个小模块(东西),即被称为模块化。

(2)模块化想要达到的目的: 使复杂问题简单化处理。

3、抽象化(“开门”)

(1)抽象化是什么

  • 软件系统进行模块设计时,可以有不同的抽象层次。
  • 在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。
  • 较低的抽象层次上,则采用过程化的方法。

(2)抽象化的类型

1)过程抽象(开)

从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽象化过程的一次细化。

比如:

  • 在软件需求分析阶段,用“问题所处环境中大家所熟悉的术语”来描述软件的解决方法。
  • 在从概要设计到详细设计的过程中,抽象化的层次逐次降低。当产生源程序时到达最低抽象层次。

2)数据抽象(门)

在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。

(3)抽象化举例

1)过程抽象

Question: 开发一个 软件的三层抽象。

Answer:

抽象层次Ⅰ: 用问题所处环境的术语来描述这个软件:

该软件包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅助视图都可以用这个 软件实现……

抽象层次Ⅱ: 任务需求的描述。

在这个抽象层次上,未给出“怎样做”的信息,不能直接实现。

抽象层次Ⅲ: 程序过程表示。

以 (二维)绘图生成任务为例:

2)数据抽象

Question: 在 软件中,定义一个叫做 的数据对象。

Answer:

可将 规定为一个抽象数据类型,定义它的内部细节为:

数据抽象drawing本身由另外一些数据抽象,如 、 构成。

定义drawing的抽象数据类型之后,可引用它来定义其它数据对象,而不必涉及 的内部细节。

例如,定义:blue-print IS INSTANCE OF drawing 或 schematic IS INSTANCE OF drawing。

4、信息隐藏

信息隐蔽,于1972年由 提出,是最早的软件开发方法。信息隐蔽指的是每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。

三、模块的独立性

1、模块

(1)属性

“模块”,又称为“组件”,它一般具有如下三个基本属性:

  • 功能: 描述该模块实现什么功能。
  • 逻辑: 描述模块内部怎么做。
  • 状态: 描述该模块使用时的环境和条件。

(2)特性

  • 外部特性: 模块的模块名、参数表、参数表其中的输入参数和输出参数,以及对程序和整个系统所造成的影响。
  • 内部特性: 完成其功能的程序代码和仅提供给该模块内部使用的数据,即程序和数据。

2、模块的独立性

(1)模块的独立性是什么

模块独立性,是指软件系统中每个模块只涉及软件要求的具体子功能,且和软件系统中其它模块相对应的接口是简单的。

例如: 若一个模块只具有单一的功能且与其它模块没有太多的联系,则称此模块具有模块独立性

(2)两个准则

一般采用两个准则来度量模块的独立性。即模块间耦合和模块内聚。如以下两点:

  • 耦合模块之间的互相连接的紧密程度的度量。
  • 内聚模块内各功能部分之间的度量。

注意:独立性强的模块,说明这个模块高内聚、低耦合。

(3)模块独立性的14字经

14字经 { 耦 合 : 七 字 经 — — 非 数 标 控 外 公 内 , 耦 合 度 越 高 , 独 立 性 越 低 内 聚 : 七 字 经 — — 功 信 通 过 时 逻 巧 , 内 聚 度 越 低 , 独 立 性 越 低

{耦合:七字经——非数标控外公内,耦合度越高,独立性越低内聚:七字经——功信通过时逻巧,内聚度越低,独立性越低” role=”presentation” style=”position: relative;”>

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月24日
下一篇 2021年4月24日

相关推荐