自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用這些AI工作流來減少您的技術(shù)債務(wù),你學(xué)會了嗎?

人工智能
將AI集成到軟件開發(fā)中,有可能顯著減少編寫單元測試和執(zhí)行代碼審查等手動任務(wù)所需的時間和精力。我的早期探索已經(jīng)證明了如何利用現(xiàn)成的AI工具以及新興的Dagger開源框架來創(chuàng)建可擴展的分布式工作流,這些工作流使用AI來自動化和改進(jìn)這些流程。

利用AI和Dagger,自愈工作流有望通過自動化錯誤檢測、生成測試覆蓋率和迭代優(yōu)化代碼來提高代碼質(zhì)量。

譯自Use These AI Workflows To Reduce Your Technical Debt,作者 Kambui Nurse。

技術(shù)債務(wù)通常是許多軟件開發(fā)組織中,尤其是在構(gòu)建和測試過程中創(chuàng)新的主要阻礙。隨著代碼庫的增長和復(fù)雜性的提高,快速的修復(fù)和遺留系統(tǒng)不斷累積,從而導(dǎo)致效率低下,減慢構(gòu)建速度,增加測試時間,并引入脆弱的依賴關(guān)系。

最初為了滿足眼前的目標(biāo)而做出的微小權(quán)衡可能會演變成嚴(yán)重的瓶頸,從而使擴展和迭代變得更加困難。對于旨在保持敏捷性的軟件組織而言,解決這一債務(wù)至關(guān)重要,以確保其CI/CD管道保持快速、可靠并能夠支持快速的功能交付。

然而,與此同時,它往往似乎是一個棘手的問題。我們知道我們應(yīng)該投資,我們也試圖取得進(jìn)展,但感覺就像逆流而上。盡管我們進(jìn)行了投資,但技術(shù)債務(wù)仍在不斷累積。

一些人提出將AI作為一種解決方法。將AI指向你的基礎(chǔ)設(shè)施,它就能神奇地開始變得更好,這難道不是很好嗎?作為一個擁有超過20年經(jīng)驗的冷靜工程師,我已經(jīng)學(xué)會忽略供應(yīng)商的炒作和靈丹妙藥的白日夢。但事實證明,在這種情況下,可能確實有一些東西。

你聽說過自主式工作流嗎?這種新的AI方法具有令人難以置信的潛力,也是我在過去幾個月里大力投資的一個領(lǐng)域,因為它可能是我們解決我們所有人積累的大量技術(shù)債務(wù)的最佳機會。

對于不熟悉自主式工作流的人,這里有一個快速入門:

自主式工作流是指自主軟件代理承擔(dān)傳統(tǒng)上需要人工決策或干預(yù)的任務(wù)。

關(guān)鍵期望特性:

  1. 自主性: 代理應(yīng)該獨立于人工指導(dǎo)運行,根據(jù)預(yù)定義規(guī)則或AI驅(qū)動的算法執(zhí)行任務(wù),無需來自人類的提示或指示
  2. 主動性: 代理需要能夠根據(jù)不斷變化的條件或模式來預(yù)測需求、啟動行動或提出建議
  3. 適應(yīng)性: 與僵化的腳本或手動流程不同,我們希望代理能夠適應(yīng)實時數(shù)據(jù)、意外變化或新需求,根據(jù)需要重新配置工作流
  4. 決策能力: 代理應(yīng)該能夠通過分析數(shù)據(jù)、權(quán)衡選擇和確定工作流環(huán)境中最佳行動方案來做出復(fù)雜的決策
  5. 目標(biāo)導(dǎo)向: 自主式工作流應(yīng)該專注于實現(xiàn)特定結(jié)果,而不僅僅是完成預(yù)定義的步驟。

自主式工作流有望改變我們測試和構(gòu)建軟件的方式,但我們必須從某個地方開始。我決定選擇一個困擾我組織的簡單問題,以展示AI在軟件開發(fā)管道中的潛在能力。

選擇一個易于處理的問題:代碼覆蓋率

