首页 理论教育 多视角解读8.1.2软件体系结构

多视角解读8.1.2软件体系结构

时间:2023-06-28 理论教育 版权反馈
【摘要】:从多个视图描述软件体系结构,每一个视图描述软件体系结构的不同特征,这样有助于减少体系结构建模的复杂度,有助于设计人员对体系结构的理解。目前多数系统中,概念视图同模块视图密切相关。图8-1 软件体系结构的四种视图图8-1所示为软件体系结构的四种视图,图8-1显示了视图、设计活动

多视角解读8.1.2软件体系结构

正如对同一座大楼,不同的观察者像住户、结构设计工程师、内部装潢师、电工等需要不同的观察角度,这些视角彼此之间都有内在的联系,从各个方面共同描述了同一个实体。软件系统也一样,每一个视角都可以看做是整个软件的某个侧面,有各自的表示方法、各自的体系结构模式,而且每一个视角都可以定义其中的构件、构件间的相互关系、原则、约束等特性。

从多个视图描述软件体系结构,每一个视图描述软件体系结构的不同特征,这样有助于减少体系结构建模的复杂度,有助于设计人员对体系结构的理解。软件体系结构有四种视图描述,这四种视图是概念、模块、执行和代码视图。下面详细介绍四种视图模型,通过它更好地理解软件体系结构的概念。

1.四种视图

(1)概念视图 概念视图也称为逻辑视图,主要支持对系统功能需求的抽象描述,即系统最终将提供给用户什么样的服务。它与问题领域结合紧密,是系统工程师与领域专家交流的有效媒介。概念视图强调问题空间中各实体间的相互作用,用实体—关系图来描述。若采用面向对象技术,则可以用类图来描述。其中的构件主要是类,模式通常是面向对象模式。

(2)模块视图 模块视图也称为开发视图,主要侧重于系统模块之间的组织。根据系统模块的组织方式,这个视图可以有不同的形式。通常是根据分配给项目组的开发和维护工作来组织,例如:可根据信息隐蔽原则来组织模块,也可把系统运行时关系紧密或执行相关任务的模块组织在一起,也可把模块组织成层次结构。该视图同概念视图不同,它与实现紧密相连,通常用模块和子系统图来表示接口输入输出。该视图的模式主要是层次结构模式,通常将层次限制在4~6层。在同一个系统中,子图中的模块之间可以相互作用,同一层中不同子图间的模块也可以相互作用,也可与恰好相邻层的模块相互作用。这样,可使每个层次的接口既完备又精练,减少各模块之间的复杂关系。

此外,对于各个层次,越是底层通用性越强,当应用系统的需求发生变化时,所需的改变越少。

(3)执行视图 执行视图主要侧重于描述系统的动态属性,即系统运行时的特性。该视图着重解决系统的并发和分布以及系统的完整性和容错性,同时也定义在概念视图中的各个类中的操作是在哪一个控制线索中被执行的。该角度的构件通常是进程,进程是一个有其控制线索的命令语句序列。当系统运行时,一个进程可被执行、挂起、唤醒等,同时可与其他进程通信、同步等,并且通过进程间的通信模式可对系统性能进行评估。执行视图有许多模式,如数据流模式、客户/服务器模式等。

(4)代码视图 最初的程序代码都在单一的文件中,之后随着系统的复杂化,通常被分成不同种类的多个文件,例如:类、对象、接口说明、运行库等。现今的系统有了更先进的构造和管理方法,并把代码分成多个版本,因此有了版本和配置管理的任务。从源代码到目标代码、库文件、二进制文件、版本、文件和目录,对于它们的组织和管理,都影响着代码的重用和系统的建立。这就是代码视图。

2.四种视图之间的关系

观察设计开发过程和结构后会发现,任何软件系统中都存在这四种结构视图。视图之间会发生相互联系,例如,执行视图的实体和代码视图的文件之间存在对应的关系。因为创建可执行的系统需要根据源代码、资源和构件之间的依赖关系描述,经过编译和连接的复杂处理后产生。

