我們正在進(jìn)入特斯拉AI主管Andrej Karpathy所稱(chēng)的“軟件2.0”時(shí)代。在這個(gè)時(shí)代中,神經(jīng)網(wǎng)絡(luò)會(huì)編寫(xiě)代碼,人類(lèi)的主要工作是對(duì)任務(wù)進(jìn)行定義,收集數(shù)據(jù)和構(gòu)建用戶(hù)界面。
但并非所有任務(wù)都可以通過(guò)神經(jīng)網(wǎng)絡(luò)來(lái)解決,至少現(xiàn)在還不是這樣。傳統(tǒng)的軟件開(kāi)發(fā)仍然可以發(fā)揮作用。即便如此,人工智能、機(jī)器學(xué)習(xí)和高級(jí)分析正在改變著軟件的設(shè)計(jì)、編寫(xiě)、測(cè)試和部署方式。
測(cè)試
巴西的TOTVS公司正在為約10萬(wàn)名企業(yè)客戶(hù)提供行業(yè)關(guān)鍵任務(wù)軟件。例如,每天其金融服務(wù)解決方案會(huì)處理數(shù)萬(wàn)億美元的交易。
此類(lèi)應(yīng)用需要進(jìn)行能力測(cè)試。測(cè)試用例創(chuàng)建者需要非常慎重地考慮如何設(shè)計(jì)測(cè)試場(chǎng)景。每個(gè)測(cè)試場(chǎng)景的創(chuàng)建都需要花費(fèi)幾個(gè)小時(shí)。
TOTVS實(shí)驗(yàn)室執(zhí)行董事Vicente Goetten表示,跟上發(fā)展的步伐是一項(xiàng)重大挑戰(zhàn)。每個(gè)測(cè)試用例都必須針對(duì)用戶(hù)接口進(jìn)行定制。隨著應(yīng)用程序不斷被重新設(shè)計(jì),接口總是在變化。如果平臺(tái)本身發(fā)生了變化,例如升級(jí)到更新版本的JavaScript時(shí),所有設(shè)計(jì)元素都會(huì)發(fā)生變化。Goetten稱(chēng):“想象一下重新編寫(xiě)成千上萬(wàn)的用例是一種什么樣的場(chǎng)景。”
TOTVS為此不得不求助于人工智能。TOTVS用于測(cè)試的平臺(tái)Functionalize現(xiàn)在支持智能創(chuàng)建測(cè)試用例。該技術(shù)可以按照人類(lèi)識(shí)別輸入字段和按鈕的位置來(lái)查看屏幕,而不是依賴(lài)于底層代碼。它們還可以提供測(cè)試場(chǎng)景和樣本數(shù)據(jù)來(lái)為應(yīng)用程序加壓。
他說(shuō):“以前使用傳統(tǒng)解決方案時(shí),一名高級(jí)質(zhì)保人員需要花一天時(shí)間才能完成測(cè)試用例?,F(xiàn)在,他們可以在幾分鐘內(nèi)創(chuàng)建相同的測(cè)試用例。”
Gotten說(shuō),最新增加的能力是能夠理解通俗易懂的英語(yǔ)。“你可以告訴它們測(cè)試什么,隨后它們會(huì)自動(dòng)為你創(chuàng)建一個(gè)測(cè)試用例。這為我們打開(kāi)了一扇新的大門(mén)。大大降低了在編寫(xiě)測(cè)試用例時(shí)對(duì)高級(jí)質(zhì)保人員的需求。”
監(jiān)控和部署
就算軟件在質(zhì)保方面達(dá)到了預(yù)定目標(biāo),情況也總不能按預(yù)期的那樣工作。在線(xiàn)家居裝修零售商Build.com的高級(jí)技術(shù)總監(jiān)Patrick Berry說(shuō):“某天早上,我們已經(jīng)有了一些新的產(chǎn)品數(shù)據(jù),但是網(wǎng)站卻還沒(méi)有做好處理這些數(shù)據(jù)的準(zhǔn)備。”
Build.com監(jiān)控在軟件性能方面花了數(shù)百小時(shí)。當(dāng)問(wèn)題出現(xiàn)時(shí),公司會(huì)將軟件恢復(fù)到之前已知的良好狀態(tài),然后將其發(fā)送給開(kāi)發(fā)人員以解決出現(xiàn)的問(wèn)題。
Berry說(shuō):“我們面臨的問(wèn)題是,編寫(xiě)的軟件過(guò)于復(fù)雜,在流量規(guī)模方面,一個(gè)人甚至是一個(gè)團(tuán)隊(duì)都無(wú)法查看現(xiàn)有的所有監(jiān)控系統(tǒng),無(wú)法知道情況是好還是糟糕,亦或是現(xiàn)在應(yīng)該采取些什么措施。它們耗費(fèi)了我們太多的時(shí)間并拖慢了我們的速度,導(dǎo)致我們無(wú)法以足夠快的速度獲得客戶(hù)價(jià)值,同時(shí)我們也無(wú)法以足夠快的速度向開(kāi)發(fā)人員反饋需要補(bǔ)救的事情。”
為此,Build.com轉(zhuǎn)向了Harness。Harness為一個(gè)軟件交付即服務(wù)平臺(tái),其將性能監(jiān)控所花費(fèi)的時(shí)間幾乎壓縮到了零,并且將部署速度提高了20倍?,F(xiàn)在,如果出現(xiàn)問(wèn)題,系統(tǒng)將自動(dòng)恢復(fù)到先前的已知良好狀態(tài),并根據(jù)內(nèi)置的機(jī)器學(xué)習(xí)功能將問(wèn)題發(fā)送給相關(guān)人員以進(jìn)行補(bǔ)救。Build.com還考慮在代碼開(kāi)發(fā)過(guò)程中使用更多的人工智能。
他說(shuō):“我們實(shí)際上還沒(méi)有可用于代碼編寫(xiě)的自動(dòng)化工具。但是人工智能和機(jī)器學(xué)習(xí)可以在開(kāi)發(fā)方面提供幫助,它們實(shí)際上能夠理解哪些常見(jiàn)模式是好的,哪些是糟糕的。它們可以突出顯示異常情況,這樣我們可以回過(guò)頭來(lái)展開(kāi)修復(fù)工作。”
安全
Berry還希望看到更多工具使用人工智能,以幫助公司首先編寫(xiě)更好、更安全的代碼。
“這就是我們真正希望在開(kāi)發(fā)方面使用人工智能和機(jī)器學(xué)習(xí)的地方。這些領(lǐng)域并不是投入足夠的人才就能解決問(wèn)題的。比方說(shuō),你的代碼庫(kù)有數(shù)百萬(wàn)行代碼。你要投入多少人去審計(jì)這數(shù)百萬(wàn)行的代碼呢?我們需要能夠適應(yīng)這種規(guī)模的解決方案。”
例如,Build.com一直在使用GitHub作為其代碼存儲(chǔ)庫(kù)。Berry說(shuō):“他們正在引入一些系統(tǒng),這些系統(tǒng)將監(jiān)控你的代碼并對(duì)第三方庫(kù)中存在的潛在漏洞發(fā)出提醒。”
GitHub的機(jī)器學(xué)習(xí)工程師Omoju Miller表示,這是GitHub的一個(gè)活躍的開(kāi)發(fā)領(lǐng)域。“我們正致力于構(gòu)建支持常見(jiàn)漏洞的模型。”此外,GitHub還在近期發(fā)布了一款可以幫助開(kāi)發(fā)人員發(fā)現(xiàn)在代碼中的哪個(gè)地方意外共享令牌的工具。
發(fā)現(xiàn)
Miller透露,GlerHub還在致力于開(kāi)發(fā)一款工具,“它可以幫助開(kāi)發(fā)人員以自然方式發(fā)現(xiàn)一些功能”。通過(guò)人工智能,開(kāi)發(fā)人員可以根據(jù)自己的意圖搜索相關(guān)的功能。
她說(shuō):“通過(guò)在GitHub的開(kāi)源編碼平臺(tái)上使用大量公開(kāi)代碼,機(jī)器學(xué)習(xí)研究團(tuán)隊(duì)在實(shí)現(xiàn)這一目標(biāo)方面取得了重大進(jìn)展。通過(guò)語(yǔ)義代碼搜索,開(kāi)發(fā)人員可以增加和簡(jiǎn)化解決問(wèn)題的計(jì)算需求。”
這意味著開(kāi)發(fā)人員將不再受他們的知識(shí)限制。“他們可以利用存儲(chǔ)在GitHub上的所有代碼知識(shí)來(lái)幫助解決問(wèn)題。”
分析
Constellation Research的創(chuàng)始人兼首席分析師Ray Wang表示,靜態(tài)和動(dòng)態(tài)軟件分析工具都在使用人工智能技術(shù)。
“機(jī)器學(xué)習(xí)能力已經(jīng)比18個(gè)月前更強(qiáng)大了。我們看到神經(jīng)網(wǎng)絡(luò)已經(jīng)在開(kāi)始使用?,F(xiàn)在,靜態(tài)分析多于比動(dòng)態(tài)分析,但是我們?cè)谖磥?lái)幾年會(huì)看到由人工智能驅(qū)動(dòng)的動(dòng)態(tài)分析的興起。”
開(kāi)發(fā)代碼
在談到從頭開(kāi)始編寫(xiě)新代碼時(shí),Build.com的Berry指出。當(dāng)前的技術(shù)還有待改進(jìn)。
他表示:“現(xiàn)在出現(xiàn)了一些系統(tǒng),但是它們更像是內(nèi)置模板的剪切和粘貼。”
但這只是剛開(kāi)始發(fā)生變化。最受歡迎的IDE,微軟的Visual Studio,在4月份發(fā)布的最新版本中內(nèi)置了人工智能輔助代碼。微軟Visual Studio IntelliCode高級(jí)項(xiàng)目經(jīng)理Mark Wilson-Thomas表示,該功能基于對(duì)數(shù)千個(gè)開(kāi)源GitHub存儲(chǔ)庫(kù)的機(jī)器學(xué)習(xí)。
“我們正在讓開(kāi)源社區(qū)代碼具有智慧,”微軟Visual Studio和Visual Studio Code程序管理合作總監(jiān)Amanda Silver說(shuō)。她指出,這也有助于理解常用的使用類(lèi)別,“在處理不熟悉的代碼時(shí),這尤其有用。”
在最近對(duì)IntelliCode用戶(hù)進(jìn)行的一項(xiàng)調(diào)查顯示,超過(guò)70%的人表示,與傳統(tǒng)的IntelliSense相比,新的由人工智能驅(qū)動(dòng)的IntelliCode讓他們感覺(jué)更有效率。
使用這個(gè)工具的企業(yè)也可以為自己的員工創(chuàng)建自定義的私人模型。她說(shuō):“這使得IntelliCode能夠說(shuō)團(tuán)隊(duì)或企業(yè)的土話(huà),無(wú)需將源代碼傳送給微軟。”
Gartner分析師Svetlana Sicular表示,這種功能是微軟購(gòu)買(mǎi)GitHub的最初原因。
微軟在去年收購(gòu)的GitHub擁有超過(guò)1億個(gè)存儲(chǔ)庫(kù),其中2500萬(wàn)以上是開(kāi)源的。該平臺(tái)可免費(fèi)用于公共存儲(chǔ)庫(kù)以及小型私有項(xiàng)目。Sicular稱(chēng):“GitHub就是一個(gè)代碼存儲(chǔ)庫(kù)。我認(rèn)為微軟將會(huì)用它們生成新的代碼。”
智能應(yīng)用開(kāi)發(fā)平臺(tái)
Build.com的Berry也在密切關(guān)注低代碼和無(wú)代碼的發(fā)展。他說(shuō):“這不是什么新東西。開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中正在將系統(tǒng)整合在一起。”
這使得人工智能系統(tǒng)部署變得更加便捷。“例如,針對(duì)推薦引擎的預(yù)裝解決方案讓過(guò)去棘手的定制解決方案變得很容易。”
現(xiàn)在,這種低代碼方法正變得更加智能,公司不用再浪費(fèi)時(shí)間建立商品系統(tǒng)。“這讓我們有時(shí)間進(jìn)行真正的創(chuàng)新。這些領(lǐng)域正在為我們提供可繼續(xù)發(fā)展的東西,讓我們感到非常興奮。”
以Mendix為例,該公司花了十年多的時(shí)間研發(fā)出了一套用于創(chuàng)建應(yīng)用程序的模塊系統(tǒng)。開(kāi)發(fā)人員可以將平臺(tái)上能夠使用的功能選項(xiàng)集中在一起,當(dāng)這些功能不夠時(shí),他們可以為缺失部分鏈接外部代碼。如今該公司已經(jīng)建立了一套深度學(xué)習(xí)系統(tǒng)來(lái)分析這些模型,查看它們?cè)谏a(chǎn)中的行為,看看哪些是最成功的,然后根據(jù)這些模型識(shí)別相關(guān)的模式。
Deloitte Cyber的應(yīng)用安全負(fù)責(zé)人Vikram Kunchala稱(chēng),IT部門(mén)對(duì)于使用這些平臺(tái)目前還存在抵觸情緒,與此同時(shí)業(yè)務(wù)部門(mén)對(duì)此也缺乏信心。
“企業(yè)正在小規(guī)模地進(jìn)行試驗(yàn),不過(guò)我還沒(méi)有看到任何客戶(hù)在以企業(yè)標(biāo)準(zhǔn)進(jìn)行部署它們。”
軟件2.0
但最大的變化是應(yīng)用程序?qū)⑴c傳統(tǒng)代碼沒(méi)有任何聯(lián)系。
比如說(shuō),你想創(chuàng)建一個(gè)玩“井字棋”的應(yīng)用程序,就可以根據(jù)規(guī)則和游戲策略來(lái)編寫(xiě)程序。一方這么走一步,另一方就那么應(yīng)一步。開(kāi)發(fā)人員的工作只是選擇正確的策略并創(chuàng)建有吸引力的用戶(hù)界面而已。
如果目標(biāo)是要擊敗人類(lèi)玩家,這種策略也適用于井字棋、跳棋、甚至國(guó)際象棋。但是對(duì)于難度更大的游戲,比如圍棋,要?jiǎng)?chuàng)建一套規(guī)則就非常困難。但如果采用人工智能技術(shù),如深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò),情況就不一樣了。
開(kāi)發(fā)人員不再?gòu)囊?guī)則著手,而是從數(shù)據(jù)開(kāi)始,即大量的對(duì)弈數(shù)據(jù)。通過(guò)AlphaGo,Google在數(shù)千次人類(lèi)游戲中訓(xùn)練了該系統(tǒng)。在最新版本的AlphaGo Zero中,訓(xùn)練數(shù)據(jù)是系統(tǒng)對(duì)抗自己,隨機(jī)開(kāi)始。
只要培訓(xùn)數(shù)據(jù)清晰且充分,并且成功或失敗的標(biāo)準(zhǔn)也很明確,那么這種方法就有可能徹底顛覆軟件開(kāi)發(fā)工作。開(kāi)發(fā)人員現(xiàn)在就必須要致力于管理培訓(xùn)數(shù)據(jù)和成功標(biāo)準(zhǔn),將實(shí)際編碼工作留給系統(tǒng),而不是試圖弄清楚并編寫(xiě)游戲規(guī)則。
特斯拉的AI主管Andrej Karpathy稱(chēng),這也正是特斯拉在自動(dòng)駕駛汽車(chē)中采用的方法。
他在去年的技術(shù)會(huì)議主題演講中指出,“這是一種全新的軟件設(shè)計(jì)方式?,F(xiàn)在,我們不是編寫(xiě)代碼,而是積累和整理數(shù)據(jù)集,這些數(shù)據(jù)集實(shí)際上就是代碼。”
例如,特斯拉的擋風(fēng)玻璃刮水器在汽車(chē)開(kāi)過(guò)隧道時(shí)很難知道何時(shí)開(kāi)啟和關(guān)閉。在傳統(tǒng)的軟件開(kāi)發(fā)中,程序員會(huì)查看代碼以找出錯(cuò)誤邏輯的位置。使用軟件2.0后,開(kāi)發(fā)人員只需要查看這些數(shù)據(jù)。
在這種情況下,關(guān)于駕車(chē)穿越隧道并沒(méi)有足夠的訓(xùn)練數(shù)據(jù)可用。特斯拉必須要走出去,以獲得更多數(shù)據(jù),注釋這些數(shù)據(jù),然后將其添加到訓(xùn)練數(shù)據(jù)集中,并重新運(yùn)行深度學(xué)習(xí)算法。
他補(bǔ)充道,傳統(tǒng)的開(kāi)發(fā)仍有發(fā)展空間。目前,這些系統(tǒng)的用戶(hù)界面以及與其他平臺(tái)的集成仍然是手動(dòng)構(gòu)建的。
隨著越來(lái)越多的企業(yè)將人工智能用于那些有著大量可用數(shù)據(jù)的應(yīng)用程序和使用低代碼平臺(tái)的應(yīng)用程序,軟件開(kāi)發(fā)工作在不久的將來(lái)將會(huì)發(fā)生巨大變化。
作者:Maria Korolov二十多年來(lái)一直長(zhǎng)期關(guān)注新興科技和新興市場(chǎng)。
編譯:陳琳華
原文網(wǎng)址:https://www.cio.com/article/3393180/ai-is-poised-to-radically-transform-software-development.html