当前位置:文档之家› 第5章 软件体系结构设计

第5章 软件体系结构设计





3.基于事件的隐式调用(Event-based Implicit Invocation) (1)基本结构与词汇表 该结构中的模块既提供一组过程,也提供一组事件。 系统由可以发布事件的构件组成,另一些构件为注册 接收这些发布的事件,这些构件将自己的过程同一事 件相关。 词汇表是[构件=模块;连接器=事件与过程隐式调用] (2)特征 软件体系结构中的构件可以声明或者广播一个或者多 个事件,而不是直接调用过程。系统中的其它成分可 以通过将一个过程连接到一个事件来表达自己对该事 件的兴趣。当该事件激发时会隐含地调用其它模块。


软件体系结构风格(style)又称软件体系结 构习惯模式(idiomatic paradigm)。体系 结构风格定义了一个系统家族,即一个体系结 构定义一个词汇表和一组约束:词汇表中包含 一些构件和连接器类型,而这组约束指出系统 是如何将这些构件和连接器组合起来的。 Define classes of software systems based on the form of the solution and which can be applied across problem domain.
有用的系统 基本工具 内核
软部件:实现 在层次结构中 的虚拟机 连接件:层次 与层次之间交 互的协议
层次化组织原则:每一 层向其上层提供服务, 并利用下层的服务。
用户
5.3 软件体系结构风格



(2)特征 层次结构虚拟机与层次间的协议。 (3)优点 首先支持抽象程度递增的系统设计,使得设计者可以 把一个复杂系统按递增的步骤分解开来。其次,功能 的改变只会影响相邻的上下层。最后,这种结构可以 支持重用。 (4)缺点 层次划分不容易,很难找到一个合适的正确的层次抽 象方法。
5.仓库系统及知识库(Repositories)


(1)基本结构与词汇表 在该结构中,有两种不同的软件构件:一种表示当 前状态的中心数据结构,另一种是一组相互独立的处 理中心数据的构件。不同的仓库系统与外部构件有不 同的交互方式。控制方式的选择决定了仓库系统的类 型。 仓库系统可以分为两类:数据库和黑板系统 (Blackboard)。 黑板系统有知识源、黑板数据结构和控制三个部分组 成。 词汇表是[构件=中心数据仓库和在仓库上操作的独立 构件的集合;连接器=通知路径]
5.1 软件体系结构



第二,框架模式观点虽然与结构观点有相似点, 但前者更加强调系统的整体连贯性,主要针对 特定领域和问题,而不仅仅是研究系统的组成。 第三,动态模型包括系统的总体配置的变化、 建立/禁止预定义的通讯、互连通道和计算进 程等。 第四,进程模式观点强调软件体系结构中的构 造过程中的步骤和进程,在这一观点下软件体 系结构是一个进程描述的结果。
5.2数据体系结构设计

在软件应用中,数据体系结构对软件体系结构的 设计有深远的影响,其具体表现在: 1)在软件体系结构设计层,数据的结构设计是 软件体系结构设计的一个重要方面; 2)在构件设计层,数据结构及其操纵它们的相 关算法的设计对创建高质量的应用是至关重要的; 3)在应用层,数据模型到数据库的映射,是实 现应用系统业务目标的关键; 4)在业务层,存在于数据库或数据仓库中的数 据是进行数据挖掘和知识发现的基础,该内容对 业务系统的成功具有举足轻重的影响。
UNIX的command shell是这种结构

2.数据抽象和面向对象组织 (Data Abstraction and ObjectOriented Organization)


(1)基本结构与词汇表 在该结构中,数据表示和与之相连的最基本操 作都被封装在一个抽象数据类型或者对象中。 词汇表是[构件=对象;连接器=方法调用] (2)特征 其特征包括两个方面是:对象负责维持其本身 的完整性;信息隐藏。
有原则地使用软件体系结构风格具有如下意义: 它促进了设计的复用,使得一些经过实践证实 的解决方案能够可靠地解决新问题。 它能够带来显著的代码复用,使得体系结构风 格中的不变部分可共享同一个解决方案。 便于设计者之间的交流与理解。 通过对标准风格的使用支持了互操作性,以便 于相关工具的集成。 在限定了设计空间的情况下,能够对相关风格 作出分析。 能够对特定的风格提供可视化支持。

与此同时,人们目前尚不能准确回答的问题是: 系统设计的哪个要点可以用风格来描述; 能否用系统的特性来比较不同的风格,如何确 定用不同的风格设计系统之间的互操作; 能否开发出通用的工具来扩展风格; 如何为一个给定的问题选择恰当的体系结构风 格,或者如何通过组合现有的若干风格来产生 一个新的风格。

管道和过滤器体系架构模式把系统任务分成 为几个独立的处理步骤。这些步骤采用通过 系统的数据流连接。一个步骤的输出是下一 个步骤的输入。每个处理步骤由一个过滤器 组件实现,它处理或者转化数据,并且系统的输 入可以是多种数据源.


