架構賦能 AI:知識工程推動下的軟件架構數字化
TL;DR:我們試驗了將 AI 應用到基于 Protobuf 的微服務架構中,基于 ArchGuard 治理平臺、Shire AI 助手、Team AI 三個工具中,構建了一套完整的 AI4SE 原型,在需求、設計、開發、測試和運維等階段,這里是我們的思考和實踐。
過去幾個月里,我們在各大技術大會上頻繁看到生成式 AI 的應用,很多研發組織都在嘗試將其引入開發的各個環節。然而,隨著 AI 技術的深入應用,不少組織也發現了基礎知識工程方面的種種挑戰。例如,知識的缺乏規范化、流程的缺失以及標準化檢測工具的不足,正成為 AI 成功落地和提升研發效能的主要阻礙。
如果說知識工程是 AI 賦能研發的基礎,那么數字化架構則是 AI 賦能研發的關鍵。在這篇文章中,我們將探討知識工程推動下的架構數字化:如何通過知識工程的視角, 利用 AI 技術,對系統架構進行全面分析、管理和優化的過程,以及我們的思考和實踐。
引子:架構知識如何改變 AI 驅動的開發流程??
AI4SE(Artificial Intelligence for Software Engineering)是指人工智能技術應用于軟件工程領域,旨在通過利用 AI 算法和工具來改進軟件開發、維護、測試和管理等各個環節的效率和效果。—— https://aise.phodal.com/
從過去的、標準或者不標準的 DevOps 開發流程來看,我們會把 SDLC 流程分為 N 個階段,取決于你的組織架構,階段的數量可能會有所不同,以適配康威定律。在此,我們將 SDLC 流程簡化為以下幾個主要階段:需求、設計、開發、測試和運維。
SDLC 中的 AI 與架構
圖片
而毫無意外的是,當你深入 AI 4SE 的應用時,會發現每個環節都需要架構知識,以微服務架構為例:
- 需求階段。AI 需要結合現有架構、微服務架構的特點,設計出符合微服務架構的需求文檔,拆分好需求及其所屬的需求或者功能單元。
- 設計階段。遵循現有的微服務架構設計規范、API 規范、數據庫設計規范等,由 AI 生成符合規范的文檔、契約設計和數據庫設計。
- 開發階段。AI 生成的代碼,需要滿足編碼規范、代碼風格、代碼質量等等,還有組織內部的質量門禁規則(比如 SonarQube)。
- 測試階段。自動化測試需要合理的測試策略、規范等,測試人員提的 bug 總需要在合適的服務或組件中修復。
- 運維階段。需要完整的服務地圖,以及服務的依賴關系、日志規范等等,才能結合 AI 自動幫你定位到問題、生成報告等。
當然,架構規范通常分散在不同的部門和團隊中管理,如何高效整合和應用這些知識是當前面臨的一個挑戰。然而,這里我們主要關注架構知識在開發過程中的重要性。
微服務場景示例:AI 如何依賴于架構
圖片
以基于 Protobuf 的微服務架構為例,我們可以探討 AI 如何利用架構知識來推進開發流程的數字化。
Protobuf 是一種高效的二進制序列化協議,提供了跨語言、低延遲的數據交換能力,特別適合微服務架構中服務之間頻繁的通信需求。通過解析 Protobuf 中的服務(Service)、消息(Message)和 RPC 調用等內容,AI 能夠提取系統組件之間的交互關系、數據結構以及模塊的職責。這些信息有助于識別系統的核心模塊、數據流以及 API 接口。
- 需求階段:AI 能夠結合 Protobuf,將復雜的業務需求拆解為更小的功能單元,并標注它們之間的依賴關系。同時,AI 會自動生成針對每個服務的消費者和服務者需求文檔。
- 設計階段:在設計過程中,AI 可以自動生成符合微服務標準的設計文檔,涵蓋 Protobuf API 代碼、數據庫設計等內容,進一步生成自動化測試接口,確保系統的一致性。
- 開發階段:AI 在開發階段會自動應用團隊的編碼規范和代碼風格,結合 Protobuf 接口生成客戶端和服務端代碼,以確保代碼質量符合組織的標準。
- 測試階段:AI 可以根據需求和設計文檔自動生成合理的測試策略和測試用例,創建模擬請求和響應,幫助識別 bug 所在的服務,并自動生成修復建議。
- 運維階段:在運維階段,AI 能夠利用 Protobuf 文件生成服務地圖,展示服務間的依賴關系。同時,AI 還會自動分析日志數據生成問題報告,并提供根因分析,幫助運維團隊快速解決問題。
對于 Spring Boot 框架,盡管具體實現和技術棧有所不同,但整體思路與上述 Protobuf 類似。Spring Boot 提供了一系列工具和庫來支持微服務架構,例如 Swagger 等,這些工具可以幫助開發者快速構建和管理微服務。通過結合 Spring 工具生態,Spring Boot 應用中的服務之間的通信也能實現高效的數據交換,AI 可以同樣在需求、設計、開發、測試和運維各個階段進行有效的集成和自動化,進一步提升開發流程的智能化水平。
AI 與架構知識相互賦能:如何實現架構的數智化?
架構數智化是指通過對架構知識進行數字化和智能化的處理,提升架構設計、管理與協作的效率和質量。其核心在于將分散的架構知識進行數字化表示,構建統一的知識基礎,使得人工智能(AI)能夠理解和利用這些知識,從而輔助并優化架構相關的各個環節。
圖片
實現架構數智化的關鍵步驟包括:
- 架構元模型的建立:定義架構的基本元素和關系,如組件、接口、依賴關系等。這為架構知識的數字化奠定了基礎,確保了架構元素的標準化和可操作性。
- 知識圖譜的構建:將架構元素及其關系映射到知識圖譜中,形成結構化的架構知識庫。知識圖譜使得復雜的架構信息以可視化、關聯性的方式呈現,便于知識的檢索和推理。
- 標準化的語義定義:采用統一的描述語言和規范,如統一建模語言(UML)、領域特定語言(DSL)等。標準化確保了架構知識的可讀性和可解析性,促進了人與機器之間的有效溝通。
借助數字化的架構知識,AI 能夠在以下方面助力架構:
- 設計方案推薦:根據具體的需求和約束條件,AI 可以快速推薦最佳的架構設計方案,幫助架構師做出更明智的決策。
- 規范合規性檢查:自動驗證設計方案是否符合組織的架構規范和標準,減少人為錯誤,確保一致性和合規性。
- 自動生成原型:基于高層次的架構設計,AI 能夠自動生成代碼骨架或原型,支持快速迭代和驗證,加速開發流程。
- 智能問答系統:利用自然語言處理技術,AI 可以回答團隊成員關于架構的疑問,提供實時支持,促進知識共享。
- 智能化協同設計:在協同設計平臺上,AI 提供實時建議和錯誤檢查,幫助團隊成員協調工作,提高設計效率和質量。
綜上所述,架構數智化通過集成數字化表示和人工智能技術,實現了架構知識的高效管理和利用,推動了架構設計過程的智能化轉型。這不僅提升了組織的創新能力和響應速度, 也為數字化時代的持續發展提供了堅實的技術支撐。
實踐:提煉架構知識,整合 AI 工具
我們的探索圍繞于三個平臺/工具:
- ArchGuard 治理平臺:用于架構知識的管理、分析和優化,支持架構元模型的定義、知識圖譜的構建和標準化的語義定義。
- Team AI 平臺:在 AI 平臺上整合開發流程與架構知識,提供智能化的協同設計、規范合規性檢查、自動生成原型等功能。
- Shire AI 助手:在 IDE 端提供直接 Prompt 能力,并與遠程智能體的交互,以實現基于代碼骨架的 AI 交互和迭代。
其中的 ArchGuard( https://archguard.org/ )和 Shire ( https://archguard.org/ ) 都是我們自研的開源工具,可以在 GitHub 上找到源碼和文檔。
1. ArchGuard:提取架構知識與數據
我們在 ArchGuard 2.2.2 版本中,提供了對 Protobuf 文件的解析和分析功能,支持自動提取服務、消息、接口等元素,構建服務地圖和依賴關系圖。并構建了 全新 ArchGuard Architecture Analyser 模塊,支持對架構知識的智能化分析和優化。
通過,直接運行 ArchGuard CLI,就可以將 Protobuf 文件解析為 JSON 格式,并上傳到自定義的遠程服務器中,以便后續的分析和優化。
java -jar .scanner_cli.jar --language=go --type=architecture --output=http --server-url=http://localhost:3000 --path=.如下是,我們在 ArchGuard 中的可視化展示:
圖片
2. Team AI 平臺:整合 AI 工具與架構知識
我們在 Team AI 平臺中,整合了開發流程,并兼容 ArchGuard 接口。如下是,相同數據在 Team AI 平臺中的展示:
圖片
結合生成式 AI 的生成能力,我們可以快速構建基于代碼庫的接口知識,用于快速進行知識檢索和查詢:
圖片
以便于我們可以從需求階段,就可以查詢到需求可能影響 的范圍,方便進行架構設計和文檔的編寫等。Team AI 平臺也提供了面向其它工具、平臺的接口,諸如于 Shire IDE 插件就可以快速接入。
3. Shire AI 助手:AI 與架構知識的交互
在 Shire 可以直接調用遠程的 Http API、流式 API 等:
圖片
因此可以直接從平臺獲取所需要的架構知識,并將其與代碼庫相結合,以實現更高效的軟件開發。我們還在即將發布的 Shire 新版本中添加更好的 Protobuf 支持:
圖片
以直接在 IDE 中就可以讓 AI 修改 prompt。
結語:架構知識的數字化與智能化
在我們的探索中,架構知識的數字化與智能化成為提升軟件開發效率的關鍵。通過將 AI 應用到基于 Protobuf 的微服務架構,我們在需求、設計、開發、測試和運維等環節實現了智能化支持。
借助 ArchGuard 治理平臺、Team AI 平臺和 Shire AI 助手,我們構建了一套工具鏈,使架構知識能夠被 AI 理解和應用,推動開發流程的自動化與智能化。盡管面臨著規范與流程的挑戰,我們相信,架構知識的有效整合將為 AI 的成功落地和研發效能提升提供強有力的支持。未來,我們將繼續深入探索架構與 AI 的融合,推動軟件工程的持續變革。


























