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