5.1 结构化设计的概念
5.1.1 设计的定义
何谓设计:
- 一种软件开发活动,定义实现需求规约所需的软件结构
目标:
- 依据需求规约在一个抽象层上建立系统软件模型,包括软件体系结构(数据和程序结构),以及详细的处理算法。
- 给出软件解决方案,产生设计规格说明书。
结构化设计分为:
- 总体设计:确定系统的整体模块结构(即系统实现所需要的软件模块以及这些模块间的调用关系)。
- 详细设计:详细描述模块。
5.1.2 整体框架:
② 引入模块结构图(MSD):
例:
- 数据到达一个加工,该加工根据输入数据的值,在其后的若干动作序列(称为一个事务)中选出一个来执行,这类数据流图称为事务型数据流图。
两类数据流图的区别:
【第一步】复审并精化系统模型:
- 检查数据流图是否精确。
【第二步】确定输入、变换、输出这三部分之间的边界:
- 确定系统的逻辑输入和逻辑输出。
【第三步】系统模块结构图顶层和第一层的设计:
【第四步】自顶向下逐步求精:
【第一步】复审并精化系统模型:
- 检查数据流图是否精确。
【第二步】确定事务处理中心:
- 即多个数据流集中处理于的地方。
【第三步】系统模块结构图顶层和第一层的设计:
- 首先为事务中心设计一个主模块
- 然后为每一条活动路径设计一个事务处理模块
- 对其输入部分设计一个输入模块
- 如果一个事务数据流图的活动路径集中于一个加工,则设计一个输出模块,否则第一层不设计输出模块。
【第四步】自顶向下逐步求精
耦合的强度所依赖的因素:
- 模块间的引用
- 模块间传递的数据量
- 模块间的施加控制量
- 模块间接口复杂度
耦合类型(由高到低):
- 内容耦合:一个模块直接修改或操作另一个模块的数据。
- 公共耦合:两个及以上的模块共引用一个全局数据项。
- 控制耦合:一个模块向另一个模块传递控制信 。
- 标记耦合:两个模块至少有一个通过界面传递的公共参数,包含内部数据,如数组,字符串等。
- 数据耦合:模块间通过参数传递基本类型的数据。
④ 模块的作用域力争在控制域之内:
- 作用域:受该模块内一个判定影响的所有模块的集合。
- 控制域:模块本身和所有直接或间接从属于它的模块的集合。
- 如果超出控制域,等同于发生了控制耦合,应尽量避免。
⑤ 降低模块接口的复杂性:
- 接口过于复杂或不一致往往会导致紧耦合和低内聚
⑥ 模块功能应该可以预测:
- 如果模块带有内部状态,而输出取决于内部状态,则称为功能不可预测。
5.4.2 总体设计案例
数字仪表板系统:
【第二步】确定顶层模块结构图
【第四步】输出部分细化
- 将相同或类似的物理输入(“显示”模块)合并为一个模块,以减少模块间的关联。
【第七步】变换部分的精化
优点:
- 对控制流程的描绘很直观,便于初学者掌握。
缺点:
- 不是一种逐步求精的工具,程序员过早地考虑程序的控制流程,而不是全局结构。
- 所表达的控制流,可以不受约束随意转移。
- 不易表示数据结构。
5.7.4 问题分析图(PAD)
- s3可逐步定义为s4,s5,s6的过程。
优点:
- 支持自顶向下逐步求精的结构化详细设计,
- PAD图最左边的竖线是程序的主线,随着程序层次的增加,逐步向右延伸,每增加一个层次,图形向右扩展一条竖线,表现的处理逻辑易读、易懂、易记。
5.7.5 结构化流程图(N-S)
优点:
- 支持自顶向下逐步求精的结构化详细设计,并且严格限制了控制从一个处理到另一个处理的转移。
5.7.6 判定表和判定树
- 当算法中包含多重嵌套的条件选择时,可以选择判定表来表达复杂的条件组合与应做的动作之间的对应关系。
5.8 软件设计规约
5.8.1 概念和组成
什么是软件设计规约:
- 对软件的组织或其组成部分的内部结构的描述,满足系统需求规约所指定的全部功能及性能要求。
组成部分:
- 概要设计规约。
- 详细设计规约。
5.8.2 概要设计规约
作用:
- 主要作为软件项目管理人员、系统分析人员与设计人员之间交流的媒体。
主要内容:
① 系统环境
- 硬件、软件接口与人机界面
- 外部定义的数据库
- 与设计有关的限定条件
② 设计描述
- 数据流和主要数据结构
- 软件模块的结构
- 模块间的接口
③ 对每个模块的描述
- 处理过程外部行为
- 界面定义
- 数据结构
- 必要的注释
④ 文件结构和全局数据
- 文件的逻辑结构、记录描述以及访问方式
- 交叉引用信息
⑤ 软件测试方面的要求和说明
5.8.3 详细设计规约
作用:
- 主要作为软件设计人员与程序员之间交流的媒体。
主要内容:
- 各处理过程的算法
- 算法所涉及的全部数据结构的描述,对主要数据结构往往包括与算法实现有关的描述。
5.8.4 设计规约格式
(完)
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!