架构模式的类型
了解不同类型的架构模式。
概述
在架构设计中,存在三种不同类型的结构,尽管它们强调的是同一设计的不同方面。这包括:
- 静态结构或模块结构
- 动态结构(又称组件与连接器结构)
- 部署结构(又称分配结构)
静态结构
静态结构(或模块结构)的主要目标是分配不同的功能职责区域。它们基于代码来描述系统的组织方式。在静态结构中,我们还会关注不同模块之间的关系(例如继承或组合)。
模块结构包括以下内容:
分解
将较大且复杂的模块拆分为更小、更易管理的模块。这种方法本质上遵循自顶向下的原则:从一个大模块开始,讨论系统需要完成的所有任务,然后根据不同的功能将模块进一步分解为子模块。
依赖关系
结构中的另一个重要部分是使用关系,它描述了一个模块是否使用了另一个模块的某些部分。这种关系支持软件的增量式开发。
分层
通过控制使用关系,可以在系统内部形成明确的层次结构,其中每一层是一组相互关联的功能集合。层次(作为抽象)隐藏了上层无法访问的实现细节。第 N 层只能访问第 N-1 层所提供的服务。
类
模块的基本单元称为类。在这里定义继承和组合关系,使得类的不同组件可以被复用,并支持通过逐步添加功能实现增量式开发。
动态结构
动态结构,也称为组件与连接器(C&C)结构,解释系统如何由具有运行时行为的元素(组件)以及它们之间的交互(连接器)构成。组件是计算的主要单位,而连接器则是不同组件之间通信的方式。我们还将讨论数据存储位置、系统中哪些部分可以复制、各部分是否能并行运行,以及系统在运行过程中结构如何演变。
动态(C&C)结构由以下部分组成:
通信过程
该过程处理系统的动态特性。不同的单元通过通信、同步和/或互斥操作进行连接。在 C&C 中,不同组件与连接器之间的关系称为连接。
并发性
在 C&C 结构中,我们可以探索系统内部的并行机会,并在可行的情况下加以利用。这些单元被称为逻辑线程。并发性在早期阶段就被引入,以方便地管理并发相关的问题。
共享数据
该结构包含与数据库存储库(或共享数据)相关的复合体和连接器。它展示了数据如何被不同软件模块生成、处理和消费。
客户端-服务器
当系统需要多个客户端与服务器之间进行通信时,采用此技术。在客户端-服务器模式中,组件即为不同的客户端和服务器,连接器则是系统正常运行所依赖的消息和协议。
部署结构
部署结构(又称分配结构)描述系统如何与周围非软件环境进行交互。它展示软件元素与一个或多个外部环境(程序将在其中开发和运行)之间的互动关系。部署结构包括以下内容:
部署
该结构描述软件组件如何与硬件及通信元件进行交互。
实现
实现结构展示了不同软件组件如何与文件结构集成。这对于软件生命周期模型中的管理阶段尤为重要。
工作分配
在此结构中,模块的实现与集成细节被分配给合适的开发团队。每个团队的工作内容都清晰明确,属于架构的一部分。
结论
架构模式可以根据其主要展现的组件类型进行分类。顾名思义,模块模式体现模块,组件与连接模式体现组件与连接器,而分配模式则体现软件元素(模块、组件、连接器)与非软件元素的组合。
在文献中,大多数研究集中在 C&C 模式上。但同时也存在模块模式和分配模式。我们需要记住,这些不同的模式只是从不同角度观察同一个系统。因此,某种架构风格 X 可能被归类为模块结构,也可能被归类为 C&C 结构。