知识卡片

架构图中一条线的含义:划分整体,且每部分须有明确指称

结构图卡

内容

在架构图中画下一条线,其含义是把一个整体划分成了两个部分;习惯上用纵向的线表示领域的划分,用横向的线表示层次的划分。这条分界线不一定要显式画出——用两个方框各自的边界来区隔两个部分,效果是等价的。但无论用线还是用方框,一旦表达出两个或多个部分,每个部分都必须有一个明确的概念来指示它,这里面包含两项独立的信息:各部分之间的分类依据是什么,以及各部分各自的抽象指称是什么。以Spring架构图为例,”数据对象域”与”一般对象域”是分类依据本身,而ORM、JEE是这两个域各自的指称;由于ORM、JEE这类指称本身已经在一定程度上暗示了背后的分类依据,只要交流双方或团队具有相同的知识背景,实际上可以省略专门画线和单独标注分类依据这两步,直接用指称本身完成沟通。这解释了为什么很多成熟的架构图看起来”没有线也没有分类说明”,却依然能被业内人士准确理解——不是它省略了分类信息,而是把分类信息编码进了指称的选词本身。可迁移启发:画架构图时如果打算省略显式的分界线和分类标注,要先确认自己选用的部分名称本身是否已经承载了足够的分类语义、且团队对这套术语有共同理解,否则省略掉的信息不会凭空消失,只会变成读图者各自的猜测。

结构图

flowchart TB
  subgraph 整体
    direction LR
    A["部分A<br/>(需要:分类依据+抽象指称)"]
    B["部分B<br/>(需要:分类依据+抽象指称)"]
  end
  A -.纵向线=领域划分.- B

参考来源

- 位置:《我的架构思想:基本模型、理论与原则》第6章《架构的表达与逻辑》之"6.2 理解线与线框"(源文件:_epub-src/ch016.xhtml) - 结论依据:原文说明"当我们表达出两个或多个部分时,每一个部分都需要一个明确的概念来指示。这涉及两个信息:其一,各个部分之间的分类依据;其二,各个部分所需的抽象指称……由于ORM/JEE这样的指称一定程度上也暗示了分类依据,因此……也可以省略上述的线与分类依据标识", 直接支撑本卡关于线的含义与省略条件的结论。 - 原始内容:"数据对象域"与"一般对象域"是二者的分类依据,而ORM与JEE是二者各自的指称。