架构图

月伴飞鱼 2024-06-23 15:20:26
架构相关
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!

画图工具:

https://excalidraw.com/

https://www.processon.com/

https://app.diagrams.net/

OmniGraffle:https://www.omnigroup.com/download/

用例图

从用户的角度而不是从开发者的角度来描述需求,分析产品的功能和动态行为。

基本元素

image-20240115141354253

用例

image-20240115141444959

关联关系

参与者与参与者间的泛化关系:

比如腾讯用户,包括微信用户和QQ用户两部分,但是使用腾讯业务时,只需要是腾讯用户即可。

此时,可以采用泛化关系,采用三角空心箭头作为指向。

image-20240115142131230

参与者与用例间的关联关系:

参与者与用例间是简单的关联关系,一个参与者可以有着多个用例。

image-20240115142218712

用例与用例间的泛化关系:

用例之间可以存在泛化关系,比如常见的支付,可以选择微信支付、支付宝支付等等,但是这个操作就是支付。

泛化关系采用三角空心箭头。

image-20240115142307126

用例与用例间的包含关系:

包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。

  • 通常可以这么理解,由基础用例向复杂用例转换的过程。

但是最终被参与者直接操作的还是基础用例。

包含关系的图形为虚线箭头加<<include>>,箭头指向复杂用例。

image-20240115142523572

用例与用例间的扩展关系:

扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。

特定条件出现时,该扩展用例的行为才会被执行。

扩展关系的图形为虚线箭头加上<<<exclude>>>,箭头指向基础用例。

image-20240115142602672

简单案例

image-20240115142640075

类图

泛化关系:在代码中体现为继承关系,设计上用空心箭头实线表示。

img

实现关系:在代码中体现在接口和实现关系,设计上用空心箭头虚线表示。

img

关联关系:在代码中体现为两个类之间存在语义上的关系,体现在类之间存在的隐约关系。

  • 关联关系常用于数据库表的设计,与数据库范式相对应。

1、单向关联:

  • 学生可以拥有书籍,学生知道书籍的存在,但是书籍无需知道学生的存在,学生可以拥有多本书籍,因此从学生指向书籍关联。

  • 设计上用箭头实线表示。

img

2、双向关联:

  • 学生知道老师的存在,老师知道学生的存在。

设计上用实线表示。

img

聚合关系:特殊的关联关系,体现整体和部分的关系,设计上用空心菱形实线箭头表示。

部门不存在,员工仍然可以存在,员工离职,部门仍然存在。

  • 体现的是0和n,整体和部分,整体不存在,部分仍然可以存在。

img

组合关系:特殊的关联关系,和聚合关系类似,体现整体与部分关系,设计上用实心菱形实现箭头表示。

  • 公司和部门关系体现在公司不存在,则部门也不存在了,前者掌握整体的生命周期。

体现在0和0、1和n,整体不存在,则部分不存在,整体存在,则部分存在。

img

依赖关系:没有直接的关系,仅仅在代码运行期间,产生的依赖,如将A类中间的时间属性赋值到B类中的时间属性。

  • A类中调用类中类型为B类的属性,A类中调用的方法,需要用到B类的信息等。

设计上用箭头虚线表示。箭头指向方为被调用方。

img

架构图

架构大致可以分为4类:

业务架构、应用架构、数据架构和技术架构。

整体逻辑关系如下:

v2-7ed7767fe0608d495eb4b7fff63a257d_1440w

业务架构

使用一套方法论/逻辑对产品(项目)所涉及到的业务进行边界划分。

  • 熟悉业务是关键。

比如做一个团购网站,需要把商品类目、商品、订单、订单服务、支付、退款等进行清晰划分。

而业务架构不需要考虑诸如用什么技术开发、并发大怎么办、选择什么样的硬件等等。

v2-8d21ed1aa6a87760311e6cb5e8cc986a_1440w

应用架构

它是对整个系统实现的总体上的架构,需要指出系统的层次、系统开发的原则、系统各个层次的应用服务。

例如,下图就将系统分为数据层、服务层、通讯层、展现层,并细分写明每个层次的应用服务。

v2-46f5907b0b9a6b79888d8b2cd3a480f0_1440w

数据架构

是一套对存储数据的架构逻辑。

它会根据各个系统应用场景、不同时间段的应用场景 。

  • 对数据进行诸如数据异构、读写分离、缓存使用、分布式数据策略等划分。

数据架构主要解决三个问题:

  • 第一,系统需要什么样的数据。
  • 第二,如何存储这些数据。
  • 第三,如何进行数据架构设计。
v2-a45c9757e5c21b0f5e1220aa454dd8c9_1440w

技术架构

应用架构本身只关心需要哪些应用系统,哪些平台来满足业务目标的需求。

  • 而不会关心在整个构建过程中你需要使用哪些技术。

技术架构则是应接应用架构的技术需求,并根据识别的技术需求,进行技术选型。

  • 把各个关键技术和技术之间的关系描述清楚。

技术架构解决的问题包括:

  • 纯技术层面的分层、开发框架的选择、开发语言的选择、涉及非功能性需求的技术选择。
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!