当前位置:文档之家› 结构化系统设计

结构化系统设计


7.2 系统设计的任务和标准
系统设计的任务——总体设计和详细设计 系统总体设计是把总任务分解成为许多基本的、 具体的任务 • 将系统划分为模块 • 决定每个模块的功能、模块的调用关系 • 决定模块的界面,即模块间的数据传递 设计就是要回答“怎么做” 完成技术实现方案的制定,即信息系统的物理模型
– 一个逻辑模型,可以提出多个物理模型 – 根据物理模型进行实施,得到最终的物理系统
耦合形式 数据耦合 控制耦合 公共耦合 内容耦合
-几种耦合的比较
可读性 可维护性 扩散错误的能力 公用性

一般


一般
不好
一般
else printf(“no!”); } main() { int flag;
output(flag); }
公共耦合
如果两个或多个模块都和同一个公用数据域有关 1)系统可理解性降低(模块间存在错综复杂的连系) (2)系统可维护性差(修改变量名或属性困难) (3)系统可靠性差(公共数据区及全程变量无保护措施)
第7章 结构化系统设计
蒙华 menghua.07@
结构化方法
本章主要内容
系统设计的任务
总体设计:软件结构及各组成成分(子系统或模块之间的 相互关系)
– 结构化设计的概念、基本原则
– 从数据流图导出结构图
结构化设计
– 代码设计
– 输入、输出及人机对话设计
– 模块详细设计
– 数据库设计、网络设计
数据耦合
sum(int a,int b) {int c; c=a+b; return(c); } main() { int x,y; printf(“x+y=%d”,sum(x,y))}
控制耦合
模块之间交换信息中包含有控制信息(有时控制信息以数 据的形式出现)
void output(flag) {if (flag) printf(“ok!”);
标准:
1.信息系统的功能:是否满足用户的需求 2.系统的效率:响应时间、操作的方便性 3.系统的可靠性:抗干扰能力、故障恢复 4.系统的工作质量:准确性、使用效果 5.系统的可变更性:修改和维护的难易程度 6.系统的经济性:系统收益与支出比
结构化系统设计的特点:
(1) 对一个复杂的系统,应用自顶向下、逐步求精的方法 予以分解和化简。
1、影响耦合度的因素
如果使用模块A需要了解模块B,那么A和B是耦合的。影
响模块间耦合程度有三方面的因素:模块接口的复杂程
度、调用模块的方式、通过模块接口的数据。
–联系方式--模块间通过什么方式联系 –来往信息的作用--模块间来往信息作什么用 –数量--模块间来往信息的多少。
作用
数量
0


混合 控制 数据
(2) 强调采用模块化的设计方法,并有一组基本设计策略 (3) 采用结构图作为模块设计的工具。
信息系统的可变更性
• 统计表示:在信息系统的整个生命周期中,系统维护成本占总 成本的80%左右。 • 因此,可变更性是衡量信息系统设计的重要指标。 结构简单
– 系统各组成元素分工明确,易于理解 – 元素之间的关系清晰简洁 软件设计方法: 结构化设计(SD)、面向对象设计(JSD方法)、 面向对象的设计方法(OOD方法)
数据耦合
标记耦合
如果两个模块之间不仅存在着调 两个模块接口的参数包含相同的
用和被调用关系
内部结构
模块之间存在着数据通信 模块之间的通信方式是数据传递 或称参数交换
两个模块通过传递数据结构(不
是简单数据,而是记录、数组等) 加以联系。高级语言的数组名,记 录名,文件名等即为标记,其实传 递的是这个数据结构的地址.
系统设计说明书

7.1 结构化方法概述
结构化方法的主要思想: (1)软件是有组织、有结构的逻辑实体,其结构为自顶向下的 形式 (2)软件由程序和数据组成,其结构呈现三层组织形式,即系 统、子系统、功能模块/数据体 (3)软件结构中的各部分既独立又关联 从分析到设计
现实领 域的各 种需求
转换
计算机领 域的具体 实现
耦合:模块和模块之间的联系程度 内聚:模块内部各元素之间的联系程度 设计目标:低耦合、高内聚 模块内的联系越紧越好 模块间的联系越少越好
(二)系统模块设计原则
1、模块之间的耦合原则 -模块之间的联系 -模块的耦合方式 -几种耦合的比较
2、模块的内聚性原则 3、模块的分解原则 4、模块的扇入和扇出原则
慎用公共数据区和全程变量!!!
当需要修改 公共数据时,
与之相关的 所有模块可能 都要进行修改
模块B、E和模块C之间存在着公共耦合
内容耦合
-若一个模块访问另一个模块的内容(包括数据和程序段)进行了 直接的引用甚至修改; -或通过非正常入口进入到另一模块内部; -或一个模块有多个入口; -或两个模块共享一部分代码;
7.2.1 模块化的基本思想
结构化设计方法是基于模块化、自顶向下逐步细化、结构化 程序设计等技术发展起来。使用模块化一定程度上能够简化系统结 构,使系统容易修改和理解。具体做法:
– 把整个软件划分为部分,其中每一部分的功能简单明确,即 程序模块(可以是子过程或函数) – 划分模块工作按层次进行,上层模块调用下层模块 – 每一个模块应尽可能独立 – 模块间的调用接口要阐明(模块名称、输入数据、输出数据)
(一)模块的概念
模块(Module) 通常对应于用一个名字就可以调用的一段程序语句
(子程序或函数)
模块具有输入和输出、逻辑功能、运行程序、内部数据四种属性。
模块数量和软件成本的关系如下图所示
成本
软件总成本
接口成本
单元模块成本 模块数量
模块设计的度量标准
为了衡量模块的相对独立性,提出了模块间的耦合(Coupling)与 模块的内聚(Cohesion)两个标准
用过程 直接引用 语句调用
离坐标原点越远, 耦合程度越高
方式
-耦合的方式
根据以上因素,对耦合分类如下: 数据耦合:采用子程序调用,调用模块将需要进行处 理的数据传递给被调模块。 标记耦合:两个模块接口参数包含相同内部结构。 控制耦合:一个模块将控制信息传递给另一个模块, 以控制被调模块的内部处理逻辑。(可以分解) 公共耦合:如果两个模块共享同一公用数据,称为公 共耦合。 内容耦合:两个模块之间的内部属性有直接关联,也 称病态耦合。(某些GOTO语句)
相关主题