架构定义
软件架构的概念分组成派和决策派两类,组成派以软件本身为描述对象,分析软件组成,决策派以人的决策为描述对象,归纳架构决策的类型。
组成派定义示例:
软件架构将系统描述为计算组件及组件之间的交互。计算组件是泛指,可进一步划分为处理组件、数据组件、连接组件等,可以指子系统、框架、模块以及类等不同粒度的软件单元。
决策派定义示例:
软件架构包括以下一系列问题的重要决策:(1)软件系统的组织;(2)选择组成软件系统的结构元素和它们之间的接口;(3)如何组合这些元素,使它们合成为更大的子系统;(4)架构风格[j1] ;(5)软件系统的其他特性,例如使用、功能性、性能、弹性、重用、可理解性、经济和技术的限制及权衡以及美学等。
一个更通俗易懂的决策列举:模块如何划分;各模块的职责为何;每个模块的接口如何定义;模块之间采用何种交互机制;开发技术如何选型;如何满足约束和质量属性需求;如何适应可能发生的变化。
架构设计视图
为何要架构视图?
(1)架构涉众多,关注方面不同:用户关注功能性及性能、易使用性等运行期质量属性;客户关注业务目标、上线时间、预算限制、集成需要等;开发人员关注可扩展性、可重用性、可移植性、易测试性等开发期质量属性;管理人员关注架构如何支持项目分工、项目计划等。
(2)架构设计需要涵盖的内容和决策太多,超过人脑一蹴而就的能力范围,需要采用分而治之的方法来从不同视角分别设计
(3)为软件架构的理解、交流和归档提供方便。
最常用的架构视图是逻辑视图和物理视图。
逻辑视图规定了组成软件系统的逻辑元素及这些元素之间的关系,逻辑元素可以是逻辑层Layer、功能子系统、模块。逻辑视图的核心人物是全面的识别模块、规划接口,并基于此进一步的明确模块之间的使用关系和使用机制。
物理视图规定了组成软件系统的物理元素及它们之间的关系,以及它们部署到硬件上的策略。物理视图反映的是系统动态运行时的组织情况,物理元素指进程、线程、对象,关系则指进程调度、线程同步、进程或线程通信等,一般使用物理层Tier来指定部署策略。
参考文献
温昱,《软件架构设计第2版》