人工智能正在改變軟件開發的模式
如今,很多軟件開發人員正在使用人工智能技術幫助編寫和審查代碼、檢測錯誤、測試軟件,并優化開發項目。這幫助企業更有效地部署新軟件,并使新一代開發人員更輕松地學習編程。
這是調研機構德勤公司最近發布的一份有關軟件開發采用人工智能技術的調查報告得出的結論。報告的作者David Schatsky和Sourabh Bumb描述了在過去的18個月中多家公司如何推出幾十個人工智能驅動的軟件開發工具。并且其市場正在增長。致力于軟件開發的人工智能初創企業在2019年獲得了7.04億美元的投資。
新工具可以幫助軟件開發人員減少工作量,在編寫軟件時檢測錯誤,并自動執行許多確認軟件質量的測試。在當今越來越依賴開放源代碼的時代,這一點很重要,因為開放源代碼可能會帶來一些錯誤。
盡管有些人擔心采用自動化技術可能會使編程人員失去工作,但調查報告的這兩位作者認為不太可能。
Schatsky說:“在很大程度上,這些人工智能工具是在幫助和增強人類的能力,而不是取代他們。這些工具有助于使編碼和軟件開發民主化,使一些編程新手能夠填補人才缺口,學習新技能。人工智能技術還可以進行代碼審查,并提供質量保證。”
調研機構Forrester公司在2018年進行的一項研究發現,從事軟件開發的企業中,37%的企業正在使用由人工智能驅動的編碼工具。Tara、DeepCode、Kite、Functionize和Deep TabNine等許多公司提供自動化編程服務,而在2020年這一比例將會更高。
成功應用似乎正在加快這一趨勢。Schatsky說:“除了節省成本和時間以外,許多采用這些人工智能工具的企業還改善了最終產品的質量。”
德勤公司的研究表明,人工智能可以幫助緩解軟件開發人才長期短缺的現象。去年,軟件質量不良使美國企業損失了3190億美元。人工智能的應用具有緩解這些挑戰的潛力。德勤公司的分析人員認為人工智能可以在軟件開發的許多階段提供幫助,其中包括:項目要求、編碼審查、錯誤檢測和解決,以及通過測試、部署和項目管理提供的更多幫助。
IBM工程師從Watson項目中學到的人工智能開發經驗
IBM公司的杰出工程師Bill Higgins是IBM Watson開發人工智能任務團隊負責人,有著20年的軟件開發工作經驗。他最近發表了一篇有關人工智能對軟件開發的影響的研究報告。
Higgins說,“企業需要放棄以往開發軟件的模式。如果開發人員難以適應,那么企業適應的難度將遠遠超出開發人員。事實證明,企業管理人員缺乏人工智能方面的經驗也是一種優勢。因為他必須經歷這一學習過程,因此對需要適應的開發人員有了更深刻的理解和同情。”
他表示,為了了解軟件開發中的人工智能,他研究了其他人如何應用人工智能(提出問題)以及使用人工智能優于其他替代方法(解決方案)的情況。這對于理解可能發生的情況并避免誤區很重要。
他說,自從在賓夕法尼亞州立大學獲得計算機科學學位以來,學習人工智能這一過程是他感到最緊張、最困難的一次學習經歷。他說:“讓我重新思考從經驗中改進軟件系統實在是太困難了,而軟件系統只做開發人員讓它們做的事情。”
IBM公司開發了一種概念模型來幫助開發人員思考基于人工智能的轉型,稱之為人工智能階梯(AI Ladder)。這個階梯有四個梯級:收集、組織、分析和注入。大多數企業擁有大量數據,這些數據通常是以孤立的IT工作或通過收購的形式組織起來的。例如一家企業可能有20個數據庫和3個數據倉庫,其中包含冗余和不一致的客戶信息。其他數據類型(如訂單、員工和產品信息)也是如此。Higgins說:“IBM公司使AI Ladder從概念上擺脫了困境。”
在注入階段,該公司致力于將訓練的機器學習模型集成到生產系統中,并設計反饋循環,以便可以從經驗中不斷改進模型。注入式人工智能的一個示例是Netflix推薦系統,該系統由復雜的機器學習模型提供支持。
IBM公司已確定API、預先構建的機器學習模型和可選工具的組合,以封裝、收集、組織和分析用于常見機器學習域的人工智能階梯(AI Ladder),例如自然語言理解、與虛擬代理的對話、視覺識別、語音和企業搜索等。
例如,Watson的自然語言理解變得豐富而復雜。機器學習現在擅長于理解語言的許多方面,其中包括概念、概念之間的關系以及情感內容。現在可以通過完善的API和支持的SDK,向開發人員提供基于機器學習的自然語言處理的NLU服務和研發工具。
Higgins 說:“因此,即使開發人員沒有進行數據科學或機器學習方面的培訓,他們現在也可以開始在應用程序中利用某些類型的人工智能。雖然這并沒有消除人工智能的學習曲線,但會使其變得更平緩。”