《模块案例及结构化设计》由会员分享,可在线阅读,更多相关《模块案例及结构化设计(50页珍藏版)》请在金锄头文库上搜索。
1、转换,从分析到设计,现实领域的各种需求,计算机领域的具体实现,针对需求,进行计算机信息系统的物理模型设计,主调模块,被调模块,被调模块,主调模块,被调模块,被调模块,循环调用,条件调用,1.结构图无严格的模块调用顺序,但一般习惯从左至右 2.因为约定遵从从上向下的调用,调用关系也可以不使用箭头,而直接使用直线 3.模块间传递的信息如果出现在数据字典中,则视为数据,否则为控制信息,结构图的画法,一个完整的结构图,期末成绩查询,Main() stuNo = 读入学号模块调用成绩查询模块调用显示模块 ,主模块,成绩查询模块() 调用查期末成绩模块如果有不及格科目则标志1=True调用不及格处理模块
2、不及格处理模块() 标志2=确定留退模块()如果标志2 != True 则调用查补考安排模块 ,显示结果模块() 调用显示成绩模块如果标志1=True 则调用不及格显示模块 显示不及格处理模块() 如果标志2=True 则调用留退通知模块否则调用补考通知模块 ,子模块,学生期末成绩查询,读入学号,显示成绩,查询期末成绩,显示期末成绩,显示不及格处理,确定留退,显示补考,显示留退,改写后的模块图,模块总体设计举例,问题描述:病人监护系统中的实时监测模块。 该模块使用病床专用设备测量病人的若干生理参数,如体温、脉搏、血压等等。 每个病人各种指标的安全范围由医生预先指定。 每经过一定的时间间隔,监测
3、模块从监视设备读入这些数据,并存入数据库中。 若发现某个指标超出合理范围,则向维修站发出设备故障通知,报告床号。 若发现某个指标越出安全范围,则向护理站发出通知,报告病人号。,分析产生的DFD,病历,合理数据,数据,不安全因素,读取数据,存储数据,检查数据,通报不 安全因素,不合理数据,FS2,病人监护,采集数据,检查数据,处理数据,获取下一个病人,PN,FS,EOF,EF,EOF,FS,EF,USF,EF,USF,FS,PN,EF,USF,PN,FS,PN,FS,PN,PN,FS,FS SR,读 取 数 据,检查不合理范围,查询安全范围,判定病人是否安全,写 数 据 库,通报设备故障,通报不
4、安全因素,EF,BN,PN,FS,EF,PN,BN,初始结构图,PN病人号;BN床位号;SR安全范围;FS各指标数据; EF设备故障标志; EOF标志已查过最后一个病人; FS2标志指标是否合理; USF标志指标不安全,EF,EF,第1次改进,“处理数据”模块没有实质性的功能,所包含的三个子模块相互之间没有什么关联,内聚程度很低。 该模块只是充当了“管道”,改进如下: 废除“处理数据”模块; 直接由主模块调用“通报设备故障”、“通报不安全因素”和“写数据库”三个模块,病人监护,写数据库,通报不安全因素,通报 设备故障,检查数据,采集数据,第1次改进结果,第2次改进,通报设备故障时应通报床位号而
5、不应是病人号,因此要传递床位号。 床位号BN可由“采集数据”模块传给主模块,再由主模块传递给“通知设备故障”模块。但这样做增加了模块间的联系,改为由“采集数据”的下属模块“读取数据”直接调用 “检查不合理范围”的结果也是设备是否有故障的标志,也应该通知维修站,所以也改由“采集数据”模块的下属模块“读取数据”直接调用,PN, FS,病人监护,采集数据,检查数据,通报 不安全因素,获取 下一个病人,PN,FS,EOF,EF,PN,BN,EOF,FS,EF,USF,USF,PN,FS2,BN,PN,FS,FS SR,SR,读取数据,检查 不合理范围,查询安全范围,判定病人是否安全,写数据库,通报 设
6、备故障,EF,BN,PN,FS,EF,FS,第2次改进结果,EF,第3次改进,若由“检查数据”模块直接调用“通报不安全因素”模块,则可减少模块间的联系,即不用传递USF标志(排除控制耦合)。 这样的话,“检查数据”的名字改为“报告不安全因素”更为恰当,第3次改进结果,病人监护,采集数据,报告不安全因素,写数据库,PN,FS,EOF,EF,EF,USF,PN,SR,FS,EF,PN,FS,查询安全范围,通报不安全因素,PN,FS,判定病人是否安全,第4次改进,“获取下一个病人”模块的界面要返回病人号和床位号,如果使“ 读取数据”模块包括从病人号查床位号的功能,则“获取下一个病人”模块的接口可以简
7、化,第4次改进结果,采集数据,获取 下一个病人,PN,EOF,FS,EF,PN,BN,FS,读取数据,检查 不合理因素,从PN 查BN,EOF,PN,通报 设备故障,FS2,BN,第5次改进,通过床号读取数据,经过第4次改进后,已经是通过病人号读数据了,为了明确功能,模块名称应改为“采集病人数据”但是通过床号读取数据模块对于维修人员可能会反复使用,因此应该保留,作为一个公用模块,易于重用,第5次改进结果,采集数据,获取下一个病人,PN,EOF,FS,EF,PN,BN,FS,EOF,PN,FS2,BN,从PN查BN,从床号读数据,通报设备故障,检查不合理因素,BN,采集病人数据,EF,第6次改进
8、,“ 从床号读数据”应该是功能单一,调用“通报设备故障”不应属于该模块内容。否则维修期间可能会反复报警,干扰维修站。 将“通报设备故障”改为上层模块调用,使“从床号读数据”模块功能更明确,公用性也更好,第6次改进结果,病人监护,采集数据,报告不安全因素,写数据库,判定 下一个病人,PN,FS,EOF,EF,PN,EOF,FS,EF,USF,PN,EF,SR,EF,FS,PN,FS,SR,采集 病人数据,检查 安全范围,判定病人是否安全,通报 不安全因素,EF,PN,PN,FS,从PN查BN,从床号 读数据,通报 设备故障,检查不合理因素,BN,BN,EF,FS,BN,FS,FS2,PN,FS,
9、EF,第7次改进,给护士站或维修站的通报消息可能采用了同一种方式或界面,因此可能会有公用的模块,比如“写一行”(或者“发出警报”之类)因此再抽出一个模块“写一行”,供两个模块调用。,第7次改进结果,病人监护,采集数据,报告不安全因素,写数据库,判定 下一个病人,PN,FS,EOF,EF,PN,EOF,FS,EF,USF,PN,EF,SR,EF,FS,PN,FS,FS,SR,采集 病人数据,检查安全范围,判定病人是否安全,通报 不安全因素,EF,PN,PN,FS,从PN查BN,从床号 读数据,通报 设备故障,产生一行,写一行,检查不合理因素,BN,BN,EF,EF,FS,BN,FS,FS2,PN
10、,FS,一行,一行,一行,模块结构图例子,某公司销售采购处理系统的数据处理子系统(简称GETSOL)的处理过程是:公司营业部对每天的顾客订货单形成一个订货单文件,它记录了订货项目的数量、货号、型号等详细数据。然后在这个文件的基础上对顾客的订货情况进行分类统计、汇总等项处理操作,我们可设计该子系统的层次化模型结构图如下:,层次化模块结构图举例,ORD订货单;ITM订货项目;LIT订货表;NLT修改后的订货表; SOL订货汇总表; EOF文件接输标志; MATCH匹配,结构图优化方法,减少模块间的联系,减少参数传递,特别是控制信息的传递 消除重复功能 消除“管道”模块 考虑变化 控制模块大小 整体
11、考虑 参照系统分析说明书,从数据流图导出结构图,转换,设计模型 (物理模型),转换存在鸿沟,数据流图着眼于现实世界,结构图着眼于计算机世界。 数据流图反映数据流,反映系统的逻辑功能,即系统能够“做什么”; 结构图反映程序控制层次,反映系统的物理模型,即怎样逐步实现系统的总功能。 简单地说:数据流图描述线性的工作流程,结构图描述工作的分配(谁负责做什么),对线性结构的DFD作分析,步骤: 划分数据流图的输入、主加工和逻辑输出 设计顶层模块:系统的主加工,反映整个系统功能 套用固定格式生成第1、2层模块结构图 对第2层模块进一步分解,构造完整的模块结构图,第1步 划分输入、加工、输出,原始数据,机
12、内数据,正确数据,解,格式化解,输出解,逻辑输出,逻辑输入,(物理输入),(物理输出),第2步 构造第1、2层模块,正确数据,求解 编辑数据,计算,获得正确数据,输出解,编排格式,打印解,编辑数据,读入数据,正确数据,原始数据,机内数据,解,格式化解,解,正确数据,格式化解,解,第3步 继续分解,更细粒度的模块分解,如:,计算,中间结果,数据,计算A,计算B,最终解,数据流图的层次和结构图的层次存在一定的对应关系,但不是机械照搬。,32,. .,.,P1.4,转换实例,以讨论过的工资计算系统数据流图为例来介绍变换分析建立软件结构的主要步骤。(1)划分边界,区分系统的输入、变换中心和输出部分。(
13、虚线将输入、变换中心和输出部分分开),输出,输入,转换实例(续),(2)完成第一级分解,设计系统的上层模块。 (工资计算系统的一级分解结果如下图),P1(部分),P1(部分),P2、P3,转换实例(续),(3) 开始第二级分解,由于P1处理过程有一部分对应“取得基本数据”模块、还有一部分对应着“计算工资”模块,所以不要局限于P1的第2层数据流程图,我们不妨将最底层的数据流程图拼在一起,从而确定P1中哪些是输入、哪些是变换处理。(虚线将输入、变换中心和输出部分分开),转换实例(续),转换实例(续),(4) 完成第二级分解,设计输入、变换中心和输出部分的中、下层模块(图中省略了模块调用传递的信息)
14、,事务分析,对并行结构的DFD进行分析,如:根据输入数据判断业务类型,不同业务的具体处理过程有区别。,Q内容,B结果,C结果,B数据,A结果,清单,原始输入,A数据,P内容,C数据,R内容,决定 事务类型,打印 更新内容,事务A,事务B,事务C,更新P,更新Q,更新R,事务分析结果,业务处理,分配处理,分析类型,判别业务,输入数据,处理事务C,处理事务A,处理事务B,事务A,更新P,事务B,更新Q,事务C,更新R,打印清单,事务分析结果,上图存在控制耦合,消除后:,业务处理,分配处理,输入数据,判别业务,处理事务C,处理事务A,处理事务B,事务A,更新P,事务B,更新Q,事务C,更新R,打印清单,混合结构分析,一个大型系统中常常是变换型和事务型的混合结构。为了导出它们的初始结构图,也必须同时采用变换分析和事务分析两种方法。一般情况,结构化设计的基本思路是,以变换分析为主,事务型为辅,导出初始设计.,输入,变换,输出,混合结构分析结果,xx系统,得到D,变换,得到C,D,B,C,D,K,G,G,D,E,L,K,A,J,F,B1,C,D,得到B,