極點宏觀|Financial Cloud Cloud · AWS Re:cap
AWS Re:cap 12: 使用 Kiro 進行規格驅動開發 (DEV314)
影片: https://www.youtube.com/watch?v=4qcWgPb-8Fk
Kiro 與 Spect 驅動開發簡介
概觀
● Kiro 是近期發布的新型代理式 IDE,強調 Spect 驅動開發。
● 其目標是透過結構化工作流程改善程式碼品質與審查流程。
● IDE 因編譯器和偵錯等整合工具而普及。
● AI 編輯器隨之出現,從程式碼補全開始,逐步演進為代理式體驗。
● 開發人員現在會引導 AI 代理程式撰寫與審查程式碼,同時維持掌控。
● 氛圍程式設計與 Spect 驅動開發:
● 氛圍程式設計涉及快速建立原型,但缺乏傳統 SDLC 生命週期。
● Spect 驅動開發導入從需求到輸出的結構化工作流程,著重於前期規劃,以改善模型專注度與輸出品質。
● Spect 驅動開發工作流程:
● 從需求開始,接著是設計、工作清單與實作。
● 可反覆精修,直到達成所需輸出。
● 包含用於驗證變更的掛鉤,例如拼字檢查與強制執行程式設計原則。
AI 編輯器與軟體開發的演進
AI 編輯器
● 演進為更具代理性的體驗,開發人員輸入自然語言,由 AI 編輯多個檔案。
● 根本性轉變:開發人員引導 AI 代理程式撰寫與審查程式碼,同時維持對工作流程的掌控。
● 氛圍程式設計:
● 常見工作流程是開發人員撰寫提示、AI 產生程式碼,然後重複此循環。
● 適合快速建立原型,但缺乏傳統 SDLC 生命週期,因而在脈絡與決策方面產生挑戰。
● 規格驅動開發:
● 為解決氛圍程式設計的挑戰而推出,強調前期規劃。
● 從需求到輸出的結構化工作流程,著重於提升模型專注度與輸出品質。
● 工作流程包括需求、設計、工作清單與實作,並可反覆精修。
● 透過加入用於驗證變更的掛鉤來解決「AI」問題,確保程式碼品質。
Spect 驅動開發
用於驗證變更的掛鉤
● Kiro 納入掛鉤,以在開發流程中驗證變更。
● 範例包括文件拼字檢查、語調與風格檢查,以及強制執行程式設計原則,例如 UI 元件的單一職責原則。
● 求職者應用程式概念:
● 核心構想:處理求職中面試準備以外的更廣泛層面,包括風格、語調與實際面試表現。
● 電梯簡報:使用者登入、設定個人資料,並透過問答流程進行面試準備,最後同時取得質性回饋與量化分數。
Kiro 介面與功能概觀
Kiro 介面
● 已安裝 Tailwind CSS 的全新應用程式概觀。
● Kiro 選單:
● 代理程式掛鉤:由儲存或刪除檔案等事件觸發的背景程序,適合用來更新文件或本地化內容。
● 代理程式引導:用於程式設計與設計標準的規則檔案,會根據應用程式目前的狀態自動產生。
● 規格:從需求到輸出的結構化工作流程,確保從構想到實作都有清楚的路徑。
● MCP:My Code Partner 伺服器,可與各種 AWS 服務和產品整合,近期也強化了更便利的安裝方式。
● 代理程式掛鉤:
● 提供常見情境適用的預先建置掛鉤,並可彈性指定特定檔案類型。
● 代理程式引導:
● 根據應用程式目前的狀態自動產生引導檔案。
● 範例:為使用 TypeScript 與 Vite 的 Vite Web 應用程式建立產品與技術檔案。
● MCP Server:
● 適用於不同服務和產品的 MCP Server 清單持續擴充。
● 最近新增:可透過 kiro.dev 一鍵安裝 MCP Server。
Kiro 中的 Spect 驅動開發
概觀
● Spect 驅動開發是本場演講的核心重點,強調從需求到輸出的結構化工作流程。
● Kiro 支援各種 AI 模型(Sonnet 4.5、4.4、Opus、Haiku),並提供自動選擇功能來挑選最佳模型。
● 建立求職者應用程式:
● 使用圖表作為設計輸入,提示 Kiro 建立求職者應用程式。
● 此流程從根據所提供的設計產生需求文件開始。
● 需求文件:
● Kiro 將初始提示展開為一組需求,並以含驗收條件的使用者故事定義。
● 使用者故事以人類可讀格式呈現功能定義,而驗收條件則詳述實作所需的具體內容。
● 使用者故事與驗收條件:
● 使用者故事範例包括登入、個人資料管理與面試準備工作階段。
● 此流程包括審查使用者故事,確保其符合所需功能,再深入檢視驗收條件以進行詳細實作。
精修需求並進入設計階段
審查與精修需求
● Kiro 可反覆精修需求。在範例中,某些需求(1、2、狀態持久性)已移除,其他需求(3、4、5、6、7、8)則保留在 MVP 範圍內。
● 強調在流程中反覆來回的重要性,以確保需求符合所需結果。
● 工作流程彈性:
● Kiro 支援不同工作流程,包括用於快速建立原型的氛圍程式設計,以及用於結構化規劃的 Spect 驅動開發。
● 開發人員可能偏好先以氛圍程式設計考量初步介面與功能,再轉換為更具結構的方法。
● 設計階段:
● 需求定案後,Kiro 會根據現有程式碼庫產生設計文件。
● 設計階段包括建立架構圖與屬性測試,以確保系統符合指定需求。
● 反覆流程:
● 此流程可反覆進行,讓開發人員能精修需求與設計文件,直到對結果感到滿意。
● 產生的文件可作為未來開發與維護的重要參考。
審查並強化設計文件
設計文件概觀
● Kiro 根據精修後的需求產生設計文件,其中包括高階架構與元件概觀。
● 設計文件使用 mermaid 圖表與 markdown,以清楚呈現視覺化內容和文件。
● 高階架構:
● 此架構包括開始畫面、問題畫面、結果畫面、用於資料持久性的本機儲存,以及用來錄製音訊回應的 Web Audio API。
● 元件細分:
● 識別出的主要元件:開始畫面檢視、問題畫面檢視、工作階段狀態擷取(問題與回應)、題庫(MVP)以及儲存工作階段。
● 識別缺口:
● 識別出的缺漏功能:轉錄使用者回應的音訊,以及詳細分析結果。
● 設計文件未具體說明如何轉錄音訊,以及如何產生與呈現結果。
● 強化設計:
● 新增額外需求:在使用者說話時轉錄為文字,以及對結果進行額外分析。
● 強調使用自然語言提示新增需求的便利性,突顯 AI 輔助文件的方便之處。
強化設計並移至工作清單
更新設計文件
● 設計文件已新增其他功能,包括使用 Cloud SDK 轉錄音訊,以及詳細分析結果。
● 導入檢查點與還原功能,無須依賴版本控制系統即可輕鬆還原至先前狀態。
● 系統圖表更新:
● 系統圖表已更新,納入轉錄服務(使用 Cloud SDK 將語音轉為文字)。
● 產生工作清單:
● 工作流程接著會根據更新後的設計文件產生工作清單。
● 工作包括建立資料模型、實作音訊錄製服務、回應驗證儲存與 AI 整合。
● 彈性與精修:
● 工作流程可將手動編輯與精修整合至設計文件中。
● 可以重新排序工作或調整其優先順序,以專注於快速達成 MVP 範圍。
● 選擇性工作:
● 以屬性為基礎的測試工作預設為選擇性,讓開發人員先專注於核心功能,再處理其他測試。
● 可精修工作清單,優先處理特定工作,以更快速地開發 MVP。
工作清單優先順序與實作
工作清單彈性
● 可精修並重新排序工作清單,以專注於快速達成 MVP 範圍。
● 可以將工作分組以減少工作數量,讓工作流程更容易管理。
● 測試優先開發:
● 如果開發人員偏好測試驅動開發方法,可以選擇先撰寫測試。
● 工作流程支援不同的開發風格,可依團隊偏好自訂。
● 核心 MVP 工作:
● 已找出包含五項工作的核心 MVP:設定相依性、建立核心資料類型、實作應用程式狀態管理、實作音訊錄製,以及語音測試。
● 其他工作包括實作回應驗證儲存,以及建立開始畫面元件。
● 納入 UI:
● 初始階段可能不包含 UI 元件,但可調整為納入 UI,以便進行視覺測試與互動。
● 工作實作:
● 可以透過點選 UI 或聊天命令開始工作。
● Kiro 依序執行工作,並執行終端機命令以安裝相依性和建立必要檔案。
● 此流程可反覆進行,並可根據持續演進的需求與設計快速調整和精修。
以屬性為基礎的測試概觀
結構化需求
● 需求以使用者故事驗收條件格式定義。
● 可對需求進行邏輯等價與形式推理。
● 屬性與形式推理:
● 屬性是系統在所有執行過程中都應成立的特徵或行為。
● Kiro 從 Gherkin 格式的需求中擷取屬性,並使用名為 Fast Check 的框架進行以屬性為基礎的測試。
● Gherkin
● 是一種用於行為驅動開發 (BDD) 的純文字語言,能以結構化且人類可讀的格式撰寫軟體行為情境,主要使用 Given-When-Then 結構。
● Feature:說明正在測試的功能。
● Scenario:功能實際運作的特定範例。
● Given:設定動作發生前的初始脈絡或狀態。
● When:說明使用者或系統執行的動作。
● Then:定義動作的預期輸出或結果。
● And/But:用於在不重複相同關鍵字(Given、When 或 Then)的情況下,為該關鍵字新增更多步驟。
● Fast Check 框架:
● Fast Check 會產生一系列值來對照屬性進行測試,以實現模糊測試。
● 不同於輸入有限的單元測試,以屬性為基礎的測試可提供更多證據,證明產生的輸出符合需求。
● 以屬性為基礎的測試範例:
● 使用 Kiro 建立了一個西洋棋應用程式,並使用以屬性為基礎的測試來確保應用程式如預期運作。
● 測試包括檢查 AI 產生的任何移動,確認其對照移動登錄是否有效。
● Fast Check 會使用隨機變更多次執行測試,以確保穩健性並減少錯誤。
● 以屬性為基礎的測試可提升程式碼品質,並降低發生錯誤的可能性。
診斷工具
● Kiro 的診斷工具可協助在工作執行期間識別並解決問題。
● 它會從編輯器讀取 lint 問題,並提供回饋以改善開發流程。
● 此工具已減少工作完成期間遇到的問題數量。
● 工作執行:
● 此應用程式包含用於面試準備的行為、技術與領導力問題。
● 此應用程式連接至 Sonnet 3.7 模型以產生回應。
● 最佳化示範:
● 最終應用程式以問題與回應示範面試準備練習。
● 此應用程式讓使用者練習回答技術問題並取得回饋。
● 此示範突顯應用程式的功能,包括錄製與轉錄回應的能力。