《信息系统分析与设计-第7章-结构化系统设计课件.ppt》由会员分享,可在线阅读,更多相关《信息系统分析与设计-第7章-结构化系统设计课件.ppt(165页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第7章 结构化系统设计本章主要内容 系统设计的任务 总体设计结构化设计的概念、基本原则从数据流图导出结构图 详细设计代码设计输出设计输入设计人机对话设计模块详细设计数据库设计、网络设计 系统设计说明书转换转换从分析到设计现实领域的各种需求现实领域的各种需求计算机领域的具体实现计算机领域的具体实现针对需求,进针对需求,进行计算机信息行计算机信息系统的物理模系统的物理模型设计型设计7.1 系统设计的任务 通俗地说,设计就是要回答“怎么做” 完成技术实现方案的制定,即信息系统的物理模型一个逻辑模型,可以提出多个物理模型根据物理模型进行实施,得到最终的物理系统设计系统之前,先看看评价信息系统的标准,这
2、设计系统之前,先看看评价信息系统的标准,这些标准对任何设计方法都适用:些标准对任何设计方法都适用:1.1.信息系统的功能:信息系统的功能:是否满足用户的需求是否满足用户的需求2.2.系统的效率:系统的效率:响应时间、操作的方便性响应时间、操作的方便性3.3.系统的可靠性:系统的可靠性:抗干扰能力、故障恢复抗干扰能力、故障恢复4.4.系统的工作质量:系统的工作质量:准确性、使用效果准确性、使用效果5.5.系统的可变更性:系统的可变更性:修改和维护的难易程度修改和维护的难易程度6.6.系统的经济性:系统的经济性:系统收益与支出比系统收益与支出比7.1.1 设计标准信息系统的可变更性 变化是不变的真
3、理。 统计表示:在信息系统的整个生命周期中,系统维护成本占总成本的80%左右。 因此,可变更性是衡量信息系统设计的重要指标。如何提高系统变更性 结构简单系统各组成元素分工明确,易于理解元素之间的关系清晰简洁 变动灵活软件维护中的“水波效应”使系统各组成元素内部的改变容易实现,改动对其他部分的影响尽量减少提前考虑将来最易出现的扩展和变更 设计方法:结构化设计和面向对象设计 系统设计阶段的主要工作总体设计:根据逻辑模型,完成系统体系结构(计算模式)、系统运行平台、系统的软件结构等设计.详细设计:代码设计代码设计输入设计输入设计输出设计输出设计人机交互设计(用户界面设计)人机交互设计(用户界面设计)
4、模块处理过程设计(模块详细设计)模块处理过程设计(模块详细设计)数据库设计数据库设计 安全设计 系统设计的流程 图 8.1 系 统 设 计 的 流 程 系 统 逻 辑 模 型 计 算 模 式 设 计 系 统 运 行 平 台 设 计 数 据 存 储 设 计 用 户 界 面 设 计 安 全 设 计 软 件 设 计 编 写 系 统 设 计 报 告 数 据 集 中 性 选 择 系统运行平台的设计系统运行平台的设计 设计内容:系统网络配置、硬件平台选择、软件平台选择等。 影响系统运行平台设计的因素 系统软件、实用软件的选型 软件选型原则 符合开放式系统的发展大方向符合开放式系统的发展大方向有必要和足够的
5、软件工具支持有必要和足够的软件工具支持 对新技术的支持能力对新技术的支持能力 较低购买的成本较低购买的成本 系统软件、实用软件的选型 软件选型的内容操作系统操作系统 数据库管理系统数据库管理系统 开发语言开发语言/工具工具 (1)开放性)开放性 (2)易用性)易用性 (3)面向对象性)面向对象性 (4)支持团队开发)支持团队开发 系统硬件选型原则立足于通用机型立足于通用机型 满足应用的速度要求满足应用的速度要求 统一的标准统一的标准 具有支持所选择的软件平台的能力具有支持所选择的软件平台的能力 设备配置服务器服务器 可管理性、可用性、容错性可管理性、可用性、容错性网络设备网络设备 网络结构、传
6、输介质、互联设备网络结构、传输介质、互联设备外部设备的配置外部设备的配置 包括各种输入输出设备包括各种输入输出设备 可靠性提高方法可靠性提高方法安全设施的选择安全设施的选择 不间断电源、防雷设施、安全加密设施不间断电源、防雷设施、安全加密设施7.2 结构化设计的概念 结构化:自上至下,逐步分解求精 结构化设计:模块化模块化模块化的基本思想使用结构化设计方法一定程度上能够简化系统结构,使系统容易修改和理解。具体做法:把整个软件划分为多个部分,其中每一部分的功能简单明确,即程序模块(可以是子过程或函数)划分模块的工作按层次进行,上层模块调用下层模块每一个模块应尽可能独立模块间的调用接口要阐明(模块
7、名称、输入数据、输出数据)接口成本接口成本成本成本模块数量模块数量单元模块成本单元模块成本软件总成本软件总成本模块数量和软件成本 粒度太大,单个模块复杂度升高、维护困难粒度太大,单个模块复杂度升高、维护困难 粒度太小,管理与运行成本升高粒度太小,管理与运行成本升高试想一下:每个经理管理协调多少个下级合适?试想一下:每个经理管理协调多少个下级合适?7.2.1 模块的概念 模块(Module)一词使用很广泛。通常对应于用一个名字就可以调用的一段程序语句(子程序或函数) 模块具有输入和输出、逻辑功能、运行程序、内部数据四种属性。计算工资计算工资模块的图形表示方法模块的图形表示方法7.2.2 模块结构
8、图 结构图结构图(Structured Chart)描述系统的模块结描述系统的模块结构及模块间的联系构及模块间的联系 结构图中的主要成分有:模块:模块:用长方形表示用长方形表示调用:调用:从一个模块指向另一模块的箭头表示前一从一个模块指向另一模块的箭头表示前一个模块调用后一个模块。有循环调用和条件调用个模块调用后一个模块。有循环调用和条件调用数据:数据:用带圆圈的小箭头表示从一个模块传递给用带圆圈的小箭头表示从一个模块传递给另一模块的数据(有实义)另一模块的数据(有实义)控制信息:控制信息:带涂黑圆圈的小箭头表示一个模块传带涂黑圆圈的小箭头表示一个模块传送给另一模块的控制信息送给另一模块的控制
9、信息结构图基本符号A AB BC CB BA AA AB BC CB BA A(a)基本形式基本形式(b)顺序顺序(c)选择选择(d)循环循环计算获得有效数据生成报表打印报表获得编辑数据核对数据打印表头打印表尾读入数据编辑数据显示无效数据打印一行有效数据EOF编辑数据EOF有效数据编辑数据有效数据结果编辑数据数据数据EOFEOF结果日期行行行总计一个完整的结构图模块设计的度量标准 为了衡量模块的相对独立性,提出了模块间的耦合(Coupling)与模块的内聚(Cohesion)两个标准耦合:模块内部各元素之间的联系程度内聚:模块和模块之间的联系程度 设计目标:模块内的联系越紧越好模块间的联系越少
10、越好为什么?影响耦合度的因素 如果使用模块A需要了解模块B,那么A和B是耦合的。影响模块间耦合程度有三方面的因素:联系方式模块间通过什么方式联系来往信息的作用模块间来往信息作什么用数量模块间来往信息的多少。混合混合控制控制数据数据 用过程用过程 直接引用直接引用语句调用语句调用少少多多数量数量方式方式作用作用0 0离坐标原点越远,离坐标原点越远,耦合程度越高耦合程度越高模块联系方式 直接引用:一个模块直接存取另一个模块的某些信息,例如全程变量、FORTRAN的common量、语言的extern量、共享的通信区等 。也称为公共环境耦合(common environment coupling) 降
11、低这种耦合程度的办法是使数据局部化,即使用局部变量 过程语句调用:一个模块调用另一个模块,所有数据来往都以参数或返回值方式传递并使用来往信息的作用 模块间的来往信息可以作数据用,也可以作控制信息用A A取平均成绩取平均成绩或最高成绩或最高成绩平均平均/ /最高最高B B(a)(a)控制耦合控制耦合成绩成绩取最高成绩取最高成绩取平均成绩取平均成绩A A平均成绩平均成绩最高成绩最高成绩(b)(b)数据耦合数据耦合来往信息的数量 模块间传递的信息量越大,它们之间的耦合程度越高。 一个模块最好只了解它确实需要使用的数据,而完全不知道其他数据的存在(独立性好)耦合的类型根据以上因素,对耦合分类如下:数据
12、耦合:采用子程序调用,调用模块将需要进行处理的数据传递给被调模块。数据耦合是不可避免的。标记耦合:如果调用模块将整个数据记录传递给被调模块,而被调模块只使用了部分数据项,则称为标记耦合或特征耦合。控制耦合:一个模块将控制信息传递给另一个模块,以控制被调模块的内部处理逻辑。(可以分解)公共环境耦合:如果两个模块共享同一全局数据,称为公共耦合。内容耦合:两个模块之间的内部属性有直接关联,也称病态耦合。(某些GOTO语句)减低耦合的设计原则结构化设计要求模块间的耦合程度尽可能小。 为此应:用过程语句调用其他模块模块间的参数作数据用模块间的参数尽可能少7.2.4 模块的内聚 模块的内聚反映模块内部联系
13、的紧密程度。 一个模块只需要做好一件事情,不要过分关心其他任务。 高内聚性的好处是可以提高程序的可靠性。有一个调查表明,50的强内聚性子程序是没有错误的,而只有 18的弱内聚性子程序才是无错的,弱内聚性子程序的出错机会要比强内聚性出错机会高 6 倍,而修正成本则要高 19 倍。代码大全内聚的类型 模块的内聚可以分以下七类:. 偶然内聚(coincidental cohesion). 逻辑内聚(logical cohesion). 时间内聚(temporal cohesion). 步骤内聚(procedural cohesion). 通信内聚(communicational cohesion).
14、 顺序内聚(sequential cohesion). 功能内聚(functional cohesion)当同一个子程序中的操作之间无任何联系时,当同一个子程序中的操作之间无任何联系时,为偶然内聚性,也叫作为偶然内聚性,也叫作“无内聚性无内聚性”。比如只是为了将程序中某几处凑巧相同的一些语比如只是为了将程序中某几处凑巧相同的一些语句组合起来形成的一个模块:句组合起来形成的一个模块:P PQ QR RS S1、偶然内聚 B=A; read(Cardfile); D=C;T T将几个逻辑上相似的功能放在一个模块中将几个逻辑上相似的功能放在一个模块中 准备准备算平均成绩算平均成绩算最高成绩算最高成绩
15、返返 回回Y Y取平均成绩取平均成绩?N N比如常见的出错处理模块,工作模块发现错误后,调用比如常见的出错处理模块,工作模块发现错误后,调用错误处理模块,将错误号作为控制参数传入,然后出错错误处理模块,将错误号作为控制参数传入,然后出错处理模块根据不同的错误号执行相应的操作处理模块根据不同的错误号执行相应的操作 2、逻辑内聚将在有限时间单元内处理的成分组合为同一将在有限时间单元内处理的成分组合为同一模块模块比如在程序初始化时所作的处理:比如在程序初始化时所作的处理: m_Medirecno = psPerson.Medirecno txtMedirecno = psPerson.Medirec
16、no txtTel = psPerson.Tel txtContact = psPerson.Contact txtAddr = psPerson.Addr txtMedirecno.Enabled = False 可视化程序设计中在窗口打开时初始化窗口中得控件内容,可视化程序设计中在窗口打开时初始化窗口中得控件内容,如列表框的项目、文本框或单选钮的缺省取值如列表框的项目、文本框或单选钮的缺省取值 还比如:还比如:C+的构造函数、析构函数的构造函数、析构函数3、时间内聚4、步骤内聚 当子程序中的操作是按某一特定过程结构进行的,就是步骤内聚。例如:用户想按一定的顺序打印,子程序设计成是用于按顺序
17、打印销售收入、开支、雇员电话表的。 步骤内聚在时间内聚的基础上增加了次序的约束当模块内的成分引用共同的数据,而不存在当模块内的成分引用共同的数据,而不存在其他联系时,称为通信内聚其他联系时,称为通信内聚修改库存修改库存购货单购货单开发货单开发货单库存库存A A、销售模块、销售模块B B 、产生留退名单模块、产生留退名单模块期末不及格统计期末不及格统计累计不及格统计累计不及格统计留退名单留退名单学籍表学籍表5、通信内聚模块中某个成分的输出是另一成分的输入。模块中某个成分的输出是另一成分的输入。比如显示期末成绩通知:比如显示期末成绩通知:读读入入学学号号读读取取成成绩绩取取不不及及格格科科目目取取
18、科科目目补补考考安安排排显显示示数数据据判判断断留留退退级级6、顺序内聚6、顺序内聚 顺序内聚有较强的内聚性 是步骤内聚和通信内聚的结合例如:一个模块用于计算高于平均分的人数,步骤是先循环累计总分,然后计算得到平均分,最后循环统计高于平均分的人数有步骤的先后,而且前一个步骤的结果要用于后一步骤的运算中 但仍然不是最高的内聚类型7、功能内聚 一个模块包括并且仅仅包括为完成一个具体任务所需要的所有成分,称为功能内聚。 功能内聚性是最强也是最好的一种内聚例如:打印职工名单,PrintStaffList()例如:计算平均分,CalculateAvg() 仅用一个动宾词组能明确指出这个模块的所有功能。内
19、聚的评分 耦合和内聚的概念是Stevens等人提出的, 是测量一个模块化系统好坏的标志。 按他们的观点, 给上述七种内聚评分如下:功能内聚分顺序内聚分通信内聚分步骤内聚分时间内聚分逻辑内聚分偶然内聚分 可以给一个软件的所有模块打分,最后计算平均分,作为软件结构质量评价的参考耦合和内聚的关系 二者就像连体兄弟,存在紧密相关的关系:模块内的高内聚往往意味着模块间的松耦合反之,低内聚一般会带来紧耦合7.2.6 模块的扇入与扇出 模块的扇入是指有多少个上级模块调用它。 模块的扇出是指模块的直属下层模块的个数,扇出系数不宜过大A A的扇出为的扇出为2 2A AB BC CB B1 1C1C1C2C2C3
20、C3B B的扇出为的扇出为1 1C C的扇出为的扇出为3 3T TT T的扇入为的扇入为2 2减少高扇出,争取高扇入减少高扇出,争取高扇入清真寺型清真寺型不够好不够好,底层模块复用度低底层模块复用度低金字塔型金字塔型总体设计原则 设计功能内聚的模块 模块使用过程语句调用其他模块,传递的参数作数据用,并且尽可能少 模块内语句数一般为50100 平均扇出系数最好是35 高层模块高扇出,最低层模块高扇入 一个判断的作用范围是判断所在模块的控制范围的子集7.3 数据流图导出初始结构图数据流图导出初始结构图n从数据流程图导出系统的初始结构图,首先要区分数据流程图的结构类型,然后根据不同的类型采用不同的方
21、法把数据流图映象成相应的模块结构。n 数据流程图DFD的结构类型(1)变换型DFD一个数据流程图可以明显地分成输入、处理和输出三部分。(2)事务型DFD事务型数据流程图一般呈束状形。(1) (1) 变换型结构变换型结构n由输入、变换中心由输入、变换中心( (或称主加工或称主加工) )和输出三部分组成。和输出三部分组成。n基本模型:基本模型:变换变换中心中心输入输入路径路径输出输出路径路径变换型数据流图变换型数据流图输入输入信息信息物理物理输入输入格式格式检查检查处理处理显示显示正确正确信息信息结果结果物理物理输出输出数据数据变换中心变换中心输出输出逻辑逻辑输入输入逻辑逻辑输出输出输入输入(2)
22、 (2) 事务型结构事务型结构特征特征:具有在多种事物中选择:具有在多种事物中选择 执行某类事物的能力执行某类事物的能力基本模型:基本模型:事务事务中心中心接受路径接受路径动作动作路径路径(3)(3)大型系统大型系统DFDDFD中中, ,变换型和事变换型和事务型结构往往共存务型结构往往共存: :T T事务中心事务中心传入传入变换变换传出传出(二二)DFD导出初始导出初始SC的过程的过程 两种转换策略两种转换策略/ /技术技术 变换分析变换分析 事务分析事务分析 一般过程一般过程 先设计模块结构顶端的主模块先设计模块结构顶端的主模块 然后然后“由顶向下逐步细化由顶向下逐步细化” 最后得到一个最后
23、得到一个与数据流图相对应与数据流图相对应的程序结构的程序结构变换型DFD事务型DFD初始SC初始SC变换分析事务分析“由顶向下逐步细化由顶向下逐步细化”的思想的思想 找出找出“顶顶”在哪里,设计一个相应的主控模块在哪里,设计一个相应的主控模块 每创建一个新的模块时,必须决定该模块的外部特征每创建一个新的模块时,必须决定该模块的外部特征 该模块的功能,即该模块该模块的功能,即该模块“做什么做什么” 该模块同其调用模块的界面,即调用时传送的参该模块同其调用模块的界面,即调用时传送的参数数 对已创建的模块进行细化,考虑这个模块应该对已创建的模块进行细化,考虑这个模块应该“怎样怎样做做”才能完成它的功
24、能才能完成它的功能, ,于是又要创建下一层的新模于是又要创建下一层的新模块块, ,再回到上一步再回到上一步 通过这样通过这样“先决定做什么先决定做什么, ,再考虑怎样再考虑怎样 做做”, ,循环循环往复往复, ,设计过程就有序地进行设计过程就有序地进行, , 直至获得整个完整的直至获得整个完整的结构层次。结构层次。变换型变换型事务型事务型(三)(三)变换分析设计方法变换分析设计方法步骤:步骤:1 1 找出主加工、逻辑输入和逻辑输出找出主加工、逻辑输入和逻辑输出2 2 设计模块结构的顶层和第一层设计模块结构的顶层和第一层3 3 设计中、下层模块设计中、下层模块1 1 区分输入、区分输入、主加工、
25、主加工、输出部输出部分,在分,在DFDDFD上标明分界线上标明分界线(1)(1)确定确定逻辑输入逻辑输入离物理输入端最远的,离物理输入端最远的,但仍可被看作系统输入的那个数据流但仍可被看作系统输入的那个数据流 方法方法:从物理输入端开始,一步步向系统的:从物理输入端开始,一步步向系统的中间移动,直至达到这样一个数据流:它已中间移动,直至达到这样一个数据流:它已不能再被看作为系统的输入,则其前一个数不能再被看作为系统的输入,则其前一个数据流就是系统的逻辑输入。据流就是系统的逻辑输入。(2)(2)确定确定逻辑输出逻辑输出离物理输出端最远的,但离物理输出端最远的,但仍可被看作系统输出的那个数据流仍可
26、被看作系统输出的那个数据流 方法:从物理输出端开始,一步步向系统的中方法:从物理输出端开始,一步步向系统的中间反方向移动,直至达到这样一个数据流:它间反方向移动,直至达到这样一个数据流:它已不能再被看作为系统的输出,则其后一个数已不能再被看作为系统的输出,则其后一个数据流就是系统的逻辑输出。据流就是系统的逻辑输出。(3)对系统的每一股输入和输出,都用上对系统的每一股输入和输出,都用上 面面的方法找出相应的逻辑输入、输出的方法找出相应的逻辑输入、输出(4)确定确定主加工主加工位于逻辑输入和逻辑输位于逻辑输入和逻辑输出之间的加工,就是系统的主加工出之间的加工,就是系统的主加工(5)(5)几点说明:
27、几点说明: 根据经验,几股数据流的汇合处往往是根据经验,几股数据流的汇合处往往是 系统的主加工系统的主加工 每个人都可以有自己的看法,找出来的主加工可每个人都可以有自己的看法,找出来的主加工可能也不同,但一般不会相差太远。能也不同,但一般不会相差太远。变换中心变换中心1 12 23 34 45 56 67 7a ab bc ce ed dr rp pu uw wv v输入输入部分部分输出输出部分部分2 2 设计设计SCSC的的顶层和第一层模块:顶层和第一层模块:(1) (1) 设计一个顶层模块设计一个顶层模块( (主模块主模块) ),它的功能是完成整个程,它的功能是完成整个程序要做的工作。序要
28、做的工作。(2) (2) 设计结构的第一层:设计结构的第一层: 为逻辑输入设计一个输入模块,它的功能是向主模块提为逻辑输入设计一个输入模块,它的功能是向主模块提供数据供数据 为逻辑输出设计一个输出模块,它的功能是输出主模块为逻辑输出设计一个输出模块,它的功能是输出主模块提供的数据提供的数据 为主加工设计一个变换模块,它的功能是将逻辑输入变为主加工设计一个变换模块,它的功能是将逻辑输入变换成逻辑输出换成逻辑输出 第一层模块同顶层主模块之间传送的数据应与数据流第一层模块同顶层主模块之间传送的数据应与数据流图相对应。这里主模块控制并协调一层的输入、变换、图相对应。这里主模块控制并协调一层的输入、变换
29、、输出模块的工作,注意识别出选择或循环调用以及调用输出模块的工作,注意识别出选择或循环调用以及调用条件。条件。第一级分解第一级分解后的后的SCSCM MC CM MT TM MA AM ME E第一层第一层顶层顶层c,ec,ec,ec,e u,wu,wu,wu,w传送信息传送信息第一级分解后的第一级分解后的SC(SC(另一种画法另一种画法) )M MC CM MA1A1c ce eu,wu,wc,pc,pM MA2A24 45 56 6M ME1E1M ME2E2e ep pr rr rw,uw,uw w3 3 第二级分解第二级分解( (分解分解SCSC各分支各分支) )自顶向下分解,设自顶向
30、下分解,设计出每个分支计出每个分支( (输入、加工、输出输入、加工、输出) )的中、下层模的中、下层模块:块:(1)(1)为每一个输入模块设计两个下层模块,一个是为每一个输入模块设计两个下层模块,一个是输输入模块入模块,接受数据来源;另一个是,接受数据来源;另一个是变换模块变换模块,模块,模块调用时传送的参数应同数据流图相对应调用时传送的参数应同数据流图相对应(2)(2)输出模块也有两部分组成,一部分是输出模块也有两部分组成,一部分是变换模块变换模块,将数据变换成输出的形式;另一部分是将数据变换成输出的形式;另一部分是输出模块输出模块 上述设计过程由顶向下递归进行,直至达到系统上述设计过程由顶
31、向下递归进行,直至达到系统的输入端或输出端的输入端或输出端(3) (3) 变换模块的下层模块,根据数据流图中相应加工变换模块的下层模块,根据数据流图中相应加工的组成情况而定。的组成情况而定。输输入入分分支支的的分分解解MAMAGet CGet Cb ba ac cReadRead D Dd de ec,ec,eB to CB to Cb bc cd de ea ab bGet EGet EGet BGet BD to ED to EA to BA to BRead ARead ADFD图图输输出出分分支支的的分分解解M ME EWriteWrite V Vu uu uw,uw,uv vv vP
32、ut Put U UU to VU to VWriteWrite W Ww wDFD图图加工分支的分解加工分支的分解M MT T5 54 46 6e ec,pc,pr ru,wu,wp pr rDFD图图任何情况下都可使用变换分析方法设计任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事软件结构,但如数据流具有明显的事务特点时务特点时( (有一个明显的事务中心有一个明显的事务中心) ),以采用事务分析方法为宜。以采用事务分析方法为宜。 ( (四四) ) 事务分析设计方法事务分析设计方法事务分析设计方法步骤:事务分析设计方法步骤:(1)(1)在在DFDDFD上确定事务中心。上确定
33、事务中心。(2)(2)为为DFDDFD上的事务中心设计主模块,再为每一种上的事务中心设计主模块,再为每一种类型的事务处理设计一个事务处理模块。类型的事务处理设计一个事务处理模块。(3)(3)为每个事务处理模块设计下面的操作模块,为每个事务处理模块设计下面的操作模块,再为操作模块设计细节模块。某些操作模块和再为操作模块设计细节模块。某些操作模块和细节模块可以被几个上一层模块共用。细节模块可以被几个上一层模块共用。事务型事务型DFDDFD的划分的划分T T事务事务中心中心传入传入变换变换传出传出接收接收部分部分发发送送部部分分a事务型事务型SCSC的的上层上层结构结构(1)(1)事务控制事务控制G
34、et aGet a顶层顶层第一层第一层a事务事务1 事务型事务型SCSC的上层结构的上层结构 (2)(2)事务控制事务控制事务事务分析分析发送发送动作分支的典型结构动作分支的典型结构P PT T 2 2T T 1 1T T i iA A 2 2D D 2 2A A 1 1D D 1 1A A 3 3A A j jD D k k事务层事务层操作层操作层细节层细节层处理层处理层7.3.3 层次的对应关系 数据流图的层次和结构图的层次存在一定的对应关系,但不是机械照搬。3232. . . . . .P1.41格式格式检查检查3产生产生收据收据2计算计算汇费汇费4记账记账汇款单汇款单合格的合格的汇款单
35、汇款单处理后的处理后的汇款单汇款单收据收据明细账明细账变换中心变换中心输出输出输入输入业务业务数据数据汇款处理系统汇款处理系统取得合格取得合格汇款单汇款单计算汇费计算汇费记账记账输出处理后输出处理后的汇款单的汇款单 输入输入汇款单汇款单格式检查格式检查产生收据产生收据打印收据打印收据合格的合格的汇款单汇款单处理后的处理后的汇款单汇款单合格的合格的汇款单汇款单业务数据业务数据处理后的处理后的汇款单汇款单汇款单汇款单合格的合格的汇款单汇款单汇款单汇款单处理后的处理后的汇款单汇款单收据收据收据收据业务数据业务数据要求类要求类型处型处理理图书管理图书管理要求要求无效输入无效输入1.11.1新书入库新书
36、入库1.21.2还还入库单入库单罚款单罚款单1.51.5注销图书注销图书1.31.3还书还书1.41.4目录文件目录文件借书单借书单书书单单注销单注销单借书借书借书文件借书文件罚款单罚款单事务事务中心中心图书处理系统图书处理系统取得图书取得图书处理要求处理要求修改目修改目录文件录文件操作层操作层细节层细节层新书入库新书入库注销图书注销图书借书借书还书还书 打印打印罚款单罚款单修改借修改借书文件书文件图书管图书管理要求理要求入库单入库单借书单借书单 还书单还书单注销单注销单7.2.8 结构图优化方法 减少模块间的联系,减少参数传递,特别是控制信息的传递 消除重复功能 消除“管道”模块 考虑变化
37、控制模块大小 整体考虑结构图优化举例问题描述:病人监护系统中的实时监测模块。该模块使用病床专用设备测量病人的若干生理参数,如体温、脉搏、血压等等。每个病人各种指标的安全范围由医生预先指定。每经过一定的时间间隔,监测模块从监视设备读入这些数据,并存入数据库中。若发现某个指标超出合理范围,则向维修站发出设备故障通知,报告床号。 若发现某个指标越出安全范围,则向护理站发出通知,报告病人号。分析产生的1层DFD病人病人护护理理站站病历病历合理合理数据数据数据数据不安不安全因全因素素读取读取数据数据存储存储数据数据检查检查数据数据通报通报不不安全安全因素因素维维修修站站不合理不合理数据数据FS2病人监护
38、系统病人监护系统采集数据采集数据检查数据检查数据处理数据处理数据获获取取下下一一个个病病人人PN,FSEOF,EFEOFFSEFUSF,EFUSFFSPNEF,USFPN,FSPN,FS,EFPN,EFPN,FSFSFSSRSR读读取取数数据据检检查查不不合合理理范范围围查查询询安安全全范范围围判判定定病病人人是是否否安安全全写写数数据据库库通通报报设设备备故故障障通通报报不不安安全全因因素素EFBNPN,FSEFPN,BN初始结构图PNPN病人号;病人号;BNBN床位号;床位号;SRSR安安全范围;全范围;FSFS各指标数据;各指标数据; EFEF设设备故障标志;备故障标志; EOFEOF标
39、志已查过标志已查过最后一个病人;最后一个病人;FS2FS2标志指标是标志指标是否合理;否合理; USFUSF标志指标不安全标志指标不安全 第1次改进 “处理数据”模块没有实质性的功能,所包含的三个子模块相互之间没有什么关联,内聚程度很低。 该模块只是充当了“管道”,改进如下:废除“处理数据”模块;直接由主模块调用“通报设备故障”、“通报不安全因素”和“写数据库”三个模块病人监护病人监护写数据库写数据库通报不安通报不安全因素全因素通报通报设备故障设备故障检查数据检查数据采集数据采集数据第1次改进结果第2次改进 通报设备故障时应通报床位号而不应是病人号,因此要传递床位号。 床位号BN可由“采集数据
40、”模块传给主模块,再由主模块传递给“通知设备故障”模块。但这样做增加了模块间的联系,改为由“采集数据”模块直接调用PNPN,FSFS病人监护病人监护采集数据采集数据检查数据检查数据通报通报不安全因素不安全因素获取获取下一个病人下一个病人PNPN,FSFSEOFEOF,EFEFPNPN,BNBNEOFEOFFSFSEFEFUSFUSFUSFUSFPNPNFS2FS2BNBN,EFEFPNPN,FSFSFSFSSRSRSRSR读取数据读取数据检查检查不合理范围不合理范围查询安全查询安全范围范围判定病人是判定病人是否安全否安全写数据库写数据库通报通报设备故障设备故障EFEFBNBNPNPN,FSFS
41、EFEFFSFS第2次改进结果第3次改进 若由“检查数据”模块直接调用“通报不安全因素”模块,则可减少模块间的联系,即不用传递USF标志(排除控制耦合)。 这样的话,“检查数据”的名字改为“报告不安全因素”更为恰当第3次改进结果病人监护病人监护采集数据采集数据报告不安全因素报告不安全因素写数据库写数据库PNPN,FSFSEOFEOF,EFEFEFEFUSFUSFPNPNSRSR,FSFSEFEFPNPN,FSFS查询安全范围查询安全范围通报不安全因素通报不安全因素PNPN,FSFS判定病人是否安全判定病人是否安全第4次改进 “获取下一个病人”模块的界面要返回病人号和床位号,如果使“ 读取数据”
42、模块包括从病人号查床位号的功能,则“获取下一个病人”模块的接口可以简化第4次改进结果采集数据采集数据获取获取下一个病人下一个病人PNPNEOFEOFFSFSEFEFPNPNBNBNFSFS读取数据读取数据检查检查不合理因素不合理因素从从PNPN查查BNBNEOFEOFPNPN通报通报设备故障设备故障FS2FS2BNBN第5次改进 通过床号读取数据,功能很明确,但目前包含在“读取数据”模块中,这部分程序代码如果抽取出来单独成为一个模块更好,名字为“从床号读数据” 该模块可以成为一个公用模块,很易于重用第5次改进结果采集数据采集数据获取下一个病人获取下一个病人PNPNEOFEOFFSFSEFEFP
43、NPNBNBNFSFSEOFEOFPNPNFS2FS2BNBN从从PNPN查查BNBN从床号读数据从床号读数据通报设备故障通报设备故障检查不合理因素检查不合理因素BNBN采集病人数据采集病人数据FSFSEFEF第6次改进 “ 从床号读数据”应该是功能单一,调用“通报设备故障”不应属于该模块内容。 将“通报设备故障”改为上层模块调用,使“从床号读数据”模块功能更明确,公用性也更好第6次改进结果病人监护病人监护采集数据采集数据报告不安全因素报告不安全因素写数据库写数据库判定判定下一个病人下一个病人PNPN,FSFSEOFEOF,EFEFPNPNEOFEOFFSFSEFEFUSFUSFPNPNEFE
44、FSRSREFEFFSFSPNPNFS,SRFS,SR采集采集病人数据病人数据检查检查安全范围安全范围判定病人是判定病人是否安全否安全通报通报不安全因素不安全因素EFEFPNPNPNPN,FSFS从从PNPN查查BNBN从床号从床号读数据读数据通报通报设备故障设备故障检查不合理因素检查不合理因素BNBNBNBNEFEFFSFSBNBNFSFSFS2FS2PN,FSPN,FS第7次改进 给护士站或维修站的通报消息可能采用了同一种方式或界面,因此可能会有公用的模块,比如“写一行”(或者“发出警报”之类) 因此再抽出一个模块“写一行”,供两个模块调用。第7次改进结果病人监护病人监护采集数据采集数据报
45、告不安全因素报告不安全因素写数据库写数据库判定判定下一个病人下一个病人PNPN,FSFSEOFEOF,EFEFPNPNEOFEOFFSFSEFEFUSFUSFPNPNEFEFSRSREFEFFSFSPNPNFSFSFS,SRFS,SR采集采集病人数据病人数据检查安检查安全范围全范围判定病人是判定病人是否安全否安全通报通报不安全因素不安全因素EFEFPNPNPNPN,FSFS从从PNPN查查BNBN从床号从床号读数据读数据通报通报设备故障设备故障产生一行产生一行写一行写一行检查不合理因素检查不合理因素BNBNBNBNEFEFEFEFFSFSBNBNFSFSFS2FS2PN,FSPN,FS一行一行
46、一行一行一行一行对已有程序进行重构 重构(Refactoring):在不改变程序代码功能的前提下,对程序结构所进行的改造 因为不是总能提前做出最好的设计,或者对遗留系统的维护过程中提高品质而做出的结构变化 参见重构改善既有代码的设计7.5 代码(编码)设计 什么是代码?用来表征客观事物的一个或一组有序的符号,它应易于计算机和人识别与处理。一般用数字、字母或它们的组合来表示。代码设计是科学管理的体现。代码无处不在:车牌号码、商品编码、身份证号、学号、专业代码代码的作用1. 鉴别功能: 唯一地标识一个实体或属性值 2. 分 类 3. 排序4. 专用含义5. 系统集成的基础6.在某些场合节省存储空间
47、 代码的特性唯一化唯一化规范化规范化系统化系统化 为事物提供一个概要而不含糊的为事物提供一个概要而不含糊的认定,便于数据的存储和检索。认定,便于数据的存储和检索。 即编码要有规律,符合某一类事即编码要有规律,符合某一类事物的聚集,提高处理的效率和精度。物的聚集,提高处理的效率和精度。 也即标准化,符合国家或行业标也即标准化,符合国家或行业标准,提高数据全局一致性。准,提高数据全局一致性。代码代码无实义代码无实义代码有实义代码有实义代码顺序码顺序码特征特征组合码组合码层次码层次码字母字母顺序码顺序码系列系列顺序码顺序码逻辑码逻辑码排序码排序码无序码无序码自检码自检码矩阵码矩阵码代码的种类 代码结
48、构按代码码的基本结构分类 顺序码:一种以连续的数字或字符代表编码对象的编码,例如连续的数字0、1、2、3、4,或以A、B、C、D。 特点: 编码简单、简短等 可维护性差 例:在日常生活中,街道两旁的门牌号码一般采用顺序码。 块码一种特殊的顺序码。它将顺序码按照一定的方式,将编码分成若干段或者块,每一段或块代表一定类型的编码对象。例:我国邮政编码采用6位数码,其第一、二位采用块码标识省、自治区和直辖市,例如第一、二位为“43”和“44”均标识湖北省。特点:与顺序码相比较,块码具有较好的可维护性。只要分段合适,预留有足够的码,那么该编码就具有较好的维护性,例如前面谈到的部门编码。该类码较顺序码复杂
49、。块码并不方便分类统计的需求。层次码顺序码和块码不适合对具有层次结构的编码对象,例如物品、地区等的编码。层次码是根据编码对象一定的层次关系,确定若干位,并排成一定的层次关系。因此,层次码适合对具有层次结构的编码对象。 例:商场中经营的商品就具有层次结构,按商品大类来分,商品分为百货、服装、家电、体育等,每一大类中又分为中类,如服装类分为男装、女装和童装。每大类的中类又分为小类,因此可以采用层次码结构来编码。 特点:结构清晰、可维护强等特点,但是编码的设计较复杂。采用层次码时,首先要理清编码对象的层次结构。 N N N N N N 层次码的一般结构 最低层 中间层 最高层 特征码在编码模型中,为
50、编码对象的多个属性各规定一个位置(若干位码),从而表示编码对象不同的属性。特征码与顺序码、块码、层次码不同,编码中表示的各属性之间没有关系,是相互独立的。例如表示用材质、直径、形状、表面处理方式属性来为金属材料编码,这种编码就是特征码。组合灵活、设计简单等优点,一般用于枚举型的编码对象例:性别、直径、形状等。由于特征码用于枚举型的编码对象,因此比较方便由系统自动编码。 按照编码中采用的符号分类数字型编码采用若干位数字进行编码,其数字可以是十进制、八进制、二进制等。例如我国的身份证号、邮政编码、电话号码等就是采用十进制的数字型编码,计算机中使用的ASCII就是采用八进制的数字型编码等。数字型编码