DDD:4+1 视图

领域驱动设计系列

Posted by Shoukai Huang on March 20, 2020

1995年,Philippe Kruchten在《IEEE Software》上发表了题为《The 4+1 View Model of Architecture》的论文,引起了业界的极大关注。 后来,Philippe Kruchten加入Rational,他的4+1视图方法演变为著名的、为许多架构师所熟知的“RUP 4+1视图方法”(如下图所示)。

论文原文:4+1view-architecture

翻译:r-4p1-view

架构模型

Perry 和 Wolfe 使用一个精确的公式来表达,该公式由 Boehm 做了进一步修改:

软件架构 = {元素,形式,关系/约束}

软件架构涉及到抽象、分解和组合、风格和美学。我们用由多个视图或视角组成的模型来描述它。为了最终处理大型的、富有挑战性的架构,该模型包含五个主要的视图

沿用更普遍的说法:逻辑架构、开发架构、运行架构、物理架构

Logical view (逻辑架构)

设计的对象模型(使用面向对象的设计方法时)

逻辑架构主要支持功能性需求――即在为用户提供服务方面系统所应该提供的功能。系统分解为一系列的关键抽象,(大多数)来自于问题域,表现为对象或对象类的形式。它们采用抽象、封装和继承的原理。分解并不仅仅是为了功能分析,而且用来识别遍布系统各个部分的通用机制和设计元素。

Logical view: The logical view is concerned with the functionality that the system provides to end-users. UML diagrams are used to represent the logical view, and include class diagrams, and state diagrams.

UML:类图、对象、包、结构、状态图、

内容包括:

  • 层次、子系统
  • 接口
  • 协作关系

Process view (运行架构)

捕捉设计的并发和同步特征

运行架构考虑一些非功能性的需求,如性能和可用性。它解决并发性、分布性、系统完整性、容错性的问题,以及逻辑视图的主要抽象如何与进程结构相配合在一起-即在哪个控制线程上,对象的操作被实际执行。

Process view: The process view deals with the dynamic aspects of the system, explains the system processes and how they communicate, and focuses on the run time behavior of the system. The process view addresses concurrency, distribution, integrator, performance, and scalability, etc. UML diagrams to represent process view include the sequence diagram, communication diagram, activity diagram

UML:时序图、交互图、活动图

内容包括:

  • 进程
  • 线程
  • 主动类
  • 通信方式

Development view (开发架构)

描述了在开发环境中软件的静态组织结构。

开发架构关注软件开发环境下实际模块的组织。软件打包成小的程序块(程序库或子系统),它们可以由一位或几位开发人员来开发。子系统可以组织成分层结构,每个层为上一层提供良好定义的接口。

Development view: The development view illustrates a system from a programmer’s perspective and is concerned with software management. This view is also known as the implementation view. It uses the UML Component diagram to describe system components. UML Diagrams used to represent the development view include the Package diagram.

UML:组件图、包图

内容包括:

  • 程序包(SKD、框架)
  • 文件组织结构
  • 编译依赖关系
  • 目标单元

Physical view (物理架构)

描述了软件到硬件的映射,反映了分布式特性

物理架构主要关注系统非功能性的需求,如可用性、可靠性(容错性),性能(吞吐量)和可伸缩性。软件在计算机网络或处理节点上运行,被识别的各种元素(网络、过程、任务和对象),需要被映射至不同的节点;我们希望使用不同的物理配置:一些用于开发和测试,另外一些则用于不同地点和不同客户的部署。因此软件至节点的映射需要高度的灵活性及对源代码产生最小的影响。

Physical view: The physical view depicts the system from a system engineer’s point of view. It is concerned with the topology of software components on the physical layer as well as the physical connections between these components. This view is also known as the deployment view. UML diagrams used to represent the physical view include the deployment diagram.

UML:部署图

内容包括:

  • 安装单元
  • 节点
  • 网络
  • 基础设施选型

Scenarios (场景)

该视图是其他视图的冗余(因此”+1”)但它起到了两个作用:

  • 作为一项驱动因素来发现架构设计过程中的架构元素
  • 作为架构设计结束后的一项验证和说明功能,既以视图的角度来说明又作为架构原型测试的出发点。

Scenarios: The description of an architecture is illustrated using a small set of use cases, or scenarios, which become a fifth view. The scenarios describe sequences of interactions between objects and between processes. They are used to identify architectural elements and to illustrate and validate the architecture design. They also serve as a starting point for tests of an architecture prototype. This view is also known as the use case view.

UML:用例图

表示法

The 4+1 view model is generic and is not restricted to any notation, tool or design method. Quoting Kruchten,

“4+1”视图模型具有相当的”普遍性”,因此可以使用其他的标注方法和工具,也可以采用其他的设计方法,特别是对于逻辑和过程的分解。但文中指出的这些方法都已经成功的在实践中运用过。

The “4+1” view model is rather “generic”: other notations and tools can be used, other design methods can be used, especially for the logical and process decompositions, but we have indicated the ones we have used with success.

— Philippe Kruchten, Architectural Blueprints—The “4+1” View Model of Software Architecture

The following image and table shows the 4+1 view in detail

白皮书《将4 + 1视图架构与UML 2结合使用》给出了另一个映射

  • 逻辑视图:类图,对象图,状态图和组合结构
  • 运行视图:顺序图,通讯图,活动图,时序图,交互概述图
  • 开发视图:组件图
  • 物理视图:部署图
  • 用例视图:用例图,活动图

Modeling Logical View

Modeling Process View

参考