偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

超越代碼:用于AI工具,實(shí)現(xiàn)軟件架構(gòu)現(xiàn)代化

譯文 精選
人工智能
本文將探討如何運(yùn)用AI輔助實(shí)現(xiàn)軟件架構(gòu)現(xiàn)代化,結(jié)合具體示例展示AI如何協(xié)助達(dá)成這一目標(biāo),包括提供一致且正確的架構(gòu)建議、幫助軟件團(tuán)隊(duì)逐步從遺留系統(tǒng)的泥潭中抽身出來。

譯者 | 核子可樂

審校 | 重樓

憑借GitHub Copilt、Amazon Q等AI驅(qū)動(dòng)編程工具的助力,如今企業(yè)團(tuán)隊(duì)的代碼交付量與交付頻率均創(chuàng)下歷史新高。

但這也帶來了新的問題。

AI協(xié)助團(tuán)隊(duì)產(chǎn)出更多代碼的同時(shí),原有遺留系統(tǒng)以及長期累積下的技術(shù)債也日益惡化。架構(gòu)的現(xiàn)代化轉(zhuǎn)型需求,就成了必須直面的關(guān)鍵挑戰(zhàn)。

換言之,仍有大量開發(fā)者需要將時(shí)間耗費(fèi)在維護(hù)過時(shí)代碼、舊框架和累積架構(gòu)上,導(dǎo)致遺留系統(tǒng)的運(yùn)維成本越來越高。

更糟糕的是,AI工具幾乎完全不了解遺留軟件架構(gòu),因此在嘗試對接的過程中,不僅沒有改善舊有體系、反而令形勢每況愈下。

本文將探討如何運(yùn)用AI輔助實(shí)現(xiàn)軟件架構(gòu)現(xiàn)代化,結(jié)合具體示例展示AI如何協(xié)助達(dá)成這一目標(biāo),包括提供一致且正確的架構(gòu)建議、幫助軟件團(tuán)隊(duì)逐步從遺留系統(tǒng)的泥潭中抽身出來。

AI與軟件架構(gòu)之問

AI極其高效的代碼產(chǎn)出能力已經(jīng)得到全球開發(fā)者的肯定,可問題在于,對AI的持續(xù)使用也會(huì)對架構(gòu)產(chǎn)生影響。

開發(fā)者在編碼時(shí),會(huì)持續(xù)思考并解決以下問題:

  • 如何組織類?
  • 如何處理緩存?
  • 將業(yè)務(wù)邏輯放在哪里?
  • 存在哪些外部依賴項(xiàng)?
  • 業(yè)務(wù)邏輯應(yīng)如何融入整體軟件架構(gòu)?
  • 諸如此類……

AI智能體其實(shí)也會(huì)思考這些問題,并在生成的每行代碼中悄悄做出架構(gòu)決策。

而其中的風(fēng)險(xiǎn),在于這些聰明且不知疲倦的編程助手經(jīng)常做出局部最優(yōu)選擇——即在當(dāng)前場景下看似正確,但卻給整體軟件架構(gòu)增加了更多負(fù)擔(dān)。

更可怕的是,這些錯(cuò)誤往往不會(huì)立刻顯現(xiàn)——畢竟軟件架構(gòu)不會(huì)立刻崩潰,監(jiān)控和測試工具也不會(huì)將此視為嚴(yán)重破壞。

軟件架構(gòu)漂移

架構(gòu)漂移(即緩慢且持續(xù)的結(jié)構(gòu)化架構(gòu)侵蝕)就是其中一種典型表現(xiàn)。以大型銀行為例,他們在對龐大Java單體系統(tǒng)進(jìn)行現(xiàn)代化改造的過程中,發(fā)現(xiàn)原有架構(gòu)極其復(fù)雜、整個(gè)周期須持續(xù)數(shù)年。加上種種隱藏的架構(gòu)陷阱,改造工作屢屢停滯。