在許多組織中,確保完整的代碼覆蓋率可能是一項艱巨的任務(wù)。我們的代碼庫有多少應(yīng)該由自動單元測試進(jìn)行測試?開發(fā)人員經(jīng)常必須在截止日期和質(zhì)量之間取得平衡,導(dǎo)致代碼倉促完成且測試不足。這種缺乏測試覆蓋率會帶來風(fēng)險,因為未經(jīng)測試的代碼部分可能包含錯誤或不兼容性。

AI可以在哪里提供幫助?

  • 生成單元測試: 使用AI自動為代碼的未測試部分生成單元測試
  • 覆蓋率報告: 使用覆蓋率報告來識別測試不足的區(qū)域,然后提示AI為這些區(qū)域生成測試

利用新型容器引擎——Dagger

傳統(tǒng)的構(gòu)建工具、CI平臺和像Docker這樣的容器引擎有其作用,但它們無法提供我們自己實現(xiàn)所需目標(biāo)的必要功能。幾年前,我開始使用Dagger,這是Solomon Hykes和Docker早期技術(shù)團隊正在開發(fā)的新的面向管道的容器引擎。我花在Dagger上的時間越多,就越能看到它改變我們從根本上管理軟件管道的潛力。

為什么我喜歡 Dagger?因為它通過提供一個對復(fù)雜管道系統(tǒng)的抽象層,簡化了工作流的創(chuàng)建和部署。Dagger 允許開發(fā)人員自動化并在使用容器的環(huán)境中分配任務(wù)。它在管理依賴項、容器化和 CI/CD 管道方面發(fā)揮著重要作用,同時也允許開發(fā)人員通過模塊化設(shè)計定制其工作流。在這種情況下,Dagger 在管理代理工作流背后的基礎(chǔ)設(shè)施方面至關(guān)重要。該系統(tǒng)使用 Dagger 創(chuàng)建、運行和管理封裝 AI 生成的代碼的 Docker 容器。這確保了代碼在一致的環(huán)境中執(zhí)行。

但是 Docker 呢?我們?nèi)匀皇褂盟糜谄湓O(shè)計目的。生成的代碼在 Docker 容器中運行,允許一致且隔離的測試環(huán)境。Dagger 與 Docker 無縫集成,使管理容器化工作流更容易,無需人工監(jiān)督。

如果沒有 Dagger,我能做到嗎?當(dāng)然可以,但是 Dagger 大大簡化了處理依賴項的過程。在我的初始設(shè)計中,管理 AI 代碼生成工具的各種依賴項非常繁瑣。Dagger 通過在運行時自動處理依賴項來幫助降低復(fù)雜性。

AI 生成的單元測試

我首先構(gòu)建了一個試點項目,該項目使用 AI 創(chuàng)建工作流來生成單元測試。AI 分析覆蓋率報告并根據(jù)未覆蓋的代碼生成測試用例。以下是流程的工作方式:

  1. AI 生成: AI 根據(jù)覆蓋率報告中確定的差距生成代碼。
  2. 執(zhí)行和錯誤處理: 生成的代碼在容器中執(zhí)行,并在其中檢測錯誤。
  3. 反饋循環(huán): 如果發(fā)現(xiàn)錯誤,AI 會接收該反饋并改進(jìn)其生成的代碼,從而創(chuàng)建一個持續(xù)改進(jìn)循環(huán)。

持續(xù)集成平臺的作用

將工作流集成到 CI 管道中,允許在每次將新代碼推送到存儲庫時自動測試生成的單元測試。這確保了每個代碼提交都經(jīng)過質(zhì)量和正確性驗證,從而降低了將錯誤引入生產(chǎn)環(huán)境的風(fēng)險。

自糾正循環(huán)

這里的關(guān)鍵創(chuàng)新是創(chuàng)建一個自糾正循環(huán),其中 AI 生成的代碼在每次迭代中都會得到改進(jìn)。循環(huán)的工作方式如下:

  • AI 根據(jù)輸入數(shù)據(jù)生成初始解決方案。
  • 執(zhí)行代碼,并返回錯誤(如有)。
  • 將這些錯誤反饋到 AI 模型中,使其能夠改進(jìn)下一次迭代。
  • 重復(fù)此過程,直到代碼成功運行或達(dá)到預(yù)定義的迭代次數(shù)。

