架构决策记录(ADR)

共 17 题
#

1. ADR(Architecture Decision Record)的核心结构中标题、状态、上下文、决策、后果五部分如何编写?为什么 ADR 是不可变(immutable)的?

A ADR 内容不可变,但状态字段可流转;决策变更应新建 ADR 并将旧 ADR 标记为 Superseded ✓ 正确答案
B 决策被推翻时直接修改原 ADR 的决策内容,保持文档同步
C ADR 一旦创建就永远不能做任何修改,包括状态字段
D ADR 只是一种临时草稿,过期后直接删除即可
#

2. ADR 与 RFC/设计文档的边界中什么粒度的决策需要 ADR?什么需要完整设计文档?如何避免 ADR 膨胀为设计文档?

A 所有技术决策都应写成完整设计文档,ADR 没有存在的必要
B ADR 记录决策结论与理由并保持轻量,详细设计放设计文档并以链接关联 ✓ 正确答案
C ADR 应包含完整代码实现,方便直接参考
D 设计文档可以替代 ADR,不再需要记录决策状态
#

3. ADR 的生命周期管理中 Proposed → Accepted → Deprecated → Superseded 的状态流转?被取代的 ADR 如何链接到新决策?

A 被新决策取代的 ADR 应标记为 Superseded 并链接到新 ADR,同时保留原内容 ✓ 正确答案
B 决策被推翻后应直接删除原 ADR
C Accepted 状态的 ADR 永远不会失效
D 状态字段不参与版本管理,可以随意修改
#

4. ADR 在团队中的采纳策略中如何说服团队写 ADR?如何避免"事后补写"的形式主义?

A 将 ADR 绑定到决策过程与合入评审,要求包含备选方案与理由,避免事后补写 ✓ 正确答案
B 制定严格要求,让所有开发单独写详细 ADR 作为文档
C ADR 只需在项目结束后补齐即可
D 只有架构师能写 ADR,普通工程师不参与
#

5. ADR 与 RFC 的适用场景差异,什么决策必须写 ADR 而什么不需要?

A RFC 用于记录已定决策,ADR 用于征求反馈
B ADR 与 RFC 完全等价,可以互换使用
C 所有决策都必须写 ADR
D 影响大、不可逆的架构决策应写 ADR,可逆的局部改动无需写 ✓ 正确答案
#

6. ADR 工具链中 adr-tools、MADR(Markdown ADR)、Log4brains 的选型与 CI 集成?

A MADR 是 Markdown 格式的 ADR 模板,adr-tools 提供命令管理,二者可配合使用并与 CI 集成 ✓ 正确答案
B 所有 ADR 工具都必须付费使用
C adr-tools 是重量级可视化平台,Log4brains 是纯 shell 脚本
D ADR 只能存于专属数据库中,不能放入 git 仓库
#

7. ADR 的评审与治理中谁有权 Accept/Reject?跨团队 ADR 的协调机制?

A 团队级 ADR 由负责人评审,跨团队影响应由架构委员会协调并明确作用域 ✓ 正确答案
B 任何工程师都可以随意 Accept 任何 ADR
C 跨团队 ADR 不需要评审,直接合并即可
D ADR 一旦被 Reject 就永久删除
#

8. ADR 与代码的关联中如何在代码注释、PR 描述和 Wiki 中引用 ADR 编号?

A 不需要在代码中引用 ADR,看代码即可理解
B ADR 编号只能用于内部,不得出现在 PR 中
C 每个代码文件都必须引用 ADR
D 在关键决策相关代码注释、PR 描述和 Wiki 中规范引用 ADR 编号,形成追溯链 ✓ 正确答案
#

9. 如何避免 ADR 沦为"事后记录",决策过程与备选方案如何留痕?

A ADR 只记录最终结论即可
B ADR 在决策完成后一次性补全是最佳实践
C 备选方案应删除,避免混淆
D ADR 应记录背景、备选方案及否决理由,并在决策过程中创建而非事后补写 ✓ 正确答案
#

10. ADR 的价值中决策背景、方案与权衡?

A ADR 的作用是替代需求文档
B ADR 只是应付评审的文档,没有实际价值
C ADR 只记录代码实现细节
D ADR 的价值在于记录决策背景、方案与权衡,沉淀可追溯的组织知识 ✓ 正确答案
#

11. ADR 的度量中如何评估 ADR 的实际价值(减少重复讨论、加速新人入职)?

A ADR 的价值完全无法度量,无需评估
B 只需要统计 ADR 的数量,数量越多越好
C 可通过重复讨论次数、新人理解架构时间、决策覆盖率等软硬指标结合评估 ✓ 正确答案
D ADR 的价值必须量化成金额才能接受
#

12. 大型组织中 ADR 的层级中全局 ADR(组织级)vs 局部 ADR(团队级)的治理?

A 所有 ADR 都应由架构委员会统一评审
B 组织级 ADR 约束全局、由架构委员会治理,团队级 ADR 约束本团队,冲突时组织级优先 ✓ 正确答案
C 团队级 ADR 可以覆盖组织级 ADR 的约束
D 大型组织不需要区分 ADR 层级
#

13. ADR 的失效检测中决策被推翻后如何更新或标记废弃?

A 决策被推翻后立即删除原 ADR
B 将失效 ADR 标记为 Deprecated/Superseded 并记录原因与新决策链接,通过评审与代码关联检测失效 ✓ 正确答案
C 失效 ADR 无需处理,保持原样
D 只需修改 ADR 的决策内容,无需更新状态
#

14. ADR 的模板与评审流程?

A 模板应包含状态、上下文、决策、备选方案、关联等关键字段,评审从 Proposed 到 Accepted 显式流转 ✓ 正确答案
B ADR 模板越复杂越好,字段越多越严谨
C ADR 不需要评审,直接创建即可生效
D 模板中的备选方案可以省略
#

15. ADR 的维护中过期与更新?

A 过期的 ADR 直接删除即可
B ADR 一旦发布就无需任何维护
C 通过定期评审与代码关联识别过期 ADR,用新建 ADR + 状态流转保持一致性 ✓ 正确答案
D 过期 ADR 应保持原样,不做任何标记
#

16. ADR 与架构治理中决策的可追溯?

A ADR 只是个人备忘,与架构治理无关
B 可追溯性会拖慢开发,应避免使用 ADR
C 架构治理不需要记录决策
D ADR 通过编号、状态与双向链接实现决策的向前/向后/横向可追溯,支撑架构治理 ✓ 正确答案
#

17. ADR 的工具与集成中 adr-tools 等工具如何管理决策记录,ADR 与 Issue/PR/文档站点的集成如何保证决策可追溯?

A adr-tools 是纯 GUI 工具,无法集成 CI
B adr-tools 以 Markdown 管理 ADR,通过集成 Issue/PR/文档站点与 CI 校验实现端到端可追溯 ✓ 正确答案
C 集成会破坏 ADR 的版本管理
D ADR 无法与文档站点集成