UML Model Registry
这里把项目记忆组织为 UML 2.x 的 Model / Package / Element / Diagram / Trace。Design、Engineering 和 Architecture 都是入口投影,不是独立真相层。
权威 UML Models
每个 Model 表示一个 viewpoint 和 abstraction level;C4 与旧 Explorer 只作为下方 Projection 使用。
组织 / 过程模型
解释系统要改变或稳定的业务秩序;UseCase 不描述 subject 内部结构,内部结构由 Trace / Refine 连接到软件结构模型。
描述参与者、业务过程、用例目标、可观察结果和业务概念
- 用于谁
- 业务负责人、产品负责人、领域专家、开发者
- 抽象层级
- system intent / business process / observable behavior
软件结构模型
解释软件如何被模块化、如何通过接口协作、哪些结构承载业务用例;不把目录、调用密度或工具指标当成模型对象。
描述 Package、Component、Interface、Port、Class、Connector、结构协作和运行时 Interaction
- 用于谁
- 架构师、开发者、维护者、评审者
- 抽象层级
- package / component / classifier / owned behavior
制品 / 部署模型
解释开发、部署和运行中使用或产生的物理信息项,以及它们被分配到哪些计算资源上执行。
描述 Artifact、Node、Device、ExecutionEnvironment、Deployment 和 CommunicationPath
- 用于谁
- 架构师、运维、发布负责人、开发者
- 抽象层级
- artifact / node / execution environment / deployment
Model 关系图
只展示权威 Model 与投影入口之间的 Trace / Refine / Project 关系;具体图种在各 Model 内部展开。
flowchart LR model_0["组织 / 过程模型"] model_1["软件结构模型"] model_2["制品 / 部署模型"] projection_0(["Design Explorer 投影"]) projection_1(["Engineering Explorer 投影"]) projection_2(["Architecture Explorer / C4 投影"]) model_0 -. "refine" .-> model_1 model_1 -. "realize" .-> model_2 model_0 -. "project" .-> projection_0 model_1 -. "project" .-> projection_1 model_2 -. "project" .-> projection_1 model_0 -. "project" .-> projection_2 model_1 -. "project" .-> projection_2 model_2 -. "project" .-> projection_2 classDef primary fill:#1d3550,stroke:#78b7ff,color:#f8fbff; classDef secondary fill:#182631,stroke:#486985,color:#d8e8f5; classDef projection fill:#15212b,stroke:#67e8f9,stroke-dasharray: 5 5,color:#d8e8f5; class model_0 primary; class model_1,model_2 secondary; class projection_0,projection_1,projection_2 projection;
Projection 入口
这些入口帮助阅读和讨论,但不能反过来定义 Model 边界。
包含 15 个用例图,覆盖 5 个业务模块(设备管理、聊天通信、地图导航、团队协作、诊断工具),版本 0.1.30-alpha。
Projection of: model:organization-process从软件结构模型与制品/部署模型投影出工程结构、协作、运行链路和复杂度候选。
Projection of: model:software-structure / model:deployment-artifact把三类 UML Model 投影为 C4 的 System Context、Container、Component 与 Code 缩放层级。
Projection of: model:organization-process / model:software-structure / model:deployment-artifact组织 / 过程模型
- Trail Mate 业务用例集use_case · classifierTrail Mate 业务用例集 包含 15 个 Use Case,覆盖设备管理、聊天通信、地图导航、团队协作及诊断工具五大业务模块。
软件结构模型
- 函数节点:makeBoardProfilecomponent · classifier函数节点:makeBoardProfile 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:pinNumcomponent · classifier函数节点:pinNum 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 结构切片 boards · gat562_mesh_evb_pro/include/boardsclass · classifier结构协作:结构切片 boards · gat562_mesh_evb_pro/include/boards 表示 软件结构模型 中的 Classifier 候选;它应使用仓库或业务语言中的真实名称,不允许用工具生成的匿名代号替代。
- 结构切片 boards · t_display_p4/include/boardsclass · classifier结构协作:结构切片 boards · t_display_p4/include/boards 表示 软件结构模型 中的 Classifier 候选;它应使用仓库或业务语言中的真实名称,不允许用工具生成的匿名代号替代。
- 结构切片 boards · t_echo_lite/include/boardsclass · classifier结构协作:结构切片 boards · t_echo_lite/include/boards 表示 软件结构模型 中的 Classifier 候选;它应使用仓库或业务语言中的真实名称,不允许用工具生成的匿名代号替代。
- 结构切片 boards · tab5/include/boardsclass · classifier结构协作:结构切片 boards · tab5/include/boards 表示 软件结构模型 中的 Classifier 候选;它应使用仓库或业务语言中的真实名称,不允许用工具生成的匿名代号替代。
- 结构切片 boards · tdeck_pro/include/boardsclass · classifier结构协作:结构切片 boards · tdeck_pro/include/boards 表示 软件结构模型 中的 Classifier 候选;它应使用仓库或业务语言中的真实名称,不允许用工具生成的匿名代号替代。
- 结构切片 boards · tdeck/include/boardsclass · classifier结构协作:结构切片 boards · tdeck/include/boards 表示 软件结构模型 中的 Classifier 候选;它应使用仓库或业务语言中的真实名称,不允许用工具生成的匿名代号替代。
- 结构切片 boards · tlora_pager/include/boardsclass · classifier结构协作:结构切片 boards · tlora_pager/include/boards 表示 软件结构模型 中的 Classifier 候选;它应使用仓库或业务语言中的真实名称,不允许用工具生成的匿名代号替代。
- 结构切片 boards · twatchs3/include/boardsclass · classifier结构协作:结构切片 boards · twatchs3/include/boards 表示 软件结构模型 中的 Classifier 候选;它应使用仓库或业务语言中的真实名称,不允许用工具生成的匿名代号替代。
- 结构切片 gat562_mesh_evb_pro · gat562_mesh_evb_proclass · classifier结构协作:结构切片 gat562_mesh_evb_pro · gat562_mesh_evb_pro 表示 软件结构模型 中的 Classifier 候选;它应使用仓库或业务语言中的真实名称,不允许用工具生成的匿名代号替代。
- 结构切片 t_echo_lite · t_echo_liteclass · classifier结构协作:结构切片 t_echo_lite · t_echo_lite 表示 软件结构模型 中的 Classifier 候选;它应使用仓库或业务语言中的真实名称,不允许用工具生成的匿名代号替代。
- 模块边界:boardspackage · namespace模块边界:boards 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 模块边界:build.c6_companionpackage · namespace模块边界:build.c6_companion 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 模块边界:build.t_display_p4_tftpackage · namespace模块边界:build.t_display_p4_tft 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 模块边界:build.tdisplayp4_amoledpackage · namespace模块边界:build.tdisplayp4_amoled 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 模块边界:build.tdisplayp4_tftpackage · namespace模块边界:build.tdisplayp4_tft 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 模块边界:buildspackage · namespace模块边界:builds 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 模块边界:cmakepackage · namespace模块边界:cmake 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 模块边界:COPYRIGHTpackage · namespace模块边界:COPYRIGHT 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 服务对象:maincomponent · classifier服务对象:main 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 界面组件:tm_services_record_errorcomponent · classifier界面组件:tm_services_record_error 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 模块边界:firmwarepackage · namespace模块边界:firmware 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 模块边界:imagespackage · namespace模块边界:images 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 模块边界:LICENSEpackage · namespace模块边界:LICENSE 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 模块边界:managed_componentspackage · namespace模块边界:managed_components 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 函数节点:companion_entercomponent · classifier函数节点:companion_enter 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:containscomponent · classifier函数节点:contains 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:maincomponent · classifier函数节点:main 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 模块边界:apps/esp32_lvglpackage · namespace模块边界:apps/esp32_lvgl 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- add_hex_line 调用 add_status_lineinteraction · owned_behavior动态协作:add_hex_line 调用 add_status_line 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- add_status_line 调用 add_labelinteraction · owned_behavior动态协作:add_status_line 调用 add_label 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- add_u32_line 调用 add_labelinteraction · owned_behavior动态协作:add_u32_line 调用 add_label 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- canRunEsp32LvglStartupRuntime 调用 canStartEsp32LvglLoopRuntimeinteraction · owned_behavior动态协作:canRunEsp32LvglStartupRuntime 调用 canStartEsp32LvglLoopRuntime 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- companion_enter 调用 add_hex_lineinteraction · owned_behavior动态协作:companion_enter 调用 add_hex_line 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- companion_enter 调用 add_labelinteraction · owned_behavior动态协作:companion_enter 调用 add_label 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- companion_enter 调用 add_status_lineinteraction · owned_behavior动态协作:companion_enter 调用 add_status_line 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- companion_enter 调用 add_u32_lineinteraction · owned_behavior动态协作:companion_enter 调用 add_u32_line 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- hasEsp32LvglRuntimeTargetProfile 调用 esp32LvglRuntimeTargetProfileinteraction · owned_behavior动态协作:hasEsp32LvglRuntimeTargetProfile 调用 esp32LvglRuntimeTargetProfile 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- runEsp32LvglStartupRuntime 调用 canRunEsp32LvglStartupRuntimeinteraction · owned_behavior动态协作:runEsp32LvglStartupRuntime 调用 canRunEsp32LvglStartupRuntime 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- runEsp32LvglStartupRuntime 调用 setBootLoginteraction · owned_behavior动态协作:runEsp32LvglStartupRuntime 调用 setBootLog 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- runEsp32LvglStartupRuntime 调用 showBootUiinteraction · owned_behavior动态协作:runEsp32LvglStartupRuntime 调用 showBootUi 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- setBootLog 调用 lockUiinteraction · owned_behavior动态协作:setBootLog 调用 lockUi 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- setBootLog 调用 unlockUiinteraction · owned_behavior动态协作:setBootLog 调用 unlockUi 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- showBootUi 调用 lockUiinteraction · owned_behavior动态协作:showBootUi 调用 lockUi 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- showBootUi 调用 unlockUiinteraction · owned_behavior动态协作:showBootUi 调用 unlockUi 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- startEsp32LvglLoopRuntime 调用 canStartEsp32LvglLoopRuntimeinteraction · owned_behavior动态协作:startEsp32LvglLoopRuntime 调用 canStartEsp32LvglLoopRuntime 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- tick 调用 log_loop_intervalinteraction · owned_behavior动态协作:tick 调用 log_loop_interval 是 软件结构模型 中的局部行为,用于解释某个 Classifier、UseCase 或 Component 在特定场景下的动作、消息或状态变化。
- 函数节点:containscomponent · classifier函数节点:contains 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:maincomponent · classifier函数节点:main 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:not_containscomponent · classifier函数节点:not_contains 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:read_filecomponent · classifier函数节点:read_file 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 模块边界:apps/linux_cardputer_zeropackage · namespace模块边界:apps/linux_cardputer_zero 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 模块边界:apps/linux_sim_shellpackage · namespace模块边界:apps/linux_sim_shell 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 函数节点:expectcomponent · classifier函数节点:expect 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:launchMapLayoutcomponent · classifier函数节点:launchMapLayout 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:launchSettingsLayoutcomponent · classifier函数节点:launchSettingsLayout 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:maincomponent · classifier函数节点:main 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:makeLabelcomponent · classifier函数节点:makeLabel 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:makeSettingsRowcomponent · classifier函数节点:makeSettingsRow 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:makeSpincomponent · classifier函数节点:makeSpin 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:makeSwitchcomponent · classifier函数节点:makeSwitch 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:refreshMapcomponent · classifier函数节点:refreshMap 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:refreshUicomponent · classifier函数节点:refreshUi 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 函数节点:setLabelcomponent · classifier函数节点:setLabel 表示软件结构模型中的 Component 候选,重点是可替换模块、提供/需要的接口以及连接关系。
- 模块边界:apps/linux_uconsole_gtkpackage · namespace模块边界:apps/linux_uconsole_gtk 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 模块边界:apps/nrf52_nodepackage · namespace模块边界:apps/nrf52_node 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
- 模块边界:apps/README.mdpackage · namespace模块边界:apps/README.md 表示 Package 命名空间或包含关系,用于组织模型元素,不等同于任意文件夹清单。
制品 / 部署模型
- 尚未生成制品 / 部署模型deployment · relationship尚未生成制品 / 部署模型 表示制品、运行节点或部署关系;它解释 Artifact 如何被分配到 Node 或 ExecutionEnvironment。
Trace / Refine
- refine model:organization-process -> model:software-structure:组织/过程模型中的 UseCase、Activity 和业务概念需要通过 Trace / Refine 连接到承载它们的软件结构。
- realize model:software-structure -> model:deployment-artifact:软件结构中的 Component、Interface 和 Classifier 最终应映射到 Artifact、Node 或 ExecutionEnvironment。
- project model:organization-process -> projection:design-explorer:Design Explorer 投影 是 model:organization-process 的展示投影;它可以帮助讨论,但不能覆盖 Model / Package / Element 的权威边界。
- project model:software-structure -> projection:engineering-explorer:Engineering Explorer 投影 是 model:software-structure 的展示投影;它可以帮助讨论,但不能覆盖 Model / Package / Element 的权威边界。
- project model:deployment-artifact -> projection:engineering-explorer:Engineering Explorer 投影 是 model:deployment-artifact 的展示投影;它可以帮助讨论,但不能覆盖 Model / Package / Element 的权威边界。
- project model:organization-process -> projection:architecture-c4:Architecture Explorer / C4 投影 是 model:organization-process 的展示投影;它可以帮助讨论,但不能覆盖 Model / Package / Element 的权威边界。
- project model:software-structure -> projection:architecture-c4:Architecture Explorer / C4 投影 是 model:software-structure 的展示投影;它可以帮助讨论,但不能覆盖 Model / Package / Element 的权威边界。
- project model:deployment-artifact -> projection:architecture-c4:Architecture Explorer / C4 投影 是 model:deployment-artifact 的展示投影;它可以帮助讨论,但不能覆盖 Model / Package / Element 的权威边界。