版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 系统设计 系统设计概述 结构化设计原理 模块化设计 面向数据流的设计 面向数据结构的设计 HIPO图1第6章 系统设计系统设计(System Design)就是为实现系统分析提出的系统逻辑模型所作的各种技术考虑和设计系统设计又称为系统的物理设计,即是根据新系统逻辑模型建立系统的物理模型26.1 系统设计概述 计算机系统及其它硬设备的选择 系统的分解与组织 原始数据的组织和输入 输出信息的方式和管理 文件与数据库的组织和管理 代码的设计与确定 通信网络的设计 系统的安全保密性设计 系统实施计划 其它系统设计的任务36.1 系统设计概述 更快、更准、更多地提供资料 更多、更细的处理功能 更
2、有效、更科学的管理方法系统设计的目标 系统设计的目标是:在保证实现逻辑模型的基础上,尽可能地提高系统的各项指标,即系统的运行效率、可靠性、可修改性、灵活性、通用性和实用性。正确划分人工处理与计算机处理。46.1 系统设计概述 系统的运行效率包括三个方面的内容,即: 处理能力指在单位时间内能够处理的事务 个数 处理速度指处理单个事务的平均时间 响应时间指从发出处理要求到给出回答所 用的时间系统设计的目标运行效率 不同处理方法的系统,其运行效率有不同的含义。不同计算模式;对请求的不同响应方式56.1 系统设计概述 影响系统运行效率的因素一般取决于: 系统中硬件及其组织结构 计算机处理过程的设计质量
3、中间文件的数量文件的存取方法子程序的安排及软件编制质量系统设计的目标运行效率66.1 系统设计概述 系统的可靠性是指系统运行过程中,抵抗异常情况(人为的和机器的故障)的干扰、保证系统正常工作的能力 软件可靠性:随着软件工具水平而提高 硬件可靠性:冗余设计系统设计的目标可靠性 系统的可靠性包括:检、纠错的能力,对错误的容忍能力,排除错误的能力等76.1 系统设计概述 衡量系统可靠性的重要指标: 平均故障间隔时间(MTBF):指平均的系统前后两次发生故障的时间,这反映了系统安全运行的时间 平均维护时间(MTTR):指发生故障后平均每次所用的修复时间,它反映系统可维护性的好坏系统设计的目标可靠性86
4、.1 系统设计概述 系统的有效性: 系统的有效性 = MTBF / (MTBF+MTTR)系统设计的目标可靠性提高系统可靠性的途径主要有: 设计中尽可能地避免出错 对可能出现的错误,系统要有完善的检、纠错功能和对安全的考虑 对可能的错误进行出错冗余设计96.1 系统设计概述 系统的可修改性是指系统容易修改程度,没有一个定量的标准,而是通过比较得出的结果系统设计的目标可修改性 应用合理的系统设计原则,能够对系统的可修改性产生积极的影响。(系统分解的好坏) 系统的可修改性之所以重要,是因为一个系统从设计到建成运行,总是处于不断的变化之中,这就必然引起修改和维护106.1 系统设计概述 这些变化包括
5、: 系统需求和环境的变化 现代信息技术如计算机技术、管理决策 方法等的发展 系统本身总是处于不断地完善之中,不 适应或错误在所难免系统设计的目标可修改性116.1 系统设计概述 系统设计过程中,始终要明确应用计算机处理和人工处理的界线系统设计的目标划分计算机处理与人工处理 系统设计中要避免这样两种倾向: 一味地追求计算机处理,将许多只能由人完成的工作交计算机去干,从而造成设计的复杂和不够科学 把本该由计算机完成的工作交由人去处理,从而使新系统的功能、性能以及用户的目标得不到体现126.1 系统设计概述 两种处理过程的不同特点: 处理速度不同。(阅卷;编目) 概念的精确程度不同。(涉及语义的工作
6、) 对处理的信息的结构化程度要求不同 工作效率的稳定性不同 意外情形的处理 费用的考虑系统设计的目标划分计算机处理与人工处理136.1 系统设计概述 划分计算机处理与人工处理的基本原则是: 复杂的科学计算,大量重复的数学运算、统计、汇总、报表、数据库检索、分类、文字处理、图形图象基本处理、有关数据的采集、通信等应由计算机完成 传统的人工判定,目前没有成熟的技术可以应用,或代价太高,则仍用人工处理 决策性问题中,计算机尽可能提供决策依据,由人进行最后决策 设计人机接口,考虑时间的匹配,代码的统一、格式的协调等系统设计的目标划分计算机处理与人工处理14第6章 系统设计 系统设计概述 结构化设计原理
7、 模块化设计 面向数据流的设计 面向数据结构的设计 HIPO图156.2 结构化设计原理 历史沿革: 早期的计算机应用,由于受到硬、软件的限制,只是编制了一些简单程序,其设计工具是程序流程图 计算机技术的发展及领域的不断扩大与复杂,使得程序流程图不能满足设计的需要 70年代以来,出现了多种设计方法,其中有代表性的是结构化设计方法、Jackson方法、Warnier方法和Parnas方法结构化设计方法166.2 结构化设计原理 设计思想: 基本思想是对问题要有一个总的看法,由概括到具体、逐层分解问题 强调把一个系统设计成具有层次式的模块化结构,并且用一组标准的准则和工具帮助系统设计人员确定组成系
8、统的模块及相互关系结构化设计方法176.2 结构化设计原理 设计思想: 结构化系统设计(structured system design)方法体现了自顶向下、逐步求精的原则,采用先全局后局部、先总体后细节、先抽象后具体等过程开发系统,从而使系统结构清晰,可读性、可修改性、可维护性等指标优异结构化设计方法186.2 结构化设计原理 特点: 对一个复杂的系统,应用自顶向下,逐步求精 的方法予以分解和化简 强调采用模块化的设计方法,并有一组基本设 计策略 采用结构图的方式作为模块设计的工具 有一组评价设计方案质量的标准及优化技术结构化设计方法196.2 结构化设计原理 重要内容: (1)合理地进行模
9、块分解和定义,使一个复杂系统的设计转化为若干种基本模块的设计 结构化设计的分解原则 把密切相关的子问题划归为系统的同一部分 把不相关的问题划归为系统的不同部分结构化设计方法206.2 结构化设计原理 重要内容: (2)有效地将模块组织成一个整体,从而体现系统的设计功能 结构化系统设计与结构化的系统分析有着密不可分联系,它是以系统的逻辑模型和数据流图为基础,借助于一套标准的设计方法和图表工具,通过自顶向下或自底向上的方法,逐层把系统划分为多个大小适当、功能明确、具有一定独立性的模块结构化设计方法21 模块化原理:依据系统是由元素和结构组成,且它们又可分层、分类的思想,一个信息系统可被逐层划分为大
10、小适当、功能明确独立且容易实现的模块,并由它们的协调和组合去共同达到系统的设计目标模块化原理 模块化原理(modularization)的基本思想是可分性,即最大限度地降低系统设计的复杂性,把问题层层分解,直到容易解决为止。这样就降低了人为划分的主观影响,增强了问题的客观性6.2 结构化设计原理22 信息隐蔽原理是指导人们按信息相关度划分模块的一个原理信息隐蔽原理 信息隐蔽原理(information hiding)的基本思想是:在一定规模和条件的限制下,把那些对模块功能相关度最大的信息(如过程与数据)分在一个模块内,而把最少的完成功能所需的交互信息划分在该模块外(接口)。换言之,模块的划分应
11、该使得包含在模块内的信息对于无需这些信息的模块是不可访问的6.2 结构化设计原理23 信息隐蔽原理是把任何系统划分成子系统的普遍性原理信息隐蔽原理 信息隐蔽原理的好处是:模块内部的错误很少可能传播到系统的其它模块 最大限度地体现了模块在概念和功能上的独立性、相对完整性和封闭性 给系统结构和模块的实现、维护带来了方便6.2 结构化设计原理24时空等价原理 时空等价原理的含义: 从理论上讲,对于一个特定的系统功能或模块功能,既可由硬件模块去完成,又可由软件模块去完成,此即功能等价 硬件有耗费空间但速度快的属性,而软件有耗费时间但少耗费空间的属性 对系统的资源合理分配,使同一功能由耗费时空最少的模块
12、或子系统去承担。如星地协同处理,移动计算,软件无线电,软件固化等。6.2 结构化设计原理25 运用时空等价原理划分硬、软件子系统或模块时,必须按系统与环境的约束条件在系统硬、软件的时空属性中进行综合折衷。此时,就会应用时空的另一个重要原理:时空权衡原理时空等价原理 时空权衡原理(space-time tradeoff)是指:牺牲空间或者其它替代资源,通常都可以减少时间代价。反之亦然6.2 结构化设计原理26第6章 系统设计 系统设计概述 结构化设计原理 模块化设计 面向数据流的设计 面向数据结构的设计 HIPO图27 定义:在软件角度,所谓模块(module)是指这样的一组程序语句(或描述),
13、它包括输入与输出、逻辑功能描述、内部信息及其运行环境模块 输入与输出:从调用者处获得输入信息,经过模块本身的处理后,再把输出返送给调用者 逻辑功能:描述该模块能够做什么样的事情,具备什么样的功能 内部信息:模块执行的指令和在模块运行时所需要的属于该模块自己的数据 运行环境:模块的调用与被调用的关系6.3 模块化设计28模块的特征抽象信息隐蔽其它6.3 模块化设计模块的特征29 定义:把系统划分为若干个模块,每个模块完成一个特定的功能,然后将这些模块汇集起来组成一个整体(即系统),可以完成指定的功能,满足问题的要求模块化6.3 模块化设计30模块化 设对于两个问题P1、P2,C(P1)、C(P2
14、)表示问题的复杂程度,而E(P1)、E(P2)表示解决问题所需的工作量。于是,如果 C(P1)C(P2)则 E(P1)E(P2)一个有趣的规律是 C(P1+ P2) C(P1)+C(P2)即是说,如果一个问题由两个问题组合而成,那么它的复杂程度大于分别考虑每个问题的复杂程度之和。于是 E(P1+ P2) E(P1)+E(P2)6.3 模块化设计31 推而广之,当一个系统有n个独立元素时,一般总有 C(P1+ P2+Pn) C(P1)+C(P2)+ C(Pn)及 E(P1+ P2+Pn) E(P1)+E(P2)+ E(Pn) 这就是模块化的依据模块化6.3 模块化设计32 能否认为,如果我们无限
15、地分割系统,最终将导致最基本模块的设计非常容易,因而使得设计系统的工作量非常小?模块化6.3 模块化设计 这个结论是错误的 当模块数目增加时,每个模块的规模将减小,开发单个模块所需的成本(工作量)确实减少了,但随着模块数目的增加,设计模块间接口的工作量也将增加 目标是尽量寻求一个合理的模块分解数目336.3 模块化设计34 好的系统结构满足: 每个模块完成一个相对独立的特定功能(保证了按模块分解后的设计工作量将小于按整个系统设计的工作量) 模块之间的接口简单(使设计中的接口成本最小)模块独立性6.3 模块化设计35 具有独立功能而且和其它模块之间没有过多相互作用的模块,我们称之为独立的模块。这
16、种开发方法,就可以做到模块独立。模块独立性6.3 模块化设计 所谓两个模块彼此完全独立,是指其中任意一个模块在运行时,与另一个模块的存在与否完全无关。 独立只是一个抽象的、相对的概念。36 模块独立的作用: 具有独立性的系统比较容易开发,这是由于能够分割功能而且接口可以简化。系统开发常常由若干人的分工合作完成的,这时具有模块独立性的优点就尤为重要。 模块的独立性越好,模块的相互影响就越少。当系统中某一模块出错时,产生连锁反应的概率就越低,从而提高了系统的可靠性。 独立的模块比较容易测试和维护。这是因为错误的传播范围小,较容易定位,而且对一个模块进行修改或维护时,不担心其它模块的内部是否会受到影
17、响。模块独立性6.3 模块化设计37 模块的独立程度可以由两个定性标准度量,这两个分别称为耦合和聚合。模块独立性6.3 模块化设计 耦合:度量不同模块彼此间互相依赖(联结)的紧密程度。 聚合:衡量一个模块内部各个元素彼此结合的紧密程度。38 耦合(coupling)强弱取决于模块间联结形式及接口的复杂程度。模块间接口的复杂性越高,说明联结的程度越高。模块独立性耦合6.3 模块化设计 模块之间的耦合程度直接影响系统的可读性、可维护性及可靠性。 在系统设计中应尽可能追求松散耦合的系统。39 聚合(cohesion)标志一个模块内部各个元素彼此结合的紧密程度,主要表现在模块内部各个元素为了执行处理功
18、能而组合在一起的程度。模块独立性聚合6.3 模块化设计 希望系统中的每个模块具有高度的聚合性,它的各个元素都是彼此密切相关的,是为完成一个共同的功能而结合在一起的。 在系统设计中应尽可能追求高聚合的系统。40 影响模块之间联结程度的最主要因素是模块间的联结形式。模块的耦合 模块间的联结形式有4种: 数据耦合 控制耦合 公共耦合 内容耦合6.3 模块化设计41 如果两个模块彼此间通过参数交换信息,而且每一个参数仅仅为数据,那么这种耦合称之为数据耦合。模块的耦合数据耦合 数据耦合是系统中必不可少的联结形式,它是一种最低的耦合,是一种理想的模块联结。6.3 模块化设计 一个系统内可以将所有模块只设计
19、成数据耦合。42模块的耦合数据耦合6.3 模块化设计A数据信息C数据信息B 示例:43 如果两个模块彼此间传递的信息间有控制信息,那么这种耦合称之为控制耦合。模块的耦合控制耦合 控制耦合与数据耦合很相似,只不过传递参数中一个仅仅为数据,而另一个含有控制信息。6.3 模块化设计 控制耦合可以通过适当的方式,如模块的再分解,而转化为数据耦合,但在某些特殊的场合下,控制耦合还有一定的必要。44模块的耦合控制耦合6.3 模块化设计A控制信息C数据信息B 示例:45 如果两个模块彼此间通过一个公共的数据区域传递信息时,称之为公共耦合或公共数据域耦合。模块的耦合公共耦合 公共数据域实际上就是被设计成为多个
20、模块公用数据的区域。6.3 模块化设计 公共耦合是一种不好的联结形式,尤其当一个公共数据区域被多个模块共同使用时,模块数越多,则其耦合的复杂度越大。46模块的耦合公共耦合6.3 模块化设计 示例:ABCDEF公共数据区47 如果一个模块需要涉及另一个模块的内部信息时,则这种耦合称内容耦合。 一个模块访问另一个模块的内部数据; 一个模块调用执行另一个模块中间的部分程序 代码; 模块的出、入口不符合单入单出。模块的耦合内容耦合6.3 模块化设计 内容耦合的耦合度最高,因此应该坚决避免使用这种耦合。48模块的耦合联结方式比较6.3 模块化设计49 结论: 模块间尽量使用数据耦合; 必要时才采用控制耦
21、合; 对公共耦合应限制耦合的模块数(数据库除外); 坚决不用内容耦合。模块的耦合6.3 模块化设计50 模块内部的紧凑性主要表现在一个模块内部各组成部分之间的联系。模块的聚合 模块间的聚合有7种,我们追求模块的功能聚合,这是因为此时模块具有最强的紧凑性。6.3 模块化设计 对于非功能性聚合的模块应尽量使其转化为功能聚合的模块。通常只需对模块的结构作一番调整就可改进其紧凑性。51 如果一个模块所要完成的动作之间没有任何关系,或者即使有某种关系,也是非常松散的,就称之为偶然聚合。模块的聚合偶然聚合 偶然聚合内部的紧密程度等于零,无法将其作为一个独立的模块去理解。6.3 模块化设计 偶然聚合的最大缺
22、陷就在于不易修改,此外,可读性也极低。526.3 模块化设计 示例: 当设计模块A、B、C时,发现均有相同的部分代码,则把抽出作为一模块。只是若干条无关语句的简单拼凑,其本身与系统的数据流、控制流无关。模块的聚合偶然聚合53 如果一个模块内部的各个组成部分在逻辑上具有相似的处理动作,但功能上、用途上却彼此无关,则称之为逻辑聚合。模块的聚合逻辑聚合 在调用逻辑聚合的模块时,必须完全知道该模块的内部属性。因此,它和其它模块之间具备有相当复杂的耦合,其可修改性差,维护困难。6.3 模块化设计546.3 模块化设计 示例:模块的聚合逻辑聚合ABCDEFGABCDH55 如果一个模块内部的各个组成部分所
23、包含的处理动作必须在同一时间内执行,则称之为时间聚合。模块的聚合时间聚合 时间聚合是将需要同时执行的部分放在同一模块内。6.3 模块化设计时间聚合模块的紧凑性也较低,缺陷是修改性较差,维护较困难。但它在一定程度上反映了系统的某些实质,因此,比逻辑聚合要强一些。56 如果一个模块内部各个组成部分所要完成的动作彼此间没什么关系,但必须以特定的次序(控制流)执行,则称之为过程聚合。模块的聚合过程聚合 过程聚合模块常是由程序流程图直接演变过来,它的处理动作彼此并没有什么关系,但在同一控制流支配下汇集在一个模块中。在过程聚合中,次序是唯一重要的,这种次序可能是顺序、判断或循环。6.3 模块化设计 过程聚
24、合较时间聚合等强,但可修改性不高。57 如果一个模块内部的各个组成部分所完成的动作都使用了同一个输入数据或产生同一输出数据,则称之为通信聚合。模块的聚合通信聚合 通信聚合的模块与其它模块间的联系较简单,其内部紧凑性比过程聚合强,但它的各部分的执行次序可以是任意的,容易产生重复的动作。6.3 模块化设计586.3 模块化设计 示例: 模块A、B调用C时,使用文件编号作为参数调用,而C则将该文件保存,并予以打印,其中保存、打印均是针对同一文件。这里C就称为通信聚合模块。模块的聚合通信聚合ABC59 对一个模块内部的各组成部分,如果前一部分处理动作的输出是后一部分处理动作的输入,则称之为顺序聚合。模
25、块的聚合顺序聚合 顺序聚合模块的紧凑性比较高,与其它模块的联系也较低,通常根据数据流图划分模块时,得到顺序聚合模块。6.3 模块化设计 顺序聚合比通信聚合好。但由于顺序聚合模块中可能包含了几个功能,也可能仅为某个功能的一部分,因此比功能聚合模块要差一些。606.3 模块化设计 示例: 模块A有两部分组成,一部分为读入,另一部分为编辑。显然,读入部分将其输出数据作为编辑部分的输入,因此,A是顺序聚合模块。模块的聚合顺序聚合数据读入编辑61 如果一个模块内部各个组成部分全部为执行同一功能而属于一个整体,则称之为功能聚合模块。模块的聚合功能聚合 功能聚合的模块都具有一个目的、有单一的功能,因而其界面
26、非常清楚,与其它模块的联系低,可读性、可修改性,维护性、可测试性均很好。6.3 模块化设计 应尽可能地追求功能聚合。62模块的聚合比较6.3 模块化设计63 模块耦合与聚合是模块设计中最为重要的概念,尽可能地降低模块之间的耦合程度和提高模块内部的聚合程度是我们设计中的两项重要原则。若干其它设计原则和有益的建议 还存在若干辅助性的原则,同时在不断地反复实践与思考的基础上,人们在信息系统的设计中积累了大量的经验,这些经验对于我们都是极为有益的。6.3 模块化设计64 对于初步设计出的系统结构,应该仔细地分析与审查,发现高耦合、低聚合的模块,并通过模块的分解与合并,改进系统结构,从而降低耦合、提高聚
27、合。改进系统结构6.3 模块化设计65改进系统结构 对于若干模块共有的一个子功能,应当将其独立抽出,作为一个新的模块可被前述的模块所调用。设计中应提供更多的共用性强的模块,从而简化程序设计工作。 尽可能地采用数据信息作为模块之间联系的媒介,可以通过分解等手段,将一些传递控制信息或其它非数据信息的模块转化数据耦合的模块。6.3 模块化设计 一般的方法有:66改进系统结构 强调以功能划分模块。每一模块尽量做到只有单一的功能,对于复杂的模块应从功能的角度出发予以分解。 强调系统的整体性大于局部的最优性,不片面追求系统中每一模块最优设计,局部的优化应服从整体的安排。6.3 模块化设计 一般的方法有:6
28、7 系统的深度(depth)表示系统结构中的控制层数,宽度(width)则表示控制的总分布,即同一层次的模块总数的最大值。系统的深度与宽度6.3 模块化设计 一般情况下,深度和宽度标志着一个系统的大小和复杂程度,它们之间应有一定的比例关系,即深度和宽度均要适当。深度过大可能说明系统分割的过分细化;宽度过大,则有可能带来系统管理上的困难。68 一个模块控制的直属下级模块的个数称为该模块的扇出(Fan-Out);反之,一个模块的直接上级模块的个数称模块的扇入(Fan-In)。模块的扇出与扇入6.3 模块化设计 模块扇出直接影响系统的宽度,模块的扇入通常说明模块的通用性情况。696.3 模块化设计
29、示例:模块的扇出与扇入ABCEFDGH70 一个模块的规模不可过大,也不可过小。过大的模块常常是系统分解的不充分,其内部可能包含了若干部分的功能,使模块聚合降低,因此有必要作进一步分解,即把原有的模块变成若干功能尽可能单一的较小的模块。但分解也必须适度,因为过小的模块有可能降低模块的独立性,造成系统接口的复杂。模块的规模6.3 模块化设计 一个模块的规模最好限制在一页纸内,即能用大约30条语句对它加以描述。71 模块的作用范围是指受该模块内部的一个判定影响的所有模块的集合,只要某一模块中含有一些依赖于这个判定的操作,那么该模块就在这个判定的作用范围之中,如果整个模块的全部操作都受该判定的影响,
30、则这个模块连同它的上级模块都在这个判定的作用范围内。模块的作用范围和控制范围6.3 模块化设计 模块的控制范围包括该模块本身及所有的下属模块的集合。72 所有受模块M 的一个判定影响的模块应从属于模块M,即对任何一个内部存在判定调用逻辑的模块,其作用范围应是其控制范围的子集。 受模块M判定影响的模块,最好局限在模块M本身或其直属下级模块,即作出判定的模块与属于该判定作用范围的模块在系统的层次上不能相隔过远,否则会增大模块间的耦合。6.3 模块化设计 一个“好”的系统设计中,对于模块的控制范围和作用范围,存在着下面两条规则:模块的作用范围和控制范围736.3 模块化设计 示例:设模块B作出的判定
31、影响到模块E和模块C,而模块C又不在B的控制范围内,这样的结构难以理解。模块的作用范围和控制范围ACDBEFG74 将作判定的模块合并到它的调用模块中或把判定上移到足够高的位置。 将受判定影响的模块下移到作判定模块的控制范围内。6.3 模块化设计 如果发现模块的作用范围不在其控制范围内,可进行下述的改进:模块的作用范围和控制范围756.3 模块化设计 示例:前图中的模块C可移到模块B下。模块的作用范围和控制范围ACDBEFG76 应该设计单入口、单出口的模块,从而不使模块间出现内容耦合;一个模块,应设计成“暗盒”形式,只完成一个单独的子功能,这就使得模块内部有很强的聚合;模块的接口设计简单,若
32、接口复杂,则有可能存在高耦合、低聚合。其它有益的建议6.3 模块化设计 “具体问题具体分析”77第6章 系统设计 系统设计概述 结构化设计原理 模块化设计 面向数据流的设计 面向数据结构的设计 HIPO图78 结构化设计实际上是一种面向数据流的设计(Data FlowOriented Design,简称DFOD),它是与数据流分析对应的系统设计技术。6.4 面向数据流的设计 面向数据流的设计方法是由L. Constantine和E. Yourdon等人首先提出的,强调用一组标准的准则和工具来构造、描述系统。 它根据数据流图特性定义两种“映射”,这两种映射能机械地将数据流图转换为模块结构图。79
33、6.4 面向数据流的设计 结构图是一种强有力的图形表达工具,它可用于表达系统内部各部分的结构和相互关系,是进行系统结构设计的最常用的方法。 在结构图中,常用的有6种符号。结构图806.4 面向数据流的设计结构图表示模块表示模块之间的调用关系表示模块之间的数据传递关系表示模块之间的控制传递关系表示一个模块包含的循环调用功能表示一个模块内部包含的判定处理逻辑81 示例:某财务系统中审核凭证处理过程的数据流图。用户向系统输入需要审核的凭证编号,系统从财务数据库中自动读取该凭证号下的记录,并予以审核,然后显示审核结果。6.4 面向数据流的设计结构图用户输入凭证号取得数据记录审核数据库正确凭证错误凭证8
34、2 示例:凭证审核处理过程模块结构图。6.4 面向数据流的设计结构图凭证审核输凭证号读取数据审核输出结果凭证号凭证号数据数据结果结果836.4 面向数据流的设计 结构图与数据流图有着本质的区别: 数据流图反映的是系统的逻辑模型,是从数据在系统中的流动情况来考虑系统的;结构图则是描述系统的物理模型及系统的功能是怎样逐步完成的,它从系统的功能层次上来考虑系统。 结构图并没有严格地表示模块的调用次序,而只表明模块的调用关系。 结构图也不指明上级模块在什么时候调用下层模块。结构图846.4 面向数据流的设计 DFD一般可归纳为两种典型的结构:设计过程变换流与事务流 变换流 事务流856.4 面向数据流
35、的设计 在基本系统模型(即顶层数据流图)中,数据通常以“外部世界”所具有的形式进入系统,经过处理后又以这种形式离开系统。 变换流是一种近似线性结构,可明显地划分为输入、处理、输出三个部分。设计过程变换流86 示例:6.4 面向数据流的设计 设计过程变换流数据输入流 输出流外部表示变换流数据内部表示 逻辑输出时间逻辑输入876.4 面向数据流的设计 事务流实际上是以某项业务为基本数据单元来触发事务中心,并由该中心辐射出许多条动作路径,但每次仅沿一条路径流动的数据流。 通常系统中的数据均采用变换流分析。设计过程事务流88 示例:6.4 面向数据流的设计事务事务中心T 动作路径设计过程事务流896.
36、4 面向数据流的设计 DFOD方法能方便地将数据流图转换为模块结构图,其过程分为五步: 确定数据流的类型; 划定转换的边界; 将数据流图映射成基本的模块结构图; 分层求精模块结构图; 应用模块设计和优化准则,优化模块结构图。设计过程设计步骤906.4 面向数据流的设计 DFOD设计过程:精化数据流图流的类型找出变换中心找出事务中心映射为变换结构映射为事务结构导出模块结构优化模块结构检查设计过程设计步骤916.4 面向数据流的设计 一个实际系统的数据流图是变换流和事务流两种类型的混合体。输入输出变换中心事务中心设计过程设计步骤926.4 面向数据流的设计 变换分析(transform analy
37、sis)就是从变换型数据流图映射出模块结构图的过程,也称为以变换为中心的设计。 运用变换分析方法,首先根据数据流图上的处理框,找出主要处理功能,即变换中心,把数据流图划分为输入、处理、输出三大部分,从而得到结构图的第一层模块分解图。通过对该图做进一步的分解和优化,便可获得系统的最终模块结构图。变换分析936.4 面向数据流的设计变换分析变换输出输入中心(a)(b)变换处理输入处理输出 变换分析的一般形式:946.4 面向数据流的设计 变换分析方法主要由以下三个步骤组成: 分析数据流图,确定它的主要处理(中心变换)、输入和输出功能; 设计上层模块; 设计输入、输出和变换中心的下层模块。变换分析9
38、56.4 面向数据流的设计 从物理输入端开始,沿着每一个由数据源传入的数据流的移动方向进行跟踪,或者逐步向中心移动,直到数据流不再被看作系统的输入为止,这时,它的前一个数据流就称为逻辑输入。变换分析确定中心变换与输入输出 从物理输出端开始,逐步向系统的中间移动,直到找出离物理输出端最远的,但仍可看作是系统的输出的那个数据流,此数据流即为逻辑输出。 找出系统的中心变换,即位于逻辑输入和逻辑输出之间的处理功能。96 示例:根据用户输入的编码修改帐目的数据流图,显然,“修改帐目”为中心变换。6.4 面向数据流的设计用户输入修改内容查找帐目修改帐目重新排列编码表帐目文件变换分析确定中心变换与输入输出9
39、76.4 面向数据流的设计 确定了变换中心实际上就决定了系统结构的“顶”。系统的上层模块分两层,顶层是个主模块,主模块的下层(第一层)由输入部分、变换中心部分和输出部分组成。变换分析上层模块的设计 设计结构的第一层:为每一个逻辑输入设计一个输入模块,它的功能是向主模块输入数据;为每一个逻辑输出设计一个输出模块,它的功能是将主模块提供的数据输出;对变换中心部分中的每个变换设计一个变换模块,它的功能是接收输入数据,进行变换,然后输出。98 示例:根据据流图画出第一张结构图。6.4 面向数据流的设计修改帐目获得输入修改帐目输出写帐目文件内容内容帐目记录变换分析上层模块的设计996.4 面向数据流的设
40、计 设计下层模块的工作实际上是自顶向下、逐步细化上层模块的过程。要充分运用我们前面已讲述过的模块设计原则和经验。变换分析设计输入输出和变换中心的下层模块 设计方法:设计输入输出部分的下层模块:为每一输入(出)模块设计两个下层模块,数据输入(出)和变换模块。设计变换模块的下层设计变换模块的下层没有一定的规则可遵循,应用模块设计原则来考虑每一变换的分解。100 示例:在前图基础上画出的比较合理的结构图。6.4 面向数据流的设计变换分析设计输入输出和变换中心的下层模块修改帐目获得数据修改输出写帐目文件帐目记录修改后数据检索记录文件输入变换数据形式显示或打印修改内容编码帐目记录输出内容1016.4 面
41、向数据流的设计 所谓一件事务,实际上是指一组数据或事件流入系统,并引起一组处理动作。 事务分析(transaction analysis)就是对事务型结构的数据流图进行变换,从而导出标准的结构图的一种方法,它是结构系统设计中另一项主要设计策略。事务分析1026.4 面向数据流的设计 一个大的系统一般是变换型结构和事务型结构的混合体,往往需要同时采用变换分析和事务分析。 通常以变换分析为主,事务分析为辅设计: 找出输入、输出及事务中心,设计系统结构图的上层; 根据数据流图各部分的结构特点适当地运用变换分析或事务分析方法,得出初始模块结构图; 优化处理,导出系统最终模块结构图。事务分析103示例:
42、主模块、事务处理模块、操作模块、细节模块。6.4 面向数据流的设计事务分析事务分析分析事务类型分配事务类型处理事务A处理事务B处理事务C处理1处理21046.4 面向数据流的设计一般,事务分析具有如下的步骤: 识别事务源 确定适当的事务型结构 确定各种事务及相应的处理 合理建立公用模块 对每一类型的事务,建立一个事务处理模块 对事务处理模块,建立直属于该事务处理的下 级模块(操作模块) 为操作模块设计其全部的细节模块事务分析105示例:企业销售子系统数据流图。6.4 面向数据流的设计事务分析顾客获得销售信息确定信息类型按日期统计分析销售时间分布按地区统计分析销售地区分布按顾客统计分析销售顾客分
43、布按产品统计分析销售产品分布分析经过处理106示例:企业销售子系统的事务型结构图。6.4 面向数据流的设计事务分析销售分析获得销售信息类型调度处理编辑销售信息分析信息类型按日期统计按地区统计按顾客统计按产品统计分析时间分布分析地区分布分析顾客分布分析产品分布1076.4 面向数据流的设计 初始结构图的导出,并不意味着系统模块设计的完结,还存在着大量改进的优化工作。 改进初始设计一般应: 检查初始设计方案 优化方案设计优化1086.4 面向数据流的设计 着重检查以下几个方面: 系统的结构(系统的深度与宽度、模块的扇出扇入及模块的作用范围与控制范围等) 模块之间的耦合度(模块之间联系的方式) 模块
44、内部的聚合度(内部紧凑性) 系统的性能(可读性、可维护性、可修改性及可靠性)设计优化检查初始设计方案1096.4 面向数据流的设计 具有最佳设计的,但不能工作的系统是糟糕的; 系统全局的优化远远超过局部的优化; 简单而又有能满足所有功能性能要求的设计方案,意味着系统实现方案运行高效、可靠性高; 可读性、可维护性、可修改性好的系统具有更强的生命力。设计优化解决的办法110第6章 系统设计 系统设计概述 结构化设计原理 模块化设计 面向数据流的设计 面向数据结构的设计 HIPO图1116.5 面向数据结构的设计方法 基于系统IPO基本模型,对于建立这个基本模型的次序就决定了方法的不同。 面向过程的
45、方法:传统的开发方法把处理过程看作系统模型的基本部分,数据是跟随功能的,如面向数据流的设计方法。 面向数据结构的设计方法:把模型的输入、输出部分看作是最重要的,首先定义的是数据结构,而过程模块则是从数据结构中导出的,即功能跟随数据。112 Jackson是以数据结构为基础并通过一组映射或转换过程建立系统的模块结构的,这是与以数据流图为基础构成模块化结构的结构化设计最主要区别。 Jackson方法的发展可分为两个阶段: 70年代Jackson方法的核心是面向数据结构的设计,以数据驱动为特征; 80年代以来,Jackson方法已经演变到基于进程模型的事件驱动。Jackson设计方法6.5 面向数据
46、结构的设计方法113 Jackson数据结构图的三种基本类型:顺序、选择、循环。 “*”表示多次出现,即循环 “O”表示选择 Jackson方法是把问题分解为三种基本结构形式表示的各部分层次结构,提出一种与数据结构层次图非常类似的结构表示法,并提出一组基于这种数据结构到模块结构的映射和转换过程。Jackson设计方法Jackson图6.5 面向数据结构的设计方法114示例:Jackson设计方法Jackson图6.5 面向数据结构的设计方法ABCDAB。CDAB*。 (a) (b) (c)115 Jackson方法主张模块结构与问题结构相对应,对一般数据处理系统而言,其问题的结构可由它所处理的
47、数据结构来表示。 许多系统处理的是具有层次结构的数据,例如文件是由记录组成的,记录又是由若干个数据项组成。对于此类的数据处理,采用Jackson方法能非常容易地导出处理模块结构。Jackson设计方法Jackson方法6.5 面向数据结构的设计方法116示例:Jackson设计方法Jackson方法6.5 面向数据结构的设计方法文件记录*数据项1数据项2数据项n处理文件处理记录*处理项1处理项2处理项3117 Jackson方法与结构图方法不同之处是: 结构图表现模块与模块的调用关系,其每个方框代表一个模块,每个模块除了调用下级模块外,本身还有许多处理; Jackson 图表现处理的组成关系,
48、即一个方框中包括的处理动作仅仅由它下层方框中的处理动作组成 Jackson 方法常常用于由数据结构产生处理模块的内部结构,即用于模块的详细设计,当然Jackson方法也可用于表现模块与模块之间的处理关系。Jackson设计方法Jackson方法6.5 面向数据结构的设计方法118 Jackson方法基本上包括下述三个步骤: 分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描述这些数据结构; 找出输入数据结构和输出数据结构有对应关系的数据单元,即找出输入与输出数据结构之间的内容、数量、次序上的对应性; 从描述数据结构的Jackson 图导出描述模块结构的Jackson图。 列出所有的操作和条件,并把它们分配到模块Jackson图中的适当位置。Jackson设计方法Jackson方法6.5 面向数据结构的设计方法119 从描述数据结构的Jackson 图导出描述模块结构的Jackson图:为每对有对应关系的数据单元,按照它们在数据结构图中的层次(如果在输入数据结构与输出数据结构中有不同的层次,那么以较低的层次为参
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内力作用知识点课件
- 影楼元旦活动方案策划(3篇)
- 牛奶刨冰活动方案策划(3篇)
- 甲方厂区物业管理制度(3篇)
- 质量管理制度与执行(3篇)
- 钳工班组工具管理制度(3篇)
- 《GA 1052.5-2013警用帐篷 第5部分:60m2单帐篷》专题研究报告深度
- 《GA 674-2007警用服饰 丝织胸徽》专题研究报告
- 2026年及未来5年市场数据中国消费品检测行业市场深度分析及发展趋势预测报告
- 2026年及未来5年市场数据中国智慧商城建设行业市场竞争格局及发展趋势预测报告
- 邮政服务操作流程与规范(标准版)
- 2026昆山钞票纸业有限公司校园招聘15人备考题库及1套完整答案详解
- 2026年重庆市江津区社区专职人员招聘(642人)考试参考题库及答案解析
- 2026年1月福建厦门市集美区后溪镇卫生院补充编外人员招聘16人笔试模拟试题及答案解析
- 单纯疱疹病毒感染教学演示课件
- 广东省中山市2023-2024学年四年级上学期期末数学试卷
- 变配电室送电施工方案
- 地质勘查现场安全风险管控清单
- 松下panasonic-经销商传感器培训
- 建设工程项目施工风险管理课件
- 口腔门诊行政人事制度
评论
0/150
提交评论