新工具和尖端項(xiàng)目展示了機(jī)器學(xué)習(xí)和高級(jí)分析將如何徹底改變軟件的設(shè)計(jì),測(cè)試和部署方式。人工智能、機(jī)器學(xué)習(xí)和高級(jí)分析正在改變軟件的設(shè)計(jì)、編寫、測(cè)試和部署方式。
新工具和尖端項(xiàng)目展示了機(jī)器學(xué)習(xí)和高級(jí)分析將如何徹底改變軟件的設(shè)計(jì),測(cè)試和部署方式。
我們正在進(jìn)入特斯拉人工智能主管Andrej Karpathy所謂的“軟件2.0”的時(shí)代,在這個(gè)時(shí)代里,神經(jīng)網(wǎng)絡(luò)會(huì)編寫代碼,而人們的主要工作是定義任務(wù),收集數(shù)據(jù)和創(chuàng)建用戶界面。
但并非所有任務(wù)都可以通過神經(jīng)網(wǎng)絡(luò)來解決(至少現(xiàn)在還不行),而傳統(tǒng)的軟件開發(fā)仍然可以發(fā)揮作用。然而,即便如此,人工智能、機(jī)器學(xué)習(xí)和高級(jí)分析正在改變軟件的設(shè)計(jì)、編寫、測(cè)試和部署方式。
測(cè)試
總部位于巴西的TOTVS為大約100,000名企業(yè)客戶提供關(guān)鍵的行業(yè)軟件。例如,其金融服務(wù)解決方案每天處理數(shù)萬億美元的交易。
此類應(yīng)用需要得到強(qiáng)有力的測(cè)試。創(chuàng)建測(cè)試用例的人必須非常慎重地考慮如何設(shè)計(jì)測(cè)試場(chǎng)景,每個(gè)測(cè)試場(chǎng)景都要花幾個(gè)小時(shí)來創(chuàng)建。
TOTVS實(shí)驗(yàn)室的執(zhí)行董事Vicente Goetten表示,要跟上步伐并不容易。每個(gè)測(cè)試用例都必須定制化,以適合用戶界面。應(yīng)用程序不斷得到重新設(shè)計(jì),因此界面也總是在變化。如果平臺(tái)本身發(fā)生了變化(例如更新到更新版本的JavaScript時(shí)),所有設(shè)計(jì)元素都會(huì)立即發(fā)生變化。
Goetten說:“不妨想象一下重寫成千上萬用例的情景。”
因此TOTVS向人工智能求助。TOTVS使用Functionalize這個(gè)測(cè)試平臺(tái),該平臺(tái)現(xiàn)在支持測(cè)試用例的智能創(chuàng)建。該技術(shù)可以像人一樣查看屏幕,從而能識(shí)別輸入字段和按鈕的位置,而不是依賴于底層代碼。它還可以提供測(cè)試場(chǎng)景和樣本數(shù)據(jù)來對(duì)應(yīng)用程序進(jìn)行壓力測(cè)試。
Goetten說:“以前,高級(jí)質(zhì)量保證人員需要花一天的時(shí)間來完成我們所使用的傳統(tǒng)解決方案中的測(cè)試用例,現(xiàn)在,他們可以在幾分鐘內(nèi)創(chuàng)建相同的測(cè)試用例。”
Gotten說,還有就是,F(xiàn)unctionalize能理解平直的語言。
他說:“你可以命令它測(cè)試要測(cè)試的東西,它會(huì)自動(dòng)為你創(chuàng)建一個(gè)測(cè)試用例。這為我們指明了新的方向。我們不再需要那么多高級(jí)質(zhì)量確認(rèn)人員來測(cè)試用例。”
監(jiān)控和部署
即使軟件通過了質(zhì)量確認(rèn),它也并不總是按預(yù)期發(fā)揮效用。“就在今天早上,我們獲得了一些已經(jīng)得到采用的產(chǎn)品數(shù)據(jù),而網(wǎng)站尚不能處理這些數(shù)據(jù)”,在線家居裝修零售商Build.com的高級(jí)技術(shù)總監(jiān)Patrick Berry如是說。
我們花了數(shù)百小時(shí)來監(jiān)控Build.com軟件的性能,當(dāng)問題出現(xiàn)時(shí),公司將軟件恢復(fù)到之前已知的良好狀態(tài),并將其發(fā)送給開發(fā)人員以解決問題。
Berry說:“我們面臨的問題是,我們編寫的軟件變得非常復(fù)雜,流量太大,大到任何人都無法查看現(xiàn)有的所有監(jiān)控系統(tǒng),哪怕是一群人也做不到,他們會(huì)說,‘一切都很好’或‘一切都很糟糕,該做點(diǎn)事情了’,軟件耗費(fèi)了太多時(shí)間并放慢了發(fā)布速度。我們無法以足夠快的速度為客戶創(chuàng)造價(jià)值,我們也沒有以足夠快的速度向開發(fā)人員反饋必須得到補(bǔ)救的事情。”
因此,Build.com向Harness求助,這是一個(gè)軟件交付即服務(wù)(software-delivery-as-a-service)平臺(tái),該平臺(tái)將性能監(jiān)控所需的時(shí)間幾乎降為零,將部署速度提升了20倍,Berry如是說?,F(xiàn)在,如果有問題出現(xiàn),系統(tǒng)將自動(dòng)恢復(fù)到先前的已知良好狀態(tài),并根據(jù)內(nèi)置的機(jī)器學(xué)習(xí)功能將問題發(fā)送出去以進(jìn)行補(bǔ)救。Build.com也正在考慮大舉使用人工智能,以此作為代碼開發(fā)過程的一部分。
Berry說:“我們實(shí)際上還沒有能寫代碼的代碼,但人工智能和機(jī)器學(xué)習(xí)在開發(fā)方面大有裨益,這實(shí)際上關(guān)系到我們是否理解常見模式的好壞利弊。它可以突顯這是一個(gè)異常現(xiàn)象,我們可以回過頭來對(duì)其進(jìn)行修復(fù)。”
安全性
Berry還希望有更多能利用人工智能的工具相繼問世,從而一開始就能幫各大公司編寫更好更安全的代碼。
Berry說:“這就是我們真心希望在開發(fā)方面使用人工智能和機(jī)器學(xué)習(xí)的領(lǐng)域——加強(qiáng)這些領(lǐng)域,這些領(lǐng)域人手不足,無法解決問題,比方說,你的代碼庫(kù)有數(shù)百萬行代碼。你要用多少人來審計(jì)這數(shù)百萬行代碼?我們需要的是可擴(kuò)展的解決方案。”
例如,Build.com使用GitHub來存儲(chǔ)代碼。Berry說:“他們正在引入某些系統(tǒng),這些系統(tǒng)將監(jiān)控你的代碼并向你發(fā)出提醒,讓你知道我們使用的第三方庫(kù)中可能存在的漏洞。”
GitHub的機(jī)器學(xué)習(xí)工程師Omoju Miller說,這是GitHub的一個(gè)活躍的開發(fā)領(lǐng)域。Berry說:“我們正致力于創(chuàng)建各種模型,這些模型能為常見漏洞和暴露發(fā)現(xiàn)(exposures discovery)提供支持。”
Berry說,GitHub剛剛發(fā)布了一個(gè)工具,這個(gè)工具可以幫開發(fā)人員發(fā)現(xiàn)他們?cè)诖a中意外共享令牌的位置。
發(fā)現(xiàn)
Miller說,GitHub還致力于開發(fā)“幫開發(fā)人員以自然方式發(fā)現(xiàn)功能的工具”,有了人工智能,開發(fā)人員就可以根據(jù)自己的意圖搜尋各種功能。
Miller說:“由于在GitHub的開源編碼平臺(tái)上使用大量公開代碼,機(jī)器學(xué)習(xí)研究團(tuán)隊(duì)在實(shí)現(xiàn)這一目標(biāo)方面取得了重大進(jìn)展。有了語義代碼搜索的功能,開發(fā)人員就可以增加和簡(jiǎn)化計(jì)算方面解決問題的需求。”
Miller說,這就是說,開發(fā)人員將不再受自身認(rèn)知的限制,“他們可以利用存儲(chǔ)在GitHub上的所有代碼知識(shí)來幫忙解決問題。”
分析
Constellation Research的首席分析師兼創(chuàng)始人Ray Wang表示,人工智能技術(shù)也出現(xiàn)在靜態(tài)和動(dòng)態(tài)軟件分析工具中。
Wang說:“機(jī)器學(xué)習(xí)的功能已經(jīng)很豐富了,比18個(gè)月前更加豐富。神經(jīng)網(wǎng)絡(luò)漸漸得到了應(yīng)用。如今,與其說這是靜態(tài)分析,不如說是動(dòng)態(tài)分析,但由人工智能驅(qū)動(dòng)的動(dòng)態(tài)分析將在未來幾年出現(xiàn)。”
開發(fā)代碼
然而,就從頭開始編寫新代碼而言,當(dāng)前的技術(shù)還有待改進(jìn),Build.com的Berry如是說。
Berry說:“現(xiàn)在我們可以使用一些現(xiàn)成的系統(tǒng),如你的集成開發(fā)環(huán)境,但這更像內(nèi)置模板剪切粘貼得來的。”
但情況開始發(fā)生變化。最受歡迎的集成開發(fā)環(huán)境(微軟的Visual Studio)在4月發(fā)布的最新版本中內(nèi)置了人工智能代碼自動(dòng)完成功能。微軟Visual Studio IntelliCode的高級(jí)項(xiàng)目經(jīng)理Mark Wilson-Thomas表示,該功能基于數(shù)千個(gè)開源的GitHub存儲(chǔ)庫(kù)提供的機(jī)器學(xué)習(xí)。
“我們吸取了開源社區(qū)代碼的智慧結(jié)晶”,微軟Visual Studio和Visual Studio Code程序管理合作總監(jiān)Amanda Silver如是說。
Silver補(bǔ)充說,這也有助于他們理解常用類的使用方式,“在處理不熟悉的代碼時(shí),這尤其有用。”
最近對(duì)IntelliCode用戶進(jìn)行的一項(xiàng)調(diào)查發(fā)現(xiàn),超過70%的人表示,與經(jīng)典的IntelliSense相比,使用新的由人工智能驅(qū)動(dòng)的IntelliCode使他們覺得有更高的效率,Silver如是說。
Silver說,使用這個(gè)工具的企業(yè)也可以為自己的員工創(chuàng)建自定義的私有模型。
Silver說:“這使IntelliCode與你的團(tuán)隊(duì)或組織有共同的代碼語言,你無需將源代碼發(fā)給微軟。”
Gartner的分析師Svetlana Sicular表示,這種功能是微軟購(gòu)買GitHub的首要原因。
GitHub擁有1億多個(gè)存儲(chǔ)庫(kù)(其中有2500多萬個(gè)存儲(chǔ)庫(kù)是開源的),微軟于去年收購(gòu)了GitHub。該平臺(tái)對(duì)公共存儲(chǔ)庫(kù)和小型的私有項(xiàng)目免費(fèi)開放。
Sicular說:“GitHub是一個(gè)代碼存儲(chǔ)庫(kù)。在我看來,微軟將使用它來生成新的代碼。”
智能應(yīng)用程序開發(fā)平臺(tái)
Build.com的Berry也在密切關(guān)注低代碼和無代碼領(lǐng)域里發(fā)生的事情。
Berry說:“這根本談不上是新鮮事兒,只要有開發(fā),開發(fā)人員就已經(jīng)將系統(tǒng)整合在一起了。”
Berry說,最近,人工智能系統(tǒng)的部署因此而變得更輕松快捷。他說:“例如,用于推薦引擎的固有解決方案將過去很難實(shí)施的解決方案和定制的解決方案商品化。”
現(xiàn)在,這種低代碼方法變得更加智能,使公司不再浪費(fèi)時(shí)間創(chuàng)建商品系統(tǒng),Berry如是說。他說:“我們因此有機(jī)會(huì)提出全新的,真正的創(chuàng)新,這就是這種方法的意義所在。我對(duì)這些領(lǐng)域在未來所能做出的貢獻(xiàn)感到非常興奮。”
以Mendix為例,該公司在長(zhǎng)達(dá)十年的時(shí)間里一直提供積木式的系統(tǒng),這些系統(tǒng)可以用來創(chuàng)建各種應(yīng)用程序。開發(fā)人員將平臺(tái)上各種可用的功能集中在一起,當(dāng)這些功能不夠用時(shí),他們就使用外部代碼。如今,該公司創(chuàng)建了一個(gè)深度學(xué)習(xí)系統(tǒng)來分析這些模型,考察這些模型在生產(chǎn)中的表現(xiàn),看看哪些模型是最管用并據(jù)此來識(shí)別各種模式。
Deloitte Cyber的應(yīng)用程序安全負(fù)責(zé)人Vikram Kunchala說,IT部門依然十分抗拒這些平臺(tái),而業(yè)務(wù)方又缺乏信心。
Kunchala說:“此刻,對(duì)平臺(tái)的采用似乎更像是好奇心使然。企業(yè)正在一點(diǎn)點(diǎn)進(jìn)行對(duì)這些平臺(tái)進(jìn)行試驗(yàn)。又或者是他們不得不盡快落實(shí)——我們已經(jīng)見過這種情況了。但我沒有看到哪個(gè)客戶將其視作我所了解的企業(yè)標(biāo)準(zhǔn)。”
軟件2.0
但最大的變化是,企業(yè)開始使用與傳統(tǒng)代碼毫無聯(lián)系的應(yīng)用程序。
比如說,你想創(chuàng)建一個(gè)玩三子棋(Tic-Tac-Toe)的應(yīng)用程序。你可以編寫規(guī)則和游戲策略。對(duì)手怎么做,你就怎么做。開發(fā)人員的工作是選擇正確的策略并創(chuàng)建驚艷的用戶界面。
如果以擊敗人類棋手為目的,那么這種策略適用于三子棋、跳棋、甚至是國(guó)際象棋。但是對(duì)于圍棋等更高難度的棋類競(jìng)技,創(chuàng)建規(guī)則并不容易。這時(shí)深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)等人工智能技術(shù)就登臺(tái)亮相了,這些技術(shù)徹底改變了軟件開發(fā)流程。
開發(fā)人員不是從制定規(guī)則開始,而是從收集數(shù)據(jù)開始——大量的棋類競(jìng)技。谷歌根據(jù)人類棋手下的大量棋局來訓(xùn)練系統(tǒng)。由于有了最新的AlphaGo Zero,訓(xùn)練數(shù)據(jù)來自系統(tǒng)與自身對(duì)弈的棋局,始于隨機(jī)下子。
只要培訓(xùn)數(shù)據(jù)清晰且充分,而且評(píng)估其好壞的標(biāo)準(zhǔn)也十分明確,那么這種方法就有可能徹底改變軟件開發(fā)。如今,開發(fā)人員必須努力管理培訓(xùn)數(shù)據(jù)和評(píng)估標(biāo)準(zhǔn)并讓系統(tǒng)來編寫代碼,而不是弄懂對(duì)弈規(guī)則并編寫對(duì)弈規(guī)則。
特斯拉的人工智能主管Andrej Karpathy表示,這正是特斯拉對(duì)自動(dòng)駕駛汽車所采用的方法。
Karpathy在去年的技術(shù)會(huì)議主題演講中說道:“這是一種全新的軟件設(shè)計(jì)方式。如今,我們不是毫不隱諱地編寫代碼,而是積累和優(yōu)化數(shù)據(jù)集,而這些數(shù)據(jù)集實(shí)際上就是代碼。”
例如,因此,特斯拉駛經(jīng)隧道時(shí)很難判斷要不要啟動(dòng)雨刮器。在傳統(tǒng)的軟件開發(fā)中,程序員會(huì)查看代碼,從而發(fā)現(xiàn)邏輯錯(cuò)誤出在哪里。由于有了Software 2.0,開發(fā)人員只要查看數(shù)據(jù)就可以了。
例如,在這種特殊情況下,穿越隧道的車輛缺乏訓(xùn)練數(shù)據(jù)。特斯拉必須上路實(shí)測(cè),獲得更多數(shù)據(jù),對(duì)這些數(shù)據(jù)進(jìn)行注釋,將其添加到訓(xùn)練數(shù)據(jù)集并重新運(yùn)行深度學(xué)習(xí)算法。
Karpathy說:“我們通過這種方法使所有問題看起來都一個(gè)樣子。”
Karpathy補(bǔ)充說,傳統(tǒng)的發(fā)展仍有生存空間。目前,這些系統(tǒng)的用戶界面是手動(dòng)創(chuàng)建的,與其他平臺(tái)的集成也仍然是手動(dòng)完成的。
但隨著越來越多的公司向人工智能求助,用于那些有大量可用數(shù)據(jù)和其他低代碼平臺(tái)的應(yīng)用程序,那么軟件開發(fā)的工作將在不久的將來發(fā)生巨大變化。