1.3k likes | 1.55k Views
第 6 章 系统设计. ◆ 系统设计概述 ◆ 结构化设计原理 ◆ 模块化设计 ◆ 面向数据流的设计 ◆ 面向数据结构的设计 ◆ HIPO 图. 第 6 章 系统设计. 系统设计( System Design )就是为实现系统分析提出的系统逻辑模型所作的各种技术考虑和设计 系统设计又称为系统的物理设计,即是根据新系统逻辑模型建立系统的物理模型. 计算机系统及其它硬设备的选择 系统的分解与组织 原始数据的组织和输入 输出信息的方式和管理 文件与数据库的组织和管理
E N D
第6章 系统设计 ◆系统设计概述 ◆ 结构化设计原理 ◆ 模块化设计 ◆ 面向数据流的设计 ◆ 面向数据结构的设计 ◆HIPO图
第6章 系统设计 系统设计(System Design)就是为实现系统分析提出的系统逻辑模型所作的各种技术考虑和设计 系统设计又称为系统的物理设计,即是根据新系统逻辑模型建立系统的物理模型
计算机系统及其它硬设备的选择 系统的分解与组织 原始数据的组织和输入 输出信息的方式和管理 文件与数据库的组织和管理 代码的设计与确定 通信网络的设计 系统的安全保密性设计 系统实施计划 其它 6.1 系统设计概述 系统设计的任务
更快、更准、更多地提供资料 更多、更细的处理功能 更有效、更科学的管理方法 6.1 系统设计概述 系统设计的目标 系统设计的目标是:在保证实现逻辑模型的基础上,尽可能地提高系统的各项指标,即系统的运行效率、可靠性、可修改性、灵活性、通用性和实用性。正确划分人工处理与计算机处理。
系统的运行效率包括三个方面的内容,即: ——处理能力 指在单位时间内能够处理的事务 个数 ——处理速度 指处理单个事务的平均时间 ——响应时间 指从发出处理要求到给出回答所 用的时间 6.1 系统设计概述 系统设计的目标—运行效率 不同处理方法的系统,其运行效率有不同的含义。不同计算模式;对请求的不同响应方式
影响系统运行效率的因素一般取决于: ——系统中硬件及其组织结构 ——计算机处理过程的设计质量 中间文件的数量 文件的存取方法 子程序的安排及软件编制质量 6.1 系统设计概述 系统设计的目标—运行效率
系统的可靠性是指系统运行过程中,抵抗异常情况(人为的和机器的故障)的干扰、保证系统正常工作的能力 ——软件可靠性:随着软件工具水平而提高 ——硬件可靠性:冗余设计 6.1 系统设计概述 系统设计的目标—可靠性 系统的可靠性包括:检、纠错的能力,对错误的容忍能力,排除错误的能力等
衡量系统可靠性的重要指标: ——平均故障间隔时间(MTBF):指平均的系统前后两次发生故障的时间,这反映了系统安全运行的时间 ——平均维护时间(MTTR):指发生故障后平均每次所用的修复时间,它反映系统可维护性的好坏 6.1 系统设计概述 系统设计的目标—可靠性
系统的有效性: 系统的有效性 = MTBF / (MTBF+MTTR) 6.1 系统设计概述 系统设计的目标—可靠性 提高系统可靠性的途径主要有: ——设计中尽可能地避免出错 ——对可能出现的错误,系统要有完善的检、纠错功能和对安全的考虑 ——对可能的错误进行出错冗余设计
系统的可修改性是指系统容易修改程度,没有一个定量的标准,而是通过比较得出的结果 6.1 系统设计概述 系统设计的目标—可修改性 应用合理的系统设计原则,能够对系统的可修改性产生积极的影响。(系统分解的好坏) 系统的可修改性之所以重要,是因为一个系统从设计到建成运行,总是处于不断的变化之中,这就必然引起修改和维护
这些变化包括: ——系统需求和环境的变化 ——现代信息技术如计算机技术、管理决策 方法等的发展 ——系统本身总是处于不断地完善之中,不 适应或错误在所难免 6.1 系统设计概述 系统设计的目标—可修改性
系统设计过程中,始终要明确应用计算机处理和人工处理的界线 6.1 系统设计概述 系统设计的目标—划分计算机处理与人工处理 系统设计中要避免这样两种倾向: ——一味地追求计算机处理,将许多只能由人完成的工作交计算机去干,从而造成设计的复杂和不够科学 ——把本该由计算机完成的工作交由人去处理,从而使新系统的功能、性能以及用户的目标得不到体现
两种处理过程的不同特点: ——处理速度不同。(阅卷;编目) ——概念的精确程度不同。(涉及语义的工作) ——对处理的信息的结构化程度要求不同 ——工作效率的稳定性不同 ——意外情形的处理 ——费用的考虑 6.1 系统设计概述 系统设计的目标—划分计算机处理与人工处理
划分计算机处理与人工处理的基本原则是: ——复杂的科学计算,大量重复的数学运算、统计、汇总、报表、数据库检索、分类、文字处理、图形图象基本处理、有关数据的采集、通信等应由计算机完成 ——传统的人工判定,目前没有成熟的技术可以应用,或代价太高,则仍用人工处理 ——决策性问题中,计算机尽可能提供决策依据,由人进行最后决策 ——设计人机接口,考虑时间的匹配,代码的统一、格式的协调等 6.1 系统设计概述 系统设计的目标—划分计算机处理与人工处理
第6章 系统设计 ◆系统设计概述 ◆ 结构化设计原理 ◆ 模块化设计 ◆ 面向数据流的设计 ◆ 面向数据结构的设计 ◆HIPO图
历史沿革: ——早期的计算机应用,由于受到硬、软件的限制,只是编制了一些简单程序,其设计工具是程序流程图 ——计算机技术的发展及领域的不断扩大与复杂,使得程序流程图不能满足设计的需要 —— 70年代以来,出现了多种设计方法,其中有代表性的是结构化设计方法、Jackson方法、Warnier方法和Parnas方法 6.2 结构化设计原理 结构化设计方法
设计思想: ——基本思想是对问题要有一个总的看法,由概括到具体、逐层分解问题 ——强调把一个系统设计成具有层次式的模块化结构,并且用一组标准的准则和工具帮助系统设计人员确定组成系统的模块及相互关系 6.2 结构化设计原理 结构化设计方法
设计思想: 结构化系统设计(structured system design)方法体现了自顶向下、逐步求精的原则,采用先全局后局部、先总体后细节、先抽象后具体等过程开发系统,从而使系统结构清晰,可读性、可修改性、可维护性等指标优异 6.2 结构化设计原理 结构化设计方法
特点: ——对一个复杂的系统,应用自顶向下,逐步求精 的方法予以分解和化简 ——强调采用模块化的设计方法,并有一组基本设 计策略 ——采用结构图的方式作为模块设计的工具 ——有一组评价设计方案质量的标准及优化技术 6.2 结构化设计原理 结构化设计方法
重要内容: (1)合理地进行模块分解和定义,使一个复杂系统的设计转化为若干种基本模块的设计 结构化设计的分解原则 ——把密切相关的子问题划归为系统的同一部分 ——把不相关的问题划归为系统的不同部分 6.2 结构化设计原理 结构化设计方法
重要内容: (2)有效地将模块组织成一个整体,从而体现系统的设计功能 结构化系统设计与结构化的系统分析有着密不可分联系,它是以系统的逻辑模型和数据流图为基础,借助于一套标准的设计方法和图表工具,通过自顶向下或自底向上的方法,逐层把系统划分为多个大小适当、功能明确、具有一定独立性的模块 6.2 结构化设计原理 结构化设计方法
模块化原理:依据系统是由元素和结构组成,且它们又可分层、分类的思想,一个信息系统可被逐层划分为大小适当、功能明确独立且容易实现的模块,并由它们的协调和组合去共同达到系统的设计目标 6.2 结构化设计原理 模块化原理 模块化原理(modularization)的基本思想是可分性,即最大限度地降低系统设计的复杂性,把问题层层分解,直到容易解决为止。这样就降低了人为划分的主观影响,增强了问题的客观性
信息隐蔽原理是指导人们按信息相关度划分模块的一个原理 6.2 结构化设计原理 信息隐蔽原理 信息隐蔽原理(information hiding)的基本思想是:在一定规模和条件的限制下,把那些对模块功能相关度最大的信息(如过程与数据)分在一个模块内,而把最少的完成功能所需的交互信息划分在该模块外(接口)。换言之,模块的划分应该使得包含在模块内的信息对于无需这些信息的模块是不可访问的
信息隐蔽原理是把任何系统划分成子系统的普遍性原理 6.2 结构化设计原理 信息隐蔽原理 信息隐蔽原理的好处是:模块内部的错误很少可能传播到系统的其它模块 ——最大限度地体现了模块在概念和功能上的独立性、相对完整性和封闭性 ——给系统结构和模块的实现、维护带来了方便
6.2 结构化设计原理 时空等价原理 时空等价原理的含义: ——从理论上讲,对于一个特定的系统功能或模块功能,既可由硬件模块去完成,又可由软件模块去完成,此即功能等价 ——硬件有耗费空间但速度快的属性,而软件有耗费时间但少耗费空间的属性 ——对系统的资源合理分配,使同一功能由耗费时空最少的模块或子系统去承担。如星地协同处理,移动计算,软件无线电,软件固化等。
运用时空等价原理划分硬、软件子系统或模块时,必须按系统与环境的约束条件在系统硬、软件的时空属性中进行综合折衷。此时,就会应用时空的另一个重要原理:时空权衡原理 6.2 结构化设计原理 时空等价原理 时空权衡原理(space-time tradeoff)是指:牺牲空间或者其它替代资源,通常都可以减少时间代价。反之亦然
第6章 系统设计 ◆系统设计概述 ◆ 结构化设计原理 ◆ 模块化设计 ◆ 面向数据流的设计 ◆ 面向数据结构的设计 ◆HIPO图
定义:在软件角度,所谓模块(module)是指这样的一组程序语句(或描述),它包括输入与输出、逻辑功能描述、内部信息及其运行环境 6.3 模块化设计 模块 ——输入与输出:从调用者处获得输入信息,经过模块本身的处理后,再把输出返送给调用者 ——逻辑功能:描述该模块能够做什么样的事情,具备什么样的功能 ——内部信息:模块执行的指令和在模块运行时所需要的属于该模块自己的数据 ——运行环境:模块的调用与被调用的关系
6.3 模块化设计 模块的特征 • 抽象 • 信息隐蔽 • 其它 模块 的特征
定义:把系统划分为若干个模块,每个模块完成一个特定的功能,然后将这些模块汇集起来组成一个整体(即系统),可以完成指定的功能,满足问题的要求 6.3 模块化设计 模块化
6.3 模块化设计 模块化 设对于两个问题P1、P2,C(P1)、C(P2)表示问题的复杂程度,而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)
推而广之,当一个系统有n个独立元素时,一般总有推而广之,当一个系统有n个独立元素时,一般总有 C(P1+ P2+…+Pn)> C(P1)+C(P2)+…+ C(Pn) 及 E(P1+ P2+…+Pn)> E(P1)+E(P2)+…+ E(Pn) 这就是模块化的依据 6.3 模块化设计 模块化
能否认为,如果我们无限地分割系统,最终将导致最基本模块的设计非常容易,因而使得设计系统的工作量非常小? 6.3 模块化设计 模块化 这个结论是错误的 当模块数目增加时,每个模块的规模将减小,开发单个模块所需的成本(工作量)确实减少了,但随着模块数目的增加,设计模块间接口的工作量也将增加 目标是尽量寻求一个合理的模块分解数目
好的系统结构满足: ——每个模块完成一个相对独立的特定功能(保证了按模块分解后的设计工作量将小于按整个系统设计的工作量) ——模块之间的接口简单(使设计中的接口成本最小) 6.3 模块化设计 模块独立性
具有独立功能而且和其它模块之间没有过多相互作用的模块,我们称之为独立的模块。这种开发方法,就可以做到模块独立。 6.3 模块化设计 模块独立性 所谓两个模块彼此完全独立,是指其中任意一个模块在运行时,与另一个模块的存在与否完全无关。 独立只是一个抽象的、相对的概念。
模块独立的作用: ——具有独立性的系统比较容易开发,这是由于能够分割功能而且接口可以简化。系统开发常常由若干人的分工合作完成的,这时具有模块独立性的优点就尤为重要。 ——模块的独立性越好,模块的相互影响就越少。当系统中某一模块出错时,产生连锁反应的概率就越低,从而提高了系统的可靠性。 ——独立的模块比较容易测试和维护。这是因为错误的传播范围小,较容易定位,而且对一个模块进行修改或维护时,不担心其它模块的内部是否会受到影响。 6.3 模块化设计 模块独立性
模块的独立程度可以由两个定性标准度量,这两个分别称为耦合和聚合。 6.3 模块化设计 模块独立性 ——耦合:度量不同模块彼此间互相依赖(联结)的紧密程度。 ——聚合:衡量一个模块内部各个元素彼此结合的紧密程度。
耦合(coupling)强弱取决于模块间联结形式及接口的复杂程度。模块间接口的复杂性越高,说明联结的程度越高。 6.3 模块化设计 模块独立性—耦合 模块之间的耦合程度直接影响系统的可读性、可维护性及可靠性。 在系统设计中应尽可能追求松散耦合的系统。
聚合(cohesion)标志一个模块内部各个元素彼此结合的紧密程度,主要表现在模块内部各个元素为了执行处理功能而组合在一起的程度。 6.3 模块化设计 模块独立性—聚合 希望系统中的每个模块具有高度的聚合性,它的各个元素都是彼此密切相关的,是为完成一个共同的功能而结合在一起的。 在系统设计中应尽可能追求高聚合的系统。
影响模块之间联结程度的最主要因素是模块间的联结形式。 6.3 模块化设计 模块的耦合 模块间的联结形式有4种: ——数据耦合 ——控制耦合 ——公共耦合 ——内容耦合
如果两个模块彼此间通过参数交换信息,而且每一个参数仅仅为数据,那么这种耦合称之为数据耦合。 6.3 模块化设计 模块的耦合—数据耦合 数据耦合是系统中必不可少的联结形式,它是一种最低的耦合,是一种理想的模块联结。 一个系统内可以将所有模块只设计成数据耦合。
示例: A 数据信息 数据信息 B C 6.3 模块化设计 模块的耦合—数据耦合
如果两个模块彼此间传递的信息间有控制信息,那么这种耦合称之为控制耦合。 6.3 模块化设计 模块的耦合—控制耦合 控制耦合与数据耦合很相似,只不过传递参数中一个仅仅为数据,而另一个含有控制信息。 控制耦合可以通过适当的方式,如模块的再分解,而转化为数据耦合,但在某些特殊的场合下,控制耦合还有一定的必要。
示例: A 数据信息 控制信息 B C 6.3 模块化设计 模块的耦合—控制耦合
如果两个模块彼此间通过一个公共的数据区域传递信息时,称之为公共耦合或公共数据域耦合。 6.3 模块化设计 模块的耦合—公共耦合 公共数据域实际上就是被设计成为多个模块公用数据的区域。 公共耦合是一种不好的联结形式,尤其当一个公共数据区域被多个模块共同使用时,模块数越多,则其耦合的复杂度越大。
示例: A E B C F 公共数 据区 D 6.3 模块化设计 模块的耦合—公共耦合
如果一个模块需要涉及另一个模块的内部信息时,则这种耦合称内容耦合。 ——一个模块访问另一个模块的内部数据; ——一个模块调用执行另一个模块中间的部分程序 代码; ——模块的出、入口不符合单入单出。 6.3 模块化设计 模块的耦合—内容耦合 内容耦合的耦合度最高,因此应该坚决避免使用这种耦合。
6.3 模块化设计 模块的耦合—联结方式比较
结论: ——模块间尽量使用数据耦合; ——必要时才采用控制耦合; ——对公共耦合应限制耦合的模块数(数据库除外); ——坚决不用内容耦合。 6.3 模块化设计 模块的耦合