知识卡片
功能/结构/行为三种模型,各自的元素与规则形态
内容
把[[架构编排的内核公式:架构元素+架构规则|“架构元素+架构规则”]]这个二元组套到[[系统描述的三种维度:功能、结构、行为|功能、结构、行为三种模型]]上,会发现每种模型的元素类型和规则形态都有各自的规律。功能模型描述”干什么”,又分外部功能和内部功能两类:外部功能里,架构元素通常是客户和系统两类,关系就是”系统能给客户提供什么”(如面向对象分析里常用的用例图);内部功能里,架构元素是一个个”动词+名词”形式的过程(比如”汽车加速”这个外部功能对应的内部功能模型,元素就是一个个具体的内部动作过程),元素之间的关系靠对象、数据或控制变量的传递来体现。结构模型描述”是什么”,架构元素通常用名词表示,架构规则大多是连接关系或空间拓扑关系:应用交互关系图的元素是应用,规则是应用之间的数据/接口连接;类图的元素是类,规则更多样——包含关系是空间拓扑关系,继承和泛化关系是连接关系;物理部署图的元素是服务节点,节点间关系既是连接关系也是空间拓扑关系。行为模型描述”怎么干”,架构元素分两类:行为体(发起者)和实体(系统、角色、对象等参与者),实体之间通过一个个”动作”建立关系,多个动作按先后顺序串联起来就构成了行为——业务流程图的元素是流程发起者和参与角色,角色间靠动作的先后顺序关联;时序图的元素是行为发起者(用户或系统)与其他对象,对象间靠消息交互关联。可迁移启发:拿到一张陌生的架构图时,先判断它属于功能、结构还是行为模型中的哪一种,再对照”这种模型的元素通常是什么词性、规则通常是什么类型”这套规律去解读,比逐个猜测图上符号的含义更系统。
结构图:
flowchart TB
F["功能模型(干什么)"]
F --> F1["外部功能:元素=客户+系统<br/>关系=系统提供什么(如用例图)"]
F --> F2["内部功能:元素=动词+名词形式的过程<br/>关系=对象/数据/控制变量传递"]
S["结构模型(是什么)<br/>元素=名词<br/>规则=连接关系/空间拓扑关系"]
S --> S1["应用交互图:元素=应用"]
S --> S2["类图:元素=类(包含=拓扑,继承=连接)"]
S --> S3["部署图:元素=服务节点"]
B["行为模型(怎么干)<br/>元素=行为体+实体<br/>规则=动作先后顺序"]
B --> B1["业务流程图:元素=发起者+角色"]
B --> B2["时序图:元素=发起者+对象,规则=消息交互"]
参考来源
- 位置:《架构师启示录:知识模型、落地方法与思维模式》第3章《架构编排》之"3.3 系统模型的架构编排"(源文件:_epub-src/EPUB/xhtml/chapter6.xhtml)
- 结论依据:原文说明"在外部功能中,架构元素一般包括客户和系统两类……在内部功能中,架构元素是一个过程,这里的过程通常采用'动词+名词'的形式表示……结构模型主要用于描述系统'是什么'。其中,架构元素通常用一个名词来表示,而架构规则大多情况下表示的是一种连接关系或空间拓扑关系……行为模型中的架构元素一般包含两大类:一类是行为的发起者,称作行为体;另一类是实体", 直接支撑本卡关于三种模型元素与规则形态的结构图。
- 原始内容:类图也是编程中常见的一种结构模型,它的架构元素是类,并且类之间的关系比较多样化。比如包含关系是一种空间拓扑关系,而继承和泛化关系则是一种连接关系等。