欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

软件 4a 架构图 软件架构 4+1 视图

最编程 2024-05-01 22:23:54
...



文章目录

  • 前言
  • 什么是4+1视图?
  • 逻辑视图(Logical View)
  • 流程视图(运行视图)(Process View)
  • 开发视图(Development View)
  • 物理视图(Physical View)
  • 场景视图
  • 和UML图的联系和区别
  • 4+1视图是完备的和正交的吗?
  • UML
  • UML的对象关系总结
  • UML常用的图
  • 参考


前言

华为有很多新式武器:软件教练,CleanCode,可信认证,还有4+1视图。其实并非华为的首创,这些都是业界成熟的东西。说新,主要是华为对它们的重视程度和运用程度超过国内很多公司。
国内很多公司也知道这些东西的重要性,但玩不起,投入不起,也没有能力玩转。

什么是4+1视图?

“4+1”视图是对逻辑架构进行描述,最早由 Philippe Kruchten 提出,他在1995年的《IEEE Software》上发表了题为《The 4+1 View Model of Architecture》的论文,引起了业界的极大关注,现在是软件设计的结构标准。

4+1视图是法宝,在华为得到极大重视和运用,华为软件工程能力成熟的标志。华为内部有个平台,专门做4+1的设计,这个平台虽然不够完美,界面上有很多细节还有瑕疵,但已经足够使用了。顺带说一句,华为内部有很多五花八门的平台,大部分是自研或改装的,风格上不统一,基本是各自为战,功能都很强大,但交互体验要略差一些。当然也有全公司上下统一使用的平台。总而言之是百花齐放的状态。

4+1是一种用于"描述软件密集型系统的体系结构,基于使用多个并发视图"的视图模型。

视图用于从不同的利益相关者,如最终用户、开发人员、系统工程师和项目经理的角度来描述系统。

该模型的四个视图分别是逻辑视图、开发视图、过程视图和物理视图。此外,选定的用例或场景被用来说明作为"加一"视图的架构。因此,该模型称为4+1视图。

软件4a架构图 软件架构4+1视图_软件工程

逻辑视图(Logical View)

逻辑视图涉及系统向最终用户提供的功能。可用UML图用来表示逻辑视图,包括类图状态图。SpringCloud的逻辑视图:

软件4a架构图 软件架构4+1视图_软件4a架构图_02

流程视图(运行视图)(Process View)

流程视图涉及系统的动态方面,解释系统流程及其通信方式。关注系统的运行时行为。流程视图涉及并发、分布、集成器、性能和可扩展性等。表示流程视图的UML图包括序列图、通信图、活动图。

软件4a架构图 软件架构4+1视图_4+1视图_03

开发视图(Development View)

开发视图从程序员的角度说明一个系统,涉及到软件管理。这种视图也称为实现视图。它使用UML组件图来描述系统组件。用来表示开发视图的UML图包括程序包图

物理视图(Physical View)

物理视图从系统工程师的角度描述系统。它关注的是物理层上软件组件的拓扑结构,以及这些组件之间的物理连接。这个视图也被称为部署视图。用来表示物理视图的UML图包括部署图

场景视图

使用一小套用例或情景来说明架构,这成为第五种观点。场景描述了对象之间和流程之间的交互序列。它们用于识别架构元素,并说明和验证架构设计。它们还可以作为架构原型测试的起点。这种视图也被称为用例视图

和UML图的联系和区别

UML图可以看作是4+1视图思想的实现方式。

4+1视图

UML

说明

场景视图

use case

交互场景,和需求人员沟通用。输出用例图+功能特性+界面原型。

逻辑视图

架构图

静态的,粗粒的概念模型,表现系统的层次结构。架构师的主要输出。开发视图是其实现

开发视图

软件包,组件图,类图

静态的,是具体实现,和开发人员交流用

运行视图

流程图,序列图,活动图

动态的、和开发人员交流用

物理视图

部署图,拓扑图

静态的、和运维实施人员交流用

4+1 视图是软件概要设计的依据,也是软件设计的第一步输出。

  • 场景视图是根据需求方的要求,告诉软件开发人员,用户需要什么,大致长什么模样。
  • 架构师根据场景需求进行概念抽象,层次设计,独立于具体的编程语言和技术实现。
  • 到了开发视图这一步,就需要细化到有哪些子系统和组件,组件之间的关联,再往下一步分解就变成详细设计了。
  • 也是概要设计的一部分,确立系统运行态和交互关系

所以,整个软件过程可以分为三个阶段:
第一:设计阶段:确立需求和架构,也就是输出场景视图和逻辑视图
第二:实现阶段:确立开发视图和运行视图,研发人员实现之
第三:上线阶段:部署实施
三个阶段是迭代往复的。

4+1视图是完备的和正交的吗?

正交性是自然的,但4+1是否足够了?这是架构师经常在心底的质疑。此处待补充。

UML

UML是Unified Model Language的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语言。UML主要目的:

  • 为用户提供现成的、有表现力的可视化建模语言,以便他们开发和交换有意义的模型。
  • 为核心概念提供可扩展性 (Extensibility) 和特殊化 (Specialization) 机制。
  • 独立于特定的编程语言和开发过程。
  • 为了解建模语言提供一个正式的基础。
  • 鼓励面向对象工具市场的发展。
  • 支持更高层次的开发概念,如协作,框架,模式和组件。
  • 整合最佳的工作方法 (Best Practices)。

UML的对象关系总结

UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realization)等。

依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述。uml中用带箭头的虚线表示Dependency关系,箭头指向被依赖元素。

泛化(Generalization):通常所说的继承(特殊个体 is kind of 一般个体)关系,不必多解释了。uml中用带空心箭头的实线线表示Generalization关系,箭头指向一般个体。

实现(Realize):元素A定义一个约定,元素B实现这个约定,则B和A的关系是Realize,B realize A。这个关系最常用于接口。uml中用空心箭头和虚线表示Realize关系,箭头指向定义约定的元素。

关联(Association):元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。uml中用实线表示Association关系,箭头指向被依赖元素。

聚合(Aggregation):关联关系的一种特例,表示部分和整体(整体 has a 部分)的关系。uml中用带空心菱形头的实线表示Aggregation关系,菱形头指向整体。

组合(Composition):组合是聚合关系的变种,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。uml中用带实心菱形头的实线表示Composition关系,菱形头指向整体。

UML常用的图

UML图分为结构图和行为图。

结构图分为类图、轮廓图、组件图、组合结构图、对象图、部署图、包图。

行为图又分活动图、用例图、状态机图和交互图。

交互图又分为序列图、时序图、通讯图、交互概览图。

软件4a架构图 软件架构4+1视图_软件工程_04


UML图说明:

软件4a架构图 软件架构4+1视图_软件工程_05

参考

  • 《The 4+1 View Model of Architecture》