將人工智能應用到軟件開發中?那你需要了解這些

0 評論 2093 瀏覽 4 收藏 10 分鐘

隨著科技的發展,AI 技術也在不斷的發生變化,AI與軟件工程的融合會是一種新的突破方式,通過下面的文章,我們一起看看這兩者的融合需要了解什么吧!

軟件開發人員依靠確定性而蓬勃發展。如果您向程序提供一組輸入,您將始終獲得相同的輸出。在軟件歷史的大部分時間里,軟件完全建立在確定性邏輯的基礎上。

我們甚至有一個術語:自上而下的編程。所有算法都遵循一條路徑,其分支也基于預期的邏輯。當我們調試代碼時,我們會一遍又一遍地沿著相同的路徑運行,找到行為偏離預期的地方,并使其回到正軌。

確定性和確定性邏輯適用于許多軟件。但現實世界并非如此。相比之下,AI是概率性的。答案從來都不準確。相反,AI使用模型來預測行為,然后生成該行為。

也許描述這一點的最佳方式是傳統軟件與AI的更新方式。傳統軟件會獲得更新和補丁。AI可以學習、自行進化、理解并吸收用戶反饋,無需人工干預。這使得傳統軟件更加精

通過將AI應用到軟件工程中,我們可以兩全其美:既精確又靈活的軟件。本文將探討這次合并,以及它對開發人員和工程師以及他們的作品的用戶意味著什么。

一、AI與軟件工程的融合

如今,開發人員有機會使用AI作為其編碼過程的一部分。新的AI工具可幫助創建代碼、查找錯誤、設置測試套件以及生成測試和示例數據。在某些方面,AI可以幫助提高開發人員的工作效率,減少重復性任務所花費的時間,發現缺陷,并幫助經驗不足的開發人員像經驗豐富的開發人員一樣編寫代碼。

但也有一個缺點:AI是出了名的不可靠。您需要能夠檢查其工作。AI目前的工作具有明顯的信心,即使結果不正確,也使其結果看起來正確。因此,如果您不具備與您要求其處理的主題相關的技能、知識和經驗,您將無法判斷它何時出錯。

也就是說,AI可以為開發、維護和測試代碼的過程提供巨大幫助。雖然并非所有事情都會受益,但在這個過程中的某些時刻,AI可以介入并減少所需工作量數小時甚至數天。

但這不僅僅與生成代碼有關。這也與生成的代碼有關。AI和軟件工程的融合將使開發人員能夠創建更加智能、以用戶為中心的應用程序,并且軟件用戶的體驗將比傳統的手工編碼應用程序更加靈活和動態。

隨著時間的推移,我們將看到一些應用程序基于實時用戶反饋而動態發展,而一些軟件甚至可以在用戶遇到錯誤和不兼容性之前先行解決它們。它永遠不會是完美的,但它肯定有助于使軟件變得更好。

二、日常軟件任務中的AI:真正的好處是什么?

這一切聽起來不錯,對吧?但讓我們歸根結底:軟件工程中的AI到底是什么,可以讓開發人員有額外的時間看《神秘博士》、和狗玩耍,或者:睡覺?讓我們看看我們想到的五個領域。

1. 重復性任務的自動化

有大量非??菰?、平凡的任務需要開發人員的技能,但一點也不有趣。一個例子是幫助編寫重復的代碼塊。

編碼員長期以來都能夠設置他們的?IDE?來填寫代碼塊,就好像它們是宏一樣,但AI可以學習代碼塊的模式和意圖,并幫助使用程序員或組織的風格生成它們,而無需預先準備。?–?對它們進行編程。它可能會建議:“我以前見過你寫過這樣的代碼。你想讓我為你構建它嗎?”。

是的,這可以幫助開發人員專注于更具創造性的工作,但它也可以在代碼之間引入一致性,而不需要開發人員嘗試將代碼適應限制性模式。

2. 預測分析和提高軟件可靠性

這是AI可以根據模式和趨勢預測代碼行為的地方。AI工具可用于預測系統過載,預測用戶行為,可能優化用戶體驗,并對需要改進的領域進行預先維護。另一個巨大的好處是隨著運行平臺的變化和更新而更新代碼以滿足最低要求。

除了節省編程時間之外,該軟件幾乎完全可以自行變得更加可靠和有彈性。

3. 加快開發/測試周期

代碼總是需要測試。典型的循環包括一些編碼、一些測試、一些修復……沖洗、清洗、重復。然而,由于AI可能能夠預測軟件行為,因此它們甚至可以在測試開始之前標記錯誤。

開發環境長期以來能夠標記語法和類型轉換錯誤,這涉及語言結構的知識。但是,如果開發環境可以開始標記邏輯錯誤,這可能會大大加快代碼交付速度并減少給定項目所需的修復階段的數量。

4. 降低軟件維護成本

大多數軟件項目一旦完成,就需要近乎持續的維護水平,以跟上發現的錯誤、平臺的變化和性能問題。我編寫了一款有助于促進非營利捐贈的軟件,我至少花費了80%的時間來響應用戶請求或添加新功能,而只是根據支付網關不斷變化的要求重寫代碼。如果我可以減少任何吃力不討好且繁瑣的維護工作,就可以為用戶提供更多的價值。

5. 保持人的因素

盡管在開發環境中添加了AI,但所有跡象都表明,在可預見的未來,程序員——真正的人類程序員——將創建大多數軟件。

減少時間和乏味當然可以幫助開發人員保持敏銳,但AI還可以監控團隊的整體績效,如果團隊成員被過度利用、過度勞累或走向倦怠,則向經理提供通知。它還可以幫助重新分配團隊任務,使每個成員都能發揮自己的優勢,并幫助進行規劃和資源分配。

三、AI在軟件工程中的挑戰和局限性

隨著技術復雜性的增加,也存在一些問題。在本節中,我將討論三個值得關注的領域。

1. 增加了復雜性和維護挑戰

這是我對軟件工程中的AI最大的擔憂:隨著我們在越來越多的代碼中使用AI,我們對其工作原理的了解會越來越少。如果您曾經從其他人那里繼承過一個項目,特別是當該組織或開發人員無法提供咨詢時,您就會明白我的意思。

AI生成的內容將比您和您的團隊編寫的代碼更像是一個黑匣子,而且風險在于,一旦生成,人類將很難維護。不要陷入期望AI維護自己的軟件的陷阱。當AI的代碼出現問題時,你和你的團隊就需要找出問題所在并進行修復。

2. 數據依賴

AI依賴大量數據來創建模型。如果您不使用公共模型——例如,如果您正在研究公司獨特的領域專業知識——可用于訓練AI的總數據集可能不夠。

此外,AI系統會在廣泛的數據集上進行訓練,但并非所有數據都達到您想要完成的工作所需的質量水平。

我不斷提醒人們,將AI引入軟件工程項目就像雇用一群有才華的暑期學生。他們可能很聰明,速度很快,但他們會時不時地丟球,他們離開后你就會有爛攤子需要清理。雖然你的AI不會離開,但它會給你留下一些它無法解決的問題。

本文由 @AI魔法學園 原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基于CC0協議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!