回顧系列
- 回顧 01:Coinbase re:Invent 回顧 (IND3312)
- 回顧 02:利用 AI 和 AWS 構建未來交易平臺
- 回顧 03:交易創新:Jefferies 在 Amazon Bedrock 上的 AI 助理 (IND3315)
- 回顧 04:FSI 如何運用代理式 AI 徹底改造 HFT 分析 (GBL302)
- 回顧 05:透過 Amazon Time Sync 改善分散式系統,Nasdaq 專題分享
- 回顧 06:Amazon Aurora HA 與 DR 的全球韌性設計模式 (DAT442)
- 回顧 07:建構代理式 AI:Amazon Nova Act 與 Strands Agents 實務應用 (DEV327)
- 回顧 08:深入探討 Amazon Aurora 及其創新 (DAT441)
- 回顧 09:深入探討 Amazon S3 (STG407)
- 回顧 10:Nasdaq:為全球金融服務打造具彈性的基礎設施(HMC327)
- 回顧 11:AWS Lambda 的最新功能 (CNS376)
- 回顧 12:使用 Kiro 進行規格驅動開發 (DEV314)
- 回顧 13:Amazon 的 FinOps:全球電子商務巨擘的雲端成本經驗 (AMZ308)
- 回顧 14:AWS 上的 Tick-to-trade 延遲交易平台
場次筆記
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 模型以產生回應。
- 最佳化示範:
- 最終應用程式以問題與回應示範面試準備練習。
- 此應用程式讓使用者練習回答技術問題並取得回饋。
- 此示範突顯應用程式的功能,包括錄製與轉錄回應的能力。
