知识卡片
组成派与决策派两大架构定义流派
内容
架构定义之所以”多又乱”,是因为几乎所有权威定义都可以归到两大流派之一,看清这个分类框架后,”什么是架构”这个问题就不再是无穷无尽的定义罗列,而是两种视角的选择。组成派:关注架构实践中的客体——软件本身,以软件本身为描述对象,分析软件由承担不同计算任务的组件组成、这些组件通过交互完成更高层次的计算;Mary Shaw”架构=计算组件+组件间交互”是典型代表,其中”组件”是广义的软件单元(可以是子系统、框架、模块、类),并非CORBA/DCOM/EJB这类专有组件概念。决策派:关注架构实践中的主体——人,以人的决策为描述对象;RUP的定义是典型代表,把架构定义为一系列重要决策的集合,这些决策不仅覆盖软件系统的组织、结构元素及接口选择、元素协作行为、组合方式、架构风格,还覆盖众多非功能需求(性能、弹性、重用、可理解性、经济与技术限制、美学等)的权衡取舍。业界大量著名定义(Booch/Rumbaugh/Jacobson的决策集合定义、Woods”错误决策可能导致项目取消”的决策定义,属于决策派;Garlan/Shaw的组件-连接件-约束三要素定义、Perry/Wolf的处理元素-数据元素-连接元素三分类、Boehm的组件-连接件-约束-涉众需求-原理五要素定义、IEEE 610.12的组件-关系-原理定义,属于组成派)本质上都是这两派视角的具体化。SEI的Bass等人给出的”一个或多个结构,由软件元素、外部可见属性、元素间关系组成”这个较新定义,把架构的”多视图”本性也纳入了进去,是业界普遍认同的相对新近表述。理解这两派最实用的方式不是争论谁对谁错,而是意识到它们回答的是同一个设计活动的两个不同侧面——”做出了什么”(组成派视角看到的结果)和”为什么这样做”(决策派视角看到的过程),两者往往在同一个具体架构设计里同时体现。