Praxis Software Structure Model

模块边界:boards

解释 boards 的包/模块边界、文件数量、符号数量和跨模块依赖。

Package Diagrams candidate / high 0.1.0 · 34aad0bffa2f / main

图的读法

技术复杂度分析

与业务复杂度的关联

治理建议

UML / 技术图

flowchart LR
  package_node["boards"]
  dependency_1["apps/esp32_lvgl"]
  package_node --> dependency_1
  dependency_2["apps/linux_cardputer_zero"]
  package_node --> dependency_2
  dependency_3["apps/nrf52_node"]
  package_node --> dependency_3
  dependency_4["apps/linux_uconsole_gtk"]
  package_node --> dependency_4
  dependency_5["apps/linux_sim_shell"]
  package_node --> dependency_5
  dependency_6["firmware"]
  package_node --> dependency_6

覆盖范围

图内语义元素下钻

  1. boards package

    boards 是当前 Package Diagram 的中心工程边界,用来观察它自身规模、依赖方向和可下钻技术复杂度。

    技术角色
    技术组织边界:它把 boards 下的文件、符号和跨模块关系聚合成一个可讨论的工程单元。
    为什么出现
    本地仓库证据在 boards 下观察到足够文件、符号或跨模块关系,因此它值得被提升为软件结构模型中的 package 级入口。
    关系意义
    图中从 boards 指向其它节点的箭头表示当前边界依赖外部 package/module;被其他模块依赖或调用 47 次、依赖或调用外部模块 183 次,用于判断它更像稳定复用边界还是编排/桥接边界。
    下钻意图
    下钻该节点可以继续查看 boards 内的关键组件、结构协作切片、运行链路、部署节点和复杂度热点,从而理解这个工程边界如何承载功能变化。
    业务关联
    该节点不是业务故事本身,但组织/过程模型中落到 boards 的 Use Case 可以把这里作为技术承载边界引用。当前关联仍是 CANDIDATE。
    变更影响
    修改 boards 的公共入口、依赖方向或目录边界,可能影响引用它的组件图、sequence 片段、部署配置和相关业务故事的验证路径。
    置信度
    high

    证据

    • package scope: boards
    • 模块路径:boards
    • 文件数:92
    • 符号数:1952
    • 被其他模块依赖或调用:47
    • 依赖或调用外部模块:183
    • boards/cardputerzero/board_facts.h
    • boards/cardputerzero/BOARD.md

    风险

    • 如果只把该节点当作目录名,会遗漏它作为稳定工程边界的职责判断。
    • 如果依赖外部模块的迹象持续增加,可能说明该边界承担过多编排或桥接职责。

    问题

    • 当前仓库证据尚未把该 package 明确 Trace 到某个 Use Case;因此业务关联保持候选。
  2. apps/esp32_lvgl package

    apps/esp32_lvgl 是 boards 当前观察到的外部技术边界依赖;它说明当前模块不是孤立实现,而是需要借助另一组工程能力完成职责。

    技术角色
    跨模块技术依赖边界:当前 package 需要另一个 package/module 提供能力、契约、配置或运行支撑。
    为什么出现
    本地仓库证据在 boards 与 apps/esp32_lvgl 之间观察到跨模块事实关系,因此该依赖被放入 Package Diagram,而不是只藏在代码 import/call 里。
    关系意义
    boards -> apps/esp32_lvgl 表示本地仓库证据观察到跨模块关系;它解释技术依赖方向,但不直接证明业务流程。
    下钻意图
    下钻 apps/esp32_lvgl 可以查看它自己的 Package Diagram,再继续进入其组件、结构、sequence 或热点,判断当前依赖究竟落在入口、运行时、工具注册、模型适配还是基础设施边界。
    业务关联
    boards 如果承载用户可见能力,那么对 apps/esp32_lvgl 的依赖可能是该能力的运行机制、扩展点或治理约束。该业务关联需要由组织/过程模型的 Use Case 证据确认。
    变更影响
    修改 apps/esp32_lvgl 的公共接口、路径或运行方式,可能让 boards 的调用链、打包入口、agent 工作流或 UI 行为发生连锁变化。
    置信度
    high

    证据

    • dependency edge: boards -> apps/esp32_lvgl
    • apps/esp32_lvgl/APP_SHELL_MANIFEST.md
    • apps/esp32_lvgl/CMakeLists.txt
    • apps/esp32_lvgl/library.json
    • apps/esp32_lvgl/README.md
    • apps/esp32_lvgl/src/esp32_lvgl_app_shell.cpp
    • apps/esp32_lvgl/src/esp32_lvgl_app_shell.h
    • apps/esp32_lvgl/src/esp32_lvgl_arduino_app_registry.cpp

    风险

    • 跨模块依赖只能证明技术关系,不能直接证明业务关系。
    • 如果该依赖只是因为实现方便而存在,未来变更可能形成边界漂移或隐式公共工具箱。

    问题

    • 当前证据尚未证明 boards 依赖 apps/esp32_lvgl 与某个 Use Case、runtime command 或配置决策直接相关。
    • 当前依赖方向按仓库事实记录为候选,尚未发现架构决策文档证明它是稳定边界。
  3. apps/linux_cardputer_zero package

    apps/linux_cardputer_zero 是 boards 当前观察到的外部技术边界依赖;它说明当前模块不是孤立实现,而是需要借助另一组工程能力完成职责。

    技术角色
    跨模块技术依赖边界:当前 package 需要另一个 package/module 提供能力、契约、配置或运行支撑。
    为什么出现
    本地仓库证据在 boards 与 apps/linux_cardputer_zero 之间观察到跨模块事实关系,因此该依赖被放入 Package Diagram,而不是只藏在代码 import/call 里。
    关系意义
    boards -> apps/linux_cardputer_zero 表示本地仓库证据观察到跨模块关系;它解释技术依赖方向,但不直接证明业务流程。
    下钻意图
    下钻 apps/linux_cardputer_zero 可以查看它自己的 Package Diagram,再继续进入其组件、结构、sequence 或热点,判断当前依赖究竟落在入口、运行时、工具注册、模型适配还是基础设施边界。
    业务关联
    boards 如果承载用户可见能力,那么对 apps/linux_cardputer_zero 的依赖可能是该能力的运行机制、扩展点或治理约束。该业务关联需要由组织/过程模型的 Use Case 证据确认。
    变更影响
    修改 apps/linux_cardputer_zero 的公共接口、路径或运行方式,可能让 boards 的调用链、打包入口、agent 工作流或 UI 行为发生连锁变化。
    置信度
    high

    证据

    • dependency edge: boards -> apps/linux_cardputer_zero
    • apps/linux_cardputer_zero/APP_SHELL_MANIFEST.md
    • apps/linux_cardputer_zero/CMakeLists.txt
    • apps/linux_cardputer_zero/packaging/trailmate-cardputer-zero-applaunch
    • apps/linux_cardputer_zero/packaging/trailmate-cardputer-zero.desktop
    • apps/linux_cardputer_zero/packaging/trailmate-cardputer-zero.png
    • apps/linux_cardputer_zero/README.md
    • apps/linux_cardputer_zero/src/cardputer_zero_input_method_port.cpp

    风险

    • 跨模块依赖只能证明技术关系,不能直接证明业务关系。
    • 如果该依赖只是因为实现方便而存在,未来变更可能形成边界漂移或隐式公共工具箱。

    问题

    • 当前证据尚未证明 boards 依赖 apps/linux_cardputer_zero 与某个 Use Case、runtime command 或配置决策直接相关。
    • 当前依赖方向按仓库事实记录为候选,尚未发现架构决策文档证明它是稳定边界。
  4. apps/nrf52_node package

    apps/nrf52_node 是 boards 当前观察到的外部技术边界依赖;它说明当前模块不是孤立实现,而是需要借助另一组工程能力完成职责。

    技术角色
    跨模块技术依赖边界:当前 package 需要另一个 package/module 提供能力、契约、配置或运行支撑。
    为什么出现
    本地仓库证据在 boards 与 apps/nrf52_node 之间观察到跨模块事实关系,因此该依赖被放入 Package Diagram,而不是只藏在代码 import/call 里。
    关系意义
    boards -> apps/nrf52_node 表示本地仓库证据观察到跨模块关系;它解释技术依赖方向,但不直接证明业务流程。
    下钻意图
    下钻 apps/nrf52_node 可以查看它自己的 Package Diagram,再继续进入其组件、结构、sequence 或热点,判断当前依赖究竟落在入口、运行时、工具注册、模型适配还是基础设施边界。
    业务关联
    boards 如果承载用户可见能力,那么对 apps/nrf52_node 的依赖可能是该能力的运行机制、扩展点或治理约束。该业务关联需要由组织/过程模型的 Use Case 证据确认。
    变更影响
    修改 apps/nrf52_node 的公共接口、路径或运行方式,可能让 boards 的调用链、打包入口、agent 工作流或 UI 行为发生连锁变化。
    置信度
    high

    证据

    • dependency edge: boards -> apps/nrf52_node
    • apps/nrf52_node/APP_SHELL_MANIFEST.md
    • apps/nrf52_node/library.json
    • apps/nrf52_node/README.md
    • apps/nrf52_node/src/nrf52_node_app_facade_runtime.cpp
    • apps/nrf52_node/src/nrf52_node_app_facade_runtime.h
    • apps/nrf52_node/src/nrf52_node_app_runtime_access.cpp
    • apps/nrf52_node/src/nrf52_node_app_runtime_access.h

    风险

    • 跨模块依赖只能证明技术关系,不能直接证明业务关系。
    • 如果该依赖只是因为实现方便而存在,未来变更可能形成边界漂移或隐式公共工具箱。

    问题

    • 当前证据尚未证明 boards 依赖 apps/nrf52_node 与某个 Use Case、runtime command 或配置决策直接相关。
    • 当前依赖方向按仓库事实记录为候选,尚未发现架构决策文档证明它是稳定边界。
  5. apps/linux_uconsole_gtk package

    apps/linux_uconsole_gtk 是 boards 当前观察到的外部技术边界依赖;它说明当前模块不是孤立实现,而是需要借助另一组工程能力完成职责。

    技术角色
    跨模块技术依赖边界:当前 package 需要另一个 package/module 提供能力、契约、配置或运行支撑。
    为什么出现
    本地仓库证据在 boards 与 apps/linux_uconsole_gtk 之间观察到跨模块事实关系,因此该依赖被放入 Package Diagram,而不是只藏在代码 import/call 里。
    关系意义
    boards -> apps/linux_uconsole_gtk 表示本地仓库证据观察到跨模块关系;它解释技术依赖方向,但不直接证明业务流程。
    下钻意图
    下钻 apps/linux_uconsole_gtk 可以查看它自己的 Package Diagram,再继续进入其组件、结构、sequence 或热点,判断当前依赖究竟落在入口、运行时、工具注册、模型适配还是基础设施边界。
    业务关联
    boards 如果承载用户可见能力,那么对 apps/linux_uconsole_gtk 的依赖可能是该能力的运行机制、扩展点或治理约束。该业务关联需要由组织/过程模型的 Use Case 证据确认。
    变更影响
    修改 apps/linux_uconsole_gtk 的公共接口、路径或运行方式,可能让 boards 的调用链、打包入口、agent 工作流或 UI 行为发生连锁变化。
    置信度
    high

    证据

    • dependency edge: boards -> apps/linux_uconsole_gtk
    • apps/linux_uconsole_gtk/APP_SHELL_MANIFEST.md
    • apps/linux_uconsole_gtk/CMakeLists.txt
    • apps/linux_uconsole_gtk/packaging/trailmate-uconsole.desktop
    • apps/linux_uconsole_gtk/packaging/trailmate-uconsole.png
    • apps/linux_uconsole_gtk/README.md
    • apps/linux_uconsole_gtk/src/linux_uconsole_gtk_app_shell.cpp
    • apps/linux_uconsole_gtk/src/linux_uconsole_gtk_app_shell.h

    风险

    • 跨模块依赖只能证明技术关系,不能直接证明业务关系。
    • 如果该依赖只是因为实现方便而存在,未来变更可能形成边界漂移或隐式公共工具箱。

    问题

    • 当前证据尚未证明 boards 依赖 apps/linux_uconsole_gtk 与某个 Use Case、runtime command 或配置决策直接相关。
    • 当前依赖方向按仓库事实记录为候选,尚未发现架构决策文档证明它是稳定边界。
  6. apps/linux_sim_shell package

    apps/linux_sim_shell 是 boards 当前观察到的外部技术边界依赖;它说明当前模块不是孤立实现,而是需要借助另一组工程能力完成职责。

    技术角色
    跨模块技术依赖边界:当前 package 需要另一个 package/module 提供能力、契约、配置或运行支撑。
    为什么出现
    本地仓库证据在 boards 与 apps/linux_sim_shell 之间观察到跨模块事实关系,因此该依赖被放入 Package Diagram,而不是只藏在代码 import/call 里。
    关系意义
    boards -> apps/linux_sim_shell 表示本地仓库证据观察到跨模块关系;它解释技术依赖方向,但不直接证明业务流程。
    下钻意图
    下钻 apps/linux_sim_shell 可以查看它自己的 Package Diagram,再继续进入其组件、结构、sequence 或热点,判断当前依赖究竟落在入口、运行时、工具注册、模型适配还是基础设施边界。
    业务关联
    boards 如果承载用户可见能力,那么对 apps/linux_sim_shell 的依赖可能是该能力的运行机制、扩展点或治理约束。该业务关联需要由组织/过程模型的 Use Case 证据确认。
    变更影响
    修改 apps/linux_sim_shell 的公共接口、路径或运行方式,可能让 boards 的调用链、打包入口、agent 工作流或 UI 行为发生连锁变化。
    置信度
    high

    证据

    • dependency edge: boards -> apps/linux_sim_shell
    • apps/linux_sim_shell/APP_SHELL_MANIFEST.md
    • apps/linux_sim_shell/CMakeLists.txt
    • apps/linux_sim_shell/README.md
    • apps/linux_sim_shell/src/linux_sim_app_shell.cpp
    • apps/linux_sim_shell/src/linux_sim_app_shell.h
    • apps/linux_sim_shell/src/linux_sim_runtime_entry_adoption_probe.cpp
    • apps/linux_sim_shell/src/linux_sim_runtime_entry_adoption_probe.h

    风险

    • 跨模块依赖只能证明技术关系,不能直接证明业务关系。
    • 如果该依赖只是因为实现方便而存在,未来变更可能形成边界漂移或隐式公共工具箱。

    问题

    • 当前证据尚未证明 boards 依赖 apps/linux_sim_shell 与某个 Use Case、runtime command 或配置决策直接相关。
    • 当前依赖方向按仓库事实记录为候选,尚未发现架构决策文档证明它是稳定边界。
  7. firmware package

    firmware 是 boards 当前观察到的外部技术边界依赖;它说明当前模块不是孤立实现,而是需要借助另一组工程能力完成职责。

    技术角色
    跨模块技术依赖边界:当前 package 需要另一个 package/module 提供能力、契约、配置或运行支撑。
    为什么出现
    本地仓库证据在 boards 与 firmware 之间观察到跨模块事实关系,因此该依赖被放入 Package Diagram,而不是只藏在代码 import/call 里。
    关系意义
    boards -> firmware 表示本地仓库证据观察到跨模块关系;它解释技术依赖方向,但不直接证明业务流程。
    下钻意图
    下钻 firmware 可以查看它自己的 Package Diagram,再继续进入其组件、结构、sequence 或热点,判断当前依赖究竟落在入口、运行时、工具注册、模型适配还是基础设施边界。
    业务关联
    boards 如果承载用户可见能力,那么对 firmware 的依赖可能是该能力的运行机制、扩展点或治理约束。该业务关联需要由组织/过程模型的 Use Case 证据确认。
    变更影响
    修改 firmware 的公共接口、路径或运行方式,可能让 boards 的调用链、打包入口、agent 工作流或 UI 行为发生连锁变化。
    置信度
    high

    证据

    • dependency edge: boards -> firmware
    • firmware/c6_companion/CMakeLists.txt
    • firmware/c6_companion/components/tm_ble/CMakeLists.txt
    • firmware/c6_companion/components/tm_ble/include/tm_ble.h
    • firmware/c6_companion/components/tm_ble/tm_ble.c
    • firmware/c6_companion/components/tm_diag/CMakeLists.txt
    • firmware/c6_companion/components/tm_diag/include/tm_diag.h
    • firmware/c6_companion/components/tm_diag/tm_diag.c

    风险

    • 跨模块依赖只能证明技术关系,不能直接证明业务关系。
    • 如果该依赖只是因为实现方便而存在,未来变更可能形成边界漂移或隐式公共工具箱。

    问题

    • 当前证据尚未证明 boards 依赖 firmware 与某个 Use Case、runtime command 或配置决策直接相关。
    • 当前依赖方向按仓库事实记录为候选,尚未发现架构决策文档证明它是稳定边界。

