版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第7章章 结构化系统设计结构化系统设计 蒙蒙 华华 本章主要内容本章主要内容 结构化方法结构化方法 系统设计的任务系统设计的任务 总体设计:软件结构及各组成成分(子系统或模块之间的总体设计:软件结构及各组成成分(子系统或模块之间的 相互关系)相互关系) 结构化设计的概念、基本原则结构化设计的概念、基本原则 从数据流图导出结构图从数据流图导出结构图 结构化设计结构化设计 代码设计代码设计 输入、输出及人机对话设计输入、输出及人机对话设计 模块详细设计模块详细设计 数据库设计、网络设计数据库设计、网络设计 系统设计说明书系统设计说明书 7.1 结构化方法概述结构化方法概述 结构化方法的主要思想:
2、结构化方法的主要思想: (1)软件是有组织、有结构的逻辑实体,其结构为自顶向下的)软件是有组织、有结构的逻辑实体,其结构为自顶向下的 形式形式 (2)软件由程序和数据组成,其结构呈现三层组织形式,即系)软件由程序和数据组成,其结构呈现三层组织形式,即系 统、子系统、功能模块统、子系统、功能模块/数据体数据体 (3)软件结构中的各部分既独立又关联)软件结构中的各部分既独立又关联 从分析到设计从分析到设计 转换转换 现实领现实领 域的各域的各 种需求种需求 计算机领计算机领 域的具体域的具体 实现实现 7.2 7.2 系统设计的任务和标准系统设计的任务和标准 系统总体设计是把总任务分解成为许多基本
3、的、系统总体设计是把总任务分解成为许多基本的、 具体的任务具体的任务 将系统划分为模块将系统划分为模块 决定每个模块的功能、模块的调用关系决定每个模块的功能、模块的调用关系 决定模块的界面,即模块间的数据传递决定模块的界面,即模块间的数据传递 设计就是要回答设计就是要回答“怎么做怎么做” 完成技术实现方案的制定,即信息系统的物理模型完成技术实现方案的制定,即信息系统的物理模型 一个逻辑模型,可以提出多个物理模型一个逻辑模型,可以提出多个物理模型 根据物理模型进行实施,得到最终的物理系统根据物理模型进行实施,得到最终的物理系统 标准:标准: 1.1.信息系统的功能:信息系统的功能:是否满足用户的
4、需求是否满足用户的需求 2.2.系统的效率:系统的效率:响应时间、操作的方便性响应时间、操作的方便性 3.3.系统的可靠性:系统的可靠性:抗干扰能力、故障恢复抗干扰能力、故障恢复 4.4.系统的工作质量:系统的工作质量:准确性、使用效果准确性、使用效果 5.5.系统的可变更性:系统的可变更性:修改和维护的难易程度修改和维护的难易程度 6.6.系统的经济性:系统的经济性:系统收益与支出比系统收益与支出比 (1) 对一个复杂的系统,应用自顶向下、逐步求精的方法对一个复杂的系统,应用自顶向下、逐步求精的方法 予以分解和化简。予以分解和化简。 (2) 强调采用模块化的设计方法,并有一组基本设计策略强调
5、采用模块化的设计方法,并有一组基本设计策略 (3) 采用结构图作为模块设计的工具。采用结构图作为模块设计的工具。 结构化系统设计的特点:结构化系统设计的特点: 信息系统的可变更性信息系统的可变更性 统计表示:在信息系统的整个生命周期中,系统维护成本占总统计表示:在信息系统的整个生命周期中,系统维护成本占总 成本的成本的80%左右。左右。 因此,可变更性是衡量信息系统设计的重要指标。因此,可变更性是衡量信息系统设计的重要指标。 结构简单结构简单 系统各组成元素分工明确,易于理解系统各组成元素分工明确,易于理解 元素之间的关系清晰简洁元素之间的关系清晰简洁 软件设计方法:软件设计方法: 结构化设计
6、(结构化设计(SD)、面向对象设计()、面向对象设计(JSD方法)、方法)、 面向对象的设计方法(面向对象的设计方法(OOD方法)方法) 7.2.1 7.2.1 模块化的基本思想模块化的基本思想 结构化设计方法是基于模块化、自顶向下逐步细化、结构化结构化设计方法是基于模块化、自顶向下逐步细化、结构化 程序设计等技术发展起来。程序设计等技术发展起来。使用模块化一定程度上能够简化系统结使用模块化一定程度上能够简化系统结 构,使系统容易修改和理解。具体做法:构,使系统容易修改和理解。具体做法: 把整个软件划分为部分,其中每一部分的功能简单明确,即把整个软件划分为部分,其中每一部分的功能简单明确,即
7、程序模块(可以是子过程或函数)程序模块(可以是子过程或函数) 划分模块工作按层次进行,上层模块调用下层模块划分模块工作按层次进行,上层模块调用下层模块 每一个模块应尽可能独立每一个模块应尽可能独立 模块间的调用接口要阐明(模块名称、输入数据、输出数据)模块间的调用接口要阐明(模块名称、输入数据、输出数据) (一)模块的概念(一)模块的概念 模块(Module) 通常对应于用一个名字就可以调用的一段程序语句 (子程序或函数) 模块具有输入和输出、逻辑功能、运行程序、内部数据四种属性。 模块数量和软件成本的关系如下图所示 接口成本接口成本 成本成本 模块数量模块数量 单元模块成本单元模块成本 软件
8、总成本软件总成本 模块设计的度量标准模块设计的度量标准 为了衡量模块的相对独立性,提出了模块间的耦合为了衡量模块的相对独立性,提出了模块间的耦合(Coupling)与与 模块的内聚模块的内聚(Cohesion)两个标准两个标准 耦合:模块和模块之间的联系程度耦合:模块和模块之间的联系程度 内聚:模块内部各元素之间的联系程度内聚:模块内部各元素之间的联系程度 设计目标:低耦合、高内聚设计目标:低耦合、高内聚 模块内的联系越紧越好模块内的联系越紧越好 模块间的联系越少越好模块间的联系越少越好 (二)系统模块设计原则(二)系统模块设计原则 - -模块之间的联系模块之间的联系 - -模块的耦合方式模块
9、的耦合方式 - -几种耦合的比较几种耦合的比较 1 1、影响耦合度的因素、影响耦合度的因素 如果使用模块如果使用模块A A需要了解模块需要了解模块B B,那么,那么A A和和B B是耦合的。影是耦合的。影 响模块间耦合程度有三方面的因素:模块接口的复杂程响模块间耦合程度有三方面的因素:模块接口的复杂程 度、调用模块的方式、通过模块接口的数据。度、调用模块的方式、通过模块接口的数据。 联系方式模块间通过什么方式联系联系方式模块间通过什么方式联系 来往信息的作用模块间来往信息作什么用来往信息的作用模块间来往信息作什么用 数量模块间来往信息的多少。数量模块间来往信息的多少。 混合混合 控制控制 数据
10、数据 用过程用过程 直接引用直接引用 语句调用语句调用 少少 多多 数量数量 方式方式 作用作用 0 0 离坐标原点越远,离坐标原点越远, 耦合程度越高耦合程度越高 - -耦合的方式耦合的方式 根据以上因素,对耦合分类如下:根据以上因素,对耦合分类如下: 数据耦合:数据耦合:采用子程序调用,调用模块将需要进行处采用子程序调用,调用模块将需要进行处 理的数据传递给被调模块。理的数据传递给被调模块。 标记耦合:标记耦合:两个模块接口参数包含相同内部结构。两个模块接口参数包含相同内部结构。 控制耦合:控制耦合:一个模块将控制信息传递给另一个模块,一个模块将控制信息传递给另一个模块, 以控制被调模块的
11、内部处理逻辑。(可以分解)以控制被调模块的内部处理逻辑。(可以分解) 公共耦合:公共耦合:如果两个模块共享同一公用数据,称为公如果两个模块共享同一公用数据,称为公 共耦合。共耦合。 内容耦合:内容耦合:两个模块之间的内部属性有直接关联,也两个模块之间的内部属性有直接关联,也 称病态耦合。(某些称病态耦合。(某些GOTOGOTO语句)语句) 数据耦合标记耦合 如果两个模块之间不仅存在着调 用和被调用关系 两个模块接口的参数包含相同的 内部结构 模块之间存在着数据通信 模块之间的通信方式是数据传递 或称参数交换 两个模块通过传递数据结构(不 是简单数据,而是记录、数组等) 加以联系。高级语言的数组
12、名,记 录名,文件名等即为标记,其实传 递的是这个数据结构的地址. 数据耦合数据耦合 sum(int a,int b)sum(int a,int b) int c;int c; c=a+b;c=a+b; return(c);return(c); main()main() int x,y; int x,y; printf(“x+y=%d”,sum(x,y)printf(“x+y=%d”,sum(x,y) 控制耦合控制耦合 模块之间交换信息中包含有控制信息(有时控制信息以数模块之间交换信息中包含有控制信息(有时控制信息以数 据的形式出现)据的形式出现) void output(flag)void
13、output(flag) if (flag) printf(“ok!”);if (flag) printf(“ok!”); else printf(“no!”); else printf(“no!”); main()main() int flag; int flag; output(flag); output(flag); 公共耦合公共耦合 如果两个或多个模块都和同一个公用数据域有关如果两个或多个模块都和同一个公用数据域有关 1)系统可理解性降低(模块间存在错综复杂的连系) (2)系统可维护性差(修改变量名或属性困难) (3)系统可靠性差(公共数据区及全程变量无保护措施) 慎用公共数据区和全程
14、变量慎用公共数据区和全程变量! 内容耦合内容耦合 - -若一个模块访问另一个模块的内容(包括数据和程序段)进行了若一个模块访问另一个模块的内容(包括数据和程序段)进行了 直接的引用甚至修改;直接的引用甚至修改; - -或通过非正常入口进入到另一模块内部;或通过非正常入口进入到另一模块内部; - -或一个模块有多个入口;或一个模块有多个入口; - -或两个模块共享一部分代码;或两个模块共享一部分代码; 系统设计模块之间的联结原则系统设计模块之间的联结原则 尽量采用较低的耦合形式(简单耦合和数据耦合)尽量采用较低的耦合形式(简单耦合和数据耦合) 减少控制耦合减少控制耦合 必要时使用公共耦合,但一定
15、要将数据控制在最少必要时使用公共耦合,但一定要将数据控制在最少 绝对不能采用内容耦合绝对不能采用内容耦合 2、 模块的内聚模块的内聚 模块的内聚反映模块内部联系的紧密程度。高内聚性的好处是模块的内聚反映模块内部联系的紧密程度。高内聚性的好处是 可以提高程序的可靠性。可以提高程序的可靠性。 有一个调查表明,有一个调查表明,50的强内聚性子程序是没有错误的,而只的强内聚性子程序是没有错误的,而只 有有 18的弱内聚性子程序才是无错的,弱内聚性子程序的出错机的弱内聚性子程序才是无错的,弱内聚性子程序的出错机 会要比强内聚性出错机会高会要比强内聚性出错机会高 6 倍,而修正成本则要高倍,而修正成本则要
16、高 19 倍。倍。 模块的组合形式模块的组合形式 功能功能 顺序顺序 通信通信 过程过程 暂时暂时 逻辑逻辑 偶然组合偶然组合 模块组合形式的判断模块组合形式的判断 模块组合形式的比较模块组合形式的比较 功能组合功能组合-功能内聚功能内聚顺序组合顺序组合-顺序内聚顺序内聚 一个模块内部的各个组成一个模块内部的各个组成 部分的处理动作全都为执部分的处理动作全都为执 行同一个功能而存在行同一个功能而存在 一个模块内部的各个组成部分执行的一个模块内部的各个组成部分执行的 几个处理动作具有这样的特征几个处理动作具有这样的特征前一个前一个 处理动作所产生的输出数据是下一个处理动作所产生的输出数据是下一个
17、 处理动作的输入数据处理动作的输入数据 功能组合内聚性最高。例功能组合内聚性最高。例 “解一个方程解一个方程”,“,“求平方求平方 根根”,“,“计算利息计算利息” 顺序组合模块的内聚性较高顺序组合模块的内聚性较高。例:例: “输入并验输入并验 证理货单证理货单”;维护起来不如功能内聚方便,要维护起来不如功能内聚方便,要 修改模块中的一个功能,会影响到同一个模块修改模块中的一个功能,会影响到同一个模块 中的其他功能中的其他功能。 通信组合通信组合-通信内聚通信内聚过程组合过程组合-过程内聚过程内聚 一个模块内部的各个组成部分的一个模块内部的各个组成部分的 处理动作都使用相同的输入数据处理动作都
18、使用相同的输入数据 或或一个模块内部的各个组成部分一个模块内部的各个组成部分 的处理动作都产生相同输出数据的处理动作都产生相同输出数据 一个模块内部的各个组成部分的一个模块内部的各个组成部分的 处理动作各不相同,彼此没有什处理动作各不相同,彼此没有什 么关系么关系它们受同一个控制流支配,它们受同一个控制流支配, 决定它们的执行顺序决定它们的执行顺序 内聚性低于顺序组合模块内聚性低于顺序组合模块内聚性内聚性较低较低 暂时组合暂时组合-暂时内聚暂时内聚逻辑组合逻辑组合-逻辑内聚逻辑内聚 一个模块内部的各个一个模块内部的各个 组成部分处理组成部分处理动作和动作和 时间有关时间有关。处理动作处理动作
19、须须在在特定时间特定时间内内完成完成 一个模块内部的各个组成部分的处理动作在一个模块内部的各个组成部分的处理动作在 逻辑上相似,但功能却彼此不同或无关逻辑上相似,但功能却彼此不同或无关 内聚性内聚性低低 例如:程序设计中的例如:程序设计中的 初始化模块。初始化模块。 内聚性内聚性低,低,把把编辑各种输入数据的功能放在编辑各种输入数据的功能放在 一个模块中一个模块中。又如出错处理。又如出错处理。工作模块调用工作模块调用 错误处理模块,将错误号作为控制参数传入;错误处理模块,将错误号作为控制参数传入; 出错处理模块根据不同的错误号执行相应的出错处理模块根据不同的错误号执行相应的 操作操作 偶然组合
20、偶然组合-偶然内聚偶然内聚 一个模块内部的各个组成部分的处理动作一个模块内部的各个组成部分的处理动作 彼此没有任何关系彼此没有任何关系。它们是根据设计人员它们是根据设计人员 的个人喜好而随意混合在一起的的个人喜好而随意混合在一起的 无内聚性无内聚性 比如显示期末成绩通知:比如显示期末成绩通知: 读读 入入 学学 号号 读读 取取 成成 绩绩 取取 不不 及及 格格 科科 目目 取取 科科 目目 补补 考考 安安 排排 显显 示示 数数 据据 判判 断断 留留 退退 级级 顺序内聚顺序内聚 例如:一个模块用于计算高于平均分的人数,步骤是先循环累例如:一个模块用于计算高于平均分的人数,步骤是先循环
21、累 计总分,然后计算得到平均分,最后循环统计高于平均分的人计总分,然后计算得到平均分,最后循环统计高于平均分的人 数有步骤的先后,而且前一个步骤的结果要用于后一步骤的运数有步骤的先后,而且前一个步骤的结果要用于后一步骤的运 算中算中 通信内聚通信内聚 上图中有两个工作:上图中有两个工作: 按配件编号查询按配件编号查询“数据存储数据存储”,获得单价。,获得单价。 按配件编号查询按配件编号查询“数据存储数据存储”,获得库存量。,获得库存量。 这两个处理动作都使用相同的输入数据,称为通讯内聚这两个处理动作都使用相同的输入数据,称为通讯内聚 模块组合判断树模块组合判断树 耦合和内聚的关系耦合和内聚的关
22、系 二者就像连体兄弟,存在紧密相关的关系:二者就像连体兄弟,存在紧密相关的关系: 模块内的高内聚往往意味着模块间的松耦合模块内的高内聚往往意味着模块间的松耦合 反之,低内聚一般会带来紧耦合反之,低内聚一般会带来紧耦合 松耦合松耦合 作为软件设计的军规之一。各部分的关联越少意味着你在测作为软件设计的军规之一。各部分的关联越少意味着你在测 试,集成,维护的时候可以轻松不止一点点。试,集成,维护的时候可以轻松不止一点点。 高内聚高内聚 也就是说一个类特别是一个方法应该专注于一件事。也就是说一个类特别是一个方法应该专注于一件事。 作用范围与控制范围作用范围与控制范围 一个判断的作用范围一个判断的作用范
23、围是所有这样的模块的集是所有这样的模块的集 合,这些模块内含有依赖于这个判断结果的合,这些模块内含有依赖于这个判断结果的 处理。或称影响范围。处理。或称影响范围。 一个模块的控制范围一个模块的控制范围是指它本身及其所有下是指它本身及其所有下 属模块的集合。属模块的集合。 D D 计算总工资计算总工资 C C 计算职工工资计算职工工资 B B 计算临时工工资计算临时工工资 A A 计算工资计算工资 模块模块A A的控制范围是:的控制范围是: A A、B B、C C、D D 假如判定出现在模假如判定出现在模 块块A A,该判断的作用,该判断的作用 范围是:范围是:A A B B、C C、D D不受
24、影响不受影响 有些处理的执行受判断的影响。由此引出判断的作用范围(或称影 响范围)这一概念。 模块的作用域是指模块中判定的作用范围,它是指所有受这个判 定影响的模块。如果模块中含有受判定影响的操作,则该模块在 这个判定的作用范围之中。如果模块执行与否取决于判定的结果, 则该模块及其直接或间接调用的模块均在这个判定的作用范围之 中。 模块的控制域是指模块本身及其直接或间接调用的模块。 如 果模块的作用域不在控制域之内,则会增加模块间数据的传递量, 使模块间出现控制耦合。 模块的控制范围:本身及其所有下级模块。 模块的判断作用范围:被判断调用的模块。 模块设计中模块控制域与作用域的设计原则:模块设
25、计中模块控制域与作用域的设计原则: 1.对于任何一个内部存在判断调用的模块,它的判对于任何一个内部存在判断调用的模块,它的判 断作用的范围应该是其控制范围的一个子集。断作用的范围应该是其控制范围的一个子集。 2.存在判断调用的模块,所在层次不要与那些属于判存在判断调用的模块,所在层次不要与那些属于判 断作用范围的模块所在的层次相隔太远。断作用范围的模块所在的层次相隔太远。 4 4、模块的扇入和扇出原则、模块的扇入和扇出原则 模块的扇出模块的扇出 模块扇出的原则模块扇出的原则 模块的扇入模块的扇入 模块的扇入原则模块的扇入原则 模块扇出扇入总原则模块扇出扇入总原则 模块的扇出(模块的扇出(Fan
26、_OutFan_Out) 模块的扇出表达了一个模块对它的直属下级模块的控制范围模模块的扇出表达了一个模块对它的直属下级模块的控制范围模 块。扇出系数是指其直属下级模块的个数。块。扇出系数是指其直属下级模块的个数。 扇出原则:扇出原则: -模块的扇出直接影响着系统的宽度模块的扇出直接影响着系统的宽度 -模块的扇出过大,控制与协调困难,模块的聚合可能较低模块的扇出过大,控制与协调困难,模块的聚合可能较低 -模块的扇出过小,说明上下级模块或本身过大,应进行分解模块的扇出过小,说明上下级模块或本身过大,应进行分解 -一个系统的平均扇出系数通常是一个系统的平均扇出系数通常是3至至4,一般不应超过,一般不
27、应超过7 模块的扇入(模块的扇入(Fan_InFan_In) 模块的扇出表达了一个模块与其的直属上级模块的关系模块的扇出表达了一个模块与其的直属上级模块的关系 模块的扇入系数是指其直接上级模块的个数模块的扇入系数是指其直接上级模块的个数 模块的扇入、扇出原则模块的扇入、扇出原则 模块的扇入说明系统的通用情况,扇入系数越大,表明共享该模模块的扇入说明系统的通用情况,扇入系数越大,表明共享该模 块的上级模块数目越多,通用性越强(通用性强,维护方便)块的上级模块数目越多,通用性越强(通用性强,维护方便) 片面追求高扇入可能使得模块的独立性降低片面追求高扇入可能使得模块的独立性降低 高扇入 :扇入就是
28、指被其它类或方法引用。那高扇入也就是说你这 个类/方法.被很多其它类引用了。也就是利用率很高了。如果段 代码连写了三次,应考虑把它单独作为一个方法或类 高层模块的扇出系数较高、中层模块的扇出系数较少高层模块的扇出系数较高、中层模块的扇出系数较少 低扇出 :扇出自然就是引用其它类或方法了。 扇出越高,类就越 不稳定,因为任何一个引用对象出问题了,这个类也就会出问题。 引用超过约七个就算高扇出了. 对其它类的引用过多,导致该类 不稳定(取决所有引用类) 7.2.2 7.2.2 结构化系统设计结构化系统设计 面向数据流的设计是以需求分析阶段产生的数据流图为基础,按面向数据流的设计是以需求分析阶段产生
29、的数据流图为基础,按 一定的步骤映射成软件结构,又称结构化设计一定的步骤映射成软件结构,又称结构化设计(Structured Design ,简称,简称SD)。该方法由美国。该方法由美国IBM公司公司L.Constantine和和E.Yourdon等等 人于人于1974年提出,与结构化分析年提出,与结构化分析(SA)衔接,构成了完整的结构化衔接,构成了完整的结构化 分析与设计技术。分析与设计技术。 采用自顶向下的方法进行设计采用自顶向下的方法进行设计 具有系统自动化边界的具有系统自动化边界的DFD 结构图结构图(简单地说,就是绘制模块结构图)(简单地说,就是绘制模块结构图) 根据根据DFD导出
30、系统初始的结构图(利用一组设计策略)导出系统初始的结构图(利用一组设计策略) 对结构图的反复改进过程(设计优化对结构图的反复改进过程(设计优化-运用一组设计原则)运用一组设计原则) 其他传统模型其他传统模型 DFD片断片断 数据流定义数据流定义 关联图关联图 处理描述处理描述 其他其他OO模型模型 状态图状态图 用例和场景描述用例和场景描述 交互图交互图 用例图用例图 事件和事件表事件和事件表 事物事物 类图类图实体实体-关系图关系图 OO 方法方法 传统传统 方法方法 引子引子 包图包图 对象数据库对象数据库 设计类图设计类图 关系数据库关系数据库 系统流图系统流图 结构图结构图 混合关系数
31、据库模式混合关系数据库模式 用户界面对话框、标单、报表用户界面对话框、标单、报表 系统控制系统控制 伪代码伪代码 结点与定位图结点与定位图 分析分析 设计设计 数据流图数据流图 数据字典描述数据字典描述 有系统自动化边界有系统自动化边界 的数据流图的数据流图 系统流程图系统流程图 结构图结构图 伪代码伪代码 1 结构化设计模型结构化设计模型 2自动化系统边界划分自动化系统边界划分(Automation System Boundary) 将数据流图划分为手工处理部分和系统能自动完成的部分将数据流图划分为手工处理部分和系统能自动完成的部分 程序的处理过程可以在系统边界内部或外部程序的处理过程可以在
32、系统边界内部或外部 数据流可以在系统边界内部或外部数据流可以在系统边界内部或外部 穿过系统界线的数据流代表了系统的输入和输出穿过系统界线的数据流代表了系统的输入和输出 在最终的系统中,数据流将成为用户界面中的表单、报表、供其在最终的系统中,数据流将成为用户界面中的表单、报表、供其 他系统使用的数据文件等他系统使用的数据文件等 部分输入、部分部分输入、部分 输出的过程输出的过程 程序边界程序边界 跨过边界的数据流跨过边界的数据流 是输入是输入/输出输出 自动化系统边界自动化系统边界 检查检查 支票支票 税务局税务局 小时工小时工 小时工小时工 输入输入 考勤卡考勤卡 部分输入、部分部分输入、部分
33、 输出的过程输出的过程 程序边界程序边界 跨过边界的数据流跨过边界的数据流 是输入是输入/输出输出 自动化系统边界自动化系统边界 检查检查 支票支票 税务局税务局 小时工小时工 小时工小时工 输入输入 考勤卡考勤卡 带自动化系统边界的带自动化系统边界的DFD v结构图的基本符号结构图的基本符号 v结构图中模块调用关系结构图中模块调用关系 v结构图的表示结构图的表示 v结构图的特点结构图的特点 v结构图与数据流程图的区别结构图与数据流程图的区别 v结构图与程序框图的区别结构图与程序框图的区别 3、 结构图结构图(structure chart) 主调模块主调模块 被调模块被调模块被调模块被调模块
34、 主调模块主调模块 被调模块被调模块被调模块被调模块 循环调用条件调用 1.1.结构图无严格的模块调用顺序,但一般习惯从左至右结构图无严格的模块调用顺序,但一般习惯从左至右 2.2.因为约定遵从从上向下的调用,调用关系也可以不使因为约定遵从从上向下的调用,调用关系也可以不使 用箭头,而直接使用直线用箭头,而直接使用直线 3.3.模块间传递的信息如果出现在数据字典中,则视为数模块间传递的信息如果出现在数据字典中,则视为数 据,否则为控制信息据,否则为控制信息 结构图的画法结构图的画法 4 4、从数据流图导出结构图、从数据流图导出结构图 分析模型分析模型 (逻辑模型)(逻辑模型) 转换存在鸿沟转换
35、存在鸿沟 数据流图着眼于现实世界,结构图着眼于计算机世界。数据流图着眼于现实世界,结构图着眼于计算机世界。 数据流图反映数据流,系统逻辑功能,即能数据流图反映数据流,系统逻辑功能,即能“做什么做什么”; 结构图反映程序控制层次,反映系统的物理模型,即怎样逐步实现系统结构图反映程序控制层次,反映系统的物理模型,即怎样逐步实现系统 的总功能。的总功能。 数据流图描述线性的工作流程,结构图描述工作的分配(谁负责做什么)数据流图描述线性的工作流程,结构图描述工作的分配(谁负责做什么) 数据流图中存在两种典型的结构:数据流图中存在两种典型的结构: 变换型(变换型( Transform)结构)结构 事务型
36、(事务型(Transaction)结构)结构。 可分别通过变换分析和事务分析方法导出标准形式的结构图。可分别通过变换分析和事务分析方法导出标准形式的结构图。 变换分析:变换分析:用来描述输入、处理、输出数据流。用来描述输入、处理、输出数据流。 事务分析:事务分析:用来描述多种事务类型的处理。用来描述多种事务类型的处理。 要把数据流图(要把数据流图(DFD)转化为软件结构,首先必须研究)转化为软件结构,首先必须研究DFD的的 类型。各种软件系统,不论类型。各种软件系统,不论DFD如何庞大和复杂,一般可分为变换如何庞大和复杂,一般可分为变换 型和事务型。型和事务型。 变换型布局的数据流图呈一种线性
37、状况,它所描述的工作可默示为变换型布局的数据流图呈一种线性状况,它所描述的工作可默示为 输入、变换及输出。输入、变换及输出。 变换型问题变换型问题 数据流数据流 变换型变换型 系统结系统结 构图构图 事务型布局的数据流图则呈束状,即一束数据流平行流人或流出事务型布局的数据流图则呈束状,即一束数据流平行流人或流出 ,可能同时有几个事务请求处理。,可能同时有几个事务请求处理。若某个加工将它的输入流分离成若某个加工将它的输入流分离成 许多发散的数据流,形成许多加工路径,并根据输入的值选择其中许多发散的数据流,形成许多加工路径,并根据输入的值选择其中 一条路径来执行,这个加工称为事务处理中心一条路径来
38、执行,这个加工称为事务处理中心。 事务型问事务型问 题数据流题数据流 事务型系事务型系 统结构图统结构图 混合型设计一个结构图混合型设计一个结构图 事务型与变换型事务型与变换型DFD结构图转换示例结构图转换示例 4.4 设计一个结构图设计一个结构图 4 结构化系统设计结构化系统设计 事务型与变换型事务型与变换型DFD结构图转换示例结构图转换示例 面向数据流方法的设计过程面向数据流方法的设计过程 面向数据流设计方法的过程如下:面向数据流设计方法的过程如下: (1)确定确定DFD类型类型 -如果是变换型,确定变换中心和逻辑输入、逻辑输出的界线,映如果是变换型,确定变换中心和逻辑输入、逻辑输出的界线
39、,映 射为变换结构的顶层和第一层;射为变换结构的顶层和第一层; -如果是事务型,确定事务中心和加工路径,映射为事务结构的顶如果是事务型,确定事务中心和加工路径,映射为事务结构的顶 层和第一层。层和第一层。 (2)分解上层模块,设计中下层模块结构。分解上层模块,设计中下层模块结构。 (3)根据优化准则对软件结构求精。根据优化准则对软件结构求精。 (4)描述模块功能、接口及全局描述模块功能、接口及全局数据结构数据结构。 (5)复查,如果有错,转向复查,如果有错,转向(2)修改完善,否则进入详细设计。修改完善,否则进入详细设计。 5、设计一个结构图、设计一个结构图 (1)确定确定DFD中的变换中心、
40、逻辑输入和逻辑输出。中的变换中心、逻辑输入和逻辑输出。 (2)设计软件结构的顶层和第一层设计软件结构的顶层和第一层-变换结构。变换中心决定了主模块的位置,变换结构。变换中心决定了主模块的位置, 即软件结构的顶层。其主要功能是完成所有模块的控制,名字为系统名称,以体即软件结构的顶层。其主要功能是完成所有模块的控制,名字为系统名称,以体 现完成整个系统的功能。第一层一般至少有三种模块:输入、输出和变换模块。现完成整个系统的功能。第一层一般至少有三种模块:输入、输出和变换模块。 (3)设计中、下层模块。对第一层的输入、输出、变换模块自顶向下逐层分解。设计中、下层模块。对第一层的输入、输出、变换模块自
41、顶向下逐层分解。 输入模块的功能是向调用模块提供数据,所以必须有数据来源。每个输入模输入模块的功能是向调用模块提供数据,所以必须有数据来源。每个输入模 块可以设计成两个下属模块:一个接收,一个转换,用类似的方法一直分解下去,块可以设计成两个下属模块:一个接收,一个转换,用类似的方法一直分解下去, 直到物理输入端。直到物理输入端。 输出模块的功能是将它的调用模块产生的数据送出。这样每个输出模块可输出模块的功能是将它的调用模块产生的数据送出。这样每个输出模块可 以设计成两个下属模块:一个转换,一个发送,直到物理输出端。以设计成两个下属模块:一个转换,一个发送,直到物理输出端。 变换模块下属模块的设
42、计。变换模块下属模块的设计。 设计的优化。设计的优化。 以上步骤设计出的软件结构仅仅是初始结构,还必须根据设计准则对初始结构以上步骤设计出的软件结构仅仅是初始结构,还必须根据设计准则对初始结构 精细和改进。精细和改进。 变换分析变换分析 第第1 1步步 划分输入、加工、输出划分输入、加工、输出 原始数据原始数据 机内数机内数 据据 正确数正确数 据据 解解格式化格式化 解解 输出解输出解 逻辑输出逻辑输出 逻辑输入逻辑输入 ( (物理输入物理输入) ) ( (物理输出物理输出) ) P1P1 读读 入入 数数 据据 P2P2 编编 辑辑 数数 据据 P3P3 求求 解解 P4P4 编编 辑辑
43、格格 式式 P5P5 打打 印印 输输 出出 第第2 2步步 构造第构造第1 1、2 2层模块层模块 正确数据正确数据 求解求解 编辑数据编辑数据 计算计算 获得正确数据获得正确数据 输出解输出解 编排格式编排格式 打印解打印解 编辑数据编辑数据读入数据读入数据 正确数据正确数据 原始数据原始数据 原始数据原始数据 解解 格式化解格式化解 解解 正确正确 数据数据 格式化解格式化解 解解 第第3 3步步 继续分解继续分解 更细粒度的模块分解,如:更细粒度的模块分解,如: 计算计算 中间结果中间结果 数据数据 计算计算A A计算计算B B 最终解最终解 对于具有事务型特征的对于具有事务型特征的D
44、FD,则采用事务分析的设计方法。,则采用事务分析的设计方法。 (1)确定确定DFD中事务中心和加工路径。中事务中心和加工路径。 (2)设计软件结构的顶层和第一层设计软件结构的顶层和第一层事务结构。事务结构。 接收分支:负责接收数据,它的设计与变换型接收分支:负责接收数据,它的设计与变换型DFD的输入部分的输入部分 设计方法相同。设计方法相同。 发送分支:通常包含一个调度模块,它控制管理所有的下层的发送分支:通常包含一个调度模块,它控制管理所有的下层的 事务处理模块。当事务类型不多时,调度模块可与主模块合并。事务处理模块。当事务类型不多时,调度模块可与主模块合并。 (3)事务结构中、下层模块的设
45、计、优化等工作同变换结构。事务结构中、下层模块的设计、优化等工作同变换结构。 事务分析事务分析 对并行结构的对并行结构的DFD进行分析,如:根据输入数据判断进行分析,如:根据输入数据判断 业务类型,不同业务的具体处理过程有区别。业务类型,不同业务的具体处理过程有区别。 Q Q内容内容 B B结果结果 C C结果结果 B B数据数据 A A结果结果 清单清单 原始输入原始输入 A A数据数据 P P内容内容 C C数据数据 R R内容内容 决定决定 事务类事务类 型型 打印打印 更新内更新内 容容 事务事务A A 事务事务B B 事务事务C C 更新更新P P 更新更新Q Q 更新更新R R 请
46、根据已知的销售分析系统的数据流程图,绘制出初始结构图 数据流程图结构图 反映的是系统的逻辑模型; 是从数据在系统中的流动情况 来考虑系统的 描述系统的物理模型及系统功能是怎样逐步完成的; 它从功能层次上来考虑系统; 结构图没有严格地表示模块的调用次序,只表明模块的 调用关系; 结构图不指明上级模块什么时候调用下层模块; 程序框图结构图 用于表达模块的执行次序 反映模块的判断逻辑和循环 逻辑 主要描述了模块的过程特性 用于表达系统内各部分的组织结构和相互关系 反映模块的调用和被调用关系 从空间角度描述系统的层次特性 7.3 7.3 模块总体设计举例模块总体设计举例 问题描述:问题描述:病人监护系
47、统中的实时监测模块。病人监护系统中的实时监测模块。 该模块使用病床专用设备测量病人的若干生理参数,如体该模块使用病床专用设备测量病人的若干生理参数,如体 温、脉搏、血压等等。温、脉搏、血压等等。 每个病人各种指标的安全范围由医生预先指定。每个病人各种指标的安全范围由医生预先指定。 每经过一定的时间间隔,监测模块从监视设备读入这些数每经过一定的时间间隔,监测模块从监视设备读入这些数 据,并存入数据库中。据,并存入数据库中。 若发现某个指标超出合理范围,则向维修站发出设备故障若发现某个指标超出合理范围,则向维修站发出设备故障 通知,报告床号。通知,报告床号。 若发现某个指标越出安全范围,则向护理站
48、发出通知,报若发现某个指标越出安全范围,则向护理站发出通知,报 告病人号。告病人号。 分析产生的分析产生的DFDDFD 病人病人 护护 理理 站站 病历病历 合理合理 数据数据 数据数据 不安不安 全因全因 素素 读取读取 数据数据 存储存储 数据数据 检查检查 数据数据 通报通报 不不 安全安全 因素因素 维维 修修 站站 不合理不合理 数据数据 FS2 病人监护病人监护 采集数据采集数据检查数据检查数据处理数据处理数据 获获 取取 下下 一一 个个 病病 人人 PN,FS EOF,EF EOF FS EF USF, EF USF FS PN EF,USF PN,FS PN,FS ,EF P
49、N, EF PN,FS FSFS SRSR 读读 取取 数数 据据 检检 查查 不不 合合 理理 范范 围围 查查 询询 安安 全全 范范 围围 判判 定定 病病 人人 是是 否否 安安 全全 写写 数数 据据 库库 通通 报报 设设 备备 故故 障障 通通 报报 不不 安安 全全 因因 素素 EF BN PN,FS EF PN,BN 初始结构图初始结构图 PNPN病人号;病人号;BNBN床位号;床位号;SRSR安全范围;安全范围;FSFS各各 指标数据;指标数据; EFEF设备故障标志;设备故障标志; EOFEOF标志已查标志已查 过最后一个病人;过最后一个病人;FS2FS2标志指标是否合理
50、;标志指标是否合理; USFUSF标志指标不安全标志指标不安全 第1次改进 “处理数据处理数据”模块没有实质性的功能,所包含的三个子模块相互之模块没有实质性的功能,所包含的三个子模块相互之 间没有什么关联,内聚程度很低。间没有什么关联,内聚程度很低。 该模块只是充当了该模块只是充当了“管道管道”,改进如下:,改进如下: 废除废除“处理数据处理数据”模块;模块; 直接由主模块调用直接由主模块调用“通报设备故障通报设备故障”、“通报不安全因素通报不安全因素” 和和“写数据库写数据库”三个模块三个模块 病人监护病人监护 写数据库写数据库通报不安通报不安 全因素全因素 通报通报 设备故障设备故障 检查
51、数据检查数据采集数据采集数据 第第2 2次改进次改进 通报设备故障时应通报床位号而不应是病人号,因此要传通报设备故障时应通报床位号而不应是病人号,因此要传 递床位号。递床位号。 床位号床位号BN可由可由“采集数据采集数据”模块传给主模块,再由主模模块传给主模块,再由主模 块传递给块传递给 “通知设备故障通知设备故障”模块。这样做增加了模块间的联系,模块。这样做增加了模块间的联系, 改为由改为由“采集数据采集数据”模块直接调用模块直接调用 PNPN, FSFS 病人监护病人监护 采集数据采集数据检查数据检查数据 通报通报 不安全因素不安全因素 获取获取 下一个病人下一个病人 PNPN,FSFS
52、EOFEOF,EFEF PNPN,BNBN EOFEOF FSFS EFEF USFUSF USFUSF PNPN FS2FS2 PNPN,EFEF PNPN,FSFS FSFS SRSR SRSR 读取数据读取数据 检查检查 不合理范围不合理范围 查询安全查询安全 范围范围 判定病人是判定病人是 否安全否安全 写数据库写数据库 通报通报 设备故障设备故障 EFEFBNBN PNPN,FSFS EFEF FSFS 第第2 2次改进结果次改进结果 第第3 3次改进次改进 若由若由“检查数据检查数据”模块直接调用模块直接调用“通报不安全因素通报不安全因素”模块,则可减模块,则可减 少模块间的联系,
53、即不用传递少模块间的联系,即不用传递USF标志(排除控制耦合)。标志(排除控制耦合)。 “检查数据检查数据”的名字改为的名字改为“报告不安全因素报告不安全因素”更为恰当更为恰当 病人监护病人监护 采集数据采集数据报告不安全因素报告不安全因素写数据库写数据库 PNPN,FSFS EOFEOF,EFEF EFEF USFUSF PNPN SRSR,FSFS EFEF PNPN,FSFS 查询安全范围查询安全范围 通报不安全因素通报不安全因素 PNPN, FSFS 判定病人是否安全判定病人是否安全 第第4 4次改进次改进 “获取下一个病人获取下一个病人”模块的界面要返回病人号和床位号,如果模块的界面
54、要返回病人号和床位号,如果“ 读读 取数据取数据”模块包括从病人号查床位号的功能,则模块包括从病人号查床位号的功能,则“获取下一个病获取下一个病 人人”模块的接口可以简化模块的接口可以简化 采集数据采集数据 获取获取 下一个病人下一个病人 PNPN EOFEOFFSFS EFEF PNPN BNBN FSFS 读取数据读取数据 检查不合理因素检查不合理因素从从PNPN查查BNBN EOFEOF PNPN 通报设备故障通报设备故障 FS2FS2 BNBN 第第5 5次改进次改进 通过床号读取数据,功通过床号读取数据,功 能很明确,但目前包含能很明确,但目前包含 在在“读取数据读取数据”模块中,模
55、块中, 这部分程序代码如果抽这部分程序代码如果抽 取出来单独成为一个模取出来单独成为一个模 块更好,名字为块更好,名字为“从床从床 号读数据号读数据” 该模块可以成为一个公该模块可以成为一个公 用模块,很易于重用用模块,很易于重用 采集数据采集数据 获取下一个获取下一个 病人病人 PNPN EOFEOF FSFS EFEF PNPN BNBN FSFS EOFEOF PNPN FS2FS2 BNBN 从从PNPN查查BNBN从床号读数据从床号读数据 通报设备故障通报设备故障 检查不合理因素检查不合理因素 BNBN 采集病人数据采集病人数据 第第6 6次改进次改进 “ 从床号读数据从床号读数据”
56、应该是功能单一,调用应该是功能单一,调用“通报设备故障通报设备故障”不应属不应属 于该模块内容。于该模块内容。 将将“通报设备故障通报设备故障”改为上层模块调用,使改为上层模块调用,使“从床号读数据从床号读数据”模块模块 功能更明确,公用性也更好功能更明确,公用性也更好 第第7次改进次改进 给护士站或维修站的通报消息可能采用了同一种方式或界面,因此给护士站或维修站的通报消息可能采用了同一种方式或界面,因此 可能会有公用的模块,比如可能会有公用的模块,比如“写一行写一行”(或(或“发出警报发出警报”之类)之类) 因此再抽出一个模块因此再抽出一个模块“写一行写一行”,供两个模块调用。,供两个模块调
57、用。 第第6 6次改进结果次改进结果 病人监护病人监护 采集数据采集数据报告不安全因素报告不安全因素 写数据库写数据库 判定判定 下一个病人下一个病人 PNPN,FSFS EOFEOF,EFEF PNPN EOFEOF FSFS EFEF USFUSF PNPN EFEF SRSR EFEF FSFS PNPN FS,SRFS,SR 采集采集 病人数据病人数据 检查检查 安全范围安全范围 判定病人是判定病人是 否安全否安全 通报通报 不安全因素不安全因素 EFEFPNPN PNPN,FSFS 从从PNPN查查BNBN从床号从床号 读数据读数据 通报通报 设备故障设备故障 检查不合理因素检查不合
58、理因素 BNBN BNBN EFEF FSFS BNBN FSFS FS2FS2 PN,FSPN,FS 第第7次改进结果次改进结果 病人监护病人监护 采集数据采集数据报告不安全因素报告不安全因素 写数据库写数据库 判定判定 下一个病人下一个病人 PNPN,FSFS EOFEOF,EFEF PNPN EOFEOF FSFS EFEF USFUSF PNPN EFEF SRSR EFEF FSFS PNPN FSFS FS,SRFS,SR 采集采集 病人数据病人数据 检查安检查安 全范围全范围 判定病人是判定病人是 否安全否安全 通报通报 不安全因素不安全因素 EFEFPNPN PNPN,FSFS
59、 从从PNPN查查BNBN从床号从床号 读数据读数据 通报通报 设备故障设备故障 产生一行产生一行 写一行写一行 检查不合理因素检查不合理因素 BNBN BNBN EFEF EFEF FSFS BNBN FSFSFS2FS2 PN,FSPN,FS 一行一行 一行一行 一行一行 7.4 7.4 代码设计和作用代码设计和作用 代码代码:表征客观事物的一个或一组有序的符号,它应易于计算机和表征客观事物的一个或一组有序的符号,它应易于计算机和 人识别与处理。一般用数字、字母或其的组合来表示。代码设计是人识别与处理。一般用数字、字母或其的组合来表示。代码设计是 科学管理的体现。如车牌号码、商品编码、身份
60、证号、学号科学管理的体现。如车牌号码、商品编码、身份证号、学号. 代码的作用:鉴别功能、分代码的作用:鉴别功能、分 类类 、排序、专用含义、排序、专用含义 唯一化唯一化 规范化规范化 系统化系统化 为事物提供一个概要而不含糊的为事物提供一个概要而不含糊的 认定,便于数据的存储和检索。认定,便于数据的存储和检索。 编码要有规律,符合某一类事物编码要有规律,符合某一类事物 的聚集,提高处理的效率和精度。的聚集,提高处理的效率和精度。 也即标准化,符合国家或行业标也即标准化,符合国家或行业标 准,提高数据全局一致性。准,提高数据全局一致性。 代码的类型代码的类型 代码举例:代码举例: 身份证号身份证
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建龙净环保股份有限公司投资分析报告
- 2023云南特岗生物历年真题同源模拟题及精准答案
- 2024粮油仓储管理员考试初级专属备考试题及答案解析
- 2024年江苏省建筑安全员C1证考试改革后新版题库及答案
- 2022年全国保育师统考幼儿养育照护真题及答案解析
- 2026年《诗经二首》测试题及答案
- 2021会考化学历年真题试题及知识点串联答案解析
- 旧校区家装电梯协议书
- 津心登买卖协议书号
- 精神科病人保护性约束
- 2026山东青岛日报报业集团(青岛日报社)招聘4人备考题库附答案详解(完整版)
- 2026年及未来5年市场数据中国翻译机构行业市场需求预测及投资规划建议报告
- 建筑工地 宿舍管理制度
- 2026年南阳工艺美术职业学院单招职业倾向性测试题库附答案详解(黄金题型)
- 深度解析(2026)《LYT 3409-2024 草种质资源调查编目技术规程》
- 护理规范修订制度
- 《2025茶艺》课件-泡茶用水的种类
- 无仓储危化品安全培训课件
- 产品销售运营协议书范本
- 平面优化设计讲解课件
- DRG支付下医院运营质量提升策略
评论
0/150
提交评论