软件体系结构基本要素

软件体系结构(System Architecture简称SA)

定义

对于大规模的,分布的,需要协作的,需要交互的,需要监测的,需要扩展的,需要演化的复杂软件系统的规划。

要素

组件(component )连接件 (connector) 配置 (configuration) 约束 (constraint)

4+1View主要特点

多视图共同表达不同涉众的观点

  1. 逻辑视图(Logical View):表示系统功能。考虑功能性需求——系统需要在给用户的服务方面应该提供的。
  2. 开发视图(Development View):表示开发分工和任务管理。考虑软件模块组织——层次分析,软件管理,重用,工具约束。
  3. 进程视图(Process View):表示系统进程,线程,分布等信息。考虑非功能性需求——并发性,性能,可扩展性。
  4. 物理视图(Physical View):表示系统物理部署情况。考虑非功能性需求——关于底层硬件(拓扑,通信)。
  5. 场景(Scenarios):用一些场景、用例来描述系统各个部分之间,以及与环境之间的交互。考虑系统一致性,有效性。

风格

  • 描述一类体系结构
  • 在实践中被多次设计、应用
  • 是若干设计思想的综合
  • 具有已经被熟知的特性,并且可以复用
  • *

决定因素

  • 一组组件类型(数据容器、过程、对象)
  • 一组连接件类型/交互机制(过程调用、事件)
  • 这些组件的拓扑分布
  • 一组对拓扑和行为的约束
  • 一些对风格的成本和益处的非正式的描述

举例

管道-过滤器风格

在管道-过滤器风格下,每个功能模块都有一组输入和输出。功能模块称作过滤器;功能模块间的连接可以看作输入、输出数据流之间的通路,所以称作管道。
管道-过滤器风格的特性之一在于过滤器的相对独立性,即过滤器独立完成自身功能,相互之间无需进行状态交互。
特性:1 过滤器是独立运行的构件;2 过滤器对其处理上下连接的过滤器“无知”; 3 结果的正确性不依赖于各个过滤器运行的先后次序。
优点:设计者可以将整个系统的输入、输出特性简单的理解为各个过滤器功能的合成。
1.潜在的并行支持;2 支持死锁检测等分析3 可维护性和可扩展性4 支持功能模型的复用。
不足:1 交互式处理能力弱;2 管道-过滤器风格往往导致系统处理过程的成批操作;3 设计者也许不得不花费精力协调两个相对独立但又存在某种关系的数据流之间的关系;4 根据实际设计的需要,设计者也需要对数据传输进行特定的处理,增加了过滤器具体实现的复杂性。

实例

1 数字通信系统;2 Unix 系统中的管道过滤器结构;3 通讯协议的信息封装

ADL 体系结构描述语言

ADL 是在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。基于底层语义的工具为体系结构的表示、分析、演化、细化、设计过程等提供支持。其三个基本元素是:构件、连接件、体系结构配置。
主流语言: Aesop、MetaH、C2、Rapide、SADL、Unicon 和 Wright 等;

这些 ADL 强调了体系结构不同的侧面,对体系结构的研究和应用起到了重要的作用,但也有负面的影响。每一种 ADL 都以独立的形式存在,描述语法不同且互不兼容,同时又有许多共同的特征,这使设计人员很难选择一种合适的 ADL,若设计特定领域的软件体系结构又需要从头开始描述。

ADL 与其他语言的比较

构造能力:ADL 能够使用较小的独立体系结构元素来建造大型软件系统;
抽象能力:ADL 使得软件体系结构中的构件和连接件描述可以只关注它们的抽象特性,而不管其具体的实现细节;
重用能力:ADL 使得组成软件系统的构件、连接件甚至是软件体系结构都成为软件系统开发和设计的可重用部件;
组合能力:ADL使得其描述的每一系统元素都有其自己的局部结构,这种描述局部结构的特点使得 ADL 支持软件系统的动态变化组合;
异构能力:ADL 允许多个不同的体系结构描述关联存在;
分析和推理能力:ADL允许对其描述的体系结构进行多种不同的性能和功能上的多种推理分析。

ADL 实例

1 一个常规的 Client-Server 架构;2 可容错的 C/S 架构。

猜你喜欢

转载自blog.csdn.net/qq_35636581/article/details/80038019