可下钻 UML

函数节点:makeBoardProfile component · contains

打开 函数节点:makeBoardProfile 是为了确认 boards 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 boards/t_echo_lite/include/boards/t_echo_lite/board_profile.h,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。

function 位于 boards/t_echo_lite/include/boards/t_echo_lite/board_profile.h#L188,协调多个外部对象或能力,用于解释技术协作和变更影响面。
函数节点:pinNum component · contains

打开 函数节点:pinNum 是为了确认 boards 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 boards/t_echo_lite/include/boards/t_echo_lite/board_profile.h,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。

function 位于 boards/t_echo_lite/include/boards/t_echo_lite/board_profile.h#L8,被多个对象复用或依赖,用于解释技术协作和变更影响面。
结构协作:结构切片 boards · gat562_mesh_evb_pro/include/boards class_structural · structural_context

打开 结构协作:结构切片 boards · gat562_mesh_evb_pro/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。

解释 boards/gat562_mesh_evb_pro/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 Gat562Board、SX1262、Sx1262RadioPacketIo、Gat562Board::I2cGuard、GpsRuntime。
结构协作:结构切片 boards · t_echo_lite/include/boards class_structural · structural_context

打开 结构协作:结构切片 boards · t_echo_lite/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。

解释 boards/t_echo_lite/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 TEchoLiteBoard、Sx1262RadioPacketIo、TEchoLiteBoard::I2cGuard、GpsRuntime、Module。
结构协作:结构切片 boards · tab5/include/boards class_structural · structural_context

