组件,连接件,架构配置
组件(component):软件组件是一个架构的实体,(1)它封装了系统功能或者数据的子集,(2)通过明确定义的接口限制对子集的访问,(3)而且显式的定义了其所需的执行上下文的依赖。
对这个定义进行一个解释,组件它是一个执行计算和状态的场地,它可以是一个简单的操作,也可以是一个复杂的系统,具体是取决于系统的设计和设计的视角;然后组件作为用来构建系统的一个单元,它必须是可以被使用者观察到的,也就是说它有特定的接口,或者是一个黑盒的形式,以此来被人或者其他软件来访问。因此组件也体现了软件工程的原则,封装,抽象,模块化,而这些对软件的可组装性,可重用性,演化性方面有积极的作用。
另外,组件显示的定义了其所需执行上下文的依赖也是组件能够跨应用可用,重用的关键因素,组件紧密相关的上下文可以包含如下:
- 组件需求的接口(即服务提供组件的接口),此组件要执行的操作依赖其他组件。
- 组件依赖特定资源的可用性,如数据文件,数据词典。
- 组件依赖系统的软件,如编程语言的运行环境,中间件平台,操作系统,网络协议,设备驱动等。
- 组件依赖运行所需的硬件配置。
组件的另一个方面(也是一个有别于连接件的),就是组件和其所属应用的关系,通常组件使用来进行过程和数据处理的,意味着可能是特定应用相关的,但是这些特定应用相关的组件也可能之后被应用到其他类似的系统。当然有时候组件也可能是针对多个应用设计出来的,比如Web服务器,任何基于web的应用都可能会用到web服务器,但是很少人会从头开发一个新的web服务器;最后还有一些组件是不考虑领域的重用单元,比如数学库,GUI工具包,或者还有些现成的应用,如字处理软件,电子表格绘图工具,所有的这些其实提供了一个系统特定需求的超集,这个超集可以供架构师进行选择而不是实现他们,这也可以解释为什么系统的规范性架构和描述性架构不需要同源。
连接件:一种架构元素,其任务是影响和调节组件之间的交互。
连接件常常表现为简单的过程调用或者共享数据访问,就架构来说它常常被视为短暂的或者无形的,一般来说在图中组件常常被表示为框,而连接件是被降到了次要的角色,用无特征的线来表示,然而由于软件系统越来越复杂,连接件也越来越复杂,这些连接件可能有自己独立的特性,角色和实现级的代码或者是同时服务于不同组件的能力。
最简单最被广泛使用的连接件是过程调用,过程调用用编程语言实现,通常可以在组件之间同步调用和控制。
另一个常见的连接件是共享数据访问,这种类型的连接件表现为非局部变量或者共享内存的形式,这种类型的连接件允许通过读写公共设施进行多组件交互,交互时间上是分布的,也就是说是异步的,写入不需要任何时间上的依赖。
在现代的软件系统中分布式连接件是一类重要的连接件,这些连接件通常是封装网络库API是分布式系统能够进行交互。
有些系统是使用已存在的组件构建的,这些组件并不是为系统定制的,所以组件之间的交互可能就需要处理,在这种情况下发挥作用的连接件就是适配器连接件,常见的适配器连接件有包装器,胶水代码等。
虽然组件主要提供特定应用服务,连接件通常独立与应用程序的,我们可以独立于应用程序来讨论过程调用,分发器,适配器的特征;如“发布-订阅”、“异步事件通知”和“远程过程调用”,具有相关的含义和特征,这些含义和特征在很大程度上独立于使用它们的上下文。这样的连接器可以在没有特定目的的情况下构建,然后可以在应用中被重复使用。
架构配置(configuration):一个软件架构中组件和连接件特定关联的集合。
在给定的系统架构中,为了完成某个目标,组件和连接件以特定的方式组合,这个组合代表了系统的配置,也成为拓扑。配置可以用一个图来表示,节点代表组件,边代表它们之间的关联。

浙公网安备 33010602011771号