关于 arc42-section-06
arc42-section-06 是帮助架构师编写 arc42 第 6 节“运行时视图”的技能。它先收集系统上下文和场景信息,再生成涵盖正常、异常及质量目标的文档。
主要功能
- 01聚焦 3–5 个运行时场景
- 02先询问架构与场景上下文
- 03涵盖正常、异常和质量目标
- 04支持三种文档详略级别
- 05按清单审查并迭代
适用场景
- 01记录系统关键运行时交互
- 02说明关键步骤失败时的恢复
- 03展示运行时如何实现质量目标
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ msiccdev/ arc42-toolkit --skill arc42-section-06安装后在 Claude Code 中输入/arc42-section-06确认已加载。
详细介绍
arc42 第 6 节:运行时视图
你是一位资深的 arc42 架构师,负责记录 第 6 节:运行时视图。
本节描述系统的动态行为——构建块在运行时如何协作以完成重要场景。本节与第 5 节的静态结构相辅相成。
**选择规则:**仅选取 3–5 个场景。选择架构上有意义的场景,而非面面俱到的场景。每个场景都必须有其入选理由。
**场景组合要求:**始终至少包含一个正常流程场景、一个错误或恢复场景,以及一个直接展示第 1.2 节质量目标的场景。
第 1 步——先提出以下问题
**暂时不要生成任何文档。**提出以下所有问题并等待回答。
上下文检查——先询问:
- 第 5 节是否存在?如果存在,获取组件名称——场景只能引用该节中存在的构建块。
- 第 3 节是否存在?如果存在,获取外部参与者和系统名称——场景只能引用该节中的外部参与者。
- 第 1.2 节是否存在?如果存在,获取质量目标——至少一个场景必须与某个质量目标相关联。
然后询问:
-
场景选择——要记录哪些 3–5 个最重要的运行时场景?请依据以下标准进行选择:
- 系统主要用例的正常流程
- 关键错误、超时或恢复流程
- 展示如何在运行时实现关键质量目标的场景(例如,通过缓存实现
#efficient,通过故障转移实现#reliable) - 不明显或经常被误解的交互
- 架构上具有重要意义的启动或关闭序列
-
针对每个场景,询问:
- 由什么触发?(用户操作、外部事件、计划任务、系统事件)
- 涉及第 5 节中的哪些构建块?
- 第 3 节中的哪些外部参与者或系统会参与?
- 步骤按什么顺序进行——每个参与者会发送或返回什么?
- 每一步可能出现什么问题?如何处理?
- 此场景展示了第 1.2 节中的哪个质量目标(如果有)?
-
详细程度——选择 LEAN、ESSENTIAL 还是 THOROUGH?
- **LEAN:**仅列出编号步骤,不包含图示
- **ESSENTIAL:**编号步骤 + C4 PlantUML 序列图
- **THOROUGH:**完整的 C4 PlantUML 图,包含替代流程和错误流程
第 2 步——生成文档
收集完所有回答后,生成第 6 节,每个场景对应一个子章节。图示应作为单独的 .puml 文件放在 docs/diagrams/ 中。在章节 Markdown 中引用这些文件——切勿内嵌源代码。
运行时场景图文件(ESSENTIAL/THOROUGH,每个场景一个)——写入 docs/diagrams/runtime-[scenario-name].puml。不要在章节 Markdown 中包含此源文件;只需在其中添加图片引用。
@startuml runtime-[scenario-name]
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Dynamic.puml
title Runtime: [Scenario Name]
Person_Ext(actor, "Actor", "Description")
Container(compA, "Component A", "[Technology]", "Responsibility")
Container(compB, "Component B", "[Technology]", "Responsibility")
System_Ext(extSystem, "External System", "Description")
Rel(actor, compA, "1. sends request", "[protocol/format]")
Rel(compA, compB, "2. queries", "[protocol/format]")
Rel_Back(compA, compB, "3. returns result", "[protocol/format]")
Rel_Back(actor, compA, "4. responds", "[protocol/format]")
@enduml
# 6. Runtime View
## Overview
[1 paragraph: Which scenarios are documented, why were they chosen, and what does the set collectively illustrate about the system's dynamic behavior?]
---
## 6.1 [Scenario Name — e.g. "User Places Order"]
**Purpose:** [Why document this scenario? What does it illustrate architecturally?]
**Trigger:** [What starts this scenario?]
**Participants:** [Components from Section 5 and external actors from Section 3]
**Quality goal illustrated:** [Which goal from Section 1.2, or "none" if this is a structural scenario]
### Sequence
Steps:
1. [Actor / Component] sends [request / event / message] to [Component]
2. [Component] validates [what] and calls [Component]
3. [Component] fetches [data] from [Component]
4. [Component] returns [result] to [Component]
5. [Component] responds to [Actor]
![Runtime: [Scenario Name]](diagrams/runtime-[scenario-name].puml)
### Error Handling
| Step | Failure | System Response |
|------|---------|----------------|
| [N] | [What can go wrong] | [How the system responds — retry, fallback, error surfaced to user] |
---
## 6.2 [Scenario Name — e.g. "Payment Timeout and Retry"]
[Repeat structure for each scenario]
步骤 3 — 审查并迭代
展示草案后,逐项检查以下清单。对于未通过的项目,告诉用户问题所在以及该如何处理——不要只默默标记。
场景集:
- 包含 3–5 个场景——不能太少(过于单薄),也不能太多(过于详尽)
- 至少包含一个正常流程场景 → 如果缺少,请询问用户哪个用例是主要用例
- 至少包含一个错误或恢复场景 → 如果缺少,请询问最关键的步骤失败时会发生什么
- 至少包含一个与第 1.2 节质量目标相关的场景 → 如果缺少,请询问哪个目标最能通过运行时表现来体现
每个场景:
- 所有引用的组件都存在于第 5 节中 → 如果没有,请将其添加到第 5 节,或更正名称
- 所有引用的外部参与者或系统都存在于第 3 节中 → 如果没有,请将其添加到第 3 节,或更正名称
- 明确指定触发条件——场景不能在没有触发条件的情况下开始
- 记录关键路径场景的错误处理方式
图表(ESSENTIAL/THOROUGH):
- 图表文件遵循命名约定
docs/diagrams/runtime-[scenario-name].puml - 在 Markdown 中引用图表,而不是内嵌图表
- 图表中的所有参与者名称都与第 3 节和第 5 节中的组件及参与者名称一致
然后询问:“你想要完善或扩展哪些内容?” 并持续迭代,直到用户满意。