这样,多数系统在执行视图和代码视图之间存在耦合关系,而且代码视图还包含许多附加的源代码和其他成分。执行视图可能包含诸如线程的实体,但与代码视图可能有或没有直接的关联。

模块视图与代码视图之间的关联是显而易见的。它们之间是分块和划分的关系,还存在共性和特性、基础和扩展、设计和运行的关系。这两个视图都是概念视图的实现表达。

3.四种视图的关注和处理

以上每种视图反映了软件体系结构的一个侧面,它们是软件工程关注的不同方面。(www.xing528.com)

概念视图与应用领域密切相关。在概念视图中,通过连接器单元的协同和数据交换,把系统的功能映射为概念构件的结构单元。在概念视图中,系统所处理的问题和解决问题的方案主要是使用领域术语描述的。它们一般独立于特殊的软件和硬件技术。概念视图所关心的主要工程问题有:系统是如何满足应用需求的;整个应用逻辑构件是如何整合,它们如何在功能上同其他部分相互作用;具体的领域硬件或软件是如何协调结合成系统的;如何按功能划分构成产品的发布版本;系统如何能最大限度地减少领域方面需求变化带来的结构变化。

在模块视图中,概念视图中构件和连接器被映射成子系统和模块。这里关注的是概念设计方案如何能用现今的软件平台和技术来实现。模块视图所关心的主要工程问题是:产品如何映射到软件平台;产品使用什么系统支持和服务;如何能被最大限度地减少模块之间的依赖关系;如何最大限度地重用模块和子系统;使用什么技术能使产品同已有软件、软件平台以及标准的变化发生隔离。

执行视图描述模块如何映射到运行平台提供的构件,而这一切又如何被映射到硬件结构。执行视图定义了诸如存储器用法和硬件分配的系统运行实体,以及它们的属性。执行视图的一个重要部分是控制流。概念视图描述的是逻辑控制流,但是,执行视图侧重于如何从运行平台的观点描述控制流。执行视图所关心的主要工程问题是:系统如何满足其性能、恢复和重配置的需求;如何能合理高效地使用资源;如何在不增加太多复杂性的情况下来实现必要的并发、复用和发布;如何能最大限度地减少运行平台变化的影响。

代码视图是从执行视图的角度出发,运行实体如何与可执行体构件发生映射,模块如何与源代码发生映射,源代码构件如何生成配置构件。代码视图所关心的主要工程问题有:付出的维护时间和代价如何因产品的升级而减少;应该如何管理产品的发布和版本;如何减少产品的开发时间;需要什么工具来支持开发环境;如何支持产品测试和整合。

通过在不同的视图中隔离表达出不同的工程关注,就能在设计中作出较高优先级别的决策,并能更容易地进行设计和选择。

4.四种视图的使用

通过明确区分四种视图,能够清楚了解在实践中存在松散耦合关系的视图之间的差别。目前多数系统中,概念视图同模块视图密切相关。

978-7-111-33186-5-Part01-325.jpg

图8-1 软件体系结构的四种视图

图8-1所示为软件体系结构的四种视图,图8-1显示了视图、设计活动和它们的关系。这些是基于四种视图设计方法的基础。因为视图间不是分离的,而是松散耦合的,所以,它们间存在一些反馈和反复。对于每一个视图,多数设计决策不依赖于其他视图,但确有一些决策是受到其后的设计视图影响的。

此外,在详尽的设计和完整的实现之前,不可能完成所有最后的抉择。如果所开发的系统与以前非常类似,那么从理论上讲是有可能作出快速抉择的。但在多数情况下,只能作出最合理的抉择,然后在必要的时候回到设计结构进行必要的改动。目标是尽可能减少不可避免的变化所造成的影响,也就是,最大限度地减少变更的数据、规模和范围。

使用概念视图、执行视图和代码视图可以弥补这个差距。在一个体系结构设计环境下,概念视图中构件和连接器是不能在任意的运行平台上直接执行的。对此,模块视图和执行视图明确地定义了构件和连接器是如何映射到运行平台的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