《管理信息系统(6-1).ppt》由会员分享,可在线阅读,更多相关《管理信息系统(6-1).ppt(236页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第五章第五章系系 统统 设设 计计 第一节第一节 系统设计概述系统设计概述 系统设计是新系统的物理设计阶段,根据系统设计是新系统的物理设计阶段,根据系统分析阶段所确定的新系统的逻辑模型,系统分析阶段所确定的新系统的逻辑模型,综合考虑各种约束,利用一切可用的技术手综合考虑各种约束,利用一切可用的技术手段和方法,进行各种具体设计,提出一个能段和方法,进行各种具体设计,提出一个能在计算机上实现的新系统的实施方案,解决在计算机上实现的新系统的实施方案,解决“系统怎样做系统怎样做”的问题。的问题。系统设计概系统设计概述述系统系统设计概设计概述述n n目标和任务目标和任务n n系统设计模型系统设计模型n
2、n设计方法设计方法n n主要内容主要内容 解决系统解决系统“怎样做怎样做(How to doHow to do)”的的问题。问题。1 1 系统设计的系统设计的目标目标 系统分析:解决系统分析:解决“做什么做什么”系统设计:解决系统设计:解决“怎么做怎么做”一、系统设计的目标和任务一、系统设计的目标和任务2 2 系统设计的任务系统设计的任务 问题结构问题结构(系统需求系统需求)系统结构系统结构 从系统分析说明书出发,形成系统的从系统分析说明书出发,形成系统的具体设计方案。具体设计方案。一、系统设计的目标和任务一、系统设计的目标和任务(续续)映射映射数据数据字典字典数据数据流图流图E-RE-R图图
3、加工小说明流流程程程程描描述述述述处理描述处理描述处理描述处理描述数数据据对对描描 述述象象数数 据据 设设 计计模块结构设计模块结构设计接口设计接口设计过程设计过程设计分析模型设计模型平平 台台 设设 计计二二、系统设计、系统设计模型模型二二、系统设计、系统设计模型模型(续续)上图中通过数据、功能模型展示的系统需上图中通过数据、功能模型展示的系统需求被传送给设计阶段,运用某种设计方法,求被传送给设计阶段,运用某种设计方法,设计阶段产生出:设计阶段产生出:n n 数据设计数据设计数据设计数据设计:将分析时创建的数据模型变换成实现:将分析时创建的数据模型变换成实现:将分析时创建的数据模型变换成实
4、现:将分析时创建的数据模型变换成实现系统所需的数据结构。系统所需的数据结构。系统所需的数据结构。系统所需的数据结构。n n平台设计平台设计平台设计平台设计:将性能要求变换成对系统软硬件环境的:将性能要求变换成对系统软硬件环境的:将性能要求变换成对系统软硬件环境的:将性能要求变换成对系统软硬件环境的配置配置配置配置n n模块结构设计模块结构设计模块结构设计模块结构设计:定义系统模块元素之间的关系。:定义系统模块元素之间的关系。:定义系统模块元素之间的关系。:定义系统模块元素之间的关系。n接口设计接口设计接口设计接口设计:描述了系统内部、系统和协作系统之间:描述了系统内部、系统和协作系统之间:描述
5、了系统内部、系统和协作系统之间:描述了系统内部、系统和协作系统之间的以及系统同人之间如何通信。的以及系统同人之间如何通信。的以及系统同人之间如何通信。的以及系统同人之间如何通信。n n过程设计过程设计过程设计过程设计:将加工说明变换为对系统模块内部算法:将加工说明变换为对系统模块内部算法:将加工说明变换为对系统模块内部算法:将加工说明变换为对系统模块内部算法的具体描述。的具体描述。的具体描述。的具体描述。三三 系统系统设计设计方法方法n n结构化设计方法结构化设计方法(SDSD)n n面向数据结构的设计方法面向数据结构的设计方法(JSDJSD方法方法)n n面向对象的设计方法面向对象的设计方法
6、(OODOOD)四四 系统系统设计设计主要内容主要内容n n系统总体设计系统总体设计n n系统详细设计系统详细设计 系统平台设计系统平台设计系统平台设计系统平台设计 代码设计代码设计代码设计代码设计 输入输出设计输入输出设计输入输出设计输入输出设计 对话设计对话设计对话设计对话设计 数据库或数据文件设计数据库或数据文件设计数据库或数据文件设计数据库或数据文件设计 模块内部的算法设计模块内部的算法设计模块内部的算法设计模块内部的算法设计n n写出系统设计报告写出系统设计报告 总体设计:总体设计:告告诉诉用用户户系系统统具具体体将将要要做做什什么么。一一旦旦用用户户同同意意了了这这个个总总体体设设
7、计计,我我们们会会将将这个总体设计转换为更加详细的文档。这个总体设计转换为更加详细的文档。1 系统总体系统总体设计设计总体设计包括:总体设计包括:n n工具工具 如何描述系统的如何描述系统的总体结构总体结构n n方方法法 用用什什么么方方法法把把问问题题结结构构导导出出系系统统结构结构n n评评价价准则准则 什么样的系统结构是什么样的系统结构是“最优最优的的”1 系统总体系统总体设计设计(续)(续)1 系统总体系统总体设计设计(续)(续)总体结构:总体结构:n n 系统的组成部分系统的组成部分,即有哪些模块组成,即有哪些模块组成n n 系统的层次系统的层次及调用及调用关系关系n n 模块的处理
8、模块的处理功能功能n n 模块之间的界面模块之间的界面,即模块间传递的数据,即模块间传递的数据 优秀的总体设计应该包含以下特征优秀的总体设计应该包含以下特征 n n 不包括用户不熟悉的专业词汇不包括用户不熟悉的专业词汇n n 它描述系统功能它描述系统功能n n 独立于实现过程独立于实现过程n n 与系统分析文档相一致与系统分析文档相一致 2 系统详细系统详细设计设计 详细设计:详细设计:让系统建设者了解要解决用户的问题所需让系统建设者了解要解决用户的问题所需要的硬件和系统。主要描述系统的硬件配置、要的硬件和系统。主要描述系统的硬件配置、系统代码系统代码、人机界面、输入和输出、数据库人机界面、输
9、入和输出、数据库和网络体系结构等。也就是说,详细设计是和网络体系结构等。也就是说,详细设计是系统说明的一个系统说明的一个技术层面技术层面上的描述。上的描述。2 系统详细系统详细设计设计(续)(续)详细设计包括:详细设计包括:n n系统平台设计系统平台设计n n代码设计代码设计n n数据库设计数据库设计n n对话(人机界面)设计对话(人机界面)设计n n输入输入/输出设计输出设计n n模块内部的算法设计(处理流程设计)模块内部的算法设计(处理流程设计)第二节第二节 结构化系统设计结构化系统设计结构化系统设计结构化系统设计 结构化系统设计是结构化系统设计是“用一组标准的准则用一组标准的准则和工具帮
10、助系统设计人员确定应该由哪些模和工具帮助系统设计人员确定应该由哪些模块,用什么方式联结在一起,才能构成一个块,用什么方式联结在一起,才能构成一个最好的系统结构最好的系统结构”。即即,结构化设计方法结构化设计方法(SD)(SD)是以数据流图是以数据流图为基础的,为基础的,采用采用模块化、自顶向下逐步求精模块化、自顶向下逐步求精的基本思想,以的基本思想,以数据流图为基础数据流图为基础构造出模块构造出模块结构图。结构图。n n采用分解的方法采用分解的方法,即把系统分解成由相对即把系统分解成由相对独立的、功能单一的若干模块组成的结构独立的、功能单一的若干模块组成的结构n n采用图形表达工具采用图形表达
11、工具n n有一组基本的设计原则有一组基本的设计原则n n有一组基本的设计策略有一组基本的设计策略n n有一组评价标准和优化技术有一组评价标准和优化技术一一 结构化系统设计的特点结构化系统设计的特点二二 结构化系统设计的基本工具结构化系统设计的基本工具 在系统设计阶段,我们采用在系统设计阶段,我们采用模块结模块结构图构图来表达目标系统的物理模型,描来表达目标系统的物理模型,描述系统的结构。述系统的结构。把一个信息系统设计成若干个小的把一个信息系统设计成若干个小的模块的方法称作模块化。模块的方法称作模块化。三三 结构化系统设计原则结构化系统设计原则n n 系统的观点系统的观点n n 模块化结构模块
12、化结构n n 阶段性策略阶段性策略n n 模块的独立性模块的独立性n n 鼓励用户积极参与设计鼓励用户积极参与设计 第三节第三节 系统总体设计系统总体设计系统总体系统总体设计设计(主要内容)(主要内容)n n系统的分解方法系统的分解方法n n模块结构图模块结构图n n基本设计原则基本设计原则 (模块耦合度与聚合度)(模块耦合度与聚合度)n n设计策略设计策略 (变换型、事务型)(变换型、事务型)n n设计优化技巧设计优化技巧 一一 系统的分解方法系统的分解方法n n系统分解的方法是把一个复杂的问题分解系统分解的方法是把一个复杂的问题分解成简单的要素,把一个统一的整体分解为成简单的要素,把一个统
13、一的整体分解为各个组成部分,然后对各个要素和组成部各个组成部分,然后对各个要素和组成部分分别进行研究。分分别进行研究。n n借助于目标系统的逻辑模型借助于目标系统的逻辑模型(DFD)并根据并根据部门机构设置情况进行系统分解部门机构设置情况进行系统分解1.1.系统分解的原则系统分解的原则n n明确系统分解前、后的功能尽量一致明确系统分解前、后的功能尽量一致n n每次分解的结果是可以独立开发的子系每次分解的结果是可以独立开发的子系统统(或模块或模块)n n各子系统各子系统(或模块或模块)间的关联尽量少间的关联尽量少n n制定子系统制定子系统(或模块或模块)间的约束规范间的约束规范n n区别稳定的和
14、易变的子系统区别稳定的和易变的子系统(或模块或模块)2.2.系统分解的方法系统分解的方法 (一一)按企业业务管理部门划分按企业业务管理部门划分 如:生产、销售、供应管理等;按部门设置如:生产、销售、供应管理等;按部门设置如:生产、销售、供应管理等;按部门设置如:生产、销售、供应管理等;按部门设置 (二二)按完成功能的类型来划分按完成功能的类型来划分 如:顾客服务、技术与生产数据管理;按实际职如:顾客服务、技术与生产数据管理;按实际职如:顾客服务、技术与生产数据管理;按实际职如:顾客服务、技术与生产数据管理;按实际职能设置能设置能设置能设置二二 模块结构图模块结构图 结构化设计方法的基本思想就是
15、模块结构化设计方法的基本思想就是模块化。即对每一个系统按功能逐步由顶向化。即对每一个系统按功能逐步由顶向下,由抽象到具体的逐层分解,将系统下,由抽象到具体的逐层分解,将系统分解成为多层次的独立功能模块,一直分解成为多层次的独立功能模块,一直分解到能简单地用程序实现为止。分解到能简单地用程序实现为止。总体设计任务总体设计任务(一)(一)模块模块n n模块的定义模块的定义:模块是可以组成、分解、更换的系统,是模块是可以组成、分解、更换的系统,是易于处理的基本单位,具有四种属性的一易于处理的基本单位,具有四种属性的一组程序语句称为一个模块,这四种属性分组程序语句称为一个模块,这四种属性分别是输入输出
16、、逻辑功能;别是输入输出、逻辑功能;(外部特性外部特性)内部数据、程序代码。内部数据、程序代码。(内部特性内部特性)(一)(一)模块模块(续续)n n模块的例子模块的例子:int max(int x,int y)int z;z=xy?x:y;return(z);模块名模块名数数据据内部内部数据数据内部内部语句语句模块化模块化思想:思想:n模块化是好的系统设计的一个基本准模块化是好的系统设计的一个基本准 则则 高层模块高层模块 从整体上把握从整体上把握 问题问题,暂不考虑暂不考虑细节细节n复杂问题复杂问题 较小问题较小问题 分解分解 可减小解题所需的总的工作可减小解题所需的总的工作分解分解模块和
17、子系统的区别模块和子系统的区别 模块和子系统的概念是有所区别的。子系模块和子系统的概念是有所区别的。子系统仍具有系统的特征(统仍具有系统的特征(更大更大),模块则是指),模块则是指为完成某项功能的程序集合体(为完成某项功能的程序集合体(较小较小),它),它是一个不可分割的整体,但模块和子系统的是一个不可分割的整体,但模块和子系统的概念有时又是兼容和不可绝对区分的。在日概念有时又是兼容和不可绝对区分的。在日常工作中我们常将完成一个管理功能的程序常工作中我们常将完成一个管理功能的程序集称为模块,而它常常由多个很小的程序子集称为模块,而它常常由多个很小的程序子模块组成,所以有的地方可称为子系统。模块
18、组成,所以有的地方可称为子系统。(二二)模块结构图模块结构图scsc1.结构图的产生结构图的产生 程序流程图程序流程图 系统流程图和功系统流程图和功能图能图 HIPO技术技术(功能图功能图和和IPO图图)结构图结构图(Structure Chart)。2.2.结构图的主要成分结构图的主要成分n n模块模块用方框表示,方框中写上模块用方框表示,方框中写上模块名字,反映了这个模块的功能名字,反映了这个模块的功能n n调用调用从调用模块指向被调用模块的从调用模块指向被调用模块的箭头箭头 n n数据数据调用箭头旁的小箭头,表示从调用箭头旁的小箭头,表示从一个模块向另一个模块传送的数据,也一个模块向另一
19、个模块传送的数据,也指出了传送的方向指出了传送的方向 3.3.结构图基本符号及表示结构图基本符号及表示法法编辑学生记录编辑学生记录读学生记录读学生记录学生数据学生数据无此学生无此学生学号学号不加区分的数据不加区分的数据数据信息数据信息控制信息控制信息n n模块调用的例子模块调用的例子模块调用的例子模块调用的例子:intint max(max(intint x,x,intint y)y)intint z;z;z=xy?x:y;z=xy?x:y;return(z);return(z);Main()Main():max(3,4):Main()Main()求最大值求最大值Z Zx xy ySCSC中的
20、中的四种模块四种模块传入模块传入模块(a)(b)AA传出模块传出模块BB变换模块变换模块(c)CD协调模块协调模块E(d)EFFSCSC中的简单调用中的简单调用B BA AC Cx,yx,yz z(a)(a)表示法一表示法一(b)(b)表示法二表示法二z zB BA AC C1 12 2入入出出1 12 2x,yx,yz zz zA调用B和CSCSC中的选择调用中的选择调用A AC CB BD DA A根据内根据内部判断决部判断决定是否调定是否调用用B BA A按另一判按另一判定结果选择定结果选择调用调用C C或或D DSCSC中的循环调用中的循环调用A AB BC CA A根据循环根据循环条
21、件条件重复调重复调用用B B、C C等模块等模块n n选择调用的例子选择调用的例子:A():if (条件条件.)B()else C():ABCn n循环调用的例子循环调用的例子:A()A():while (条件条件.)B();:;:AB 4.4.模块模块结构类型结构类型 内导结构:是结构图中数据以最低层模块内导结构:是结构图中数据以最低层模块输入,并逐级向高层传递,高一层模块接输入,并逐级向高层传递,高一层模块接收低一层模块的输入。收低一层模块的输入。主模块主模块 A1 A4 A3 A2外导结构:结构图中低一层模块接收上外导结构:结构图中低一层模块接收上一层模块的数据信息,并把它们转换给一层模
22、块的数据信息,并把它们转换给下一级模块,直到输出给使用者。下一级模块,直到输出给使用者。w wu u子模块子模块1 1v v主模块主模块子模块子模块2 2子模块子模块2.12.1 转换结构:数据要在模块内经过一定的转换结构:数据要在模块内经过一定的处理,下层模块从相应的上层模块接收处理,下层模块从相应的上层模块接收数据,经转换后返回同一上层模块中去。数据,经转换后返回同一上层模块中去。w wu u子模块子模块1 1v v主模块主模块子模块子模块2 2子模块子模块2.12.1X XM MY Y4.4.结构图与数据流图的差别结构图与数据流图的差别n数据流程图是从数据流着眼,而结构图从程序模数据流程
23、图是从数据流着眼,而结构图从程序模块着眼块着眼;n数据流程图描述的是系统的逻辑模型,而结构图数据流程图描述的是系统的逻辑模型,而结构图是描述系统的物理模型是描述系统的物理模型;n数据流程图是用不同的图来表示不同的层次,是数据流程图是用不同的图来表示不同的层次,是“平面图平面图”,而结构图能反映系统的层次结构,而结构图能反映系统的层次结构,是是“立体图立体图”;n数据流程图是从具体到抽象,描述系统的要求,数据流程图是从具体到抽象,描述系统的要求,而结构图是从抽象到具体,描述系统的实现方法而结构图是从抽象到具体,描述系统的实现方法。(三)(三)模块设计的原则模块设计的原则系统的系统的可维护性可维护
24、性是系统评价的一个重要因素是系统评价的一个重要因素可可维护性维护性局部修改局部修改模块间的联系尽可能的少模块间的联系尽可能的少(耦合耦合)而模块内的联系尽可能多而模块内的联系尽可能多(聚合)聚合)1.1.模块的独立性模块的独立性 模块独立的含义:模块独立的含义:n n模块完成独立模块完成独立、单一、单一的功能的功能n n符合信息隐蔽和信息局部化原则符合信息隐蔽和信息局部化原则n n模块间关连和依赖程度尽量小模块间关连和依赖程度尽量小 2.2.模块独立性的度量模块独立性的度量 模块独立性取决于模块的内部和外部特模块独立性取决于模块的内部和外部特性性。SD方法提出的定性的度量标准:方法提出的定性的
25、度量标准:n 模块之间的模块之间的耦合性耦合性(块间联系)(块间联系)n 模块自身的模块自身的聚合性聚合性(块内联系)(块内联系)3.3.模块独立性的度量之模块独立性的度量之一一:耦合度耦合度*耦合耦合度度是模块间的联结关系,衡量是模块间的联结关系,衡量不同模块间的相互依赖的紧密密程度,不同模块间的相互依赖的紧密密程度,耦合的强弱取决于模块间接口的复杂程耦合的强弱取决于模块间接口的复杂程度度;进入或访问一个模块的进入或访问一个模块的入口入口点点;以以及通过接口的数据。及通过接口的数据。*耦合耦合度度越高,模块独立性越弱越高,模块独立性越弱无耦合没有依赖关系无耦合没有依赖关系松散耦合有松散耦合有
26、少量依赖关系少量依赖关系紧密耦合有紧密耦合有很多依赖关系很多依赖关系 模块模块耦合耦合度(续度(续)耦合度耦合度强弱强弱的因素:的因素:n一模块对另一模块的引用一模块对另一模块的引用n一模块向另一模块传递的数据量一模块向另一模块传递的数据量n一模块施加到另一模块的控制的数量一模块施加到另一模块的控制的数量n模块间接口的复杂程度模块间接口的复杂程度模块间耦合的类型:模块间耦合的类型:低低 非直接耦合非直接耦合耦耦 数据耦合数据耦合合合 标标记记耦合耦合性性 控制耦合控制耦合 高高 内容耦合内容耦合模模块块独独立立性性弱弱(低耦合低耦合)强强(中耦合中耦合)(较强耦合较强耦合)(强耦合强耦合)公共
27、耦合公共耦合(1)(1)非直接耦合非直接耦合 两个模块没有直接关系两个模块没有直接关系(模模块块1 1和和模模块块2)2),模块独立性最强。,模块独立性最强。模块模块1 1模块模块2 2模块模块3 3模块模块4 4(2)(2)数据耦合数据耦合一模块调用另一模块时,被调一模块调用另一模块时,被调用模块的输入、输出都是简单用模块的输入、输出都是简单的数据的数据。属松散耦合。属松散耦合。数据耦合举例数据耦合举例开发票开发票计算水费计算水费单价单价数量数量金额金额数据耦合举例数据耦合举例计算水电费计算水电费计算水费计算水费计算电费计算电费用水量用水量用电量用电量水费水费电费电费(3)(3)标标记记耦合
28、耦合(特征耦合特征耦合)如两个模块通过传递数据结构如两个模块通过传递数据结构(不是简单数据不是简单数据,而是记录、数组而是记录、数组等等)加以联系加以联系,或都与一个数据或都与一个数据结构有关系结构有关系,则称这两个模块则称这两个模块间存在标间存在标记耦记耦合合。标记耦合举例标记耦合举例计算水电费计算水电费计算水费计算水费计算电费计算电费住户情况住户情况水费水费电费电费住户情况住户情况“住户情况住户情况”是一个数据结构是一个数据结构,图中模块都图中模块都与此数据结构有关与此数据结构有关.“计算水费计算水费”和和“计算电费计算电费”本无关本无关,由于由于引用了此数据结构产生依赖关系引用了此数据结
29、构产生依赖关系,它们之间它们之间也是标记偶合也是标记偶合.将标记耦合修改为将标记耦合修改为数据耦合举例数据耦合举例计算水电费计算水电费计算水费计算水费计算电费计算电费本月本月用水量用水量本月本月用电量用电量水费水费电费电费(4)(4)控制耦合控制耦合一模块通过开关量、标志、一模块通过开关量、标志、名字等控制信息,明显地控名字等控制信息,明显地控制另一模块的功能。制另一模块的功能。控制耦合举例控制耦合举例A A计算平均分计算平均分或最高分或最高分B B平均/最高成绩设想一下设想一下A()A()函数中调用函数中调用B()B()的语句是怎样的?的语句是怎样的?n n这个问题与前面的调用这个问题与前面
30、的调用MAX()MAX()的例子不同。的例子不同。在在MAX()MAX()函数中,我们很清楚地看到:形式函数中,我们很清楚地看到:形式参数表是两个整数,表示要比较的两个数。参数表是两个整数,表示要比较的两个数。函数说明为:函数说明为:MAX(MAX(intint x,x,intint y)y)函数处理后,返回的结果为较大的那个数。函数处理后,返回的结果为较大的那个数。所以,在主调函数中,我们只需以两个被比所以,在主调函数中,我们只需以两个被比较的数作为较的数作为 实际参数,所以就可写出形如:实际参数,所以就可写出形如:.=MAX(25,36).=MAX(25,36)的调用语句。的调用语句。设想
31、一下设想一下A()A()函数中调用函数中调用B()B()的语句是怎样的?的语句是怎样的?n n但在但在B()B()函数中,我们虽然知道:形式参数表是函数中,我们虽然知道:形式参数表是一个整数,表示要取得的成绩类型是平均或最高。一个整数,表示要取得的成绩类型是平均或最高。函数说明为:函数说明为:B(B(intint x)x)函数处理后,返回的结果为取出的成绩数据函数处理后,返回的结果为取出的成绩数据(平平均或最高均或最高)。可是,在主调函数中,我们仍不知道以什么作可是,在主调函数中,我们仍不知道以什么作为实际参数,是为实际参数,是0 0?1 1?2 2?还是其他值?还是其他值,取决于取决于B B
32、()()中用什么值表示平均中用什么值表示平均/最高标记。因此,就要最高标记。因此,就要去了解去了解B()B()内部的语句,而不能仅凭函数说明就内部的语句,而不能仅凭函数说明就写出调用语句。所以写出调用语句。所以B()B()就成为灰箱就成为灰箱/白箱,而非白箱,而非黑箱。黑箱。控制耦合举例控制耦合举例读入分数读入分数输出结果输出结果计算平均分计算平均分 计算最高分计算最高分平均平均/最高最高?调用逻辑性模块调用逻辑性模块 B B时,须先传递时,须先传递控制信号控制信号(平均分平均分 /最高分最高分),以选,以选择所需的操作。择所需的操作。控制模块必须知控制模块必须知道被控模块的内道被控模块的内部
33、逻辑,增强了部逻辑,增强了相互依赖相互依赖.B B 控制耦合增加了模块之间的复控制耦合增加了模块之间的复杂性,杂性,调用模块必须知道被调模块的内部逻调用模块必须知道被调模块的内部逻辑,增加了相互依赖辑,增加了相互依赖。去除模块间控制耦合的方法:去除模块间控制耦合的方法:(1)(1)将被调用模块内的判定上移到调将被调用模块内的判定上移到调 用模块中进行用模块中进行控制耦合增加了理解和编程的复控制耦合增加了理解和编程的复(2)(2)被调用模块分解成若干单一功被调用模块分解成若干单一功 能模块能模块改控制耦合为数据耦合举例改控制耦合为数据耦合举例A A计算平均分计算平均分B1B1平均成绩最高成绩计算
34、最高分计算最高分B2B2控制耦合举例控制耦合举例A A发奖牌发奖牌 名次名次(开关量开关量)奖牌奖牌控制耦合控制耦合被调用模块内被调用模块内处理逻辑模式处理逻辑模式功能功能A A功能功能B B判别判别改控制耦合为数据耦合举例改控制耦合为数据耦合举例A发金牌发金牌发银牌发银牌发铜牌发铜牌金牌金牌银牌银牌铜牌铜牌A取口令取口令并核对并核对B用户名用户名、口令口令对对/不对不对控制耦合举控制耦合举例例A取口令取口令B用户名用户名口令口令将将B B中核对口令功能划分到中核对口令功能划分到 A A(5)(5)公共耦合公共耦合(公共数据区耦合公共数据区耦合)一组模块引用同一个公用数据区一组模块引用同一个公
35、用数据区(也称全局数据区、公共数据环境也称全局数据区、公共数据环境)。公共数据区公共数据区指:指:n 全局数据结构全局数据结构n 共享通讯区共享通讯区n 内存公共覆盖区等内存公共覆盖区等公共耦合举例公共耦合举例公共数据区公共数据区松散的公共耦合松散的公共耦合 公共数据区公共数据区紧密的公共耦合紧密的公共耦合公共耦合举例公共数据区公共数据区C CB B模块模块模块模块A AA A、B BB B、C CC C间存在错综复杂的间存在错综复杂的间存在错综复杂的间存在错综复杂的联联联联系系系系公共耦合举例公共耦合举例所有的公共所有的公共 耦合关系耦合关系A AE EB BC CD D6 6个模块共享一个
36、模块共享一个个公共数据区公共数据区F(1)(1)系统可理解性降低系统可理解性降低 (模块间存在错综复杂的连系模块间存在错综复杂的连系)(2)(2)系统可维护性差系统可维护性差 (修改变量名或属性困难修改变量名或属性困难)(3)(3)系统可靠性差系统可靠性差(公共数据区及全程变量无保护措施公共数据区及全程变量无保护措施)慎用公共数据区和全程变量慎用公共数据区和全程变量!公共耦合存在的问题:公共耦合存在的问题:(6)(6)内容耦合内容耦合一模块直接访问另一模块的一模块直接访问另一模块的内部信息内部信息(程序代码或数据程序代码或数据)最不好内容耦合形式最不好内容耦合形式 !发生内容耦合的情形:发生内
37、容耦合的情形:(1)(1)一模块直接访问另一模块的一模块直接访问另一模块的内部数据内部数据(2)(2)一模块不通过正常入口转到一模块不通过正常入口转到 另一模块内另一模块内(3)(3)两模块有一部分代码重叠两模块有一部分代码重叠(4)(4)一模块有多个入口一模块有多个入口模块化设模块化设计对耦合度的要求:计对耦合度的要求:耦合是影响系统复杂程度和设计耦合是影响系统复杂程度和设计质量的重要因素质量的重要因素目标目标:建立模块间耦合度尽可能:建立模块间耦合度尽可能松散的系统松散的系统如何降低模块间耦合度:如何降低模块间耦合度:(1)(1)如模块必须存在耦合,如模块必须存在耦合,选择适当的耦合类型选
38、择适当的耦合类型原则原则:尽量使用数据耦合:尽量使用数据耦合少用控制耦合少用控制耦合限制公共耦合的范围限制公共耦合的范围坚决避免使用内容耦合坚决避免使用内容耦合如何降低模块间耦合度:如何降低模块间耦合度:(2)(2)降低模块间接口的复降低模块间接口的复杂性杂性 接口复杂性与耦合类型的关系:接口复杂性与耦合类型的关系:接接口口复复杂杂性性接口方式接口方式接口数据接口数据的复杂性的复杂性无接口关系无接口关系直接引用直接引用过程调用语句过程调用语句数据项作参数数据项作参数数据结构,变数据结构,变量名作参数量名作参数内容耦合内容耦合其它耦合其它耦合开关量,起开关量,起控制变量作用控制变量作用公用数据区
39、公用数据区全程变量全程变量,数据耦合数据耦合标记耦合标记耦合控制耦合控制耦合公共耦合公共耦合非直接耦合非直接耦合4 4.模块独立性的度量之二:聚合模块独立性的度量之二:聚合度度 衡量一个模块内部各成分之间彼衡量一个模块内部各成分之间彼此结合的紧密程度此结合的紧密程度设计目标:高聚合设计目标:高聚合(一模块的所有一模块的所有成分都直接参与并且成分都直接参与并且对于完成同一功能来对于完成同一功能来说都是最基本的说都是最基本的)模块的聚合性类型:模块的聚合性类型:低低 偶然聚合偶然聚合 内内 逻辑聚合逻辑聚合 聚聚 时间聚合时间聚合 性性 过程聚合过程聚合 通信聚合通信聚合 顺序顺序聚合聚合 高高
40、功能聚合功能聚合模模块块独独立立性性弱弱(功能分散功能分散)强强(功能单一功能单一)(1)(1)功能聚合功能聚合 一个模块内的所有成分的处理一个模块内的所有成分的处理动作全部为完成某个功能,且动作全部为完成某个功能,且只执行一个功能,缺一不可,只执行一个功能,缺一不可,称为功能聚合。称为功能聚合。聚合性最强聚合性最强如如:计算实发工资,打印发票等计算实发工资,打印发票等(2)(2)顺序聚合顺序聚合 一个模块能完成多个操作,前一个模块能完成多个操作,前一个操作处理的输出数据是下一个操作处理的输出数据是下一个操作处理的输入数据,模一个操作处理的输入数据,模块中各成份的工作是有次序的,块中各成份的工
41、作是有次序的,各成份的关系也较紧密,则称各成份的关系也较紧密,则称为顺序聚合。为顺序聚合。顺序聚合模块顺序聚合模块例例读读 入入存存 贮贮打打 印印累累 加加读读 数数模块模块1 1模块模块2 2(3)(3)通信聚合通信聚合 模块内各部分使用相同的输模块内各部分使用相同的输入数据,或产生相同的输出入数据,或产生相同的输出结果结果,称为通信聚合称为通信聚合通信聚合模块例产生工产生工资报表资报表计算平计算平均工资均工资职工工职工工资记录资记录职工工职工工资报表资报表平均平均工资工资产生职工工资报表并计算平均工资模块产生职工工资报表并计算平均工资模块通信聚合模块例通信聚合模块例开领开领书单书单登记登
42、记售书售书发票发票领书单领书单售售 书书登记表登记表文件文件删除删除修改修改(4)(4)过程聚合过程聚合 一个模块内各处理成分的动一个模块内各处理成分的动作各不相同,彼此也没什么作各不相同,彼此也没什么关系,但它们都受一个关系,但它们都受一个控制控制流流的支配,且决定了它们的的支配,且决定了它们的执行次序。执行次序。过程聚合模块过程聚合模块建立方程组系数矩阵建立方程组系数矩阵全部任务纳入一个全部任务纳入一个模块,得到一过程模块,得到一过程性模块性模块高斯消去法高斯消去法回回 代代高斯消去法解题流程高斯消去法解题流程(5)(5)时间聚合时间聚合模块完成的功能必须在模块完成的功能必须在同一时间同一
43、时间内执行,这些功能只因时间因素内执行,这些功能只因时间因素关联在一起。关联在一起。例如例如:初始化系统模块、初始化系统模块、系统结束模块、系统结束模块、紧急故障处理模块等均是时间性聚合紧急故障处理模块等均是时间性聚合 模块模块.(6)逻辑聚合 把几种相关功能把几种相关功能(逻辑上相似逻辑上相似的功能的功能)组合在一模块内组合在一模块内,每次每次调用由传给模块的参数确定执调用由传给模块的参数确定执行哪种功能。行哪种功能。逻辑聚合模块例ABCEFGABCEFGA1B1C1EFGEFG模块内部逻辑模块内部逻辑E E、F F、G G逻辑逻辑功能相似,组功能相似,组成新模块成新模块EFGEFG缺点缺点
44、缺点缺点:增强了耦合程度增强了耦合程度增强了耦合程度增强了耦合程度(控制耦合控制耦合控制耦合控制耦合)不易修改,效率低不易修改,效率低不易修改,效率低不易修改,效率低公用代码段公用代码段公用代码段公用代码段逻辑聚合缺点:逻辑聚合缺点:不易修改不易修改 增强了耦合程度增强了耦合程度(控制耦合控制耦合)效率低效率低(7)偶然聚合 模块内各部分间无联系模块内各部分间无联系ABCMMOVE O TO RREAD FILE FMOVE S TO T模块模块M中的三个语句没有任何联系中的三个语句没有任何联系缺点:缺点:可理解性差可理解性差,可修改性差可修改性差例例:做杂做杂事事模块聚合性的判断模块聚合性的
45、判断YNYY 该该模模块块功功能能单单一一 各各功功能能关关系系如如何何功能聚合功能聚合通讯聚合通讯聚合顺序聚合顺序聚合逻辑相似逻辑相似次序重要次序重要次序重要次序重要过程聚合过程聚合时间聚合时间聚合逻辑聚合逻辑聚合偶然聚合偶然聚合NNNY数据流数据流控制流控制流两者皆非两者皆非5.5.耦合、聚合与模块独立性关系耦合、聚合与模块独立性关系耦合与聚合都是模块独立性的耦合与聚合都是模块独立性的定性标准,都反映模块独立性定性标准,都反映模块独立性的良好程度。但耦合是直接的的良好程度。但耦合是直接的主导因素,聚合则辅助耦合共主导因素,聚合则辅助耦合共同对模块独立性进行衡量。同对模块独立性进行衡量。控制
46、耦合举例控制耦合举例A A计算平均分计算平均分或最高分或最高分B B平均/最高成绩逻辑聚合逻辑聚合改控制耦合为数据耦合举例改控制耦合为数据耦合举例A A计算平均分计算平均分B1B1平均成绩最高成绩计算最高分计算最高分B2B2功能聚合功能聚合A取口令取口令并核对并核对B用户名用户名、口令口令对对/不对不对控制耦合举控制耦合举例例顺序聚合顺序聚合A取口令取口令B用户名用户名口令口令将将B B中核对口令功能划分到中核对口令功能划分到 A A功能聚合功能聚合 聚合与耦合密切相关,同其它模块聚合与耦合密切相关,同其它模块强耦合的模块意味强耦合的模块意味着着弱聚合,强聚弱聚合,强聚合模块意味着与其它模块间
47、松散耦合模块意味着与其它模块间松散耦合合.设计目标:设计目标:力争力争强聚合强聚合、弱耦合弱耦合5.5.耦合、聚合与模块独立性关系耦合、聚合与模块独立性关系(续续)三三 数据流图导出初始结构图数据流图导出初始结构图 从数据流程图导出系统的初始结构图,从数据流程图导出系统的初始结构图,首先要区分数据流程图的结构类型,然首先要区分数据流程图的结构类型,然后根据不同的类型采用不同的方法把数后根据不同的类型采用不同的方法把数据流图映象成相应的模块结构。据流图映象成相应的模块结构。(一一)数据流程图数据流程图DFD的结构类的结构类型型1变换型变换型DFD一个数据流程图可以明显地分成输入、一个数据流程图可
48、以明显地分成输入、处理和输出三部分。处理和输出三部分。2事务型事务型DFD事务型数据流程图一般呈束状形事务型数据流程图一般呈束状形。(1)(1)变换型结构变换型结构 由输入、变换中心由输入、变换中心(或称主或称主加工加工)和输出三部分组成。和输出三部分组成。基本模型:基本模型:变换变换中心中心输入输入路径路径输出输出路径路径变换流示意图变换流示意图信息信息时间时间信息流信息流输入流输入流输出流输出流变变换流换流外部外部表示表示内部内部表示表示变换型数据流图变换型数据流图输入输入信息信息物理物理输入输入格式格式检查检查处理处理显示显示正确正确信息信息结果结果物理物理输出输出数据数据变换中心变换中
49、心输出输出逻辑逻辑输入输入逻辑逻辑输出输出输入输入(2)(2)事务型结构事务型结构特征特征:具有在多种事物中选择具有在多种事物中选择 执行某类事物的能力执行某类事物的能力基本模型:基本模型:事务事务中心中心接受路径接受路径动作动作路径路径(3)(3)大型系统大型系统DFDDFD中中,变换型和事务变换型和事务型结构往往共存型结构往往共存:T T事务中心事务中心传入传入变换变换传出传出(二二)DFD导出初始导出初始SC的的过程过程n n两种转换策略两种转换策略/技术技术 变换分析变换分析 事务分析事务分析n n一般过程一般过程 先设计模块结构顶端的主模块先设计模块结构顶端的主模块 然后然后“由顶向
50、下逐步细化由顶向下逐步细化”最后得到一个最后得到一个与数据流图相对应与数据流图相对应的程序结构的程序结构SDSD方法的两种方法的两种转换转换方法方法变换型变换型DFDDFD事务型事务型DFDDFD初始初始SCSC初始初始SCSC变换分析变换分析事务分析事务分析“由顶向下逐步细化由顶向下逐步细化”的思想的思想n n找出找出找出找出“顶顶顶顶”在哪里,设计一个相应的主控模块在哪里,设计一个相应的主控模块在哪里,设计一个相应的主控模块在哪里,设计一个相应的主控模块n n每创建一个新的模块时,必须决定该模块的外部特征每创建一个新的模块时,必须决定该模块的外部特征每创建一个新的模块时,必须决定该模块的外