此循環(huán)使系統(tǒng)隨著時間的推移越來越準(zhǔn)確,解決了代碼生成不完整或不正確的常見問題。該試點的循環(huán)用于改進(jìn) AI 生成功能單元測試的能力。

開發(fā)者界面:VS Code 擴展和分布式 CLI

最初,我將其構(gòu)建為一個可以生成單元測試的 VS Code 擴展。但是,我很快發(fā)現(xiàn)這會使擴展難以跨不同的開發(fā)環(huán)境進(jìn)行擴展。由于大型組織中的開發(fā)人員使用許多編輯器,我需要創(chuàng)建多個版本的擴展才能支持我的所有開發(fā)人員。

更優(yōu)雅的版本是利用 Dagger 創(chuàng)建一個分布式 CLI,它可以在不依賴特定編輯器的情況下運行 AI 模型并生成測試。這允許更靈活的解決方案,可以在不同的工具中使用,無需構(gòu)建特定于編輯器的擴展。

擴展 AI 在管道中的使用

這種代理工作流的潛在應(yīng)用非常廣泛。除了生成單元測試之外,我還看到了將系統(tǒng)擴展到執(zhí)行其他與代碼相關(guān)的任務(wù)的潛力,例如:

  • 重構(gòu)代碼: AI 可以建議重構(gòu)以使代碼更高效或更容易測試。
  • 持續(xù)代碼審查: AI 可以通過自動生成評論或改進(jìn)建議來參與拉取請求。
  • 自愈工作流: 系統(tǒng)可以自動生成針對測試期間檢測到的問題的修復(fù)程序,允許 AI 建議更改并實施更改。

計劃開發(fā) Python 和其他編程語言的插件,以支持多種編程語言,從而在不同項目中更廣泛地使用工作流。

結(jié)論

將AI集成到軟件開發(fā)中,有可能顯著減少編寫單元測試和執(zhí)行代碼審查等手動任務(wù)所需的時間和精力。我的早期探索已經(jīng)證明了如何利用現(xiàn)成的AI工具以及新興的Dagger開源框架來創(chuàng)建可擴展的分布式工作流,這些工作流使用AI來自動化和改進(jìn)這些流程。實現(xiàn)具有自我糾正循環(huán)的系統(tǒng)應(yīng)該能夠提高代碼質(zhì)量,同時減輕開發(fā)人員的測試負(fù)擔(dān)。

這種自主工作流是當(dāng)今開發(fā)團隊的強大工具,也是AI增強型開發(fā)未來的縮影。我們正處于一個令人興奮的時代。我預(yù)計AI將改變我們工作場所中的許多常見任務(wù)。看到AI可能如何顯著改進(jìn)對我們公司和生活至關(guān)重要的軟件的構(gòu)建和測試,這令人興奮。

責(zé)任編輯:武曉燕 來源: 云云眾生s
相關(guān)推薦

2023-05-05 08:29:15

Spring后臺服務(wù)器

2023-08-14 08:42:41

2024-02-02 11:03:11

React數(shù)據(jù)Ref

2024-08-09 08:17:07

SSH服務(wù)器架構(gòu)

2023-03-17 16:44:44

Channel進(jìn)程模型

2022-11-08 08:45:30

Prettier代碼格式化工具

2024-08-19 10:24:14

2023-10-30 07:05:31

2023-12-27 07:31:45

json產(chǎn)品場景

2024-09-06 07:29:05

2023-09-07 07:13:51

2022-07-08 09:27:48

CSSIFC模型

2023-01-26 00:28:45

前端測試技術(shù)

2023-12-26 10:12:19

虛擬DOM數(shù)據(jù)

2023-04-06 12:04:26

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2023-07-26 13:11:21

ChatGPT平臺工具

2024-01-19 08:25:38

死鎖Java通信

2024-01-02 12:05:26

Java并發(fā)編程
點贊
收藏

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