《软件架构理论与实践》 —2.5 参考定义框架
2.5 参考定义框架
以上讨论的各种软件架构定义之所以同时存在,是因为人们还很难利用某个架构定义框架来统一它们。根本原因在于:软件架构与软件系统的应用领域有很大的关联,不同应用领域的软件架构师在强调软件架构共性的同时也热衷于强调个性化。所以出现有些架构定义难以理解,有些架构定义太过简单抽象的情况。例如,Jones的定义相对比较抽象,也比较片面,没有明确指出如何进行软件系统的整体配置,以及软件与外部环境的交互机制,而波音公司和DSG的定义又比较复杂,难以理解等。但是,不同应用领域的软件架构也是有共性的,特别是不同应用领域的相同类型的软件系统(如人事管理系统、考勤系统等)。站在一个更高的抽象程度,软件架构应该有统一的定义,或者存在某个参考定义框架。例如,Dewayne和Alexander的定义提倡的处理元素、数据元素和连接元素的思想,以及架构组成思想、架构原理思想,为后续的各种软件架构定义奠定了很好的基础,而且在很多其他定义中得到保持。David和Mary的定义给出了软件架构定义的3C(Component、Connector和Constraint)模型,明确了软件架构的核心组成内容,现在很多人都称之为软件架构的核心模型。
笔者基于国内外普遍认可的看法推荐如下参考定义框架[16],如图2-1所示。也就是说,软件架构一般由五种元素构成,即组件(component)、连接件(connector)、配置(configuration)、端口(port)和角色(role)。
组件:具有某种功能的可重用的软件模块单元,表示了系统中主要的计算单元和数据存储。组件有两种,即组合组件和原子组件。组合组件由其他组合组件和原子组件连接而成。
连接件:表示了组件之间的交互,简单的连接件有管道(pipe)、过程调用(procedure-call)、事件广播(event broadcast)等。复杂的连接件有客户端–服务器(client-server)通信协议、数据库和应用之间的SQL连接等。
配置:表示了组件和连接件的拓扑逻辑和约束。
端口:组件作为一个封装的实体,只能通过接口与外部交互,组件的接口由一组端口组成,每个端口表示了组件和外部环境的交汇点。通过不同的端口类型,一个组件可以提供多重接口。端口可以很简单,如过程调用;也可以很复杂,如通信协议。
角色:连接件作为建模软件架构的主要实体,同样也有接口,连接件的接口由一组角色组成,连接件的每个角色定义了该连接件表示的交互的参与者。二元连接件有两个角色,如RPC的角色为caller 和callee,管道的角色是reading 和writing,消息传递的角色是sender 和receiver等。有的连接件有多于两个的角色,如事件广播有一个事件发布者角色和任意多个事件接收者角色。
- 点赞
- 收藏
- 关注作者
评论(0)