Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
自主式軟體工廠
Search
philipz
October 04, 2026
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
自主式軟體工廠
AI 時代的軟體交付生產線:自主式軟體工廠(Software Factory)實踐解說
philipz
October 04, 2026
More Decks by philipz
See All by philipz
AI coding 整合正規方法
philipz
0
600
從開發到架構設計的可觀測性實踐
philipz
1
460
Docker技術扭轉我的職涯 – 十年回顧 at COSCUP 2023
philipz
0
520
Other Decks in Technology
See All in Technology
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
5
2k
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
2
300
1人アドミンな私はAWSアカウント申請をSlackで完結したい!
ysuzuki
0
110
SQL Server 2025 最適化されたロック
odashinsuke
0
120
形式手法を使って仕様をコーディングしよう
mikanichinose
0
160
行動するAIのためのオントロジー | DevRev — Encraft #26.pdf
dvrv_tknrszk
2
670
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
360
AI駆動開発で仕様はどこまで書くべきか? ― 人とAIの責務境界から考える開発プロセスの実践
takahiromatsui
1
300
OpenClawでAzure DevOpsのWiki更新を自動化する - クラウドAIだけでは届かない場所へ
yutakaosada
0
140
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
140
TiDBファミリーにDWHが新登場!! TiDB最新情報 / TiDB update 202609
yoshiakiyamasaki
0
190
猫でもわかるKiro Web
kentapapa
1
160
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
420
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
290
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
530
Visualization
eitanlees
153
17k
Mobile First: as difficult as doing things right
swwweet
225
10k
Typedesign – Prime Four
hannesfritz
42
3.2k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
58k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
440
Building an army of robots
kneath
307
47k
From π to Pie charts
rasagy
1
380
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Transcript
自主式軟體工廠 Autonomous Software Factory 企業架構科 鄭淳尹 Philipz 2026.10.1
1. 軟體工廠緣起 AGENDA 2. 自主式軟體工廠 3.如何信任軟體工廠產出的程式 4. Quint複雜範例 線上訂票 5.
自主式軟體工廠實踐 6. 軟體工廠實際使用示範 7. 工單結合軟體工程的使用步驟 8. 結語
01 軟體工廠緣起
Gartner 2026 Report How to Maximize the Impact of Agentic
AI in the SDLC 軟體工程領導者可以利用這項研究, 透過增強人類經驗和自動化消除低 效環節,逐步解決系統瓶頸並重新 構想軟體開發生命週期。 4
Gartner 2026 Report 明確指出了這場轉變的時間表與戰略價值 • 生產力跨越式增長:到 2028 年,採用非同步軟體 工程代理人工作流(Asynchronous SWE
Agent Workflows)的團隊,其整體生產力將提升 30% 至 50%,遠遠超越 2025 年僅依賴 IDE 助手所帶來的 0% 至 20% 增益。 • 平臺工程全面整合:到 2027 年,將有 40% 的平臺 工程團隊會把 AI 代理納入為必要的基礎設施,深 度整合至 SDLC 各階段,遠高於 2025 年的不到 5%。 • 自主漏洞修復普及:到 2028 年,AI 代理人將能自 動修復軟體中 70% 的程式碼安全漏洞(透過自動 更新依賴庫與提出修復補丁),而現今這項比例 僅為 10%。 5
Gartner 零摩擦 SDLC 三階段演進步驟 01 02 03 增強型工作流 非同步工作流 自主工作流
• 繪製價值流並消除 • 拆分任務使其並行 • 自主自我改善迴路 軟體開發瓶頸 • 優化各角色的使用 體驗 • 建立內部開發者平 台 (IDP) 化運作 • 開發工作流程重組 與淘汰 • 強化整體平台治理 與監控 與意圖驅動交付 • 擴充平台對自主交 付與營運面的支援 • 實施適當的人工審 查分級監督機制 6
02 自主式軟體工廠
IDE 插件 vs. AI 原生 IDE vs. 軟體工廠 比較事項 第一代:IDE
輔助插件 第二代:AI 原生 IDE / 互動 Agent 第三代:軟體工廠 (Software Factory) 代表工具 GitHub Copilot, Tabnine Cursor, Claude Code, Codex 互動模式 同步、行內補全、即時對話 半同步、指令式對話、多檔案編輯 非同步(Asynchronous)、事件驅動 工作流定位 開發者編碼時的副駕駛 開發者的全功能結對助手 全自動化軟體流水線(生產線模式) 上下文邊界 當前檔案與少數引用標籤 本地端整個專案與 Git 變更 人類角色 逐行接受建議與手動除錯 引導對話、審閱變更、下達指令 定義業務意圖、設定風險邊界、審查例外 交付成果 程式碼片段、單一檔案修改 修改本地端的多個檔案且可自動提交 通過嚴格護欄的 Stacked PRs 與變更日誌 吞吐量擴展 局限於單個工程師的工作時間 局限於單個工程師的專注力 Tessl.io, CNCF Secure Software Factory, softwarefactory.org 全生命週期、IDP 服務目錄、資安與 CI/CD 依賴雲端 Runner 水平擴展,支援24hr並 行作業 8
全球主要企業公開的軟體工廠專案 每個專案涵蓋的SDLC範圍都不相同 軟體工廠SaaS公司 https://warp.dev/ https://softwareforge.ai/ https://factory.com/ https://polylane.com/ 企業名稱 Stripe 系統
/ 專案名稱 Minions 覆蓋之 SDLC 環節 代碼撰寫、本地 Lint、精選測試、CI 自動修復、PR 交付 Ramp Inspect Spotify Honk 代碼生成、跨平台重構、CI 測試驗證、依賴版本維護 背景技術債監控、自動重構、測試套件執行、 PR 提交 Block Goose Amazon / AWS Meta Amazon Q Developer TestGen-LLM Google DIDACT & Critique ML-Edit 審查意見修復、錯誤日誌診斷、變數重構、代碼生成 Copilot Cloud Agent & 1ES 規格解析(Spec)、跨檔案實作、Git Worktree 並行建置、Draft PR Microsoft / GitHub OpenAI DoorDash Uber Cloudflare LinkedIn Codex Software Factory 終端本機執行、多檔案編輯、腳本測試、跨系統工具協同 運行時遷移、廢棄 API 替換、相依性修復、構建驗證 單元測試生成、測試覆蓋率增強、回歸缺陷預防 工單解析、代碼編寫、CI 照料、多代理審查、部署監控 Flux 代碼審查、功能旗標清理、工單排程、例行維護 Uber Software Factory PRD 審查、原型建構、代碼生成、Skills 自動化 Flue & Astro Triage Factory Issue 分流、Bug 重現、補丁驗證、預覽版本發布 AI Code Review Platform 差異分析、業務規則適應、安全性掃描、事故規則反饋 *註:標註紅色的是SDLC範圍與實作接近的專案 9
03 如何信任AI coding agent產出的程式
引入正規方法驗證程式碼 01 Quint 可執行規格 將規格或程式碼轉換成 Formal Method / Model Checking,就
可使用數學原理找出邏 輯錯誤的反例。修正所 有錯誤反例,就可確保 程式品質跟邏輯正確性 11
// 5. 轉帳動作 (Transfer Action) action transfer(from_acc: str, to_acc: str,
amount: int): bool = { all { from_acc != to_acc, amount > 0, Quint轉帳規格 bank.qnt module Bank { // 1. 定義狀態變數 (State Variables) var balances: str -> int withdraw(from_acc, amount).then(deposit(to_acc, amount)), } } // 定義帳戶集合 pure val ACCOUNTS = Set("Alice", "Bob") // 2. 初始化動作 (Init Action) action init = { // 將 Alice 與 Bob 的初始餘額皆設為 100 balances' = ACCOUNTS.mapBy(_ => 100) } // 6. 步進轉移 (Step Action) action step = { nondet sender = ACCOUNTS.oneOf() nondet receiver = ACCOUNTS.exclude(Set(sender)).oneOf() nondet amount = 1.to(100).oneOf() // 任意挑選一個1到100之間的轉帳金 額 transfer(sender, receiver, amount) // 3. 存款行為 action deposit(account, amount) = { // 增加指定帳戶的存款餘額 balances' = balances.setBy(account, curr => curr + amount) } // 4. 提款行為 action withdraw(account, amount) = { // 扣除指定帳戶的存款餘額 balances' = balances.setBy(account, curr => curr - amount) } } // 7. 總金額守恆不變量 val total_money_conserved = { ACCOUNTS.fold(0, (sum, acc) => sum + balances.get(acc)) == 200 } // 8. 帳戶餘額不可為負數 val no_negatives = ACCOUNTS.forall(acc => balances.get(acc) >= 0) } 12
檢查Quint轉帳規格 執行quint run bank.qnt -invariant=no_negatives時, 檢查帳戶餘額是否永遠大 於0元,命令列會回傳 [violation] Found an
issue錯 誤,並印出完整的反例執 行軌跡(Trace) ,發現有 負數情況。 13
正確的Quint轉帳規格 module Bank { // 1. 定義狀態變數 (State Variables) var
balances: str -> int // 定義帳戶集合 pure val ACCOUNTS = Set("Alice", "Bob") // 2. 初始化動作 (Init Action) action init = { // 將 Alice 與 Bob 的初始餘額皆設為 100 balances' = ACCOUNTS.mapBy(_ => 100) } // 5. 轉帳動作 (Transfer Action) action transfer(from_acc: str, to_acc: str, amount: int): bool = { all { from_acc != to_acc, amount > 0, balances.get(from_acc) >= amount, // 前置條件(Guard):餘額必須足夠! withdraw(from_acc, amount).then(deposit(to_acc, amount)), } } // 6. 步進轉移 (Step Action) action step = { nondet sender = ACCOUNTS.oneOf() nondet receiver = ACCOUNTS.exclude(Set(sender)).oneOf() nondet amount = 1.to(100).oneOf() // 任意挑選一個1到100之間的轉帳金 額 transfer(sender, receiver, amount) // 3. 存款行為 action deposit(account, amount) = { // 增加指定帳戶的存款餘額 balances' = balances.setBy(account, curr => curr + amount) } // 4. 提款行為 action withdraw(account, amount) = { // 扣除指定帳戶的存款餘額 balances' = balances.setBy(account, curr => curr - amount) } } // 7. 總金額守恆不變量 val total_money_conserved = { ACCOUNTS.fold(0, (sum, acc) => sum + balances.get(acc)) == 200 } // 8. 帳戶餘額不可為負數 val no_negatives = ACCOUNTS.forall(acc => balances.get(acc) >= 0) } 14
Quint LLM Kit:AI Agent的規格寫作與驗證加速器 為了降低工程師與AI工具採 用Quint的學習門檻, Informal Systems開發了開源 套件Quint LLM
Kit (https://github.com/quintco/quint-llm-kit),這是一套 專門為大型語言模型(LLM) 與AI Coding Agent設計的技能 工具包(Agent Skills)與容 器化開發環境,旨在讓AI能 夠無縫進行Quint規範的建模、 驗證與程式碼生成。 15
04 Quint複雜範例 線上訂票
Restate分散式訂票系統 https://next-restate.everfine.com.tw/booking 17
分析程式碼自動產生Quint規格 https://github.com/agent-playground/restate-cloudflare-workers-poc 18
分析 checkoutBuggy.qnt 找出的錯誤設計 此時序圖展示修復前程式碼,因缺少身分 檢查與認領守衛,如何導致雙重成交與奪 票: 1. 致命驗證:票已賣給 Bob,Alice 呼
叫 confirm 依然回傳成功(雙重成交 RC2) 2. 致命驗證:第三方可直接釋放他人的有 效保留(RC1) 3. 致命驗證:未經預訂即可將 AVAILABLE 席位轉為 SOLD 19
從錯誤反例修補程式 https://github.com/agent-playground/restate-cloudflare-workerspoc/blob/main/test/race_counterexample.test.ts 此時序圖展示修復後,在遭遇相同並發插 隊時,如何透過認領守衛(Caller Guard) 成功阻斷錯誤並啟動補償,並在 CI 加上錯 誤測試腳本,每一次程式碼異動都會檢查。 //
test/race_counterexample.test.ts — 機械化重現 Quint 反例 (specs/checkoutBuggy.qnt S0-S11)的獨立測試套件。 // // 驗證目標: // 1. 重現 Quint 在 checkoutBuggy.qnt 所找到的 11 步交錯軌跡 (Trace) // 2. 斷言修復後的實作能成功阻斷反例,使 P1(不可雙重成交) 與 P2(已付款者持有票)在實作層恆真。 // 3. 支援獨立單獨執行,並納入 npm test / CI 自動化測試。 20
05 自主式軟體工廠實踐
軟體工廠 目前範疇 22
軟體工廠 或aswf.dev後台 23
軟體工廠 24
軟體工廠 25
依照任務類型和難度進行LLM路由 工單類型 核心功能 執行機制 專門用於重現與修復系統 Bug 採用測試先行原則,Agent 會先撰寫一個會失敗的測試,隨後在實 現層編寫程式碼並使測試通過 agent-add-tests
為系統現有的功能與行為補齊 測試套件 測試必須能於現有程式碼直接通過;若過程中發現現有程式碼有 Bug,Agent 僅需記錄報告,不得直接在此工單中進行修復 agent-updatedeps 自動化進行軟體套件與第三方 依賴的升級 透過嚴格的版本鎖定策略管理依賴更新,通常生成單一 PR 並跑完 完整測試套件進行驗證 撰寫相關文件 撰寫或更新系統架構文件、API 說明與代碼註釋,確保文件與系統 實際實現保持一致[3] agent-fix-bug agent-write-docs 使用 Quint 語言撰寫形式化規範 採嚴格的兩階段流程(第一階段提煉不變式 invariants,第二階段 agent-write-spec (Formal Specification)與進行 撰寫系統模型 model),階段之間必須取得人類 CODEOWNER 的手 狀態空間模型檢測 動審批(spec/approved 標籤),過程完全不修改 src/ 原始碼 agent-analyze 針對系統問題進行根因分析 (RCA)、架構調查或複現研究 Agent 的輸出僅限於在 docs/research/ 下產出研究報告,系統交叉 檢查(Crosscheck)會強制禁止其修改任何原始碼 agent-proposeskill 當 Agent 執行任務發現缺少標 準作業程序(SOP)時,主動撰 寫新技能草案 草案僅能寫入 proposals/skills/ 隔離區,無法自主修改 .dsh/skills/ 下 的活躍執行路徑,必須經由人工審查後晉升(Promote) 26
軟體工廠 27
軟體工廠 28
06 軟體工廠實際使用示範
選擇Backstage作為軟體工廠的統一入口 支援外掛和客製化,整合 Deepseek Harness 30
自動修改程式專案 – 步驟1 安裝 Github App – softwarefactory-bot,並且選擇可存取的repo 31
自動修改程式專案 – 步驟2 by Backstage 填寫工單,修正套件升級無法通過測試 提供多種任務類型: agent-add-tests agent-fix-bug agent-update-deps
agent-write-docs … 一次生成:輸入簡單描述, 就可產生符合PRD格式內容, 可再修改調整 32
自動修改程式專案 – 步驟2 by aswf.dev 填寫工單,修正套件升級無法通過測試 提供多種任務類型: agent-add-tests agent-fix-bug agent-update-deps
agent-write-docs … 一次生成:輸入簡單描述, 就可產生符合PRD格式內容, 可再修改調整 33
自動修改程式專案 – 步驟3 by Backstage 表單欄位檢核,並且會留存工單歷史資料和軌跡 送出前預覽 建立工單 34
自動修改程式專案 – 步驟3 by aswf.dev 表單欄位檢核,並且會留存工單歷史資料和軌跡 35
自動修改程式專案 – 步驟4 透過GitHub Action來執行Deepseek Harness沙箱,自動選擇適合的模型能力 GitHub issue單 自動開PR並留言結果 說明Token用量與成本
人工審查決定是否合併 36
Stacked PR – 專門提供 AI coding agent 的功能 將所有程式異動細化,方便追蹤合併軌跡,並提升程式碼審查品質 Stacked
PR 會有 1/3 的標示 強制三個相依PR,1. test, 2. fix, 3. docs 37
Token使用透明,成本可控 38
Token使用透明,成本可控 39
Skill技能自主進化 40
07 工單結合軟體工程的 使用步驟
小型專案的導入流程和步驟說明 步驟 階段 做什麼 S0 P0 開導入追蹤 Issue 安裝 App、建立
S1 P0 software-factory 分 支 S2 P0 納管提案 裁定三軸、搬檔、 S3 P0 雙向探測 S4 P1 S5 P1 S6 P2 S7 P2 S8 P3 S9 P3 S10 P3 S11 P4 規模與就緒度量測 要開的工單(類型 × 份數) 不開工單(普通 Issue) 不開工單(人類) agent-onboard × 1 不開工單(人類) agent-analyze(A0)× 1 架構、測試、相依、 agent-analyze(A1、A2、 風險盤點 A3、A4)各 × 1 README+架構總覽 agent-write-docs × 1 核心模組業務規則 不開工單(人類撰寫,每 文件 核心模組 1 份) agent-add-tests × A2 清單 補測試 項數(每張 1 模組或 1 檔 案) 修復揭露的缺陷 (含 S10 確認的候 agent-fix-bug × 缺陷數 選發現) agent-write-spec × 1 或 驗證閘門(每核心 agent-pbt-audit × 1 或豁 模組擇一) 免單(不開工單) agent-update-deps/ 維護 agent-fix-bug/agentpropose-skill,依需要 42
中型專案的導入流程 43
中型專案的步驟說明 步驟 M0 M1 M2 M3 階段 P0 P0 P0
P0 要開的工單(類型 × 份數) 不開工單 不開工單(人類) agent-onboard × repo 數 不開工單(人類) P1 P1 做什麼 開導入追蹤 Issue 每個 repo 安裝 App、建分支 納管提案 裁定三軸、搬檔、雙向探測 宣告 spec.system;核心 repo 加 factory.io/quint-spec 規模與就緒度量測(跨 repo) 架構盤點(跨 repo) M4 P0 M5 M6 M7 P1 測試、相依、風險盤點 agent-analyze(A2、A3、A4)× 每個模組各 1 M8 P2 精簡 arc42 文件集 agent-write-docs × 每模組 1–2 + 系統 1 M9 M10 M11 P2 P3 P3 核心模組業務規則文件 補測試 修復缺陷 不開工單(人類) agent-add-tests × A2 清單項數 agent-fix-bug × 缺陷數 M12 P3 驗證閘門 agent-write-spec 或 agent-pbt-audit × 每核心模組 1(或豁免單) M13 P4 維護 agent-update-deps/agent-fix-bug/agent-propose-skill M14– M15 P5 (選擇性)modular monolith 不開工單(人類撰寫 ADR、劃邊界);支援用 agent-analyze、agent-add-tests 依需 要開 不開工單(人類編輯 catalog) agent-analyze(A0)× 1 agent-analyze(A1)× 1 44
大型專案的導入流程 45
大型專案的步驟說明 步驟 階段 做什麼 L0 P0 開導入追蹤 Issue L1 P0
每個 repo 安裝 App、建分支 L2 P0 納管提案 要開的工單(類型 × 份數) 不開工單 不開工單(人類) agent-onboard × repo 數 L3 P0 in-loop repo 的分析(§12) 只能開 agent-analyze、agent-propose-skill,依需要 L4 L5 L6 L7 P0 P0 P1 P1 依 A0/A4 證據重評三軸 宣告 spec.system、factory.io/quint-spec 規模與就緒度量測 整體 context map 不開工單(人類) 不開工單(人類) agent-analyze(A0)× 1 agent-analyze(A1)× 1 L8 P1 每個 bounded context 的架構、測試、相依、風險 agent-analyze(A1、A2、A3、A4)× 每個 BC 各 1(每張只處理 1 個 BC) L9 L10 L11 P1 P2 P2 分流會議:決定開哪些後續工單 arc42 文件集+context map 文件 核心模組業務規則 不開工單(人類決策,產出後續開單清單) agent-write-docs × 每 BC 1–2 + 系統 1 不開工單(人類) L12 P3 依 A4 排序,逐模組補測試→修缺陷→驗證閘門 agent-add-tests × A2 項數 → agent-fix-bug × 缺陷數 → agent-write-spec 或 agent-pbt-audit × 每核心模組 1 L13 P4 維護 agent-update-deps/agent-fix-bug/agent-propose-skill L14 P5 拆分前準備 agent-analyze(接縫、資料所有權)× 每個候選切片、agent-add-tests( characterization)× 每個切片 L17 P5 拆分中的驗證支援(拆分本身由人類執行) agent-add-tests/agent-write-spec,驗證新舊行為一致 L18 P5 新 repo 重新納管 agent-onboard × 每個新 repo,之後回到 L0 重新定級 46
08 結語
在沙箱中運行的Agent仍會幻覺與失誤 Who? 48
整合正規方法護欄的零摩擦 AI 開發 SDLC 49
延伸閱讀 50
THANK YOU ! 51