您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第四章体系结构的设计原理
第4章体系结构的设计原理4.1体系结构的设计原理软件体系的结构是建立在几条基本原理之上的。它们是:抽象、封装、数据隐藏、模块化、注意点分离、耦合和内聚、充分性、完备性和原始性、策略和实现的分离、接口与实现的分离、引用的单一性、分而治之、层次化。1.抽象抽象是人们用来处理复杂性问题的基本原理之一。抽象有几种形式,如数据抽象、对象抽象、实体抽象、行为抽象、过程抽象、虚拟机抽象等。数据、实体的抽象使得软件操作的对象和参数是针对逻辑结构,而非存储结构的。行为、过程的抽象使得操作的指派是依据标识而非地址,由此产生了操作的接口和动态约束描述。抽象的一个重要特性就是可替换性。2.封装封装是将构成抽象的属性和行结合在一起,并区分不同抽象的方法。封装为不同抽象之间提供了明确的界限。封装有利于非功能特性实现,例如可变性和可重用性。封装包括内部构成和操作服务两个方面。3.信息隐藏信息隐藏是软件工程的最基本和最重要的原理之一。信息隐藏对用户隐藏了部件的实现细节,用来更好地处理系统的复杂性和减少各部件之间的耦合。封装原理经常被用来作为实现信息隐藏的方法。信息隐藏也可以通过接口与实现分离的原理来实现。4.模块化模块化主要关心的是如何将一个软件系统分解成子系统和部件,其主要任务就是决定怎样将构成应用的逻辑结构物理地分割成代码实体。5.注意点分离(SeparationofConcerns)不同和无关联的责任应该在软件系统中分离开来,让它们出现在不同的部件中。相互协作完成某一任务的部件应该和在其他任务中执行计算的部件分离开来。如果一个部件在不同的环境下扮演着不同的角色,在部件中这些角色应该独立且相互分离。6.耦合和内聚耦合强调模块之间的特征,而内聚强调模块内部的特性。耦合是用来衡量一个模块同另一个模块的联系的紧密程度的。内聚用来衡量单一模块内功能和元素间联系性的程度。内聚有几种形式,.最期望获得的是功能内聚。其他形式的内聚还有:逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和不规则内聚。7.充分性、完备性和原始性[BOOC94]指出软件系统的每个部件都应该是充分的、完备的和简单的。充分性指的是部件应该把握住与其进行有意义和高效交互抽象的所有特性。完备性是指一个部件应该把握住所有与其抽象相关的特性。原始性指的是部件所应该完成的操作都可以容易地得到实现。8.策略和实现的分离软件系统的部件应该实现策略或处理问题,但不能同时处理两者。策略部件负责处理上下文相关的决策、信息的语义和解释的知识、把不相交计算组合形成结果、对参数值进行选择等问题。实现部件负责全面规范算法的执行,执行中不需要对上下文相关信息进行决策.如果不能将一个软件体系结构分解成策略和实现的不同部件,至少应该在一个部件内将策略和实现的功能加以分离。9.接口和实现的分离任何一个部件都应该包含两个部分,接口和实现.接口部分定义了部件所提供的功能,并规范了功能的使用方法.该接口对部件的客户是可访问的。实现部分包括了实现部件所提供功能的实际代码。实现部分还可以包括只服务于部件内部操作的另外的函数和数据结构。实现部分对部件客户来说是不可用的。10.分而制之(divide-and-conquer)11.层次化处理复杂性问题有两种方法,即:分而制之的横向分割和分层次处理的纵向分割。后者是一种把问题分解成建立在基础概念和思想上多层次的、从底向上逐步抽象的分析和表达的结构,每一层处理该层次的问题、服务于该层次的要求。层次化在软件构造中是一种基本的思想。类和对象是层次化的,操作系统构造、编译器构造、应用系统构造,无一不是层次化的。同样,软件体系结构也是层次化的。4.2软件的非功能特性功能特性主要是直接针对客户的功能需求。非功能特性对软件的开发和维护,可操作性以及对计算机资源的使用都有着很大的影响。非功能特性主要包括系统的可变性、可操作性、效率、可靠性、可测试性、可重用性。正交性:设法使两个不同的操作交叉重复部分达到最小。1.可变性/可维护性软件老化的原因:(1)缺少变化如果不迅速更新和升级,软件就会老化;(2)盲目和无知的修改;(3)软件建立初期就设计的不灵活,无法或难以维护和升级;(4)文档不充分。可以通过下列途径来防止老化,它们是:建立准确的文档、当引入改变时保持原始的结构、深入的系统审查、在设计之初就考虑到变化的影响。可变性有四个方面[BUSC96]:(1)可维护性。它主要处理已有问题的解决,当发现错误后对软件进行修复。(2)可扩充性。它注重于用新特性对软件系统进行扩充,还包括用升级的版本代替原有的部件、除去不必要的特性和部件。可扩充性的目标是可以自由地更换部件而不会影响客户的使用,支持把新部件加到已存在系统中。(3)可重构性。它处理软件系统部件的重构和部件之间的关系可变性问题。要支持软件的可重构性,需要对部件之间的联系进行详细的设计。有两种可重构性,一种是系统设计人员的,一种是用户可操作的。(4)可移植性。这可以使一个软件系统能够适应多种硬件平台、用户接口、操作系统、编程语言和编译器。2.互操作性组成系统的各个部件不是独立存在的,他们需要频繁地与系统中其他部件、系统外的其它系统、运行环境相互作用。为了支持互操作性,软件体系结构必须设计成对外能够提供良好外部可见、可访问的功能和数据结构的描述。3.效率4.可靠性可靠性是软件系统在各种情况下维持其功能的能力。可靠性可以区分为两个方面:(1)错容性。其任务是当错误事件发生时确保正确的系统响应,必要时采取内部补救措施,以避免产生用户不希望的或灾难性的后果。(2)健壮性。它被用来保护系统,使其即使在错误操作和不正确输入等未预期错误的情况下,也能保持在已定义和明确的状态下。与错容性相反,健壮性不要求软件在发生错误之后还能继续执行,它只需要保证软件能以明确和可接受的方式终止。5.可测试性6.可重用性重用是“通过已经存在的来获得想要的”的软件和实现设计方法。可重用性有两个主要的方面,用重用来进行软件开发和为重用而进行的软件开发。(1)用重用进行软件开发。含义是,重用现存的部件,或重用从过去工程或商业系统开发获得的软件库、设计分析、设计说明、部件代码等结果。(2)为重用而进行的软件开发。这是为建立具有潜在可重用部件而进行的软件开发。
本文标题:第四章体系结构的设计原理
链接地址:https://www.777doc.com/doc-2168207 .html