5视图法可以帮助软件架构师以不同的视角对软件的各个方面的属性:功能需求,约束,运行期质量属性,开发期质量属性。
1、 逻辑架构:逻辑架构关注功能,不仅包括用户可见的功能,还包括为实现用户功能而必须提供的“辅助功能模块”——。
2、 开发架构:开发架构关注程序包,不仅包括要编写的源程序,还包括可以直接使用的第三方SDK 和现场框架、类库,以及开发的系统将运行于其上的系统软件或中间件。关注编译时刻的静态依赖关系。
3、 运行架构:运行架构关注进程、线程、对象等运行时概念,以及相关的并发,同步,通信等问题。运行架构关注运行期间各个单元的交互。
4、 物理架构:物理架构关注“目标程序及其依赖的运行库和系统软件”最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性,可伸缩性等要求。
5、 数据架构:数据架构关注持久化数据的存储方案,不仅包括实体及实体关系的存储格式、还包括数据传递,数据复制,数据同步等策略。
开发的策略。
1、逻辑架构的设计着重考虑功能需求——系统应该向用户提供什么样的服务。
架构视图 |
着重考虑 |
关注点 |
工具 |
逻辑架构 |
功能需求——系统应答向用户提供什么样的服务 |
行为和职责的划分 |
UML :静态——包图,类图,对象图;动态——序列图,协作图,状态图,活动图。 |
开发架构 |
开发期的质量属性——可扩展性,可重用性,可移植性,易理解性,易测试性 |
软件开发环境中软件模块实际组织方式——具体涉及源程序文件,配置文件,源程序包,编译后的目标文件和第三方库文件 |
UML:包图,类图,组件图 |
运行架构 |
运行期质量属性——性能,可伸缩性,持续可用性,安全性 |
系统的并发和同步,涉及进程和线程技术 |
UML:包图类图对象图来说明运行时的关键的概念;序列图,协作图等来描述交互机制。 |
物理架构 |
安装和部署的需求——包括计算机,网络,硬件设施情况,以及如何部署 |
软件单元如何映射到硬件,以及硬件相关的可靠性,可伸缩性,性能和安全性等 |
UML:部署图,组件图 |
数据架构 |
数据需求 |
持久化数据的组织,数据传递,数据复制和数据同步策略 |
E-R图 |
每种架构视图都包含动态方面和静态方面
对于架构视图的选择和架构视图的数目,可以根据实际的需要决定,并不是所有的架构设计要使用全部的架构视图,也不是所有的架构视图只有5 个——根据具体的需要可以增加,这里只是作者概况的最常见的 5 种视图。
之所以采用架构设计的视图法,这和软件需求的复杂性有关。 软件架构师必须明确区分功能需求,约束,运行期质量属性和开发期质量属性等不同种类的需求,这些需求对架构设计的影响是截然不同。基于五视图的架构设计在一定程度上将各类需求分别对待,通过不同的架构设计视图分别满足它们,从而确保重要的需求一一被满足。