上個(gè)世紀(jì)90年代,當(dāng)人們提起軟件編程時(shí),通常意味著選擇一個(gè)編輯器,將代碼檢入CVS或SVN代碼庫(kù),然后將代碼編譯成可執(zhí)行文件。與之對(duì)應(yīng)的Eclipse和Visual Studio等集成開(kāi)發(fā)環(huán)境(IDE)可以將編程、開(kāi)發(fā)、文檔、構(gòu)建、測(cè)試、部署等步驟納入到一個(gè)完整的軟件開(kāi)發(fā)生命周期(SDLC)中,從而提高了開(kāi)發(fā)人員的工作效率。
近年來(lái),流行的云計(jì)算和DevSecOps自動(dòng)化工具提升了開(kāi)發(fā)者的綜合能力,使得更多的企業(yè)能夠更加輕松地開(kāi)發(fā)、部署和維護(hù)軟件應(yīng)用。
如今,生成式AI作為下一代開(kāi)發(fā)范式轉(zhuǎn)變的催化劑,有望改變企業(yè)創(chuàng)建和維護(hù)軟件的方式,并帶來(lái)新的開(kāi)發(fā)工具和范式。對(duì)此,許多開(kāi)發(fā)人員開(kāi)始疑惑,AI是否會(huì)讓我們所熟知的編程技能走向消亡。同時(shí),各個(gè)企業(yè)的IT領(lǐng)導(dǎo)也在考慮:在未來(lái)十年中,AI將如何影響SDLC和DevSecOps的發(fā)展。帶著這兩個(gè)問(wèn)題,我將和您在下文中一同尋找答案。
生成式AI是一種新工具,還是一種新的開(kāi)發(fā)方式?
Pulumi的首席執(zhí)行官Joe Duffy認(rèn)為:“AI將會(huì)增強(qiáng)編程的自動(dòng)化,大幅提升企業(yè)的生產(chǎn)力和產(chǎn)出,從而提高人類(lèi)操作的抽象水平,而不會(huì)真正取代編程。”Thomvest Ventures的負(fù)責(zé)人Ashish Kakran則認(rèn)為:“生成式AI正在顛覆軟件交付的生命周期。”開(kāi)發(fā)和DevOps團(tuán)隊(duì)將變得更具生產(chǎn)力。
同時(shí),隨著生成式AI功能的不斷完善,開(kāi)發(fā)人員的職責(zé)會(huì)隨之調(diào)整。Matillion公司的首席技術(shù)官Ed Thompson認(rèn)為:“Copilots的當(dāng)前形式,實(shí)際上是在提高開(kāi)發(fā)人員的工作效率,消除他們過(guò)往的繁忙狀態(tài)。那些認(rèn)為Copilots已經(jīng)從根本上改變了編程江湖的人,是錯(cuò)誤地假設(shè)了開(kāi)發(fā)人員的工作只是編寫(xiě)代碼,而不是解決現(xiàn)實(shí)問(wèn)題。”那么,生成式AI到底在會(huì)怎樣改變軟件開(kāi)發(fā)江湖呢?
1.根據(jù)自然語(yǔ)言提示生成標(biāo)準(zhǔn)的代碼
Astronomer的Airflow工程總監(jiān)Kaxil Naik認(rèn)為:“通過(guò)AI生成的代碼模板、以及AI輔助的Copilot將自然語(yǔ)言翻譯成功能性代碼,簡(jiǎn)化了對(duì)復(fù)雜代碼庫(kù)的理解,并確保了遵守開(kāi)發(fā)最佳實(shí)踐,從而將讓編程工作變得更加高效。”
StackOverflow的2023年開(kāi)發(fā)者調(diào)查顯示,有70%的開(kāi)發(fā)者正在或計(jì)劃在開(kāi)發(fā)過(guò)程中使用AI工具。而在那些已經(jīng)使用AI進(jìn)行開(kāi)發(fā)的人群中,有超過(guò)82%的使用了AI來(lái)編寫(xiě)軟件代碼。這些數(shù)字足以表明,開(kāi)發(fā)人員傳統(tǒng)的編寫(xiě)代碼、重用現(xiàn)有代碼、以及構(gòu)建組件的方式,正在發(fā)生模式上的轉(zhuǎn)變。
2.代碼驗(yàn)證是開(kāi)發(fā)人員的重要職責(zé)
除了讓編程變得更加簡(jiǎn)單和高效,開(kāi)發(fā)人員需要的擔(dān)負(fù)著重要責(zé)任是,花費(fèi)大量的時(shí)間、以及使用高效的工具,來(lái)驗(yàn)證代碼,避免生成的代碼存在安全問(wèn)題、或有性能缺陷。
Sonar的開(kāi)發(fā)者關(guān)系部主管Peter McKee認(rèn)為:“隨著開(kāi)發(fā)人員更多地采用AI來(lái)提高生產(chǎn)力,他們有責(zé)任對(duì)AI生成的內(nèi)容進(jìn)行全面檢查。”通常,邊編程邊清理,可以確保在交付過(guò)程中執(zhí)行持續(xù)的檢查和監(jiān)控。據(jù)此,開(kāi)發(fā)人員可以將更多時(shí)間花在新的任務(wù)上,而無(wú)需修復(fù)那些人工創(chuàng)建的、或由AI生成的代碼里潛在的錯(cuò)誤與漏洞。McKee補(bǔ)充說(shuō):“如果開(kāi)發(fā)人員未能通過(guò)自動(dòng)化來(lái)掃描和監(jiān)控AI生成的代碼,那就意味著后續(xù)需要修復(fù)的代碼和技術(shù)債會(huì)成倍增加。
3.成為大企業(yè)新的開(kāi)發(fā)模式
使用生成式AI工具開(kāi)發(fā)代碼,可能會(huì)如何影響各個(gè)開(kāi)發(fā)團(tuán)隊(duì)在大型企業(yè)中,支持?jǐn)?shù)千種應(yīng)用工具和標(biāo)準(zhǔn)。如果開(kāi)發(fā)人員只需編寫(xiě)較少的代碼,并更多地與由生成式AI開(kāi)發(fā)的代碼相集成,那么大型企業(yè)的開(kāi)發(fā)工作會(huì)成什么樣子?
Red Hat開(kāi)發(fā)工具與戰(zhàn)略推廣部的Markus Eisele認(rèn)為:“不同團(tuán)隊(duì)的不同工具組合,會(huì)導(dǎo)致缺乏標(biāo)準(zhǔn)化和統(tǒng)一的開(kāi)發(fā)實(shí)踐,更不用說(shuō)由此增加的開(kāi)發(fā)人員的認(rèn)知差異。”而由AI構(gòu)建的集中式開(kāi)發(fā)門(mén)戶(hù),能夠方便開(kāi)發(fā)團(tuán)隊(duì)的輕松訪問(wèn),并通過(guò)消除協(xié)同過(guò)程中的摩擦,來(lái)成就跨團(tuán)隊(duì)?wèi)?yīng)用的最佳實(shí)踐。這就意味著集成開(kāi)發(fā)環(huán)境可能會(huì)蛻變?yōu)檠b配平臺(tái),類(lèi)似于制造業(yè)中的計(jì)算機(jī)輔助設(shè)計(jì)(CAD)或建筑業(yè)中的建筑信息建模(BIM)。其重點(diǎn)將從構(gòu)建定制組件轉(zhuǎn)移為組裝已有組件,以及利用內(nèi)置工具來(lái)驗(yàn)證設(shè)計(jì)。
4.編程量的減少,代碼供應(yīng)鏈風(fēng)險(xiǎn)的增加
使用生成式AI開(kāi)發(fā)的代碼的另一個(gè)影響,是涉及到企業(yè)領(lǐng)導(dǎo)者將如何制定相關(guān)政策,以及如何監(jiān)控企業(yè)應(yīng)用中嵌入了哪些供應(yīng)鏈的代碼。一直以來(lái),企業(yè)需要持續(xù)跟蹤的是開(kāi)源和商業(yè)軟件組件。將來(lái),它們需要增加生成式AI的輸出這一新的層面。
Sonatype的現(xiàn)場(chǎng)首席技術(shù)官I(mǎi)lkka Turunen認(rèn)為:“開(kāi)發(fā)人員需要在維護(hù)和管理AI供應(yīng)鏈方面發(fā)揮重要作用。他們將會(huì)在企業(yè)的日常運(yùn)營(yíng)中,對(duì)AI模型的安全性、真實(shí)性和來(lái)源予以更嚴(yán)格的審查。通過(guò)實(shí)施AI風(fēng)險(xiǎn)評(píng)估,并妥善管理AI模型物料清單,企業(yè)應(yīng)確保開(kāi)發(fā)基礎(chǔ)架構(gòu)擁有適當(dāng)?shù)腁I安全和管理。”
在實(shí)踐中,SAST、DAST、以及其他安全與代碼管理工具,能夠提高代碼掃描的自動(dòng)化能力,并且可以在開(kāi)發(fā)人員將代碼集成到企業(yè)資源庫(kù)之前,協(xié)助驗(yàn)證生成式AI的產(chǎn)出代碼是否符合安全策略。
5.新模式加速整合
在過(guò)去十年中,通過(guò)應(yīng)用程序接口(API)、IFTTT的SaaS集成平臺(tái)、集成平臺(tái)即服務(wù)(iPaaS)、以及其他生態(tài)系統(tǒng)技術(shù),開(kāi)發(fā)人員的代碼集成能力有了數(shù)量級(jí)的提升。盡管如此,開(kāi)發(fā)人員仍然需要做大量的基礎(chǔ)性工作,來(lái)映射數(shù)據(jù)字段、編程邏輯轉(zhuǎn)換、以確??煽啃耘c性能。而利用生成式AI,開(kāi)發(fā)人員可以構(gòu)建出具備自然語(yǔ)言需求、可視化流程的無(wú)代碼集成。
供職于SAP AI與創(chuàng)新團(tuán)隊(duì)的Emmanuel Cassimatis認(rèn)為:“過(guò)去,從設(shè)計(jì)、構(gòu)建、測(cè)試、集成、部署、交付到審查,整個(gè)開(kāi)發(fā)生命周期中的不同步驟向來(lái)是分散的。而AI則可以從不同應(yīng)用的數(shù)據(jù)中挖掘并實(shí)現(xiàn)一個(gè)統(tǒng)一的集成層面,從而加強(qiáng)開(kāi)發(fā)人員之間的協(xié)作。”
6.開(kāi)發(fā)人員將成為AI代理的管理者
Honeycomb的首席產(chǎn)品經(jīng)理Phillip Carter認(rèn)為,生成式AI將改變開(kāi)發(fā)人員和質(zhì)量保證(QA)工程師未來(lái)的工作任務(wù)。“將來(lái),自然語(yǔ)言很可能會(huì)指導(dǎo)更多的代碼生成和驗(yàn)證生成代碼的測(cè)試。其中,AI代理將完成大部分工作,而開(kāi)發(fā)人員則需要為這些代理設(shè)定需要遵循的編程目標(biāo)和約束條件。”
Carter繼續(xù)大膽地預(yù)測(cè):“AI代理能夠通過(guò)分析程序運(yùn)行時(shí)的行為,檢查未知的因素,以執(zhí)行過(guò)去開(kāi)發(fā)人員難以企及的QA、可觀察性和安全任務(wù)。”據(jù)此,開(kāi)發(fā)人員可以高屋建瓴地從上層定義系統(tǒng)架構(gòu)、非功能性、以及操作要求,從而指導(dǎo)生成式AI進(jìn)行代碼開(kāi)發(fā)和自動(dòng)測(cè)試,而非親歷親為。
7.AI被引入SDLC的多個(gè)階段
雖然目前Copilots和許多生成式AI工具主要側(cè)重于編程,但是其新的功能也會(huì)改變SDLC中的其他階段。Gigster的首席解決方案工程師Humberto Moreira認(rèn)為:“隨著生成式AI被納入SDLC,不同的模型會(huì)有其最為適合的特定周期階段。例如,A模型可能會(huì)針對(duì)需求進(jìn)行優(yōu)化;B模型則是針對(duì)代碼開(kāi)發(fā),而C模型卻針對(duì)的是QA。”
實(shí)際上,由于各類(lèi)工具提供了更為強(qiáng)大的測(cè)試用例,并且能夠?qū)Υa的更改提供更快的反饋,因此生成式AI模式的轉(zhuǎn)變已經(jīng)對(duì)QA產(chǎn)生了一定的影響。Descope的聯(lián)合創(chuàng)始人Gilad Shriki說(shuō):“隨著AI的崛起,從SDK到測(cè)試、再到文檔,所有圍繞著軟件工程的方方面面都會(huì)得到生成式AI的輔助。開(kāi)發(fā)人員甚至需要以特定的AI使用格式,來(lái)記錄他們的工作。”
8.生成式AI細(xì)分開(kāi)發(fā)角色
生成式AI在軟件開(kāi)發(fā)中的角色可能會(huì)從目前傳統(tǒng)的人類(lèi)開(kāi)發(fā)職能中分離出來(lái)。也就是說(shuō),由機(jī)器扮演的不同代碼生成器、編譯器、以及其他開(kāi)發(fā)細(xì)分角色會(huì)逐漸出現(xiàn)。
Chainguard的工程副總裁Dustin Kirkland認(rèn)為:“除了人類(lèi)開(kāi)發(fā)者熟悉的傳統(tǒng)代碼開(kāi)發(fā)視角,另一種隱蔽的視角將會(huì)出現(xiàn)。這種視角雖然對(duì)于人類(lèi)的可讀性較低,但是可以被由AI扮演的編譯器和解釋器完全領(lǐng)會(huì)。它將作為另一種代碼的中間層,提供所謂AI安全優(yōu)化的防御視圖。”不過(guò),也有人質(zhì)疑:AI本身的安全識(shí)別能力是否準(zhǔn)確、高效。
9.AI提高開(kāi)發(fā)過(guò)程的運(yùn)營(yíng)能力
LaunchDarkly的開(kāi)發(fā)者體驗(yàn)總監(jiān)Cody De Arkland提出了使用生成式AI、以及交互式學(xué)習(xí),來(lái)協(xié)助提高軟件應(yīng)用的可靠性和操作性的用例。其中包括:
開(kāi)發(fā)并生成符合已學(xué)到的、滿足設(shè)計(jì)標(biāo)準(zhǔn)的Web應(yīng)用組件
在檢測(cè)到開(kāi)發(fā)人員創(chuàng)建了新的功能時(shí),創(chuàng)建相應(yīng)的功能標(biāo)記
啟動(dòng)新的軟件部署(CI/CD),并能在發(fā)現(xiàn)問(wèn)題時(shí)將其回滾
通過(guò)定制運(yùn)行而非部署后運(yùn)行,為QA提供實(shí)時(shí)的反饋回路
當(dāng)然,這些用例也伴隨著一個(gè)問(wèn)題:生成式AI將啟用或增強(qiáng)哪些下一代開(kāi)發(fā)和SRE能力。
10.企業(yè)必須防范的AI風(fēng)險(xiǎn)
隨著生成式AI更多地參與到整個(gè)SDLC中,一個(gè)新的問(wèn)題可能會(huì)出現(xiàn),即:生成式AI可能引發(fā)的知識(shí)產(chǎn)權(quán)(包括代碼和數(shù)據(jù))等風(fēng)險(xiǎn)。為此,企業(yè)需要權(quán)衡其收益是否大于風(fēng)險(xiǎn)。
Tabnine生態(tài)系統(tǒng)和業(yè)務(wù)開(kāi)發(fā)副總裁Brandon Jung認(rèn)為:我們需要密切關(guān)注進(jìn)入模型的數(shù)據(jù),特別是訓(xùn)練集中的數(shù)據(jù),花費(fèi)時(shí)間和精力去評(píng)估和選擇AI模型,以保護(hù)企業(yè)最寶貴的資產(chǎn)--代碼和數(shù)據(jù)。
雖然我們還處于用生成式AI開(kāi)發(fā)軟件的初期,但是生成式AI算法、以及支持這些算法的工具,是否能夠建立起保護(hù)企業(yè)資產(chǎn)的保障措施,則在很大程度上需要依賴(lài)于生成式AI本身對(duì)于軟件開(kāi)發(fā)、測(cè)試、部署、以及維護(hù)的掌控能力上。