打开 结构协作:结构切片 boards · tab5/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。

解释 boards/tab5/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 Tab5Board、Tab5Board::ManagedSystemI2cGuard、Tab5Board::SysI2cGuard、CodecCompat。
结构协作:结构切片 boards · t_display_p4/include/boards class_structural · structural_context

打开 结构协作:结构切片 boards · t_display_p4/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。

解释 boards/t_display_p4/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 TDisplayP4Board、TDisplayP4Board::ManagedSystemI2cGuard。
结构协作:结构切片 boards · tlora_pager/include/boards class_structural · structural_context

打开 结构协作:结构切片 boards · tlora_pager/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。

解释 boards/tlora_pager/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 TLoRaPagerBoard、SX1262Access、AppContext。
依赖簇:boards 技术热点 technical_hotspot · risk_detail

查看 依赖簇:boards 技术热点 这个复杂度信号是否会抬高 boards 的阅读、修改、测试或回归成本。

该模块依赖多个外部边界,当前按候选技术耦合中心处理;图中只保留仓库证据已经观察到的依赖方向和边界。
承担外部协作的候选对象:boards/tlora_pager/src/tlora_pager_board.cpp 技术热点 technical_hotspot · risk_detail

查看 承担外部协作的候选对象:boards/tlora_pager/src/tlora_pager_board.cpp 技术热点 这个复杂度信号是否会抬高 boards 的阅读、修改、测试或回归成本。

该符号连接多个外部对象或能力,可能承担编排、聚合或过宽责任。

证据

问题