这种结构有若干不变特征: 1. 过滤器一定是独立的实体,即各个过滤器之 间不能共享状态。 2. 过滤器与其连接的上下游过滤器相互独立, 即不知道,更不能假定,分别与其输入和输出 相连接的其他过滤器的信息。它们的规格说明 中只能涉及限制哪些数据可以出现在它的输入 管道中和保证它将输出何种类型的计算结果, 但它们不能识别在与它们相连的管道的另一边 究竟是谁。如图5.1所示。
5.3 软件体系结构风格


常见的软件体系结构风格涉及: 设计词汇表是什么?或者构件和连接器的类型 是什么? 可容许的结构模式是什么? 基本的计算模型是什么? 风格的基本不变性是什么? 其使用的常见例子是什么? 使用此风格的优缺点是什么? 其常见特例是什么?
5.3 软件体系结构风格

种类 本类型的规格说明都包括管线、受约束的管 道和有名管道三类。管线限制过滤器的拓扑 结构只能是线性序列。受约束的管道限制在 其上流通的数据量。有名管道要求在两个过 滤器之间流通的数据经过严格地定义。
5.3 软件体系结构风格


优点 它允许设计者将一个系统的整体输入/输出行为 理解为各个独立过滤器行为的一个简单的合成。 该体系结构支持重用。 维护系统和增强功能容易。 缺点 容易导致批处理方式。 在维护或者响应两个分离但相关的数据流时容易 受阻。 增加了分析与编码的工作量,增加了复杂性,降 低了性能。
第五章 软件体系结构设计
5.1 软件体系结构


在软件编码之前,进行软件的分析和设计,已成 为软件行业的标准做法。 软件体系结构仅关注大型设计,为开发团队的设 计者提供指导。软件体系结构的设计过程是一个 具有多个步骤的过程,其主要任务是从信息需求 中综合出数据结构、程序结构、接口特征和过程 细节。
5.1 软件体系结构


软件体系结构是一个软件系统的基本组织,它 体现在构件、构件间的相互关系以及构件与环 境的关系中;它还包括指导系统设计和进化的 原则。 软件体系结构并非是可执行的软件,它是一种 设计表示,通过该表示使得软件体系结构师能 够分析其所完成的设计是否满足软件需求,以 减少软件构造过程中存在的风险。

软件体系结构的三要素

程序构件(模块)的层次结构 构件之间交互的方式 数据的结构

软件设计的一个目标是建立软件的体系结构表 示。将这个表示当作一个框架,从事更详细的 设计活动。
在软件体系结构设计中应保持的性质

结构 体系结构设计定义系统的构件、构件打 包的方式和相互交互的方式
附属的功能 体系结构设计描述设计出的体系 结构如何实现功能、性能、可靠性、安全性、 适应性,以及其它的系统需求。 可复用 体系结构设计应描述为一种可复用的 模式,能复用已有构造块,并可供以后类似系 统族的设计使用。
5.2数据体系结构设计


数据体系结构设计出现在高抽象层,构建表示 数据或信息的模型。这一数据模型被逐步求精 为特定的实现表示,该表示可以被应用系统处 理。 构件级的数据设计关注于被一个或多个软件构 件直接访问的数据结构表示,在实际应用中, 数据设计在分析模型的创建期间就已经开始。
5.3 软件体系结构风格




5.1.2 为什么软件体系结构重要 1)软件体系结构可以用于各风险承担者之间的沟通; 2)软件体系结构设计突出了早期设计的选择,这些选 择对随后的设计和实现工作乃至最终项目的成功影响 深远; 3)软件体系结构建立了一个相对较小、但易于理解和 掌握的模型,该模型描述了系统如何构成,以及这些 构件如何一起工作; 4)软件体系结构设计结论是软件测试的基础与前提, 在软件体系结构上考虑测试,其目的是找出体系结构 设计的错误和缺陷,产生指导代码测试的测试计划和 测试用例; 5)软件体系结构对新的团队成员的培训是必不可少的, 这可让新成员快速跟上开发进度;此外,软件体系结 构的培训还对客户、管理者、测试者和操作员有用。


5.1 软件体系结构


5.1.1 软件体系结构的概念 体系结构:是高层的建模,它描述事物最重要 的性质。 M.Shaw:软件体系结构定义为程序/系统各 构件的结构以及它们之间的内部关系和指导它 们的设计并随时间而演变的原理和方针。
5.1 软件体系结构

M.Shaw的具体观点如下: 第一,从结构模式观点上看,软件体系结构包 括软件构件、构件之间的联系和系统构造、方 式、约束、语义、分析、属性、基本原理和系 统需求。

对象 对象
对象
过程ቤተ መጻሕፍቲ ባይዱ用 对象 对象
图2 抽象数据类型和对象

(3)优点 封装性。信息隐藏。抽象性。类特性。继承性等。
(4)缺点 由于对象之间的交互是通过明确的对象函数调用进行 的,所以当一个对象需要实现一个特定功能的时候, 必须知道哪一个对象提供这种服务,这就降低了系统 的灵活性。管道和过滤器模型不需要明确指明数据的 来源和去向。
相关主题