Appearance
详细设计总览
详细设计回答的是:关键模块怎样实现、怎样失败、怎样恢复、怎样验证。 它不是要求每次修改都写一份大而全的文档。
1. 什么时候需要详细设计
适合:新项目/新子系统、跨模块能力、通信协议/数据库/线程模型变化、状态机/联锁/危险设备动作、正式交付前评审。
通常不需要完整详细设计:纯 UI MicroPatch、业务规则已经明确的局部 BehaviorPatch、known-good 差异已明确的最小 RegressionFix。
明确 BehaviorPatch 优先使用:
yaml
Trigger:
Condition:
Action:
Reset:
Record:
NonGoals:如果这 6 项仍有会改变业务结果的未知,再升级到 Discovery / 局部详细设计。
2. 设计矩阵
| 方向 | 要回答的问题 | 常见输出 |
|---|---|---|
| UI 与交互 | 谁在什么状态下能看/能操作什么 | 页面职责、控件状态、操作流程 |
| WPF / MVVM | View、ViewModel、Service 如何分工 | 绑定关系、命令边界、服务职责 |
| 通信与协议 | 报文怎样收发、解析、超时、恢复 | 帧结构、状态机、时序、样本 |
| 数据与追溯 | 保存什么、来源是什么、怎样查询导出 | 数据字典、存储方案、兼容规则 |
| 状态机 | 有哪些状态、什么条件转换 | 状态图、转换表、联锁矩阵 |
| 线程与资源 | 哪些任务并发、如何取消和释放 | 生命周期、同步、取消策略 |
| 日志与异常 | 出错后怎样定位和恢复 | 事件模型、诊断字段、错误策略 |
| 安全与联锁 | 哪些动作必须阻断或人工确认 | Interlock、HITL、恢复条件 |
| 部署与配置 | 环境、驱动、路径、配置怎样管理 | 部署图、配置基线、回滚 |
3. 每个专题的共同问题
设计目标和边界、已确认事实、正常流程、异常/取消/恢复、数据和状态、外部接口、并发/资源、安全/人工确认、验证方式和 NonGoals。只写本次真正相关的部分。
4. 测量和告警类设计
涉及采样值时明确:
text
RawValue / EngineeringValue / Conversion / ThresholdBasis / Aggregation / LoggedUnit涉及事件后果时明确 InterlockFault / AlarmOnly / Advisory / Information。涉及连续 N 次时明确正常帧是否清零、无效帧怎么处理、是否每窗口只报一次、何时复位。
5. 推荐阅读路径
| 场景 | 建议 |
|---|---|
| WPF 新项目 | UI/交互 → 状态机 → 线程/资源 → 异常 |
| 通信项目 | 协议 → 通信状态机 → 数据追溯 → 异常/Replay |
| 数据采集项目 | 通信 → 数据 → 线程资源 → 日志 |
| 已有项目跨模块功能 | 局部总体设计 → 受影响专题 |
| 明确局部行为修改 | Behavior Contract,不机械补完整详细设计 |
6. G5 详细设计门
大型任务拆分前确认:高风险设计方向已覆盖、Blocking Unknowns 清零、关键接口/协议/状态/数据契约明确、危险设备动作有联锁和 HITL、关键设计项有验证方式、NonGoals 清楚、能拆成小任务。
不要把“文档写得长”当成 G5 通过标准。
7. 详细设计如何进入正式文档
需要正式交付时,技术文档工程 Skill 会根据用途选择合适视图:设计方案强调技术路线和取舍;详细设计允许协议/状态机/数据结构;说明书强调步骤和异常处理;研制总结强调完成证据、问题闭环和符合性。