也就是說,架構(gòu)問題可能比代碼bug更不易察覺,但造成的影響卻更為嚴(yán)重。

AI如何助力實(shí)現(xiàn)軟件架構(gòu)現(xiàn)代化

但問題并非沒有解決辦法。

一個(gè)令人欣慰的消息是,不理解現(xiàn)代化改造背景的不只是AI,還包括很多開發(fā)者和架構(gòu)師。在同樣迷茫的探索中,AI往往能夠發(fā)揮令人驚嘆的作用。

只要讓AI根據(jù)運(yùn)行時(shí)分析并獲取架構(gòu)上下文,它就能在現(xiàn)代化進(jìn)程中檢測并修復(fù)各類架構(gòu)問題。

只要使用得當(dāng),結(jié)合運(yùn)行時(shí)上下文加上初步領(lǐng)域驅(qū)動(dòng)結(jié)構(gòu)分析,AI完全可以:

  • 搶先檢測出架構(gòu)反模式并予以糾正;
  • 提供精準(zhǔn)的重構(gòu)策略;
  • 確定修復(fù)優(yōu)先級,幫助工程團(tuán)隊(duì)節(jié)約時(shí)間;
  • 厘清復(fù)雜的依賴關(guān)系;
  • 自動(dòng)修復(fù)架構(gòu)漂移,有效實(shí)現(xiàn)系統(tǒng)自我修復(fù)。

高效推動(dòng)現(xiàn)代化改造

運(yùn)用AI推動(dòng)架構(gòu)改造的第一步,在于確定有效的提示詞。提示詞的質(zhì)量取決于AI獲得的上下文與具象化前提,且直接決定架構(gòu)改造結(jié)果。

那么,行之有效的提示詞該是什么樣?

1. 盡量具體

不要使用“構(gòu)建REST API來管理訂單”這類模糊的表述,而應(yīng)包含更具體的架構(gòu)設(shè)計(jì)思路:

 “使用Flask和SQLAlchemy構(gòu)建一個(gè)Python REST API來管理訂單,應(yīng)用結(jié)構(gòu)如下:

  • 用于處理HTTP請求的控制器層(由Flask實(shí)現(xiàn)路由);
  • 用于業(yè)務(wù)邏輯的服務(wù)層;
  • 使用SQLAlchemy ORM進(jìn)行數(shù)據(jù)訪問的存儲(chǔ)庫層?!?/span>

2. 盡量詳盡

不要只提供代碼邏輯,還應(yīng)包含非功能性需求。

 “擴(kuò)展Python Flask REST API以支持運(yùn)維穩(wěn)健性與可維護(hù)性。具體包括:

  • 記錄每條傳入的HTTP請求及其響應(yīng)狀態(tài)。使用Python內(nèi)置的日志模塊記錄每條請求的執(zhí)行時(shí)間。日志應(yīng)采取結(jié)構(gòu)化設(shè)計(jì),包含時(shí)間戳、端點(diǎn)、狀態(tài)碼和延遲時(shí)間。
  • 使用 Pydantic 模型在控制器層驗(yàn)證所有傳入的請求負(fù)載。確保驗(yàn)證錯(cuò)誤返回標(biāo)準(zhǔn)化的 JSON 錯(cuò)誤響應(yīng),其中包含清晰的消息和相應(yīng)的 HTTP 狀態(tài)碼。
  • 在存儲(chǔ)庫層中,針對瞬時(shí)數(shù)據(jù)庫錯(cuò)誤實(shí)現(xiàn)帶有指數(shù)退避的重試邏輯。使用 Tenacity 處理重試,避免在業(yè)務(wù)層重復(fù)邏輯。
  • 確保所有錯(cuò)誤響應(yīng)遵循一致的JSON模式,包括錯(cuò)誤代碼、消息和可選的調(diào)試詳細(xì)信息。”

3. 始終保持架構(gòu)師思維

