我是靠谱客的博主 认真服饰,最近开发中收集的这篇文章主要介绍软件体系结构风格,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

软件体系结构风格的定义:
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。

经典的软件体系结构风格:
◎ 数据流风格:批处理序列;管道/过滤器。

◎ 调用/返回风格:主程序/子程序;面向对象风格;层次结构。

◎ 独立构件风格:进程通讯;事件系统。

◎ 虚拟机风格:解释器;基于规则的系统。

◎ 仓库风格:数据库系统;超文本系统;黑板系统。

管道与过滤器:
每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。
这里的构件被称为过滤器,这种风格的连接件就象是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。

数据抽象和面向对象组织:
这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。这种风格的构件是对象,或者说是抽象数据类型的实例。对象是一种被称作管理者的构件,因为它负责保持资源的完整性。对象是通过函数和过程的调用来交互的。

基于事件的隐式调用 :

  • 构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其它构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。
  • 这种风格的构件是一些模块,模块既可以是一些过程,又可以是一些事件的集合。过程可以用通用的方式调用,也可以在系统事件中注册一些过程,当发生这些事件时,过程被调用。
  • 这种风格的主要特点是事件的触发者并不知道哪些构件会被这些事件影响。这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用,因此,许多隐式调用的系统也包含显式调用作为构件交互的补充形式。

分层系统:

  • 层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。
  • 这种风格支持基于可增加抽象层的设计。允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大的支持。

仓库系统:

  • 在仓库风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存贮上执行,仓库与外构件间的相互作用在系统中会有大的变化。
  • 控制原则的选取产生两个主要的子类。若输入流中某类时间触发进程执行的选择,则仓库是一传统型数据库;另一方面,若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。

C2风格:

  • 系统中的构件和连接件都有一个顶部和一个底部;
  • 构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;
  • 一个连接件可以和任意数目的其它构件和连接件连接;
  • 当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。

C/S风格:

  • 数据库服务器
  • 客户应用程序
  • 网络

三层B/S风格:

  • 浏览器
  • Web服务器
  • 数据库服务器

CORBA – 对象管理结构:
技术规范:
◎ 接口定义语言(IDL)

◎ 接口池(IR)

◎ 动态调用接口(DII)

◎ 对象适配器(OA)

正交软件体系结构 :

  • 正交软件体系结构由组织层和线索的构件构成。层是由一组具有相同抽象级别的构件构成。线索是子系统的特例,它是由完成不同层次功能的构件组成(通过相互调用来关联),每一条线索完成整个系统中相对独立的一部分功能。每一条线索的实现与其他线索的实现无关或关联很少,在同一层中的构件之间是不存在相互调用的。
  • 如果线索是相互独立的,即不同线索中的构件之间没有相互调用,那么这个结构就是完全正交的。

HMB风格 – 系统模型:
这里写图片描述
HMB风格 – 构件模型:
这里写图片描述

异构风格 :

  • 不同的结构有不同的处理能力的强项和弱点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问题。

  • 关于软件包、框架、通信以及其他一些体系结构上的问题,目前存在多种标准。即使在某段时间内某一种标准占统治地位,但变动最终是绝对的。

  • 实际工作中,我们总会遇到一些遗留下来的代码,它们仍有效用,但是却与新系统有某种程度上的不协调。然而在许多场合,将技术与经济综合进行考虑时,总是决定不再重写它们。

  • 即使在某一单位中,规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不同。

互连系统构成的系统 :
这里写图片描述

领域特定的软件体系结构:

  • Hayes-Roth:DSSA就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合。
  • Tracz:DSSA就是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考体系结构等组成的开发基础,其目标就是支持在一个特定领域中多个应用的生成。
  • 垂直域:定义了一个特定的系统族,包含整个系统族内的多个系统,结果是在该领域中可作为系统的可行解决方案的一个通用软件体系结构。
  • 水平域:定义了在多个系统和多个系统族中功能区域的共有部分,在子系统级上涵盖多个系统族的特定部分功能,无法为系统提供完整的通用体系结构。

领域特定的软件体系结构 – 与体系结构风格的比较:

  • DSSA以问题域为出发点,体系结构风格以解决域为出发点。

  • DSSA只对某一个领域进行设计专家知识的提取、存储和组织,但可以同时使用多种体系结构风格;而在某个体系结构风格中进行体系结构设计专家知识的组织时,可以将提取的公共结构和设计方法扩展到多个应用领域。

  • DSSA通常选用一个或多个适合所研究领域的体系结构风格,并设计一个该领域专用的体系结构分析设计工具。

  • 体系结构风格的定义和该风格应用的领域是直交的,提取的设计知识比用DSSA提取的设计专家知识的应用范围要广。

  • DSSA和体系结构风格是互为补充的两种技术。

最后

以上就是认真服饰为你收集整理的软件体系结构风格的全部内容,希望文章能够帮你解决软件体系结构风格所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部