現代軟體工程:從基礎到 AI Agent 實踐#
第一篇:軟體工程基礎#
- 一、軟體工程的本質
- 1.1 什麼是軟體工程
- 1.2 軟體的複雜性與本質性困難
- 1.3 人月神話與 Brooks 法則
- 1.4 AI 時代:附屬性困難的消亡與本質性困難的永存
-
二、需求工程
- 2.1 需求的本質:從模糊意圖到精確規格
- 2.2 需求挖掘與訪談技巧
- 2.3 用例建模與使用者故事
- 2.4 邊界條件與 Edge Cases
- 2.5 AI 輔助需求分析:Red Teaming Prompting
-
三、系統設計
- 3.1 設計思維:抽象、模組化與資訊隱藏
- 3.2 架構模式:從單體到微服務
- 3.3 API 與介面設計(ACI vs HCI)
- 3.4 設計原則:SOLID、DRY 與 KISS
-
四、程式設計與實作
- 4.1 程式碼品質與可讀性
- 4.2 重構:改善既有設計的藝術
- 4.3 設計模式的實用指南
- 4.4 Agentic Coding:人機協同的程式碼生成
-
五、測試與品質保證
- 5.1 測試金字塔與測試策略
- 5.2 單元測試與 TDD
- 5.3 整合測試與端到端測試
- 5.4 AI 自動生成測試
- 5.5 LLM-as-a-Judge:用模型評判模型
-
六、部署與維運
- 6.1 CI/CD 管線設計
- 6.2 DevOps 與基礎設施即程式碼
- 6.3 監控、日誌與可观測性
- 6.4 AI 驅動的異常偵測與自癒系統
第二篇:AI 工程基礎#
- 七、從提示到上下文工程
- 7.1 提示工程的基礎與進階
- 7.2 上下文工程:決定 AI 能力上限的關鍵
- 7.3 API 的上下文結構:訊息列表的角色
- 7.4 上下文壓縮與管理策略
-
八、工具與 Agent 架構
- 8.1 工具設計的通用原則(ACI)
- 8.2 五類工具的分類與設計
- 8.3 MCP 協定:工具互操作標準
- 8.4 ReAct 迴圈:思考→行動→觀察
-
九、Harness 工程
- 9.1 Harness 的五要素:Context、Tools、Constrain、Verify、Correct
- 9.2 約束機制:故障安全預設值
- 9.3 驗證機制:輸入隔離與結果校驗
- 9.4 糾正機制:熔斷器與錯誤恢復
-
十、評估與持續進化
- 10.1 為什麼沒有度量就沒有改進
- 10.2 評估資料集的設計原則
- 10.3 對比實驗與消融實驗
- 10.4 Agent 的持續進化閉環
- 10.5 從經驗中學習:學習訊號與更新載體
第三篇:主題式深入#
- 十一、複雜系統的架構
- 11.1 事件驅動與非同步架構
- 11.2 即時互動:語音、Computer Use 與物理世界
- 11.3 多 Agent 協作的分類框架
-
十二、團隊協作與流程
- 12.1 從瀑布到敏捷到 AI 增強的 SDLC
- 12.2 多人 + AI 的協同開發
- 12.3 統一 AI 的全局認知:Shared Context
-
十三、安全與倫理
- 13.1 提示注入與防禦
- 13.2 工具安全與權限控制
- 13.3 AI 的偏見、幻覺與責任歸屬
-
十四、前沿與展望
- 14.1 模型即 Agent:RL 內化工具呼叫決策
- 14.2 模型與 Harness 的共同演進飛輪
- 14.3 兩朵烏雲:即時互動與持續學習
- 14.4 軟體工程師的未來:從建築工到指揮官
附錄#
- 附錄 A:Git 與 GitHub 實務
- A.1 版本控制的本質:為什麼需要 Git
- A.2 Git 基礎操作:init、add、commit、branch、merge
- A.3 分支策略:Git Flow 與 Trunk-Based Development
- A.4 GitHub 協作:Pull Request、Code Review、Issue
- A.5 GitHub Actions:自動化 CI/CD 入門
-
附錄 B:OpenCode 與 AI 輔助開發
- B.1 OpenCode 是什麼:從 CLI 到 Desktop
- B.2 安裝與設定 OpenCode Desktop
- B.3 AGENTS.md:為 AI 寫一份崗位說明書
- B.4 權限控制:讓 AI 能做什麼、不能做什麼
- B.5 MCP Servers:擴展 AI 的工具箱
- B.6 Skills:教 AI 新技能
-
附錄 C:案例集
- C.1 需求發掘與產品驗證案例
- C.2 破壞性創新與創意生態案例
- C.3 軟體缺陷與安全關鍵系統案例
- C.4 架構演進與技術債案例
- C.5 網站與服務營運失敗案例
- C.6 趣味歷史軼事與其時代啟示
- C.7 案例集目錄與教學指引