軟體2.0初具規模:軟體行業如何藉助人工智慧提高效率? - kdnuggets

banq發表於2020-10-25

IT行業尤其是軟體開發行業一直是AI的早期踐行者。在這篇文章中,我們描述了機器學習和AI在軟體開發的不同方面的一些早期應用。我們還描述了在未來幾年內將AI用於軟體開發的領域將會加速發展的領域。
當今的軟體開發透過連續整合(CI)和連續部署(CD)的視角來實現軟體自動化,這是兩種廣泛使用的軟體工程開發實踐。大型軟體專案涉及多個工程師,負責共享程式碼庫的副本。CI是一種要求團隊成員更頻繁地整合其工作的慣例,因此可以更快地發現並定位錯誤。CD是一種軟體工程方法,其中將透過自動測試的程式碼更改自動部署到生產中。
我們開始看到使用AI使 程式碼開發的某些 方面自動化的解決方案,包括透過程式綜合,智慧程式碼完成和靜態程式碼分析自動建立程式碼的解決方案。
 
​​​​​​​程式碼開發 
這是軟體生命週期中自動化程度最低的過程,因為上半個世紀建立的工具使當今的開發人員更加高效。與30年前使用的語言相比,如今的程式語言是高階的。儘管這些語言使開發人員更加高效,但由於對開發人員的需求仍然超出供應,因此需要更好的工具。例如,Codata&Kite是  使用AI來提高程式碼質量和強制合規性的“智慧程式碼完成”產品。
將出現一系列旨在進一步增強和增強開發人員能力的工具:
  1. 來自OpenAI的最新 示例 顯示了一種語言模型,該模型能夠在使用Microsoft超級計算機在GitHub程式碼儲存庫上進行訓練後生成Python程式碼。
  2. 涉及神經支援生成器的早期示例(Autopandas) 提示了一些工具 ,這些工具使開發人員無需掌握複雜的API即可在庫和框架中高效工作。它涉及到使用者指定所需的輸入和輸出,而Autopandas會生成用於生成輸出的最佳程式。可以為資料密集型流程構建類似的工具,包括ETL,資料建模,儀表板等。
  3. Facebook AI的另一個 最新示例 潛在地為將程式碼遷移到現代或更高效的程式語言的工具鋪平了道路。它演示瞭如何將無監督的機器翻譯應用於原始碼以建立轉編譯器。

我們相信,向微服務的轉變為自動化開闢了可能性,並將為支援AI的軟體開發工具帶來更多機會。將軟體分成更小的部分為高度針對性的自動化解決方案鋪平了道路。
 

軟體測試 
利用計算機視覺(CV)和自然語言處理(NLP)的深度學習正在進展。想象一下一個帶有GUI和測試機器人的軟體應用程式,它能夠識別和理解文字框和其他介面元素。可以啟用同一機器人來自動建立測試套件。這描述了今天的情況。一個例子是Mesmer,這是 一家致力於自動化客戶體驗測試的機器人過程自動化公司。
展望未來,我們相信下一代自動化工具將把這些功能提升到另一個層次。想象一下一組AI代理,它們可以從應用商店中下載和測試軟體,並在此過程中學習設計和實現軟體的更好方法。這些AI代理可以提供定製的應用程式開發服務,類似於Wix為網站開發提供的服務。
 

程式碼分析與合規性 
這是我們將看到AI興起的另一個領域。機器學習和AI將幫助組織釋出遵循推薦的開發原則的更好的程式碼,提供有關關鍵漏洞的警報,並進行全面的靜態程式碼分析。我們開始在這些領域看到一些採用AI解決方案的公司,並且我們希望未來還會有更多公司。
 

應用程式監視
AIOps解決了對操作支援的需求。AIOps結合了資料分析和機器學習功能,以分析IT系統生成的資料。AIOps平臺增強了廣泛的操作範圍,包括異常檢測,事件關聯,預測和根本原因分析,以改善監視和可觀察性以及服務管理。這是一個活躍的領域:現有的“基於規則的”應用程式監視解決方案開始增加機器學習,而像Anodot這樣的新公司  則為應用程式監視提供異常檢測和預測
 

自動化任務
軟體的哪些特定領域是自動化和AI技術的主要候選者?我們認為,有兩個關鍵要素對於尋找自動化的候選人很重要:(1)專注於使用頻繁的系統或頻繁發生的任務,(2)必須經常調整或調整的系統。一些示例包括:

  • 資料管理系統:有自動駕駛資料管理系統的早期描述和示例 ,以及展示了使用機器學習來學習聯接和索引或管理多個儲存引擎的簡單系統。
  • 儀表盤:我們一直希望自動建立儀表盤,而不是透過手動和繁瑣的過程來從資料倉儲和報表工具中建立它們,而已!使用者體驗和表示方式也很重要:使用者淹沒在圖表和警報中。理想情況下,機器學習和AI可以浮現正確的圖表,趨勢和相關性。像Anodot和Sisu這樣的初創公司有一些早期的,部分的例子,但是我們預計在未來的幾年中會有很多進展。
  • 網站和移動應用程式:我們期望AI能夠帶來高度個性化的網站和應用程式。少數技術公司正在使用實時資料進行線上學習和 強化學習, 以提供高度個性化的使用者介面。我們希望這些工具和技術在不久的將來變得更容易使用。
  • UX和設計工具:用於建立和編輯數字媒體的工具中開始出現簡單的自動化和指令碼編寫。機器學習有可能將自動化提升到另一個層次。有使用深度學習和強化學習(RL)來幫助遊戲設計師的早期示例。設計是影片遊戲中昂貴且重要的部分。可以使用來自計算機視覺的新工具(例如GAN)來增強遊戲設計師的能力 。一個更復雜的示例是使用強化學習來訓練  遊戲中的非玩家角色


 

相關文章