知识卡片

软件架构参考定义框架的五种元素

结构图卡

内容

在梳理组成派/决策派各自的代表性定义后,书中给出一个整合性的参考定义框架:软件架构由组件(component)、连接件(connector)、配置(configuration)、端口(port)、角色(role)五种元素构成——这是对[[组成派的代表性架构定义]]中”组件/连接件/约束”3C模型的扩展,用”配置+端口+角色”三个更细粒度的元素取代了笼统的”约束”,使框架具备可操作的建模能力。组件是具有某种功能的可重用软件模块单元,代表系统中主要的计算单元和数据存储,分为组合组件(由其他组合组件和原子组件连接而成)和原子组件两种。连接件表示组件之间的交互,简单连接件如管道、过程调用、事件广播,复杂连接件如客户端-服务器通信协议、数据库与应用间的SQL连接。配置表示组件和连接件的拓扑逻辑和约束,即”谁跟谁连、按什么规则连”。端口和角色是这个框架相对3C模型的关键增量:组件作为封装实体只能通过接口与外部交互,接口由一组”端口”组成,每个端口是组件与外部环境的一个交汇点,一个组件可以通过不同端口类型提供多重接口;连接件同样有接口,由一组”角色”组成,每个角色定义了该连接件所表示的交互中的一个参与者——二元连接件有两个角色(如RPC的caller/callee、管道的reading/writing、消息传递的sender/receiver),事件广播这类连接件则有一个发布者角色和任意多个接收者角色。理解”端口对应组件、角色对应连接件”这个对称关系,是理解整个框架为什么能同时刻画”组件长什么样”和”连接件长什么样”这两类完全不同问题的关键。

结构图

flowchart TD
    A[组件 component] -->|通过一组端口暴露多重接口| B[端口 port]
    C[连接件 connector] -->|通过一组角色定义交互参与者| D[角色 role]
    A -->|经连接件交互| C
    A -->|拓扑逻辑与约束| E[配置 configuration]
    C --> E

参考来源

- 位置:《软件架构理论与实践》第2章《软件架构的概念》"2.5 参考定义框架"节(源文件:_epub-src/OEBPS/text00018.html) - 结论依据:原文明确"软件架构一般由五种元素构成,即组件(component)、连接件(connector)、配置(configuration)、端口(port)和角色(role)",并逐一说明每种元素的定义(如"端口可以很简单,如过程调用;也可以很复杂,如通信协议"、"二元连接件有两个角色,如RPC的角色为caller和callee"),直接支撑本卡片的结构图与内容解释。 - 原始内容:组件:具有某种功能的可重用的软件模块单元……连接件:表示了组件之间的交互……端口:组件作为一个封装的实体,只能通过接口与外部交互……角色:连接件作为建模软件架构的主要实体,同样也有接口,连接件的接口由一组角色组成,连接件的每个角色定义了该连接件表示的交互的参与者。