首页 模块结构图PPT课件

模块结构图PPT课件

举报
开通vip

模块结构图PPT课件第7章结构化系统设计.本章主要内容系统设计的任务总体设计结构化设计的概念、基本原则从数据流图导出结构图详细设计代码设计输出设计输入设计人机对话设计模块详细设计数据库设计、网络设计系统设计说明书.7.2.1模块的概念模块(Module)一词使用很广泛。通常对应于用一个名字就可以调用的一段程序语句(子程序或函数)模块具有输入和输出、逻辑功能、运行程序、内部数据四种属性。计算年龄模块的图形表示方法模块的函数接口表示intcomputeAge(datebirthday).7.2.2模块结构图结构图(StructuredCh...

模块结构图PPT课件
第7章结构化系统设计.本章主要内容系统设计的任务总体设计结构化设计的概念、基本原则从数据流图导出结构图详细设计代码设计输出设计输入设计人机对话设计模块详细设计数据库设计、网络设计系统设计说明书.7.2.1模块的概念模块(Module)一词使用很广泛。通常对应于用一个名字就可以调用的一段程序语句(子程序或函数)模块具有输入和输出、逻辑功能、运行程序、内部数据四种属性。计算年龄模块的图形表示方法模块的函数接口表示intcomputeAge(datebirthday).7.2.2模块结构图结构图(StructuredChart)描述系统的模块结构及模块间的联系结构图中的主要成分有:模块:用长方形表示调用:从一个模块指向另一模块的箭头表示前一个模块调用后一个模块。有循环调用和条件调用数据:用带圆圈的小箭头表示从一个模块传递给另一模块的数据(有实义)控制信息:带涂黑圆圈的小箭头表示一个模块传送给另一模块的控制信息.主调模块被调模块被调模块主调模块被调模块被调模块循环调用条件调用1、结构图无严格的模块调用顺序,但一般习惯从左至右2、因为约定遵从从上向下的调用,调用关系也可以不使用箭头,而直接使用直线3、模块间传递的信息如果出现在数据字典中,则视为数据,否则为控制信息结构图的画法.一个完整的结构图.简单的模块结构图凭证管理模块的下层模块:凭证输入、凭证审核、凭证查询打印、凭证汇总、记账.模块设计的度量 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 为了衡量模块的相对独立性,提出了模块间的耦合(Coupling)与模块的内聚(Cohesion)两个标准耦合:模块和模块之间的联系程度内聚:模块内部各元素之间的联系程度设计目标:模块内的联系越紧越好模块间的联系越少越好为什么?.7.2.3模块的耦合doubleCalculateAvg(){intn;doubletotal,average,value;scanf(“输入个数:\n”,&n);total=sum(n);average=total/n;return(average);}两个模块之间存在联系.影响耦合度的因素如果使用模块A需要了解模块B,那么A和B是耦合的。影响模块间耦合程度有三方面的因素:联系方式--模块间通过什么方式联系来往信息的作用--模块间来往信息作什么用数量--模块间来往信息的多少。混合控制数据用过程直接引用语句调用少多数量方式作用0离坐标原点越远,耦合程度越高.模块联系方式直接引用:一个模块直接存取另一个模块的某些信息,例如全程变量、FORTRAN的common量、C语言的extern量、共享的通信区等。也称为公共环境耦合(commonenvironmentcoupling)降低这种耦合程度的办法是使数据局部化,即使用局部变量过程语句调用:一个模块调用另一个模块,所有数据来往都以参数或返回值方式传递并使用.来往信息的作用模块间的来往信息可以作数据用,也可以作控制信息用A取平均成绩或最高成绩平均/最高B(a)控制耦合成绩取最高成绩取平均成绩A平均成绩最高成绩(b)数据耦合.来往信息的数量模块间传递的信息量越大,它们之间的耦合程度越高。一个模块最好只了解它确实需要使用的数据,而完全不知道其他数据的存在(独立性好).耦合的类型根据以上因素,对耦合分类如下:数据耦合:采用子程序调用,调用模块将需要进行处理的数据传递给被调模块。数据耦合是不可避免的。标记耦合:如果调用模块将整个数据 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 传递给被调模块,而被调模块只使用了部分数据项,则称为标记耦合或特征耦合。控制耦合:一个模块将控制信息传递给另一个模块,以控制被调模块的内部处理逻辑。(可以分解)公共环境耦合:如果两个模块共享同一全局数据,称为公共耦合。内容耦合:两个模块之间的内部属性有直接关联,也称病态耦合。(某些GOTO语句).减低耦合的设计原则结构化设计要求模块间的耦合程度尽可能小。为此应:用过程语句调用其它模块模块间的参数作数据用模块间的参数尽可能少.7.2.4模块的内聚doubleCalculateAvg(){intn;doubletotal,average,value;scanf(“inputvalue:”,&value);whilevalue<=0.0{n=n+1;total=total+value;scanf(“\ninputvalue:”,&value);}average=total/n;return(average);}模块内部各元素(变量、语句)之间存在联系.内聚的好处模块的内聚反映模块内部联系的紧密程度。一个模块只需要做好一件事情,不要过分关心其它任务。高内聚性的好处是可以提高程序的可靠性。有一个调查表明,50%的强内聚性子程序是没有错误的,而只有18%的弱内聚性子程序才是无错的,弱内聚性子程序的出错机会要比强内聚性出错机会高6倍,而修正成本则要高19倍。摘自《代码大全》.内聚的类型模块的内聚可以分以下七类:1、偶然内聚(coincidentalcohesion)2、逻辑内聚(Logicalcohesion)3、时间内聚(temporalcohesion)4、步骤内聚(proceduralcohesion)5、通信内聚(communicationalcohesion)6、顺序内聚(Sequentialcohesion)7、功能内聚(functional_cohesion).当同一个子程序中的操作之间无任何联系时,为偶然内聚性,也叫作“无内聚性”。比如只是为了将程序中某几处凑巧相同的一些语句组合起来形成的一个模块:PQRS1、偶然内聚B=A;read(Cardfile);D=C;T.将几个逻辑上相似的功能放在一个模块中比如常见的出错处理模块,工作模块发现错误后,调用错误处理模块,将错误号作为控制参数传入,然后出错处理模块根据不同的错误号执行相应的操作2、逻辑内聚.将在有限时间单元内处理的成分组合为同一模块比如在程序初始化时所作的处理:m_Medirecno=psPerson.MedirecnotxtMedirecno=psPerson.MedirecnotxtTel=psPerson.TeltxtContact=psPerson.ContacttxtAddr=psPerson.AddrtxtMedirecno.Enabled=False可视化程序设计中在窗口打开时初始化窗口中得控件内容,如列表框的项目、文本框或单选钮的缺省取值还比如:C++的构造函数、析构函数3、时间内聚.4、步骤内聚当子程序中的操作是按某一特定过程结构进行的,就是步骤内聚。例如:用户想按一定的顺序打印告,子程序设计成是用于按顺序打印销售收入、开支、雇员电话表的。步骤内聚在时间内聚的基础上增加了次序的约束.模块划分示例.PREPPLANLOOPSTMRO(主模块)TYPDECID准备好的矩阵指示标记准备好的矩阵指示标记矩阵指示标记部分结果、标签等模块PERP是一个初始化模块,属时间内聚。模块PLANLOOP和TYPDECID都属于步骤内聚。前者的元素用于控制主循环,后者的元素负责主循环的整个判定执行过程绘制划分后的模块图.当模块内的成分引用共同的数据,而不存在其他联系时,称为通信内聚修改库存购货单开发货单库存A、销售模块B、产生留退名单模块期末不及格统计累计不及格统计5、通信内聚.模块中某个成分的输出是另一成分的输入。比如显示期末成绩通知:6、顺序内聚.6、顺序内聚顺序内聚有较强的内聚性是步骤内聚和通信内聚的结合例如:一个模块用于计算高于平均分的人数,步骤是先循环累计总分,然后计算得到平均分,最后循环统计高于平均分的人数有步骤的先后,而且前一个步骤的结果要用于后一步骤的运算中但仍然不是最高的内聚类型.7、功能内聚一个模块包括并且仅仅包括为完成一个具体任务所需要的所有成分,称为功能内聚。功能内聚性是最强也是最好的一种内聚例如:打印职工名单,PrintStaffList()例如:计算平均分,CalculateAvg()仅用一个动宾词组能明确指出这个模块的所有功能。.内聚的评分耦合和内聚的概念是Stevens等人提出的,是测量一个模块化系统好坏的标志。按他们的观点,给上述七种内聚评分如下:功能内聚10分顺序内聚9分通信内聚7分步骤内聚5分时间内聚3分逻辑内聚1分偶然内聚0分可以给一个软件的所有模块打分,最后计算平均分,作为软件结构质量评价的参考.耦合和内聚的关系二者就像连体兄弟,存在紧密相关的关系:模块内的高内聚往往意味着模块间的松耦合反之,低内聚一般会带来紧耦合.7.2.5作用范围与控制范围一个判断的作用范围是所有这样的模块的集合,这些模块内含有依赖于这个判断结果的处理。或称影响范围。一个模块的控制范围是指它本身及其所有下属模块的集合。D计算总工资C计算职工工资B计算临时工工资A计算工资模块A的控制范围是:A、B、C、D假如判断x出现在模块A中,并且仅在A中使用了x,则该判断的作用范围是:A,而B、C、D不受影响.判断的设计原则一个设计原则:对于任何一个判断,其作用范围应该是这个判断所在模块的控制范围的一个子集该原则的目的:消除控制耦合,降低耦合度想象一下,假设某个控制标志在系统的很多部分发挥作用,那么可能会产生这样一种情况:错误发作的位置离产生错误的源头很远,这给程序调试和维护带来极大困难。.(a)TOPXYAB1B2(b)BXYAB1B2TOP(c)XBAB1B2TOP(d)XYAB1B2作用范围和控制范围图示.期末成绩查询.Main(){stuNo=读入学号模块调用成绩查询模块调用显示模块}主模块.成绩查询模块(){调用查期末成绩模块如果有不及格科目则标志1=True调用不及格处理模块}不及格处理模块(){标志2=确定留退模块()如果标志2!=True则调用查补考安排模块}显示结果模块(){调用显示成绩模块如果标志1==True则调用不及格显示模块}显示不及格处理模块(){如果标志2==True则调用留退通知模块否则调用补考通知模块}子模块.学生期末成绩查询读入学号显示成绩查询成绩显示成绩不及格处理确定留退显示补考显示留退改写后的模块图.7.2.6模块的扇入与扇出模块的扇入是指有多少个上级模块调用它。模块的扇出是指模块的直属下层模块的个数,扇出系数不宜过大A的扇出为2ABCB1C1C2C3B的扇出为1C的扇出为3TT的扇入为2.总体设计原则设计功能内聚的模块模块使用过程语句调用其它模块,传递的参数作数据用,并且尽可能少模块内语句数一般为50-100平均扇出系数最好是3-5高层模块高扇出,最低层模块高扇入一个判断的作用范围是判断所在模块的控制范围的子集.7.2.7模块总体设计举例问题描述:病人监护系统中的实时监测模块。该模块使用病床专用设备测量病人的若干生理参数,如体温、脉搏、血压等等。每个病人各种指标的安全范围由医生预先指定。每经过一定的时间间隔,监测模块从监视设备读入这些数据,并存入数据库中。若发现某个指标超出合理范围,则向维修站发出设备故障通知, 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 床号。若发现某个指标越出安全范围,则向护理站发出通知,报告病人号。.分析产生的DFD病历合理数据数据不安全因素读取数据存储数据检查数据通报不安全因素不合理数据可以划分哪些模块呢?.FS2病人监护采集数据检查数据处理数据获取下一个病人PN,FSEOF,EFEOFFSEFUSF,EFUSFFSPNEF,USFPN,FSPN,FS,EFPN,EFPN,FSFSSR读取数据检查不合理范围查询安全范围判定病人是否安全写数据库通报设备故障通报不安全因素EFBNPN,FSEFPN,BN初始结构图PN—病人号;BN—床位号;SR—安全范围;FS—各指标数据;EF—设备故障标志;EOF——标志已查过最后一个病人;FS2—标志指标是否合理;USF—标志指标不安全.第1次改进“处理数据”模块没有实质性的功能,所包含的三个子模块相互之间没有什么关联,内聚程度很低。该模块只是充当了“管道”,改进如下:废除“处理数据”模块;直接由主模块调用“通报设备故障”、“通报不安全因素”和“写数据库”三个模块.病人监护写数据库通报不安全因素通报设备故障检查数据采集数据第1次改进结果.第2次改进通报设备故障时应通报床位号而不应是病人号,因此要传递床位号。床位号BN可由“采集数据”模块传给主模块,再由主模块传递给“通知设备故障”模块。但这样做增加了模块间的联系,改为由“采集数据”模块直接调用.PN,FS病人监护采集数据检查数据通报不安全因素获取下一个病人PN,FSEOF,EFPN,BNEOFFSEFUSFUSFPNFS2PN,EFPN,FSFSSRSR读取数据检查不合理范围查询安全范围判定病人是否安全写数据库通报设备故障EFBNPN,FSEFFS第2次改进结果.第3次改进若由“检查数据”模块直接调用“通报不安全因素”模块,则可减少模块间的联系,即不用传递USF标志(排除控制耦合)。这样的话,“检查数据”的名字改为“报告不安全因素”更为恰当.第3次改进结果病人监护采集数据报告不安全因素写数据库PN,FSEOF,EFEFUSFPNSR,FSEFPN,FS查询安全范围通报不安全因素PN,FS判定病人是否安全.第4次改进“获取下一个病人”模块要返回病人号和床位号,接口比较复杂。如果使“读取数据”模块包括从病人号查床位号的功能,则“获取下一个病人”模块的接口可以简化.第4次改进结果采集数据获取下一个病人PNEOFFSEFPNBNFS读取数据检查不合理因素从PN查BNPN通报设备故障FS2BN.第5次改进通过床号读取数据,功能很明确,但目前包含在“读取数据”模块中,这部分程序代码如果抽取出来单独成为一个模块更好,名字为“从床号读数据”该模块可以成为一个公用模块,很易于重用.第5次改进结果采集数据获取下一个病人PNEOFFSEFPNBNFSEOFPNFS2BN从PN查BN从床号读数据通报设备故障检查不合理因素BN采集病人数据.第6次改进“从床号读数据”应该是功能单一,调用“通报设备故障”不应属于该模块内容。将“通报设备故障”改为上层模块调用,使“从床号读数据”模块功能更明确,公用性也更好.第6次改进结果病人监护采集数据报告不安全因素写数据库判定下一个病人PN,FSEOF,EFPNEOFFSEFUSFPNEFSREFFSPNFS,SR采集病人数据检查安全范围判定病人是否安全通报不安全因素EFPNPN,FS从PN查BN从床号读数据通报设备故障检查不合理因素BNBNEFFSBNFSFS2PN,FS.第7次改进给护士站或维修站的通报消息可能采用了同一种方式或界面,因此可能会有公用的模块,比如“写一行”(或者“发出警报”之类)因此再抽出一个模块“写一行”,供两个模块调用。.第7次改进结果病人监护采集数据报告不安全因素写数据库判定下一个病人PN,FSEOF,EFPNEOFFSEFUSFPNEFSREFFSPNFSFS,SR采集病人数据检查安全范围判定病人是否安全通报不安全因素EFPNPN,FS从PN查BN从床号读数据通报设备故障产生一行写一行检查不合理因素BNBNEFEFFSBNFSFS2PN,FS一行一行一行.结构图优化方法减少模块间的联系,减少参数传递,特别是控制信息的传递消除重复功能消除“管道”模块考虑变化控制模块大小整体考虑参照系统分析说明书.7.2.8对已有程序进行重构重构(Refactoring):在不改变程序代码功能的前提下,对程序结构所进行的改造因为不是总能提前做出最好的设计,或者对遗留系统的维护过程中提高品质而做出的结构变化参见《重构——改善既有代码的设计》.VoidprintOwing(){Enumeratione=_orders.elements();doubleoutstanding=0.0System.out.println(“************************”);System.out.println(“*****CustomerOwes******”);System.out.println(“************************”);While(e.hasMoreElements()){Ordereach=(Order)e.nextElement();outstanding+=each.getAmount();}System.out.println(“name:”+_name)System.out.println(“amoutn:”+outstanding);}模块重构例1.重构后的例1voidprintOwing(){Enumeratione=_orders.elements();doubleoutstanding=0.0printBanner();while(e.hasMoreElements()){Ordereach=(Order)e.nextElement();outstanding+=each.getAmount();}printDetails(outstanding);}或者:voidprintOwing(){printBanner();doubleoutstanding=getOutstanding();printDetails(outstanding);}.模块重构例2voidsetValue(Stringname,intvalue){if(name.equals(“height”)){_height=value;return;}if(name.equals(“width)){_width=value;return;}}为长方形的长和宽设置新值,是一个逻辑内聚的例子.重构后的例2voidsetHeight(intvalue){_height=value;}voidsetWidth(intvalue){_width=value;}.模块重构例3获取某个数并且修改它以作其他用途,比如:voidgetTotalOutstandingAndSetReadyForSummaries()这是一个顺序内聚的模块,重构后:doublegetTatalOutstanding()voidsetReadyForSummaries(doublex).模块设计案例(图书馆)学生设计:图书馆有多种书,每种书有一个图书编号,在架数量随着每次读者借阅而减少当图书在架数量为0时,修改图书状态为“全部借出”,否则为“可借”每个读者仅允许借5本借阅记录需要保存图书编号、读者编号和借出日期还书时删除原来的借阅记录.
本文档为【模块结构图PPT课件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
爱赢
公司经营范围:网络软件设计、制作、图文设计、影视制作(编辑)
格式:ppt
大小:591KB
软件:PowerPoint
页数:0
分类:教育学
上传时间:2021-02-25
浏览量:17