系統設計
建立能回答使用者問題的最小視圖集合。對於正式圖表,優先使用可編輯的 .drawio 格式;尊重要求的符號系統、格式、課程評分標準以及現有檔案。有效的 XML 檔案並不等於正確的模型。
工作流程
- 確立受眾、系統邊界、問題、情境與抽象層次。閱讀提供的需求/綱要/程式碼以及任何評分標準。將不確定的基數、權限、生命週期規則和外部介面記錄為假設;僅在這些假設會實質改變答案時才提問。不要憑空發明基礎設施或強制性的關係。
- 使用下方的路由表選擇視圖。僅閱讀相關的參考資料以及
diagram-validation.md。區分現狀證據與提議設計。當多個圖表共享概念時,建立一個小型詞彙表,並使用穩定的概念 ID。 - 在放置形狀之前建立語義清單:參與者/元素、帶有方向和端點意義的關係、限制條件以及需求 ID。對於 DFD,加入流程字典和分解邊界簽章;對於資料模型,識別鍵與相依性。
- 遵循特定圖表的繪製程序。明確設定符號系統(例如 UML 2、Crow's Foot、Gane-Sarson;先情境圖再層級-0)。將語義規則與建議的版面配置選擇分開。如
sources.md所述解決衝突來源。 - 對於 Draw.io,閱讀
drawio-rendering.md和layout.md。使用原生形狀和連接器建立穩定的 ID,並採用 XML 序列化器。僅在替換網域事實後,才複製相關範例。對於其他格式,閱讀fallbacks.md。 - 執行
python3 <skill-dir>/scripts/validate_drawio.py <file-or-directory>。修復回報的結構性錯誤。使用語義和跨視圖檢查清單:該腳本無法證明 UML、DFD、ERD 或 BPMN 的正確性。 - 在 diagrams.net 中開啟/匯入,或使用可用的 Draw.io 渲染器匯出。檢查每一頁的標籤、箭頭末端、裁剪、包含關係與交叉;調整後再次檢查。如果沒有可用的渲染器,則交付可編輯的原始檔,並明確報告渲染未經驗證。請勿將 XML 解析視為可開啟性的測試。
- 交付原始檔、有用的預覽,以及簡短的驗證/假設說明。明確說明執行了哪些檢查。在編輯過程中保留現有的手動版面配置和不相關的頁面;更新過時的預覽。
參考路由表
| 使用者問題 | 閱讀 |
|---|---|
| UML 選擇 / 符號系統基準 | uml.md |
| 參與者與使用者目標 | use-case.md |
| 領域或軟體結構 | class-diagram.md |
| 跨協作者的一個情境 | sequence-diagram.md |
| 工作流程、分支、並行 | activity-diagram.md |
| 單一實體的事件驅動生命週期 | state-machine.md |
| 實例、鏈結、模組、執行時期配置 | structural-views.md |
| 通訊、時序、互動概覽 | advanced-interactions.md |
| 實體、關係、關聯式綱要 | erd.md, normalization.md |
| 資料移動與分解 | dfd.md, context-diagram.md |
| 架構層級 | c4-model.md |
| 業務協作/流程 | bpmn.md |
| 簡單程序或責任交接 | flowchart-swimlane.md |
| 輸出生成 / 潤飾 | drawio-rendering.md, layout.md, fallbacks.md |
| 審查 / 多視圖一致性 | diagram-validation.md |
| 來源出處 / 版本 / 限制 | sources.md |
輸出慣例
尊重使用者指定的路徑。否則使用 docs/diagrams/<系統>-<視圖>.drawio,並在可能的情況下提供對應的 .svg 或 .png 預覽。對於非平凡的假設,使用 <系統>-assumptions.md;對於多視圖審計,使用 <系統>-validation.md。將暫存匯出檔保留在最終交付物之外。對於獨立維護的視圖,使用獨立的檔案;對於協調的圖表集,使用命名的頁面。切勿在未告知的情況下,將要求的正式符號系統替換為通用流程圖。
不可協商的檢查
- 模型事實必須來自證據或標記的假設。
- 檢查端點語義;指向錯誤方向的箭頭在語法上可能仍是有效的。
- DFD 箭頭傳遞資料;UML/BPMN 控制流傳遞執行意義。
- 請勿從外鍵或模糊的「has-a」片語推斷生命週期所有權。
- 審查相關的共用概念;對於不同範圍的視圖,不需要要求完全相同的內容。
- 保持圖表可編輯;嵌入在
.drawio檔案中的影像不是原生圖表。
範例和可執行的檢查位於 examples/ 和 scripts/ 目錄中。特定套件的測試證據位於 TEST-REPORT.md。