1.什么是“4+1”视图?

“4+1”视图中的“4”,指的是:逻辑视图、开发视图、过程视图、物理视图,“1”指的是场景视图
场景视图又称为用例视图,显示外部参与者观察到的系统功能。
逻辑视图从系统的静态结构和动态行为角度显示系统内部如何实现系统的功能。
开发视图又称为实现视图,显示的是源代码以及实际执行代码的组织结构。
处理视图又称为过程视图,显示程序执行时并发的状态。
物理视图展示软件到硬件的映射。

1995年Kruchten提出了著名的“4+1”视图,用来描述软件系统的架构。在“4+1”视图中,(物理视图 )用来描述系统软硬件之间的映射关系,这个视图往往(系统工程人员)最为关注;(逻辑视图 )描述了软件系统的功能情况,一般用类图描述;(进程视图 )描述设计的并发和同步特征。

在软件体系结构的建模与描述中,多视图是一种描述软件体系结构的重要途径,其体现了( 关注点分离 )的思想,其中,4+1模型是描述软件体系结构的常用模型,在该模型中,“1”指的是( 统一视图)。

多视图表示从不同的视角描述特定系统的体系结构,从而得到多个视图,并将这些视图组织起来以描述整体模型。系统的每一个不同侧面的视图反映了一组系统相关人员所关注的系统的特定方面,多视图体现了关注点分离的思想。其中,4+1模型是描述软件体系结构的常用模型, “4+1”视图模型从逻辑视图、进程视图、物理视图、开发视图和场景来描述软件架构。每个视图只关心系统的一个侧面,结合在一起才能反映系统软件架构的全部内容。在该模型中,“1”指的是统一场景

分析人员和测试人员关心的是系统的行为,因此会侧重于用例视图最终用户关心的是系统的功能,因此会侧重于逻辑视图程序员关心的是系统的配置、装配等问题,因此会侧重于实现视图系统集成人员关心的是系统的性能、可伸缩性、吞吐率等问题,因此会侧重于进程视图系统工程师关心的是系统的发布、安装、拓扑结构等问题,因此会侧重于部署视图

2.各个视图的描述

“4+1”视图模型从五个不同的视角来描述软件架构,每个视图只关心系统的一个侧面,五个视图结合在一起才能反映软件架构的全部内容。

(1)逻辑视图。逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。这种分解不但可以用来进行功能分析,而且可用作标识在整个系统的各个不同部分的通用机制和设计元素。在OO技术中,通过抽象、封装和继承,可以用对象模型来代表逻辑视图,用类图来描述逻辑视图。逻辑视图中使用的风格为面向对象的风格,在设计中要注意保持一个单一的、内聚的对象模型贯穿整个系统。

(2)开发视图。开发视图也称为模块视图,在UML中被称为实现视图,它主要侧重于软件模块的组织和管理。开发视图要考虑软件内部的需求,例如,软件开发的容易性、软件的复用性和软件的通用性,要充分考虑由于具体开发工具的不同而带来的局限性。开发视图通过系统I/O关系的模型图和子系统图来描述。

(3)进程视图。进程视图侧重于系统的运行特性,主要关注一些非功能性需求,例如,系统的性能和可用性等。进程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构等,它也定义了逻辑视图中的各个类的操作具体是在哪一个线程中被执行的。进程视图可以描述成多层抽象,每个级别分别关注不同的方面。

(4)物理视图。物理视图在UML中被称为部署视图,它主要考虑如何把软件映射到硬件上,它通常要考虑到解决系统拓扑结构、系统安装和通信等问题。当软件运行于不同的物理节点上时,各视图中的构件都直接或间接地对应于系统的不同节点上。因此,从软件到节点的映射要有较高的灵活性,当环境改变时,对系统其他视图的影响最小化。

(5)场景视图。场景视图可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景视图是最重要的需求抽象。场景视图对应UML中的用例视图。在开发软件架构时,它可以帮助架构设计师找到构件及其相互关系。同时,架构设计师也可以用场景视图来分析一个特定的视图,或描述不同视图的构件之间是如何相互作用的。场景可以用文本表示,也可以用图形表示。

3.架构的“4+1”视图和UML的“4+1”视图比较