《第7章结构化系统设计PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第7章结构化系统设计PPT讲稿.ppt(137页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第7章结构化系统设章结构化系统设计计第1页,共137页,编辑于2022年,星期一本章主要内容本章主要内容系统设计的任务系统设计的任务总体设计总体设计结构化设计的概念、基本原则结构化设计的概念、基本原则从数据流图导出结构图从数据流图导出结构图详细设计详细设计代码设计代码设计输出设计输出设计输入设计输入设计人机对话设计人机对话设计模块详细设计模块详细设计数据库设计、网络设计数据库设计、网络设计系统设计说明书系统设计说明书第2页,共137页,编辑于2022年,星期一转换转换从分析到设计从分析到设计现实领域的各种需求现实领域的各种需求计算机领域的具体实现计算机领域的具体实现针对需求,进行针对需求,进
2、行计算机信息系统计算机信息系统的物理模型设计的物理模型设计第3页,共137页,编辑于2022年,星期一7.1 系统设计的任务系统设计的任务通俗地说,设计就是要回答通俗地说,设计就是要回答“怎么做怎么做”完成技术实现方案的制定,即信息系统的物理完成技术实现方案的制定,即信息系统的物理模型模型一个逻辑模型,可以提出多个物理模型一个逻辑模型,可以提出多个物理模型根据物理模型进行实施,得到最终的物理系统根据物理模型进行实施,得到最终的物理系统第4页,共137页,编辑于2022年,星期一设计系统之前,先看看评价信息系统的标准,这设计系统之前,先看看评价信息系统的标准,这些标准对任何设计方法都适用:些标准
3、对任何设计方法都适用:1.1.信息系统的功能:信息系统的功能:是否满足用户的需求是否满足用户的需求2.2.系统的效率:系统的效率:响应时间、操作的方便性响应时间、操作的方便性3.3.系统的可靠性:系统的可靠性:抗干扰能力、故障恢复抗干扰能力、故障恢复4.4.系统的工作质量:系统的工作质量:准确性、使用效果准确性、使用效果5.5.系统的可变更性:系统的可变更性:修改和维护的难易程度修改和维护的难易程度6.6.系统的经济性:系统的经济性:系统收益与支出比系统收益与支出比7.1.1 设计标准设计标准第5页,共137页,编辑于2022年,星期一信息系统的可变更性信息系统的可变更性变化是不变的真理。变化
4、是不变的真理。统计表示:在信息系统的整个生命周期中,系统计表示:在信息系统的整个生命周期中,系统维护成本占总成本的统维护成本占总成本的80%左右。左右。因此,可变更性是衡量信息系统设计的重要指因此,可变更性是衡量信息系统设计的重要指标。标。第6页,共137页,编辑于2022年,星期一如何提高系统变更性如何提高系统变更性结构简单结构简单系统各组成元素分工明确,易于理解系统各组成元素分工明确,易于理解元素之间的关系清晰简洁元素之间的关系清晰简洁变动灵活变动灵活软件维护中的软件维护中的“水波效应水波效应”使系统各组成元素内部的改变容易实现,改动对使系统各组成元素内部的改变容易实现,改动对其他部分的影
5、响尽量减少其他部分的影响尽量减少提前考虑将来最易出现的扩展和变更提前考虑将来最易出现的扩展和变更设计方法:结构化设计和面向对象设计设计方法:结构化设计和面向对象设计第7页,共137页,编辑于2022年,星期一7.1.2 系统设计的内容系统设计的内容一般划分为两部分:一般划分为两部分:总体设计总体设计也称概要设计也称概要设计明确软件的组成元素及其结构(明确软件的组成元素及其结构(structure)、)、体系结构(体系结构(architecture)详细设计详细设计各项具体细节,设计硬件软件的各个方面各项具体细节,设计硬件软件的各个方面第8页,共137页,编辑于2022年,星期一结构化方法的总体
6、设计主要包括:结构化方法的总体设计主要包括:1.1.将系统划分成程序模块;将系统划分成程序模块;2.2.决定每个模块的功能;决定每个模块的功能;3.3.决定模块的调用关系;决定模块的调用关系;4.4.决定模块的界面,即模块间信息的传递。决定模块的界面,即模块间信息的传递。简单地说,就是绘制模块结构图简单地说,就是绘制模块结构图 结构化系统总体设计结构化系统总体设计第9页,共137页,编辑于2022年,星期一面向对象系统总体设计面向对象系统总体设计面向对象方法的总体设计主要包括:面向对象方法的总体设计主要包括:识别系统中的对象,设计类;识别系统中的对象,设计类;决定每个类的属性和操作(功能);决
7、定每个类的属性和操作(功能);决定对象之间的协作关系;决定对象之间的协作关系;将类划分为组件,决定组件的依赖关系。将类划分为组件,决定组件的依赖关系。最重要的图是类图和协作图(最重要的图是类图和协作图(UMLUML模型)模型)第10页,共137页,编辑于2022年,星期一详细设计详细设计包括包括代码设计输入设计输出设计人机交互设计(用户界面设计)模块处理过程设计(模块详细设计)数据库设计网络设计第11页,共137页,编辑于2022年,星期一7.2 结构化设计的概念结构化设计的概念结构化:自上至下,逐步分解求精结构化:自上至下,逐步分解求精结构化设计:模块化结构化设计:模块化模块化因为根据经验:
8、因为根据经验:对于问题对于问题1(P1)和问题)和问题2(P2)若:若:C(P1)C(P2)则则:E(P1)E(P2)有规律:有规律:C(P1+P2)C(P1)+C(P2)则:则:E(P1+P2)E(P1)+E(P2)C表示复杂度,表示复杂度,E表示需要的工作量表示需要的工作量第12页,共137页,编辑于2022年,星期一模块化的基本思想模块化的基本思想使用结构化设计方法一定程度上能够简化系使用结构化设计方法一定程度上能够简化系统结构,使系统容易修改和理解。统结构,使系统容易修改和理解。具体做法:具体做法:把整个软件划分为部分,其中每一部分的功能简把整个软件划分为部分,其中每一部分的功能简单明
9、确,即程序模块(可以是子过程或函数)单明确,即程序模块(可以是子过程或函数)划分模块的工作按层次进行,上层模块调用下层划分模块的工作按层次进行,上层模块调用下层模块模块每一个模块应尽可能独立每一个模块应尽可能独立模块间的调用接口要阐明(模块名称、输入数据、模块间的调用接口要阐明(模块名称、输入数据、输出数据)输出数据)第13页,共137页,编辑于2022年,星期一接口成本接口成本成本成本模块数量模块数量单元模块成本单元模块成本软件总成本软件总成本模块数量和软件成本模块数量和软件成本 粒度太大,单个模块复杂度升高、维护困难粒度太大,单个模块复杂度升高、维护困难 粒度太小,管理与运行成本升高粒度太
10、小,管理与运行成本升高试想一下:每个经理管理协调多少个下级合适?试想一下:每个经理管理协调多少个下级合适?第14页,共137页,编辑于2022年,星期一7.2.1 模块的概念模块的概念模块模块(Module)一词使用很广泛。通常对应于用一词使用很广泛。通常对应于用一个名字就可以调用的一段程序语句(子程序一个名字就可以调用的一段程序语句(子程序或函数)或函数)模块具有输入和输出、逻辑功能、运行程序、模块具有输入和输出、逻辑功能、运行程序、内部数据四种属性。内部数据四种属性。计算工资计算工资模块的图形表示方法模块的图形表示方法第15页,共137页,编辑于2022年,星期一7.2.2 模块结构图模块
11、结构图结构图(Structured Chart)描述系统的模块结构及模块间的联系 结构图中的主要成分有:结构图中的主要成分有:模块:用长方形表示调用:从一个模块指向另一模块的箭头表示前一个模块调用后一个模块。有循环调用和条件调用数据:用带圆圈的小箭头表示从一个模块传递给另一模块的数据(有实义)控制信息:带涂黑圆圈的小箭头表示一个模块传送给另一模块的控制信息第16页,共137页,编辑于2022年,星期一主调模块主调模块被调模块被调模块被调模块被调模块主调模块主调模块被调模块被调模块被调模块被调模块循环调用条件调用1.1.结构图无严格的模块调用顺序,但一般习惯从左至右结构图无严格的模块调用顺序,但
12、一般习惯从左至右2.2.因为约定遵从从上向下的调用,调用关系也可以不使用因为约定遵从从上向下的调用,调用关系也可以不使用箭头,而直接使用直线箭头,而直接使用直线3.3.模块间传递的信息如果出现在数据字典中,则视为数据,模块间传递的信息如果出现在数据字典中,则视为数据,否则为控制信息否则为控制信息结构图的画法结构图的画法第17页,共137页,编辑于2022年,星期一计算获得有效数据生成报表打印报表获得编辑数据核对数据打印表头打印表尾读入数据编辑数据显示无效数据打印一行有效数据EOF编辑数据EOF有效数据编辑数据有效数据结果编辑数据数据数据EOFEOF结果日期行行行总计一个完整的结构图一个完整的结
13、构图第18页,共137页,编辑于2022年,星期一模块设计的度量标准模块设计的度量标准为了衡量模块的相对独立性,提出了模块间的为了衡量模块的相对独立性,提出了模块间的耦合耦合(Coupling)与模块的内聚与模块的内聚(Cohesion)两个两个标准标准耦合:模块内部各元素之间的联系程度耦合:模块内部各元素之间的联系程度内聚:模块和模块之间的联系程度内聚:模块和模块之间的联系程度设计目标:设计目标:模块内的联系越紧越好模块内的联系越紧越好模块间的联系越少越好模块间的联系越少越好为什么?为什么?第19页,共137页,编辑于2022年,星期一7.2.3 模块的耦合模块的耦合double Calcu
14、lateAvg()int n;double total,average,value;scanf(“input value:”,&value);while value=0.0n=n+1;total=total+value;scanf(“ninput value:”,&value);average=total/n;return(average);第20页,共137页,编辑于2022年,星期一影响耦合度的因素影响耦合度的因素如果使用模块如果使用模块A需要了解模块需要了解模块B,那么,那么A和和B是是耦合的。影响模块间耦合程度有三方面的因素:耦合的。影响模块间耦合程度有三方面的因素:联系方式联系方式模
15、块间通过什么方式联系模块间通过什么方式联系来往信息的作用来往信息的作用模块间来往信息作什么用模块间来往信息作什么用数量数量模块间来往信息的多少。模块间来往信息的多少。混合混合控制控制数据数据 用过程用过程 直接引用直接引用语句调用语句调用少少多多数量数量方式方式作用作用0 0离坐标原点越远,耦合离坐标原点越远,耦合程度越高程度越高第21页,共137页,编辑于2022年,星期一模块联系方式模块联系方式直接引用:一个模块直接存取另一个模块的某直接引用:一个模块直接存取另一个模块的某些信息,例如全程变量、些信息,例如全程变量、FORTRAN的的common量、语言的量、语言的extern量、共享的通
16、量、共享的通信区等信区等。也称为公共环境耦合。也称为公共环境耦合(common environment coupling)降低这种耦合程度的办法是使数据局部化,即使降低这种耦合程度的办法是使数据局部化,即使用局部变量用局部变量 过程语句调用:一个模块调用另一个模块,所过程语句调用:一个模块调用另一个模块,所有数据来往都以参数或返回值方式传递并使用有数据来往都以参数或返回值方式传递并使用第22页,共137页,编辑于2022年,星期一来往信息的作用来往信息的作用模块间的来往信息可以作数据用,也可以作控模块间的来往信息可以作数据用,也可以作控制信息用制信息用A A取平均成绩取平均成绩或最高成绩或最高
17、成绩平均平均/最高最高B B(a)(a)控制耦合控制耦合成绩成绩取最高成绩取最高成绩取平均成绩取平均成绩A A平均成绩平均成绩最高成绩最高成绩(b)(b)数据耦合数据耦合第23页,共137页,编辑于2022年,星期一来往信息的数量来往信息的数量模块间传递的信息量越大,它们之间的耦合程模块间传递的信息量越大,它们之间的耦合程度越高。度越高。一个模块最好只了解它确实需要使用的数据,一个模块最好只了解它确实需要使用的数据,而完全不知道其他数据的存在(而完全不知道其他数据的存在(独立性好独立性好)第24页,共137页,编辑于2022年,星期一耦合的类型耦合的类型根据以上因素,对耦合分类如下:根据以上因
18、素,对耦合分类如下:数据耦合:数据耦合:采用子程序调用,调用模块将需要进行处理的数据采用子程序调用,调用模块将需要进行处理的数据传递给被调模块。数据耦合是不可避免的。传递给被调模块。数据耦合是不可避免的。标记耦合:标记耦合:如果调用模块将整个数据记录传递给被调模块,如果调用模块将整个数据记录传递给被调模块,而被调模块只使用了部分数据项,则称为标记耦合或特征耦而被调模块只使用了部分数据项,则称为标记耦合或特征耦合。合。控制耦合:控制耦合:一个模块将控制信息传递给另一个模块,以控制被一个模块将控制信息传递给另一个模块,以控制被调模块的内部处理逻辑。(可以分解)调模块的内部处理逻辑。(可以分解)公共
19、环境耦合:公共环境耦合:如果两个模块共享同一全局数据,称为公共耦如果两个模块共享同一全局数据,称为公共耦合。合。内容耦合:内容耦合:两个模块之间的内部属性有直接关联,也称病态两个模块之间的内部属性有直接关联,也称病态耦合。(某些耦合。(某些GOTO语句)语句)第25页,共137页,编辑于2022年,星期一减低耦合的设计原则减低耦合的设计原则结构化设计要求模块间的耦合程度尽可能小。结构化设计要求模块间的耦合程度尽可能小。为此应:为此应:用过程语句调用其他模块用过程语句调用其他模块模块间的参数作数据用模块间的参数作数据用模块间的参数尽可能少模块间的参数尽可能少第26页,共137页,编辑于2022年
20、,星期一7.2.4 模块的内聚模块的内聚模块的内聚反映模块内部联系的紧密程度。模块的内聚反映模块内部联系的紧密程度。一个模块只需要做好一件事情,不要过分关心一个模块只需要做好一件事情,不要过分关心其他任务。其他任务。高内聚性的好处是可以提高程序的可靠性。高内聚性的好处是可以提高程序的可靠性。有一个调查表明,有一个调查表明,50的强内聚性子程序是没有的强内聚性子程序是没有错误的,而只有错误的,而只有 18的弱内聚性子程序才是无错的弱内聚性子程序才是无错的,弱内聚性子程序的出错机会要比强内聚性出的,弱内聚性子程序的出错机会要比强内聚性出错机会高错机会高 6 倍,而修正成本则要高倍,而修正成本则要高
21、 19 倍。代倍。代码大全码大全第27页,共137页,编辑于2022年,星期一内聚的类型内聚的类型模块的内聚可以分以下七类:模块的内聚可以分以下七类:.偶然内聚偶然内聚(coincidental cohesion).逻辑内聚逻辑内聚(logical cohesion).时间内聚时间内聚(temporal cohesion).步骤内聚步骤内聚(procedural cohesion).通信内聚通信内聚(communicational cohesion).顺序内聚顺序内聚(sequential cohesion).功能内聚功能内聚(functional cohesion)第28页,共137页,编辑
22、于2022年,星期一当同一个子程序中的操作之间无任何联系时,为当同一个子程序中的操作之间无任何联系时,为偶然内聚性,也叫作偶然内聚性,也叫作“无内聚性无内聚性”。比如只是为了将程序中某几处凑巧相同的一些语句比如只是为了将程序中某几处凑巧相同的一些语句组合起来形成的一个模块:组合起来形成的一个模块:P PQ QR RS S1、偶然内聚、偶然内聚 B=A;read(Cardfile);D=C;T T第29页,共137页,编辑于2022年,星期一将几个逻辑上相似的功能放在一个模块中将几个逻辑上相似的功能放在一个模块中 准备准备算平均成绩算平均成绩算最高成绩算最高成绩返返 回回Y Y取平均成绩取平均成
23、绩?N N比如常见的出错处理模块,工作模块发现错误后,调用错误处比如常见的出错处理模块,工作模块发现错误后,调用错误处理模块,将错误号作为控制参数传入,然后出错处理模块根据理模块,将错误号作为控制参数传入,然后出错处理模块根据不同的错误号执行相应的操作不同的错误号执行相应的操作 2、逻辑内聚、逻辑内聚第30页,共137页,编辑于2022年,星期一将在有限时间单元内处理的成分组合为同一模块将在有限时间单元内处理的成分组合为同一模块比如在程序初始化时所作的处理:比如在程序初始化时所作的处理:m_Medirecno=psPerson.Medirecno txtMedirecno=psPerson.M
24、edirecno txtTel=psPerson.Tel txtContact=psPerson.Contact txtAddr=psPerson.Addr txtMedirecno.Enabled=False可视化程序设计中在窗口打开时初始化窗口中得控件内容,如列可视化程序设计中在窗口打开时初始化窗口中得控件内容,如列表框的项目、文本框或单选钮的缺省取值表框的项目、文本框或单选钮的缺省取值还比如:还比如:C+的构造函数、析构函数的构造函数、析构函数3、时间内聚、时间内聚第31页,共137页,编辑于2022年,星期一4、步骤内聚、步骤内聚当子程序中的操作是按某一特定过程结构进行当子程序中的操作
25、是按某一特定过程结构进行的的,就是步骤内聚。,就是步骤内聚。例如:用户想按一定的顺序打印告,子程序设计例如:用户想按一定的顺序打印告,子程序设计成是用于按顺序打印销售收入、开支、雇员电话成是用于按顺序打印销售收入、开支、雇员电话表的。表的。步骤内聚在时间内聚的基础上增加了次序的约步骤内聚在时间内聚的基础上增加了次序的约束束第32页,共137页,编辑于2022年,星期一模块划分示例模块划分示例第33页,共137页,编辑于2022年,星期一PREPPREPPLANLOOPPLANLOOPSTMROSTMRO(主模块)(主模块)TYPDECIDTYPDECID准备好的矩阵指示标记准备好的矩阵指示标记
26、准备好的矩阵指示标记准备好的矩阵指示标记矩阵指示标记矩阵指示标记部分结果、标签等部分结果、标签等模块模块PERPPERP是一个初始化模块,属时间内聚。是一个初始化模块,属时间内聚。模块模块PLANLOOPPLANLOOP和和TYPDECIDTYPDECID都属于步骤内聚。前者的元素用于都属于步骤内聚。前者的元素用于控制主循环,后者的元素负责主循环的整个判定执行过程控制主循环,后者的元素负责主循环的整个判定执行过程绘制划分后的模块图绘制划分后的模块图第34页,共137页,编辑于2022年,星期一当当模模块块内内的的成成分分引引用用共共同同的的数数据据,而而不不存存在在其其他他联系时,称为通信内聚
27、联系时,称为通信内聚修改库存修改库存购货单购货单开发货单开发货单库存库存A A、销售模块、销售模块B B、产生留退名单模块、产生留退名单模块期末不及格统计期末不及格统计累计不及格统计累计不及格统计留退名单留退名单学籍表学籍表5、通信内聚、通信内聚第35页,共137页,编辑于2022年,星期一模块中某个成分的输出是另一成分的输入。模块中某个成分的输出是另一成分的输入。比如显示期末成绩通知:比如显示期末成绩通知:读读入入学学号号读读取取成成绩绩取取不不及及格格科科目目取取科科目目补补考考安安排排显显示示数数据据判判断断留留退退级级6、顺序内聚、顺序内聚第36页,共137页,编辑于2022年,星期一
28、6、顺序内聚、顺序内聚顺序内聚有较强的内聚性顺序内聚有较强的内聚性是步骤内聚和通信内聚的结合是步骤内聚和通信内聚的结合例如:一个模块用于计算高于平均分的人数,步例如:一个模块用于计算高于平均分的人数,步骤是先循环累计总分,然后计算得到平均分,最骤是先循环累计总分,然后计算得到平均分,最后循环统计高于平均分的人数后循环统计高于平均分的人数有步骤的先后,而且前一个步骤的结果要用于后有步骤的先后,而且前一个步骤的结果要用于后一步骤的运算中一步骤的运算中但仍然不是最高的内聚类型但仍然不是最高的内聚类型第37页,共137页,编辑于2022年,星期一7、功能内聚、功能内聚一个模块包括并且仅仅包括为完成一个
29、具体任一个模块包括并且仅仅包括为完成一个具体任务所需要的所有成分,称为功能内聚。务所需要的所有成分,称为功能内聚。功能内聚性是最强也是最好的一种内聚功能内聚性是最强也是最好的一种内聚例如:打印职工名单,例如:打印职工名单,PrintStaffList()例如:计算平均分,例如:计算平均分,CalculateAvg()仅用一个动宾词组能明确指出这个模块的所有仅用一个动宾词组能明确指出这个模块的所有功能。功能。第38页,共137页,编辑于2022年,星期一内聚的评分内聚的评分耦合和内聚的概念是耦合和内聚的概念是Stevens等人提出的,等人提出的,是测量一个模块化系统好坏的标志。是测量一个模块化系
30、统好坏的标志。按他们的观点,按他们的观点,给上述七种内聚评分如下:给上述七种内聚评分如下:功能内聚分功能内聚分顺序内聚分顺序内聚分通信内聚分通信内聚分步骤内聚分步骤内聚分时间内聚分时间内聚分逻辑内聚分逻辑内聚分偶然内聚分偶然内聚分可以给一个软件的所有模块打分,最后计算平可以给一个软件的所有模块打分,最后计算平均分,作为软件结构质量评价的参考均分,作为软件结构质量评价的参考第39页,共137页,编辑于2022年,星期一耦合和内聚的关系耦合和内聚的关系二者就像连体兄弟,存在紧密相关的关系:二者就像连体兄弟,存在紧密相关的关系:模块内的高内聚往往意味着模块间的松耦合模块内的高内聚往往意味着模块间的松
31、耦合反之,低内聚一般会带来紧耦合反之,低内聚一般会带来紧耦合第40页,共137页,编辑于2022年,星期一7.2.5 作用范围与控制范围作用范围与控制范围一个设计原则:对于任何一个判断,其作用范一个设计原则:对于任何一个判断,其作用范围应该是这个判断所在模块的控制范围的一个围应该是这个判断所在模块的控制范围的一个子集子集该原则的目的:消除控制耦合,降低耦合度该原则的目的:消除控制耦合,降低耦合度想象一下,假设某个控制标志在系统的很多部分想象一下,假设某个控制标志在系统的很多部分发挥作用,那么可能会产生这样一种情况:错误发挥作用,那么可能会产生这样一种情况:错误发作的位置离产生错误的源头很远,这
32、给程序调发作的位置离产生错误的源头很远,这给程序调试和维护带来极大困难。试和维护带来极大困难。第41页,共137页,编辑于2022年,星期一作用范围与控制范围作用范围与控制范围一个判断的作用范围一个判断的作用范围是所有这样的模块的集合,是所有这样的模块的集合,这些模块内含有依赖于这个判断结果的处理。这些模块内含有依赖于这个判断结果的处理。或称影响范围。或称影响范围。一个模块的控制范围一个模块的控制范围是指它本身及其所有下属是指它本身及其所有下属模块的集合。模块的集合。D D计算总工资计算总工资 C C计算职工工资计算职工工资 B B计算临时工工资计算临时工工资 A A计算工资计算工资模块模块A
33、 A的控制范围是:的控制范围是:A A、B B、C C、D D假如判定出现在模块假如判定出现在模块A A,该判断的作用范围,该判断的作用范围是:是:A AB B、C C、D D不受影响不受影响第42页,共137页,编辑于2022年,星期一(a)a)TOPXYAB1B2B(b)(b)BXYAB1B2TOP TOP(c)(c)XBAB1B2Y TOP(d)(d)XYAB1B2B 作用范围和控制范围图示作用范围和控制范围图示第43页,共137页,编辑于2022年,星期一期末成绩查询期末成绩查询第44页,共137页,编辑于2022年,星期一Main()()stuNo=读入学号模块读入学号模块 调用成绩
34、调用成绩查询模块查询模块 调用调用显示模块显示模块主模块主模块第45页,共137页,编辑于2022年,星期一成绩查询模块()成绩查询模块()调用调用查期末成绩模块查期末成绩模块 如果有不及格科目则如果有不及格科目则标志标志1=True调用调用不及格处理模块不及格处理模块不及格处理模块()不及格处理模块()标志标志2=确定留退模块确定留退模块()()如果标志如果标志2!=True 则则调用调用查补考安排模块查补考安排模块显示结果模块()显示结果模块()调用调用显示成绩模块显示成绩模块 如果标志如果标志1=True 则则 调用调用不及格显示模块不及格显示模块显示不及格处理模块()显示不及格处理模块
35、()如果标志如果标志2=True 则则 调用调用留退通知模块留退通知模块 否则否则调用调用补考通知模块补考通知模块子模块子模块第46页,共137页,编辑于2022年,星期一学生期末成绩查询学生期末成绩查询读入学号读入学号显示成绩显示成绩查询成绩查询成绩显示成绩显示成绩不及格处理不及格处理确定留退确定留退显示补考显示补考显示留退显示留退改写后的模块图改写后的模块图第47页,共137页,编辑于2022年,星期一7.2.6 模块的扇入与扇出模块的扇入与扇出模块的扇入是模块的扇入是指有多少个上级模块调用它。指有多少个上级模块调用它。模块的扇出是模块的扇出是指模块的直属下层模块的个数,指模块的直属下层模
36、块的个数,扇出系数不宜过大扇出系数不宜过大A A的扇出为的扇出为2 2A AB BC CB B1 1C1C1C2C2C3C3B B的扇出为的扇出为1 1C C的扇出为的扇出为3 3T TT T的扇入为的扇入为2 2第48页,共137页,编辑于2022年,星期一总体设计原则总体设计原则设计功能内聚的模块设计功能内聚的模块模块使用过程语句调用其他模块,传递的参数模块使用过程语句调用其他模块,传递的参数作数据用,并且尽可能少作数据用,并且尽可能少模块内语句数一般为模块内语句数一般为50100平均扇出系数最好是平均扇出系数最好是35高层模块高扇出,最低层模块高扇入高层模块高扇出,最低层模块高扇入一个判
37、断的作用范围是判断所在模块的控制范一个判断的作用范围是判断所在模块的控制范围的子集围的子集第49页,共137页,编辑于2022年,星期一7.2.7 模块总体设计举例模块总体设计举例问题描述:问题描述:病人监护系统中的实时监测模块。病人监护系统中的实时监测模块。该模块使用病床专用设备测量病人的若干生理参该模块使用病床专用设备测量病人的若干生理参数,如体温、脉搏、血压等等。数,如体温、脉搏、血压等等。每个病人各种指标的安全范围由医生预先指定。每个病人各种指标的安全范围由医生预先指定。每经过一定的时间间隔,监测模块从监视设备读每经过一定的时间间隔,监测模块从监视设备读入这些数据,并存入数据库中。入这
38、些数据,并存入数据库中。若发现某个指标超出合理范围,则向维修站发出若发现某个指标超出合理范围,则向维修站发出设备故障通知,报告床号。设备故障通知,报告床号。若发现某个指标越出安全范围,则向护理站发出若发现某个指标越出安全范围,则向护理站发出通知,报告病人号。通知,报告病人号。第50页,共137页,编辑于2022年,星期一分析产生的分析产生的DFD病人病人护护理理站站病历病历合理合理数据数据数据数据不安不安全因全因素素读取读取数据数据存储存储数据数据检查检查数据数据通报不通报不安全因安全因素素维维修修站站不合理不合理数据数据第51页,共137页,编辑于2022年,星期一FS2病人监护病人监护采集
39、数据采集数据检查数据检查数据处理数据处理数据获获取取下下一一个个病病人人PN,FSEOF,EFEOFFSEFUSF,EFUSFFSPNEF,USFPN,FSPN,FS,EFPN,EFPN,FSFSFSSRSR读读取取数数据据检查检查不合不合理范理范围围查查询询安安全全范范围围判定判定病人病人是否是否安全安全写写数数据据库库通通报报设设备备故故障障通通报报不不安安全全因因素素EFBNPN,FSEFPN,BN初始结构图初始结构图PNPN病人号;病人号;BNBN床位号;床位号;SRSR安全范围;安全范围;FSFS各指标数据;各指标数据;EF EF设备故障标志;设备故障标志;EOFEOF标志已查过最后
40、一个病人;标志已查过最后一个病人;FS2FS2标志指标是否合理;标志指标是否合理;USF USF标志指标不安全标志指标不安全 第52页,共137页,编辑于2022年,星期一第第1次改进次改进“处理数据处理数据”模块没有实质性的功能,所包含模块没有实质性的功能,所包含的三个子模块相互之间没有什么关联,内聚程的三个子模块相互之间没有什么关联,内聚程度很低。度很低。该模块只是充当了该模块只是充当了“管道管道”,改进如下:,改进如下:废除废除“处理数据处理数据”模块;模块;直接由主模块调用直接由主模块调用“通报设备故障通报设备故障”、“通报不通报不安全因素安全因素”和和“写数据库写数据库”三个模块三个
41、模块第53页,共137页,编辑于2022年,星期一病人监护病人监护写数据库写数据库通报不安全通报不安全因素因素通报通报设备故障设备故障检查数据检查数据采集数据采集数据第第1次改进结果次改进结果第54页,共137页,编辑于2022年,星期一第第2次改进次改进通报设备故障时应通报床位号而不应是病人号,通报设备故障时应通报床位号而不应是病人号,因此要传递床位号。因此要传递床位号。床位号床位号BN可由可由“采集数据采集数据”模块传给主模块,模块传给主模块,再由主模块传递给再由主模块传递给“通知设备故障通知设备故障”模块。但模块。但这样做增加了模块间的联系,改为由这样做增加了模块间的联系,改为由“采集数
42、采集数据据”模块直接调用模块直接调用第55页,共137页,编辑于2022年,星期一PNPN,FSFS病人监护病人监护采集数据采集数据检查数据检查数据通报通报不安全因素不安全因素获取获取下一个病人下一个病人PNPN,FSFSEOFEOF,EFEFPNPN,BNBNEOFEOFFSFSEFEFUSFUSFUSFUSFPNPNFS2FS2PNPN,EFEFPNPN,FSFSFSFSSRSRSRSR读取数据读取数据检查检查不合理范围不合理范围查询安全范查询安全范围围判定病人是否安判定病人是否安全全写数据库写数据库通报通报设备故障设备故障EFEFBNBNPNPN,FSFSEFEFFSFS第第2次改进结果
43、次改进结果第56页,共137页,编辑于2022年,星期一第第3次改进次改进若由若由“检查数据检查数据”模块直接调用模块直接调用“通报不安全通报不安全因素因素”模块,则可减少模块间的联系,即不用模块,则可减少模块间的联系,即不用传递传递USF标志(排除控制耦合)。标志(排除控制耦合)。这样的话,这样的话,“检查数据检查数据”的名字改为的名字改为“报告不报告不安全因素安全因素”更为恰当更为恰当第57页,共137页,编辑于2022年,星期一第第3次改进结果次改进结果病人监护病人监护采集数据采集数据报告不安全因素报告不安全因素写数据库写数据库PNPN,FSFSEOFEOF,EFEFEFEFUSFUSF
44、PNPNSRSR,FSFSEFEFPNPN,FSFS查询安全范围查询安全范围通报不安全因素通报不安全因素PNPN,FSFS判定病人是否安全判定病人是否安全第58页,共137页,编辑于2022年,星期一第第4次改进次改进“获取下一个病人获取下一个病人”模块的界面要返回病人号模块的界面要返回病人号和床位号,如果使和床位号,如果使“读取数据读取数据”模块包括从模块包括从病人号查床位号的功能,则病人号查床位号的功能,则“获取下一个病人获取下一个病人”模块的接口可以简化模块的接口可以简化第59页,共137页,编辑于2022年,星期一第第4次改进结果次改进结果采集数据采集数据获取获取下一个病人下一个病人P
45、NPNEOFEOFFSFSEFEFPNPNBNBNFSFS读取数据读取数据检查检查不合理因素不合理因素从从PNPN查查BNBNEOFEOFPNPN通报通报设备故障设备故障FS2FS2BNBN第60页,共137页,编辑于2022年,星期一第第5次改进次改进通过床号读取数据,功能很明确,但目前包含通过床号读取数据,功能很明确,但目前包含在在“读取数据读取数据”模块中,这部分程序代码如果模块中,这部分程序代码如果抽取出来单独成为一个模块更好,名字为抽取出来单独成为一个模块更好,名字为“从从床号读数据床号读数据”该模块可以成为一个公用模块,很易于重用该模块可以成为一个公用模块,很易于重用第61页,共1
46、37页,编辑于2022年,星期一第第5次改进结果次改进结果采集数据采集数据获取下一个病人获取下一个病人PNPNEOFEOFFSFSEFEFPNPNBNBNFSFSEOFEOFPNPNFS2FS2BNBN从从PNPN查查BNBN从床号读数据从床号读数据通报设备故障通报设备故障检查不合理因素检查不合理因素BNBN采集病人数据采集病人数据第62页,共137页,编辑于2022年,星期一第第6次改进次改进“从床号读数据从床号读数据”应该是功能单一,调用应该是功能单一,调用“通报设备故障通报设备故障”不应属于该模块内容。不应属于该模块内容。将将“通报设备故障通报设备故障”改为上层模块调用,使改为上层模块调
47、用,使“从床号读数据从床号读数据”模块功能更明确,公用性也更模块功能更明确,公用性也更好好第63页,共137页,编辑于2022年,星期一第第6次改进结果次改进结果病人监护病人监护采集数据采集数据报告不安全因素报告不安全因素写数据库写数据库判定判定下一个病人下一个病人PNPN,FSFSEOFEOF,EFEFPNPNEOFEOFFSFSEFEFUSFUSFPNPNEFEFSRSREFEFFSFSPNPNFS,SRFS,SR采集采集病人数据病人数据检查检查安全范围安全范围判定病人是否判定病人是否安全安全通报通报不安全因素不安全因素EFEFPNPNPNPN,FSFS从从PNPN查查BNBN从床号从床号
48、读数据读数据通报通报设备故障设备故障检查不合理因素检查不合理因素BNBNBNBNEFEFFSFSBNBNFSFSFS2FS2PN,FSPN,FS第64页,共137页,编辑于2022年,星期一第第7次改进次改进给护士站或维修站的通报消息可能采用了同一给护士站或维修站的通报消息可能采用了同一种方式或界面,因此可能会有公用的模块,比种方式或界面,因此可能会有公用的模块,比如如“写一行写一行”(或者(或者“发出警报发出警报”之类)之类)因此再抽出一个模块因此再抽出一个模块“写一行写一行”,供两个模块,供两个模块调用。调用。第65页,共137页,编辑于2022年,星期一第第7次改进结果次改进结果病人监护
49、病人监护采集数据采集数据报告不安全因素报告不安全因素写数据库写数据库判定判定下一个病人下一个病人PNPN,FSFSEOFEOF,EFEFPNPNEOFEOFFSFSEFEFUSFUSFPNPNEFEFSRSREFEFFSFSPNPNFSFSFS,SRFS,SR采集采集病人数据病人数据检查安全检查安全范围范围判定病人是判定病人是否安全否安全通报通报不安全因素不安全因素EFEFPNPNPNPN,FSFS从从PNPN查查BNBN从床号从床号读数据读数据通报通报设备故障设备故障产生一行产生一行写一行写一行检查不合理因素检查不合理因素BNBNBNBNEFEFEFEFFSFSBNBNFSFSFS2FS2P
50、N,FSPN,FS一行一行一行一行一行一行第66页,共137页,编辑于2022年,星期一结构图优化方法结构图优化方法减少模块间的联系,减少参数传递,特别是控减少模块间的联系,减少参数传递,特别是控制信息的传递制信息的传递消除重复功能消除重复功能消除消除“管道管道”模块模块考虑变化考虑变化控制模块大小控制模块大小整体考虑整体考虑参照系统分析说明书参照系统分析说明书第67页,共137页,编辑于2022年,星期一7.2.8 对已有程序进行重构对已有程序进行重构重构(重构(Refactoring):在不改变程序代码功):在不改变程序代码功能的前提下,对程序结构所进行的改造能的前提下,对程序结构所进行的