傳達(dá)架構(gòu)設(shè)計(jì)與目標(biāo),包括如何將其融入系統(tǒng)。假定需要為訂單系統(tǒng)開發(fā)一套模塊化的郵件傳遞系統(tǒng),其須具備橫向擴(kuò)展能力并可后續(xù)拆分成獨(dú)立微服務(wù),則系統(tǒng)應(yīng)遵循以下要求:

1)清晰的關(guān)注點(diǎn)分離——構(gòu)建時(shí)將代碼庫拆分成多個(gè)明確的層:

   a.控制器層(即Flask路由):接收并驗(yàn)證郵件發(fā)送請求。

   b.服務(wù)層:處理業(yè)務(wù)規(guī)則,如速率限制、內(nèi)容模板和重試等。

   c.存儲(chǔ)庫層:使用SQLAlchemy管理郵件發(fā)送嘗試、狀態(tài)及投遞日志的持久化。

2)無狀態(tài)性:

   a.調(diào)用間不維持特定的會(huì)話或請求狀態(tài)。

   b.所有上下文(如發(fā)件人ID、郵件內(nèi)容、標(biāo)頭)必須在每條請求中獨(dú)立攜帶。

   c.將所有狀態(tài)持久化至外部存儲(chǔ)(數(shù)據(jù)庫、緩存或隊(duì)列)中,以維護(hù)無狀態(tài)計(jì)算節(jié)點(diǎn)。

3)可擴(kuò)展性與微服務(wù)兼容性:

   a.將各主要關(guān)注點(diǎn)(如發(fā)送隊(duì)列、郵件渲染、狀態(tài)跟蹤)設(shè)計(jì)為內(nèi)部模塊,后續(xù)可輕松拆分為獨(dú)立服務(wù)。

   b.避免硬編碼實(shí)現(xiàn)——應(yīng)為各主要組件(如EmailProvider、EmailQueue、TemplateEngine)定義接口。

   c.通過構(gòu)建函數(shù)或簡單的DI容器注入所有服務(wù)及存儲(chǔ)庫依賴項(xiàng)。

4)非功能性需求:

    a.彈性:使用退避策略優(yōu)雅處理SMTP錯(cuò)誤與重試失敗。

    b.可觀察性:使用請求ID及投遞元數(shù)據(jù)記錄所有郵件活動(dòng)。

    c.可擴(kuò)展性:通過接口抽象輕松支持多個(gè)提供程序(如SendGrid、SES)。”

請注意:提示詞代表的就是我們想要的架構(gòu),因此務(wù)必具體、提供上下文且保證描述全面。

為提示詞添加架構(gòu)上下文

之前我們提到了“添加上下文”,但卻一直沒有具體論述。

這里我們以vFunction為例,使用這款用于分析應(yīng)用架構(gòu)并為生成式AI助手提供結(jié)構(gòu)化重構(gòu)指引的工具。如此一來,我們將把靜態(tài)/動(dòng)態(tài)分析與數(shù)據(jù)科學(xué)結(jié)合起來以理解應(yīng)用程序的邏輯域,再反過來借此在復(fù)雜的Java和.NET應(yīng)用程序中發(fā)現(xiàn)架構(gòu)問題。例如:

  • 循環(huán)依賴
  • 反模式
  • 架構(gòu)技術(shù)債
  • 域邊界違規(guī)
  • 死代碼
  • 其他

將這些信息輸入智能體,即可為其提供編寫代碼所需要的信息。

分步示例

下面我們將逐步把以上流程走一遍,了解如何為代碼助手提供架構(gòu)上下文。

分析整個(gè)應(yīng)用

先從應(yīng)用中收集靜態(tài)和動(dòng)態(tài)數(shù)據(jù),這里使用vFunction識別應(yīng)用中潛在的邏輯域及其邊界。這一結(jié)果可以識別相關(guān)架構(gòu)問題,例如次優(yōu)域邊界、域間類依賴關(guān)系、資源依賴關(guān)系、技術(shù)債集中的類、循環(huán)依賴以及跨域共享代碼。之后即可查詢分析結(jié)果、找到需要立即重構(gòu)的錯(cuò)誤,并提出類似以下問題:哪些域中包含的通用類數(shù)量最多?

