1、转换转换从分析到设计从分析到设计现实领域的各种需求现实领域的各种需求计算机领域的具体实现计算机领域的具体实现针对需求,进针对需求,进行计算机信息行计算机信息系统的物理模系统的物理模型设计型设计主调模块主调模块被调模块被调模块被调模块被调模块主调模块主调模块被调模块被调模块被调模块被调模块循环调用条件调用1.1.结构图无严格的模块调用顺序,但一般习惯从左至右结构图无严格的模块调用顺序,但一般习惯从左至右2.2.因为约定遵从从上向下的调用,调用关系也可以不使因为约定遵从从上向下的调用,调用关系也可以不使用箭头,而直接使用直线用箭头,而直接使用直线3.3.模块间传递的信息如果出现在数据字典中,则视为
2、数模块间传递的信息如果出现在数据字典中,则视为数据,否则为控制信息据,否则为控制信息结构图的画法结构图的画法计算计算获得有效数据获得有效数据生成报表生成报表打印报表打印报表获得编辑数据获得编辑数据核对数据核对数据打印表头打印表头打印表尾打印表尾读入数据读入数据编辑数据编辑数据显示无效显示无效数据数据打印一行打印一行有效数据有效数据EOFEOF编辑数据编辑数据EOFEOF有效数据有效数据编辑数据编辑数据有效数据有效数据结果结果编辑数据编辑数据数据数据数据数据EOFEOFEOFEOF结果结果日期日期行行行行行行总总计计一个完整的结构图一个完整的结构图期末成绩查询期末成绩查询Main()() stu
3、No = 读入学号模块读入学号模块 调用成绩调用成绩查询模块查询模块 调用调用显示模块显示模块主模块主模块成绩查询模块成绩查询模块()() 调用调用查期末成绩模块查期末成绩模块 如果有不及格科目则如果有不及格科目则标志标志1=True调用调用不及格处理模块不及格处理模块不及格处理模块不及格处理模块()() 标志标志2=确定留退模块确定留退模块()() 如果标志如果标志2 != True 则则调用调用查补考安排模块查补考安排模块显示结果模块显示结果模块()() 调用调用显示成绩模块显示成绩模块 如果标志如果标志1=True 则则 调用调用不及格显示模块不及格显示模块显示不及格处理模块显示不及格处
4、理模块()() 如果标志如果标志2=True 则则 调用调用留退通知模块留退通知模块 否则否则调用调用补考通知模块补考通知模块子模块子模块学生期末成绩查询学生期末成绩查询读入学号读入学号显示成绩显示成绩查询期末成绩查询期末成绩 显示期末成绩显示期末成绩 显示不及格处理显示不及格处理确定留退确定留退显示补考显示补考显示留退显示留退改写后的模块图改写后的模块图模块总体设计举例模块总体设计举例问题描述:问题描述:病人监护系统中的实时监测模块。病人监护系统中的实时监测模块。 该模块使用病床专用设备测量病人的若干生理该模块使用病床专用设备测量病人的若干生理参数,如体温、脉搏、血压等等。参数,如体温、脉搏
5、、血压等等。 每个病人各种指标的安全范围由医生预先指定。每个病人各种指标的安全范围由医生预先指定。 每经过一定的时间间隔,监测模块从监视设备每经过一定的时间间隔,监测模块从监视设备读入这些数据,并存入数据库中。读入这些数据,并存入数据库中。 若发现某个指标超出合理范围,则向维修站发若发现某个指标超出合理范围,则向维修站发出设备故障通知,报告床号。出设备故障通知,报告床号。 若发现某个指标越出安全范围,则向护理站发若发现某个指标越出安全范围,则向护理站发出通知,报告病人号。出通知,报告病人号。分析产生的分析产生的DFD病人病人护护理理站站病历病历合理合理数据数据数据数据不安不安全因全因素素读取读
6、取数据数据存储存储数据数据检查检查数据数据通报通报不不安全安全因素因素维维修修站站不合理不合理数据数据FS2病人监护病人监护采集数据采集数据检查数据检查数据处理数据处理数据获获取取下下一一个个病病人人PN,FSEOF,EFEOFFSEFUSF,EFUSFFSPNEF,USFPN,FSPN,FSPNPN,FSFSFSSRSR读读取取数数据据检检查查不不合合理理范范围围查查询询安安全全范范围围判判定定病病人人是是否否安安全全写写数数据据库库通通报报设设备备故故障障通通报报不不安安全全因因素素EFBNPN,FSEFPN,BN初始结构图初始结构图PNPN病人号;病人号;BNBN床位号;床位号;SRSR
7、安安全范围;全范围;FSFS各指标数据;各指标数据; EFEF设设备故障标志;备故障标志; EOFEOF标志已查过标志已查过最后一个病人;最后一个病人;FS2FS2标志指标是标志指标是否合理;否合理; USFUSF标志指标不安全标志指标不安全 EFEF第第1次改进次改进“处理数据处理数据”模块没有实质性的功能,所包模块没有实质性的功能,所包含的三个子模块相互之间没有什么关联,含的三个子模块相互之间没有什么关联,内聚程度很低。内聚程度很低。该模块只是充当了该模块只是充当了“管道管道”,改进如下:,改进如下: 废除废除“处理数据处理数据”模块;模块; 直接由主模块调用直接由主模块调用“通报设备故障
8、通报设备故障”、“通报通报不安全因素不安全因素”和和“写数据库写数据库”三个模块三个模块病人监护病人监护写数据库写数据库通报不安通报不安全因素全因素通报通报设备故障设备故障检查数据检查数据采集数据采集数据第第1次改进结果次改进结果第第2次改进次改进通报设备故障时应通报床位号而不应是病人号,通报设备故障时应通报床位号而不应是病人号,因此要传递床位号。因此要传递床位号。床位号床位号BN可由可由“采集数据采集数据”模块传给主模块,再模块传给主模块,再由主模块传递给由主模块传递给“通知设备故障通知设备故障”模块。但这样模块。但这样做增加了模块间的联系,改为由做增加了模块间的联系,改为由“采集数据采集数
9、据”的的下属模块下属模块“读取数据读取数据”直接调用直接调用“检查不合理范围检查不合理范围”的结果也是设备是否有故障的结果也是设备是否有故障的标志,也应该通知维修站,所以也改由的标志,也应该通知维修站,所以也改由“采集采集数据数据”模块的下属模块模块的下属模块“读取数据读取数据”直接调用直接调用PNPN,FSFS病人监护病人监护采集数据采集数据检查数据检查数据通报通报不安全因素不安全因素获取获取下一个病人下一个病人PNPN,FSFSEOFEOF,EFEFPNPN,BNBNEOFEOFFSFSEFEFUSFUSFUSFUSFPNPNFS2FS2BNBNPNPN,FSFSFSFSSRSRSRSR读
10、取数据读取数据检查检查不合理范围不合理范围查询安全查询安全范围范围判定病人是判定病人是否安全否安全写数据库写数据库通报通报设备故障设备故障EFEFBNBNPNPN,FSFSEFEFFSFS第第2次改进结果次改进结果EF第第3次改进次改进若由若由“检查数据检查数据”模块直接调用模块直接调用“通报不通报不安全因素安全因素”模块,则可减少模块间的联系,模块,则可减少模块间的联系,即不用传递即不用传递USF标志(排除控制耦合)。标志(排除控制耦合)。这样的话,这样的话,“检查数据检查数据”的名字改为的名字改为“报报告不安全因素告不安全因素”更为恰当更为恰当第第3次改进结果次改进结果病人监护病人监护采集
11、数据采集数据报告不安全因素报告不安全因素写数据库写数据库PNPN,FSFSEOFEOF,EFEFEFEFUSFUSFPNPNSRSR,FSFSEFEFPNPN,FSFS查询安全范围查询安全范围通报不安全因素通报不安全因素PNPN,FSFS判定病人是否安全判定病人是否安全第第4次改进次改进“获取下一个病人获取下一个病人”模块的界面要返回病人模块的界面要返回病人号和床位号,如果使号和床位号,如果使“ 读取数据读取数据”模块包模块包括从病人号查床位号的功能,则括从病人号查床位号的功能,则“获取下获取下一个病人一个病人”模块的接口可以简化模块的接口可以简化第第4次改进结果次改进结果采集数据采集数据获取
12、获取下一个病人下一个病人PNPNEOFEOFFSFSEFEFPNPNBNBNFSFS读取数据读取数据检查检查不合理因素不合理因素从从PNPN查查BNBNEOFEOFPNPN通报通报设备故障设备故障FS2FS2BNBN第第5次改进次改进通过床号读取数据,经过第通过床号读取数据,经过第4次改进后,已次改进后,已经是通过病人号读数据了,为了明确功能,经是通过病人号读数据了,为了明确功能,模块名称应改为模块名称应改为“采集病人数据采集病人数据”但是通过床号读取数据模块对于维修人员但是通过床号读取数据模块对于维修人员可能会反复使用,因此应该保留,作为一可能会反复使用,因此应该保留,作为一个公用模块,易于
13、重用个公用模块,易于重用第第5次改进结果次改进结果采集数据采集数据获取下一个病人获取下一个病人PNPNEOFEOFFSFSEFEFPNPNBNBNFSFSEOFEOFPNPNFS2FS2BNBN从从PNPN查查BNBN从床号读数据从床号读数据通报设备故障通报设备故障检查不合理因素检查不合理因素BNBN采集病人数据采集病人数据EFEF第第6次改进次改进“ 从床号读数据从床号读数据”应该是功能单一,调用应该是功能单一,调用“通报设备故障通报设备故障”不应属于该模块内容。不应属于该模块内容。否则维修期间可能会反复报警,干扰维修否则维修期间可能会反复报警,干扰维修站。站。将将“通报设备故障通报设备故障
14、”改为上层模块调用,改为上层模块调用,使使“从床号读数据从床号读数据”模块功能更明确,公模块功能更明确,公用性也更好用性也更好第第6次改进结果次改进结果病人监护病人监护采集数据采集数据报告不安全因素报告不安全因素写数据库写数据库判定判定下一个病人下一个病人PNPN,FSFSEOFEOF,EFEFPNPNEOFEOFFSFSEFEFUSFUSFPNPNEFEFSRSREFEFFSFSPNPNFS,SRFS,SR采集采集病人数据病人数据检查检查安全范围安全范围判定病人是判定病人是否安全否安全通报通报不安全因素不安全因素EFEFPNPNPNPN,FSFS从从PNPN查查BNBN从床号从床号读数据读数
15、据通报通报设备故障设备故障检查不合理因素检查不合理因素BNBNBNBNEFEFFSFSBNBNFSFSFS2FS2PN,FSPN,FSEFEF第第7次改进次改进给护士站或维修站的通报消息可能采用了同给护士站或维修站的通报消息可能采用了同一种方式或界面,因此可能会有公用的模块,一种方式或界面,因此可能会有公用的模块,比如比如“写一行写一行”(或者(或者“发出警报发出警报”之类)之类)因此再抽出一个模块因此再抽出一个模块“写一行写一行”,供两个模,供两个模块调用。块调用。第第7次改进结果次改进结果病人监护病人监护采集数据采集数据报告不安全因素报告不安全因素写数据库写数据库判定判定下一个病人下一个病
16、人PNPN,FSFSEOFEOF,EFEFPNPNEOFEOFFSFSEFEFUSFUSFPNPNEFEFSRSREFEFFSFSPNPNFSFSFS,SRFS,SR采集采集病人数据病人数据检查安检查安全范围全范围判定病人是判定病人是否安全否安全通报通报不安全因素不安全因素EFEFPNPNPNPN,FSFS从从PNPN查查BNBN从床号从床号读数据读数据通报通报设备故障设备故障产生一行产生一行写一行写一行检查不合理因素检查不合理因素BNBNBNBNEFEFEFEFFSFSBNBNFSFSFS2FS2PN,FSPN,FS一行一行一行一行一行一行模块结构图例子模块结构图例子某公司销售采购处理系统的
17、数据处理子系统(简某公司销售采购处理系统的数据处理子系统(简称称GETSOL)的处理过程是:公司营业部对每天)的处理过程是:公司营业部对每天的顾客订货单形成一个订货单文件,它记录了订的顾客订货单形成一个订货单文件,它记录了订货项目的数量、货号、型号等详细数据。然后在货项目的数量、货号、型号等详细数据。然后在这个文件的基础上对顾客的订货情况进行分类统这个文件的基础上对顾客的订货情况进行分类统计、汇总等项处理操作,我们可设计该子系统的计、汇总等项处理操作,我们可设计该子系统的层次化模型结构图如下:层次化模型结构图如下: 层次化模块结构图举例层次化模块结构图举例 ORD订货单;订货单;ITM订货项目
18、;订货项目;LIT订货表;订货表;NLT修改后的订货表;修改后的订货表;SOL订货汇总表;订货汇总表; EOF文件接输标志;文件接输标志; MATCH匹配匹配结构图优化方法结构图优化方法减少模块间的联系,减少参数传递,特别减少模块间的联系,减少参数传递,特别是控制信息的传递是控制信息的传递消除重复功能消除重复功能消除消除“管道管道”模块模块考虑变化考虑变化控制模块大小控制模块大小整体考虑整体考虑参照系统分析说明书参照系统分析说明书从数据流图导出结构图从数据流图导出结构图分析模型分析模型(逻辑模型)(逻辑模型)转换存在鸿沟转换存在鸿沟数据流图着眼于现实世界,结构图着眼于数据流图着眼于现实世界,结
19、构图着眼于计算机世界。计算机世界。 数据流图反映数据流,反映系统的逻辑功能,数据流图反映数据流,反映系统的逻辑功能,即系统能够即系统能够“做什么做什么”; 结构图反映程序控制层次,反映系统的物理模结构图反映程序控制层次,反映系统的物理模型,即怎样逐步实现系统的总功能。型,即怎样逐步实现系统的总功能。简单地说:数据流图描述线性的工作流程,简单地说:数据流图描述线性的工作流程,结构图描述工作的分配(谁负责做什么)结构图描述工作的分配(谁负责做什么)对线性结构的对线性结构的DFD作分析,步骤:作分析,步骤:1.1.划分数据流图的输入、主加工和逻辑输出划分数据流图的输入、主加工和逻辑输出2.2.设计顶
20、层模块:系统的主加工,反映整个设计顶层模块:系统的主加工,反映整个系统功能系统功能3.3.套用固定格式生成第套用固定格式生成第1 1、2 2层模块结构图层模块结构图4.4.对第对第2 2层模块进一步分解,构造完整的模层模块进一步分解,构造完整的模块结构图块结构图第第1步步 划分输入、加工、输出划分输入、加工、输出原始数据原始数据机内数机内数据据正确数正确数据据解解格式化格式化解解输出解输出解逻辑输出逻辑输出逻辑输入逻辑输入( (物理输入物理输入) )( (物理输出物理输出) )P1P1读读入入数数据据P2P2编编辑辑数数据据P3P3求求解解P4P4编编辑辑格格式式P5P5打打印印输输出出第第2
21、步步 构造第构造第1、2层模块层模块正确数据正确数据求解求解编辑数据编辑数据计算计算获得正确数据获得正确数据输出解输出解编排格式编排格式打印解打印解编辑数据编辑数据读入数据读入数据正确数据正确数据原始数据原始数据机内数据机内数据解解格式化解格式化解解解正确正确数据数据格式化解格式化解解解第第3步步 继续分解继续分解更细粒度的模块分解,如:计算计算中间结果中间结果数据数据计算计算A A计算计算B B最终解最终解数据流图的层次和结构图的层次存在一定数据流图的层次和结构图的层次存在一定的对应关系,但不是机械照搬。的对应关系,但不是机械照搬。3232. . . . . .P1.4转换实例转换实例l以讨
22、论过的工资计算系统数据流图为例来介绍变以讨论过的工资计算系统数据流图为例来介绍变换分析建立软件结构的主要步骤。换分析建立软件结构的主要步骤。 (1)(1)划分边界,区分系统的输入、变换中心和输出划分边界,区分系统的输入、变换中心和输出部分。(虚线将输入、变换中心和输出部分分开部分。(虚线将输入、变换中心和输出部分分开) 输出输出输入输入转换实例(续)转换实例(续)(2)完成第一级分解,设计系统的上层模块。(工资计算系统的一级分解结果如下图) P1(部分)(部分)P1(部分)(部分)P2、P3转换实例(续)转换实例(续)(3) (3) 开始第二级分解,由于开始第二级分解,由于P1P1处理过程有一
23、处理过程有一部分对应部分对应“取得基本数据取得基本数据”模块、还有一模块、还有一部分对应着部分对应着“计算工资计算工资”模块,所以不要模块,所以不要局限于局限于P1P1的第的第2 2层数据流程图,我们不妨将层数据流程图,我们不妨将最底层的数据流程图拼在一起,从而确定最底层的数据流程图拼在一起,从而确定P1P1中哪些是输入、哪些是变换处理。中哪些是输入、哪些是变换处理。(虚(虚线将输入、变换中心和输出部分分开线将输入、变换中心和输出部分分开)转换实例(续)转换实例(续)转换实例(续)转换实例(续) (4) 完成第二级分解,设计输入、变换中心和输出部分的中、下层模块(图中省略了模块调用传递的信息)
24、订 单 登 记 窗 体验 证 顾 客身 份挑 选 饭 菜窗 体计 算 订 单费 用检 查 顾 客信 用记 录 订 单处 理 订 单交 易 窗 体产 生 确 认信 息 窗 体数 据 库管 理 系 统顾 客 ID验 证 结 果饭 菜 信 息订 购 数 量在 线 信 用验 证消 费 额订 单 细 节在 线 交 易服 务订 单 细 节付 款 信 息事务分析事务分析对并行结构的对并行结构的DFD进行分析,如:根据输入数据进行分析,如:根据输入数据判断业务类型,不同业务的具体处理过程有区别。判断业务类型,不同业务的具体处理过程有区别。Q Q内容内容B B结果结果C C结果结果B B数据数据A A结果结果清
25、单清单原始输入原始输入A A数据数据P P内容内容C C数据数据R R内容内容决定决定事务类事务类型型打印打印更新内更新内容容事务事务A A事务事务B B事务事务C C更新更新P P更新更新Q Q更新更新R R事务分析结果事务分析结果业务处理业务处理分配处理分配处理分析类型分析类型判别业务判别业务输入数据输入数据处理事务处理事务C C处理事务处理事务A A处理事务处理事务B B事务事务A A更新更新P P事务事务B B更新更新Q Q事务事务C C更新更新R R打印清单打印清单事务分析结果事务分析结果上图存在控制耦合,消除后:上图存在控制耦合,消除后:业务处理业务处理分配处理分配处理输入数据输入
26、数据判别业务判别业务处理事务处理事务C C处理事务处理事务A A处理事务处理事务B B事务事务A A更新更新P P事务事务B B更新更新Q Q事务事务C C更新更新R R打印清单打印清单混合结构分析混合结构分析一个大型系统中常常是变换型和事务型的混合结一个大型系统中常常是变换型和事务型的混合结构。为了导出它们的初始结构图,也必须同时采构。为了导出它们的初始结构图,也必须同时采用变换分析和事务分析两种方法。一般情况,结用变换分析和事务分析两种方法。一般情况,结构化设计的基本思路是,以变换分析为主,事务构化设计的基本思路是,以变换分析为主,事务型为辅,导出初始设计型为辅,导出初始设计.输入输入变换
27、变换输出输出混合结构分析结果混合结构分析结果xxxx系统系统得到得到D D变换变换得到得到C CD DB BC CD DK KG GG GD DE EL LK KA AJ JF FB1B1C CD D得到得到B B调度调度CDCDBCBC输入输入A AB BF FB BC CJ JB BE EC1C1H HK KH HA AABAB判别业务类型判别业务类型T1T1B2B2B3B3B1B1C2C2T2T2B2B2C3C3T3T3B3B3DEDE判别业务类型判别业务类型EHEHFJFJHKHK输出输出K KKLKL输出输出L L输出输出M MK KL LLMLMM ML LM M思考题思考题下面的
28、数据流程图导出控制结构图下面的数据流程图导出控制结构图 LMNOABCDEFGH思考题思考题导出的初始结构图导出的初始结构图输出输出H用户界面设计用户界面设计Ben Shneiderman所著的所著的用户界面设用户界面设计计有效的人机交互策略有效的人机交互策略总结了三项总结了三项原则:原则: 1.考虑用户的多样性考虑用户的多样性2.八条黄金设计规则,适用于大多数交互系八条黄金设计规则,适用于大多数交互系统的基本定律统的基本定律3.预防出错预防出错八条黄金设计规则八条黄金设计规则1.尽量保持一致(布局、颜色、词汇)尽量保持一致(布局、颜色、词汇)2.允许熟练用户使用快捷键允许熟练用户使用快捷键3.提供积极的有价值的反馈提供积极的有价值的反馈4.设计完整的对话过程,每次对话有明确的设计完整的对话过程,每次对话有明确的结束信息(包括窗口的切换)结束信息(包括窗口的切换)5.提供预防错误和简单的错误处理手段提供预防错误和简单的错误处理手段6.允许撤销动作允许撤销动作7.提供控制的内部轨迹,让用户感觉控制了提供控制的内部轨迹,让用户感觉控制了系统,而不是被控制系统,而不是被控制8.减轻短期记忆负担减轻短期记忆负担