Imported from Gami19/rd-strands-agents (
strands-py/backend/agent/skills/pr/software-architecture/SKILL.md). Install upstream withnpx skills add Gami19/rd-strands-agents --skill software-architecture. Copyright stays with the author.
Skill: Software Architecture(ソフトウェアアーキテクチャ設計・評価・意思決定)
すべてはトレードオフである ── 「正解」を探すな、「最も害の少ない選択」を見極めよ
Instructions
ワークフロー内の位置
ビジネス要件 → story-map → [software-architecture] → diagram → review
distill ↗ ↓
アーキテクチャ設計
・スタイル選定
・特性分析
・ADR 生成
・トレードオフ分析
・リスク評価
入力
| 入力 | 説明 | 例 |
|---|---|---|
| ビジネス要件 | 解決すべき課題・ユースケース | 「ECサイトのバックエンドを新規構築」 |
| 制約条件 | 予算、期間、チーム規模、技術スタック | 「6ヶ月、5人チーム、AWS」 |
| 既存システム情報 | 現行アーキテクチャの構成・課題 | 「モノリスで性能限界に達している」 |
| 比較・評価対象 | 特定のスタイルやパターンの評価依頼 | 「Event-Driven は適切か」 |
出力
| 出力 | 形式 | 説明 |
|---|---|---|
| アーキテクチャ推奨 | Markdown | 推奨スタイルと根拠、コンポーネント構成 |
| ADR | Markdown | Architecture Decision Record(7セクション構造) |
| 特性分析レポート | Markdown テーブル | 抽出した -ilities と優先順位 |
| リスク評価 | Markdown テーブル | リスクマトリクスと緩和策 |
| トレードオフ分析 | Markdown テーブル | 候補スタイルの多軸比較 |
Step 1: 要件の把握とコンテキスト分析
対象システムの要件を以下の観点で把握する。
1a. ビジネスコンテキスト
| 観点 | 確認項目 |
|---|---|
| 目的 | システムが解決するビジネス上の課題は何か |
| 規模 | ユーザー数、トランザクション量、データ量の想定 |
| 成長性 | 今後の拡張計画、スケール要件 |
| 予算/期間 | 開発予算、納期、段階リリースの可否 |
1b. 技術コンテキスト
| 観点 | 確認項目 |
|---|---|
| 既存システム | 現行アーキテクチャ、統合先のシステム |
| チーム | 開発者数、スキルセット、経験レベル |
| インフラ | クラウド/オンプレ、利用可能なプラットフォーム |
| 制約 | コンプライアンス要件、技術的制約 |
チェックリスト:
- ビジネス上の主要な課題・ユースケースを明確にした
- 規模(ユーザー数、トランザクション量)の想定を確認した
- チームの規模・スキルセットを把握した
- 技術的制約・コンプライアンス要件を確認した
- 予算・スケジュールの制約を確認した
Step 2: アーキテクチャ特性の抽出と優先順位付け
ビジネス要件からアーキテクチャ特性(-ilities)を抽出する。
2a. ビジネス要件から特性への変換
| ビジネス要件 | 対応するアーキテクチャ特性 |
|---|---|
| 「市場投入を早くしたい」 | Agility, Deployability, Testability, Maintainability |
| 「ユーザー急増に対応したい」 | Scalability, Elasticity |
| 「24/7 稼働が必須」 | Availability, Reliability, Recoverability |
| 「機密データを扱う」 | Security, Privacy, Authorization |
| 「レスポンスが速くないと使われない」 | Performance |
| 「サードパーティとの連携が多い」 | Interoperability, Extensibility |
2b. 暗黙的特性の確認
明示されていなくても必要な特性を洗い出す。以下はほぼ全てのシステムで暗黙的に求められる:
- Availability -- ほぼ全システムで暗黙的に要求される
- Reliability -- ミッションクリティカル度に応じて
- Security -- 最低限の認証・認可は必須
詳細な特性一覧は architecture-characteristics.md を参照。
2c. 特性の優先順位付け
原則: 支える特性の数は「最も少なく」。各特性が複雑性を追加するため、7個以内に絞る。
優先順位付けの手順:
- 全抽出した特性をリストアップ
- ビジネスインパクトが最大の上位 3-7 個を選定
- 重み付けスコアリング(High = 3, Medium = 2, Low = 1)
チェックリスト:
- ビジネス要件を具体的なアーキテクチャ特性に変換した
- 暗黙的な特性(Availability, Security 等)を確認した
- 特性を 7 個以内に絞り込み、優先順位を付けた
- 「最も少ない特性」の原則を遵守した(全てを満たそうとしていない)
- ステークホルダーと特性の優先度を合意した
Step 3: アーキテクチャ量子(Quantum)の決定
3a. Quantum の定義
アーキテクチャ量子 = 独立デプロイ可能で、高い機能的凝集度・高い静的結合度・同期的な動的結合を持つ単位。
3b. Quantum 数の判定
各ドメイン/コンポーネントの必要な特性を比較
├─ 全てのコンポーネントが同じ特性セットで十分
│ → Quantum = 1 → モノリスが候補
│
└─ コンポーネントごとに異なる特性が必要
→ Quantum = N → 分散アーキテクチャが候補
例: 決済 = 高 Security + 高 Availability
商品カタログ = 高 Scalability + 高 Performance
→ 少なくとも 2 Quantum
3c. モノリス vs 分散の基本判断
| 判断軸 | モノリス有利 | 分散有利 |
|---|---|---|
| Quantum 数 | 1 | 2 以上 |
| チーム規模 | 小(< 10人) | 大(10+ 人) |
| デプロイ頻度 | 低(月 1 回程度) | 高(日次以上) |
| スケール要件 | 均一 | 部分ごとに異なる |
| 可用性要件 | 全体で統一 | 部分ごとに異なる |
重要: 分散アーキテクチャを選択する場合、8つの誤謬(Fallacies of Distributed Computing)を必ず確認すること。
チェックリスト:
- 各コンポーネントに必要な特性セットを列挙した
- Quantum 数を判定した(1 = モノリス候補、N = 分散候補)
- 分散を選択する場合、8つの誤謬のリスクを理解した
- Quantum 判定の根拠を文書化した
Step 4: アーキテクチャスタイルの選定
Quantum 数と抽出した特性に基づき、最適なスタイルを選定する。
4a. モノリス候補(Quantum = 1)
| 条件 | 推奨スタイル |
|---|---|
| 小規模・低予算・プロトタイプ | Layered Architecture |
| 中規模・ドメイン分割が明確 | Modular Monolith |
| カスタマイズ/プラグイン拡張が重要 | Microkernel |
| データ処理パイプライン | Pipeline |
4b. 分散候補(Quantum > 1)
| 条件 | 推奨スタイル |
|---|---|
| 実用的な分散、中規模チーム | Service-Based |
| 非同期・高スループット | Event-Driven |
| 極端なスケーラビリティ(スパイク対応) | Space-Based |
| 最大限のアジリティ・独立デプロイ | Microservices |
4c. スタイル特性レーティング比較
詳細な特性レーティング(1-5星)は architecture-styles.md を参照。
4d. ハイブリッドアプローチ
実務では純粋な単一スタイルは稀。ハイブリッドの典型例:
- Modular Monolith + Microkernel: ドメインモジュール + プラグイン拡張
- Microservices + Event-Driven: サービス間のイベント通信
- Service-Based + CQRS: サービス内での読み書き分離
チェックリスト:
- Quantum 数に基づく候補スタイルを選定した
- 候補スタイルの特性レーティングと要件を照合した
- 各候補の When to Use / When Not to Use を確認した
- ハイブリッドアプローチの可能性を検討した
- ドメインとアーキテクチャの同型性(isomorphism)を確認した
Step 5: コンポーネント設計
選定したスタイル内でのコンポーネント構成を設計する。
5a. パーティショニング戦略
| 戦略 | 特徴 | 適用 |
|---|---|---|
| 技術分割 | Presentation / Business / Persistence で分離 | Layered Architecture、小規模 |
| ドメイン分割 | ビジネスドメインで分離 | Modular Monolith、Microservices、大規模 |
原則: 現代のアーキテクチャではドメイン分割が推奨。ただし、問題の性質に応じて技術分割が適切な場合もある。
5b. コンポーネント特定の手順
- ドメインのユースケースから主要コンポーネントを洗い出す
- ユーザーストーリーを各コンポーネントに割り当てる
- 各コンポーネントの責務を分析する
- コンポーネント間の結合度を評価する
5c. 結合度の管理
| 結合の種類 | 説明 | 管理方針 |
|---|---|---|
| 静的結合 | コンパイル時の依存関係 | 依存の方向を制御、循環依存を排除 |
| 動的結合 | 実行時の呼び出し関係 | 同期/非同期を適切に選択 |
| 意味的結合 | ビジネスロジックの暗黙的依存 | ドメイン境界を明確化 |
通信のデフォルト: 同期通信をデフォルトとし、非同期は必要な場合のみ使用する。
チェックリスト:
- パーティショニング戦略(技術 vs ドメイン)を決定した
- 主要コンポーネントとその責務を特定した
- コンポーネント間の結合度を評価し、適切に制御した
- 通信方式(同期/非同期)を決定した
Step 6: トレードオフ分析と ADR 生成
6a. トレードオフ分析
First Law: 「すべてはトレードオフである」 -- 利点のないものは存在しないが、欠点のないものも存在しない。
以下のフレームワークで分析する:
| 分析軸 | 候補A | 候補B | 候補C |
|---|---|---|---|
| Performance | |||
| Scalability | |||
| Maintainability | |||
| Testability | |||
| Deployability | |||
| Cost | |||
| Simplicity |
各セルを H (High) / M (Medium) / L (Low) で評価し、ビジネス優先度で重み付けする。
6b. ADR の生成
主要なアーキテクチャ決定に対し、ADR を生成する。テンプレートは adr-template.md を参照。
ADR の 7 セクション構造:
## ADR-NNN: [タイトル]
### Status
[Proposed | Accepted | Superseded by NNN]
### Context
[この決定を迫っている状況・力学の記述]
### Decision
[決定内容を断定的に記述: "We will use..."]
### Consequences
[ポジティブ・ネガティブ両面の影響]
### Compliance
[この決定の遵守をどう確認するか]
### Alternatives
[検討した代替案とその評価]
### Notes
[著者、承認者、日付等のメタデータ]
Second Law: 「Why は How より重要」 -- ADR では なぜ その決定をしたかの記述が最も重要。
6c. 判断の自己承認基準
| 判断基準 | 自己承認可能 | エスカレーション必要 |
|---|---|---|
| コスト | 閾値以内 | 閾値超過(組織で定義) |
| 他チームへの影響 | 影響なし | 影響あり |
| セキュリティ | 影響なし | セキュリティへの影響あり |
チェックリスト:
- 主要な決定ポイントを特定した
- 各決定に対しトレードオフ分析を実施した
- ADR を 7 セクション構造で作成した
- 決定を断定的な表現("We will use...")で記述した
- 代替案と採用しなかった理由を記録した
Step 7: リスク評価とフィットネス関数
7a. リスクマトリクス
2 次元(影響度 x 発生確率)でリスクを定量化する。
| 低確率 (1) | 中確率 (2) | 高確率 (3) | |
|---|---|---|---|
| 高影響 (3) | 3 (中) | 6 (高) | 9 (高) |
| 中影響 (2) | 2 (低) | 4 (中) | 6 (高) |
| 低影響 (1) | 1 (低) | 2 (低) | 3 (中) |
原則: 影響度を先に評価し、確率を後に評価する。確率が不明な場合は高 (3) を仮定する。
7b. リスクストーミング(協調リスク識別)
- Phase 1: 識別 -- 各参加者が独立にアーキテクチャ図上のリスクを識別
- Phase 2: コンセンサス -- チームで認識のズレを議論・解消
- Phase 3: 緩和 -- 高リスク領域に対する緩和策を策定
7c. フィットネス関数の設計
| 種類 | 実行タイミング | 例 |
|---|---|---|
| 原子的 | CI/CD パイプライン | 循環依存チェック、レイヤー違反検出 |
| 全体的 | 負荷テスト時 | レスポンスタイム閾値、同時接続数上限 |
| 継続的 | 本番運用中 | SLO 監視、アラート閾値 |
チェックリスト:
- 主要リスクをリスクマトリクスで評価した
- 高リスク(6-9)の領域に緩和策を策定した
- アーキテクチャの重要特性に対するフィットネス関数を設計した
- フィットネス関数の実行タイミング(CI/CD / 負荷テスト / 本番)を決定した
- リスク評価の結果をステークホルダーと共有した
Step 8: 出力とセルフレビュー
アーキテクチャ推奨レポートの構成
## アーキテクチャ推奨レポート
### 1. エグゼクティブサマリー
(推奨スタイルと根拠の要約)
### 2. 要件分析
(ビジネスコンテキスト + 技術コンテキスト)
### 3. アーキテクチャ特性
(抽出した -ilities と優先順位)
### 4. Quantum 分析
(モノリス vs 分散の判断根拠)
### 5. スタイル選定
(候補の比較評価 + 推奨スタイル + トレードオフ)
### 6. コンポーネント設計
(論理コンポーネント図、責務、結合度)
### 7. ADR
(主要な意思決定の記録)
### 8. リスク評価
(リスクマトリクス + 緩和策)
### 9. フィットネス関数
(アーキテクチャ特性の保護メカニズム)
### 10. 次のステップ
(実装計画、追加設計が必要な領域)
Software Architecture Slop 防止チェック(Distributional Convergence 対策)
アーキテクチャ設計は「正解がない判断」の連続であり、LLM は不確実性を回避するために業界で最も一般的な選択肢に収束する。特にマイクロサービスの過剰推奨、Availability/Scalability/Performance の 3 特性への固定、Service-Based や Space-Based 等の中間解の無視が頻発する。
| # | Software Architecture Slop パターン | 検出方法 | 対策 |
|---|---|---|---|
| SA-1 | マイクロサービスのデフォルト推奨 | チーム規模・運用能力を評価せず分散を提案 | Third Law(スペクトル上の判断)を適用。Modular Monolith / Service-Based が適切な場合が多い |
| SA-2 | 特性分析の Top 3 固定化 | 毎回 Availability / Scalability / Performance が上位 | ビジネスドメインから特性を導出。医療なら Security / Auditability、金融なら Consistency / Fault Tolerance |
| SA-3 | ADR の形式的記述 | Context と Decision はあるが Why が 1 行で終わる | 「この決定をしなかった場合のコスト」を必ず記述。却下した選択肢の理由も具体的に |
| SA-4 | 単一 Quantum への収束 | 全コンポーネントが同じ特性セットで括られる | コンポーネント群ごとに特性セットを比較。差異があれば複数 Quantum に分割する判断を検討 |
| SA-5 | トレンド追従の技術選定 | 「Kubernetes + gRPC + イベント駆動」をデフォルト推奨 | 各技術選定の根拠を ADR に記録。シンプルな REST + モノリスで十分な場合を見逃さない |
| SA-6 | 教科書的フィットネス関数 | 「レスポンスタイム < 200ms」「可用性 99.9%」が毎回同じ | ビジネスの SLA から逆算。「注文確定 API は 500ms 以内、レポート生成は 30 秒許容」のように具体化 |
| SA-7 | 結合度分析のパターン固定 | 常に同じ依存関係のアンチパターン(循環依存、Hub)を指摘 | 実際のコードベース・API 呼び出しグラフから結合度を計測。ドメインイベントの粒度も評価 |
| SA-8 | モノリス→マイクロサービスの一方通行 | 進化パスが常に分散方向 | 統合方向の進化(マイクロサービス→Service-Based への統合)も選択肢。運用コストとの天秤 |
核心原則: 「最良のアーキテクチャ」は存在しない、あるのは「最も害の少ないトレードオフ」だけ — First Law に従い、全ては trade-off であることを前提に設計する。「別のビジネスドメイン・別のチーム規模に同じアーキテクチャを推奨しても違和感がないか?」→ 違和感がないなら Software Architecture Slop である。
最終チェックリスト:
- 8 ステップ(要件 → 特性 → Quantum → スタイル → コンポーネント → ADR → リスク → 出力)を完了した
- 推奨スタイルの選定根拠が明確で、3法則に基づくトレードオフ分析がある
- ADR が 7 セクション構造で作成され、why が記述されている
- リスクマトリクスで高リスク領域が識別され、緩和策がある
- フィットネス関数が設計されている
- 成果物がステークホルダーに説明可能な形式になっている
- Software Architecture Slop チェック(SA-1〜SA-8)に 2 つ以上該当しない
- 出力がドメイン固有の要素を含み、汎用テンプレートに見えない
Examples
Example 1: 新規 Web アプリケーションのアーキテクチャ選定
「ECサイトのバックエンドを新規構築したい。5人チーム、6ヶ月、AWS。
将来的にはモバイルアプリも追加したい」
→ Step 1 で要件把握(中規模、成長性あり、AWS 制約)
→ Step 2 で特性抽出(Scalability, Maintainability, Deployability を Top 3 に)
→ Step 3 で Quantum 分析(商品/注文/決済で異なる特性 → 2-3 Quantum)
→ Step 4 で Service-Based Architecture を推奨(5人チームに Microservices は過剰)
→ Step 6 で ADR 作成(スタイル選定、通信方式、DB 分割戦略)
→ 成果物: アーキテクチャ推奨レポート + ADR 3本
Example 2: 既存モノリスのマイクロサービス移行可否評価
「既存の Java モノリスが性能限界。マイクロサービスに移行すべきか?」
→ Step 1 で現行アーキテクチャの課題把握
→ Step 2 で求められる特性の変化を分析
→ Step 3 で Quantum 分析(どの部分に異なる特性が必要か)
→ Step 4 で候補比較(Modular Monolith vs Service-Based vs Microservices)
→ Step 6 で移行戦略の ADR(Strangler Fig パターンの適用を推奨)
→ Step 7 でリスク評価(分散トランザクション、データ整合性のリスク)
→ 成果物: 移行可否判定レポート + 段階的移行ロードマップ
Example 3: ECサイトの非同期イベント処理設計
「注文確定後の処理(在庫更新、決済、通知)を高速化したい」
→ Step 2 で特性抽出(Performance, Reliability, Fault Tolerance)
→ Step 4 で Event-Driven Architecture(Mediator トポロジー)を選定
→ Step 5 で OrderPlacement → Inventory / Payment / Notification のイベントフロー設計
→ Step 6 で ADR(同期 vs 非同期、Broker vs Mediator の判断記録)
→ Step 7 でリスク評価(データ損失防止、エラーハンドリング戦略)
→ 成果物: イベントフロー設計 + ADR + エラー処理方針
Example 4: SaaS のマルチテナントアーキテクチャ設計
「B2B SaaS を新規構築。テナント間のデータ隔離が必須」
→ Step 1 でテナント要件(テナント数、データ量、カスタマイズ要件)
→ Step 2 で Security, Configurability, Scalability, Maintainability を抽出
→ Step 3 で Quantum 分析(テナントごとに異なるスケール → 分散)
→ Step 4 で Microservices + Microkernel ハイブリッドを推奨
→ Step 5 でテナント分離戦略(DB per tenant vs schema per tenant vs row-level)
→ Step 6 で ADR(テナント分離方式の決定)
→ 成果物: マルチテナント設計書 + ADR + コンポーネント図
Example 5: IoTプラットフォームのスケーラビリティ設計
「数万台のIoTデバイスからのリアルタイムデータを処理したい」
→ Step 2 で Scalability, Elasticity, Performance, Availability を抽出
→ Step 3 で複数 Quantum(デバイス管理 vs データ処理 vs 分析)
→ Step 4 で Space-Based + Event-Driven ハイブリッドを検討
→ Step 5 でデータフロー設計(Ingestion → Processing → Storage → Analytics)
→ Step 7 でリスク評価(データ衝突、同期問題、処理遅延)
→ 成果物: IoT アーキテクチャ設計書 + データフロー図 + ADR
Example 6: ADR テンプレートの生成
「REST と gRPC のどちらを使うか決めたい。ADR を書いて」
→ Step 6 に直接進む
→ Context: サービス間通信のプロトコル選定
→ トレードオフ分析: REST(互換性、デバッグ容易) vs gRPC(低レイテンシ、型安全)
→ Decision: ビジネスコンテキストに基づく判断を断定的に記述
→ Consequences: 選択の影響(正・負両面)を明記
→ 成果物: ADR 1本(7セクション構造)
Example 7: レガシーシステムのリスク評価
「15年物のシステムのアーキテクチャリスクを評価して」
→ Step 1 で現行アーキテクチャの把握
→ Step 7 でリスクマトリクスを構築
→ リスクストーミング: Availability, Maintainability, Security の観点で評価
→ 高リスク領域の特定と緩和策の策定
→ フィットネス関数の提案(技術的負債の定量化)
→ 成果物: リスク評価レポート + 緩和策ロードマップ + フィットネス関数設計
Troubleshooting
| 問題 | 原因 | 解決策 |
|---|---|---|
| アーキテクチャスタイルが決まらない | ビジネス要件が曖昧、またはアーキテクチャ特性が絞れていない | Step 1-2 に戻り、ステークホルダーと特性の優先順位を合意する |
| 全ての -ilities を満たそうとしてしまう | 「最良のアーキテクチャ」を追求する誤解 | 「最も害の少ない(least worst)」の原則を適用。特性は 7 個以内に絞る |
| モノリスか分散か判断できない | Quantum 分析が不十分 | Step 3 を徹底。各コンポーネントの特性セットを比較し、差異があれば分散 |
| マイクロサービスをデフォルト選択してしまう | 業界のファッション追従 | Third Law(スペクトル上の判断)を適用。Service-Based が十分な場合が多い |
| ADR が長すぎて読まれない | 分析を詰め込みすぎ | ADR は 1-2 ページ。詳細分析は Alternatives セクションに分離 |
| ADR が形骸化して更新されない | Superseded ステータスの運用が未定着 | ADR のライフサイクル管理を明確化。変更時は新 ADR + 旧 ADR を Superseded に |
| 技術選定とアーキテクチャ選定を混同する | アーキテクチャは「ガイド」であり「指定」ではない | アーキテクチャ決定 = 構造レベル。技術決定 = 実装レベル。architect は guide する |
| 分散システムの複雑性を過小評価する | 8つの誤謬への無知 | Fallacies of Distributed Computing を全て確認。特にレイテンシとネットワーク信頼性 |
| リスク評価が主観的になる | 定性的な判断に依存 | リスクマトリクス(Impact x Likelihood)で客観化。影響度を先に判断 |
| フィットネス関数が CI/CD に組み込まれない | 設計段階で実装方法を未定義 | Step 7 で具体的な実装手段(テスト・監視ツール)を決定してから終了する |
| コンポーネント粒度が粗すぎる/細かすぎる | 結合度・凝集度の分析不足 | コンポーネントの責務を再分析。単一責務原則 + 結合度メトリクスで検証 |
| 決定のアンチパターンに陥る | Covering Your Assets / Groundhog Day / Email-Driven | ADR を「最終責任時点」で作成。全 ADR をリポジトリに集約。意見は RFC で収集 |
References
| ファイル | 内容 |
|---|---|
| architecture-styles.md | 9 種アーキテクチャスタイルの詳細比較表(特性レーティング、When to Use/Not to Use) |
| architecture-characteristics.md | 30+ のアーキテクチャ特性(-ilities)一覧、カテゴリ別分類、評価ガイド |
| adr-template.md | ADR テンプレート(7 セクション構造 + 記入ガイド + 実例) |
アンチパターン検出
このスキルの出力品質を検証するためのチェックリスト。
- アーキテクチャスタイルの選定が特性レーティング(-ilities)の定量比較に基づいているか(「マイクロサービスが良い」等の結論ありきでないか)
- Architecture Quantum の分析でコネクタのタイプ(同期/非同期)が明示されているか
- コンポーネント設計が単一責務原則と結合度メトリクスで検証されているか
- ADR が「最終責任時点」で作成され、Decision セクションに Why が記述されているか
- フィットネス関数が具体的な実装手段(テスト・監視ツール)まで特定されているか
- トレードオフ分析で「万能なスタイルはない」前提の下、少なくとも 3 候補が比較されているか
Related Skills
| スキル | 関係 | 説明 |
|---|---|---|
| data-arch | 相互補完 | ソフトウェアアーキテクチャの全体設計後、データ層の設計を委譲。data-arch の Step 2(アーキテクチャ候補絞り込み)で本スキルの Quantum 分析を参照 |
| diagram | 後続 | Step 5 のコンポーネント設計結果を draw.io のアーキテクチャ図として視覚化 |
| review | 検証 | Step 8 の成果物(推奨レポート・ADR)をクリティカルレビューで検証 |
| story-map | 前段 | ユーザーストーリーマップから Step 2 のアーキテクチャ特性を抽出する入力を提供 |
| test | 後続 | Step 7 のフィットネス関数を実際のテストコードとして実装する際に連携 |
| distill | 前段 | 技術資料やRFPの知識蒸留結果を Step 1 の要件把握の入力として活用 |
| flow-architecture | Upstream(戦略) | flow-architecture の Wardley Map × DDD × Team Topologies で戦略的方向性を決定し、software-architecture が具体的なアーキテクチャスタイルを選定する |
| decision-framework | Downstream | Step 6 で生成した ADR のライフサイクル管理(更新・Supersede・棚卸し)を decision-framework が引き継ぐ |