對一款中型應(yīng)用及其相互交織的業(yè)務(wù)域(圓形部分)進(jìn)行分析,理解其技術(shù)債。

審查架構(gòu)待辦事項(xiàng)

下面制作一份按優(yōu)先級排序的架構(gòu)待辦事項(xiàng)清單,每個(gè)條目均包含上下文說明和一條可在Amazon Q或GitHub Copilot等工具中直接使用的提示詞。

在AI助手中使用提示詞

在向IDE或代碼助手發(fā)出提示詞后,它會(huì)理解上下文并幫助拆分上帝類、解決領(lǐng)域污染問題或提供變更建議,嘗試提高代碼的模塊化水平。以上一張截圖為例,可以看到關(guān)于重構(gòu)循環(huán)流依賴項(xiàng)的建議。

驗(yàn)證并重復(fù)

應(yīng)用變更后重新運(yùn)行分析,AI系統(tǒng)會(huì)顯示模塊化程度是否提升、哪些待辦事項(xiàng)已經(jīng)解決、哪些尚未解決,再給出下一步重構(gòu)建議。

通過將這些洞察與大模型相結(jié)合,就能建立起一個(gè)強(qiáng)大的上下文感知助手,隨時(shí)為重構(gòu)中的難題提供指引。

AI——你的軟件架構(gòu)合作伙伴

AI編程只是這項(xiàng)技術(shù)的應(yīng)用方向之一,它更可以成為全面的合作伙伴,幫助我們對現(xiàn)有軟件架構(gòu)做出現(xiàn)代化改造。

通過使用架構(gòu)感知、基于運(yùn)行時(shí)的上下文來生成高效、一致且精確的提示詞,AI有望幫助大家克服遺留技術(shù)債、提高代碼模塊化水平,最終建立起可擴(kuò)展、云原生的現(xiàn)代化系統(tǒng)。

原文標(biāo)題:Beyond Code: How to Use AI to Modernize Software Architecture,作者:John Vester

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2019-07-16 08:02:22

Docker自動(dòng)化容器

2013-03-22 10:27:40

企業(yè)再現(xiàn)代化IBM論壇2013

2025-08-08 07:18:00

CIOIT架構(gòu)IT服務(wù)管理

2024-12-02 09:26:17

2023-02-08 11:07:56

數(shù)字時(shí)代數(shù)字運(yùn)營模式

2023-06-25 09:04:12

數(shù)字企業(yè)架構(gòu)EA

2025-04-01 06:00:00

AIJEP計(jì)算

2022-07-26 06:57:07

數(shù)據(jù)管道端點(diǎn)API

2021-11-29 18:11:33

自動(dòng)化現(xiàn)代化網(wǎng)絡(luò)優(yōu)化

2020-11-30 10:13:17

ITCIO首席信息官

2018-06-01 22:19:44

IT云計(jì)算云遷移

2015-10-29 14:35:21

移動(dòng)設(shè)備現(xiàn)代化

2022-07-11 05:34:19

云原生應(yīng)用程序

2019-08-30 08:23:47

基礎(chǔ)架構(gòu)IT架構(gòu)數(shù)據(jù)備份

2020-08-05 07:00:00

數(shù)據(jù)架構(gòu)工具技術(shù)

2021-08-27 17:19:08

網(wǎng)絡(luò)現(xiàn)代化網(wǎng)絡(luò)數(shù)字化

2022-12-15 09:49:14

運(yùn)維方案

2022-06-08 14:47:32

Aruba混合辦公網(wǎng)絡(luò)

2021-08-31 16:15:53

安全運(yùn)營業(yè)務(wù)現(xiàn)代化網(wǎng)絡(luò)安全

2020-10-21 09:25:41

VMware
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號