譯者| 陳峻
#審校| 重樓
#上個世紀90年代,當人們提起軟體程式設計時,通常意味著選擇一個編輯器,將程式碼檢入CVS或SVN程式碼庫,然後將程式碼編譯成可執行檔。與之對應的Eclipse和Visual Studio等整合開發環境(IDE )可以將程式設計、開發、文件、建置、測試、部署等步驟納入到一個完整的軟體開發生命週期(SDLC)中,從而提高了開發人員的工作效率。
近年來,流行的雲端運算和DevSecOps自動化工具提升了開發者的綜合能力,使得更多的企業能夠更輕鬆地開發、部署和維護軟體應用。
如今,生成式AI作為下一代開發範式轉變的催化劑,有望改變企業創建和維護軟體的方式,並帶來新的開發工具和範式。對此,許多開發人員開始懷疑,AI是否會讓我們所熟知的程式設計技能走向消亡。同時,各企業的##IT領導者也在考慮:在未來十年中,AI將如何影響SDLC和 DevSecOps的發展。帶著這兩個問題,我將和您在下文中一同尋找答案。
Pulumi#的執行長Joe Duffy認為:「AI將會增強程式設計的自動化,大幅提升企業的生產力和產出,從而提高人類操作的抽像水平,而不會真正取代程式設計。」
Thomvest Ventures的負責人Ashish Kakran則認為:「生成式AI正在顛覆軟體交付的生命週期。」開發與DevOps團隊將會改變得更俱生產力。 同時,隨著生成式AI功能的不斷完善,開發人員的職責會隨之調整。 Matillion公司的技術長#Ed Thompson
認為:「AI到底在會#什麼改變軟體開發江湖呢? 1.根據自然語言提示產生標準的程式碼Astronomer 的
Airflow工程總監Kaxil Naik認為:「透過AI產生的程式碼模板、以及AI輔助的Copilot將自然語言翻譯成功能性程式碼,簡化了對複雜程式碼庫的理解,並確保了遵守開發最佳實踐,從而將
讓程式設計工作變得更有效率。」年開發者調查
###顯示,有70%的開發者正在或計劃在開發過程中使用AI工具。而在那些已經使用AI進行開發的人群中,有超過82%的使用了AI來編寫軟體程式碼。這些數字足以顯示###,開發人員傳統的編寫程式碼、重複使用現有程式碼、以及建構元件的方式,正在發生模式上的轉變。 ############2.######程式碼驗證是開發人員的重要職責##################除了讓程式設計變得更簡單和高效,開發人員需要的擔負著重要責任是,花費大量的時間、以及使用高效的工具,來驗證程式碼,避免產生的程式碼有安全問題、或有效能缺陷。 ############Sonar的開發者關係部主管#Peter McKee#認為:「隨著開發人員更多地採用AI來提高生產力,他們有責任對AI生成的內容進行全面檢查。」通常,邊編程邊清理,可以確保在交付過程中執行持續的檢查和監控。據此,開發人員可以將更多時間花在新的任務上,而無需修復那些人工創建的、或由AI生成的程式碼裡潛在的錯誤與漏洞。 McKee補充說:「如果開發人員未能透過自動化來掃描和監控AI產生的程式碼,那就意味著後續需要修復的程式碼和技術債會倍增。
使用生成式AI工具開發程式碼,可能會如何影響各個開發團隊在大型企業中,支援數千種應用工具和標準。如果開發人員只需編寫較少的程式碼,並且更多地與由生成式AI開發的程式碼相集成,那麼大型企業的開發工作會成什麼樣子?
Red Hat開發工具與策略推廣部的Markus Eisele#認為:「不同團隊的不同工具組合,會導致缺乏標準化和統一的開發實踐,更不用說由此增加的開發人員的認知差異。 」而由AI構建的集中式開發門戶,能夠方便開發團隊的輕鬆訪問,並通過消除協同過程中的摩擦,來成就跨團隊應用的最佳實踐。這意味著集成開發環境可能會蛻變為裝配平台,類似製造業中的電腦輔助設計(CAD)或建築業中的建築資訊建模(BIM#) 。其重點將從構建定制組件轉移為組裝已有組件,以及利用內置工具來驗證設計。
使用生成式AI開發的程式碼的另一個影響,是涉及企業領導者將如何制定相關政策,以及如何監控企業應用中嵌入了哪些供應鏈的程式碼。一直以來,企業需要持續追蹤的是開源和商業軟體元件。將來,它們需要增加。 AI的輸出這一新的層面。
#Sonatype的現場首席技術長Ilkka Turunen認為:「開發人員需要在維護和管理AI供應鏈方面發揮重要作用。他們將會在企業的日常運作中,對AI模型的安全性、真實性和來源予以更嚴格的審查。透過實施AI風險評估,並妥善管理AI模型物料清單,企業應確保開發基礎架構有適當的AI安全與管理。 ”
在實踐中,SAST#、DAST、以及其他安全與程式碼管理工具,能夠提高程式碼掃描的自動化能力,並且可以在開發人員將程式碼整合到企業資源庫之前,協助驗證生成式AI的產出程式碼是否符合安全策略。
##在在過去十年中,透過應用程式介面(API)、#IFTTT的SaaS整合平台、整合平台即服務(iPaaS)、以及其他生態系統技術,開發人員的程式碼整合能力有了數量級的提升。儘管如此,開發人員仍然需要做大量的基礎性工作,來映射資料欄位、程式邏輯轉換、以確保可靠性與效能。而利用生成式AI,開發人員可以建構出具備自然語言需求、視覺化流程的無程式碼整合。
任職於SAP AI與創新團隊的Emmanuel Cassimatis認為:「過去,從設計、建置、測試、整合、部署、交付到審查,整個開發生命週期中的不同步驟向來是分散的。而AI則可以從不同應用的資料中挖掘並實現一個統一的整合層面,從而加強開發人員之間的協作。 ”
Honeycomb的首席產品經理Phillip Carter認為,生成式AI將改變開發人員和品質保證(QA)工程師未來的工作任務。 「將來,自然語言很可能會指導更多的程式碼產生和驗證生成程式碼的測試。其中,AI代理將完成大部分工作,而開發人員則需要為這些代理程式設定需要遵循的程式設計目標和限制條件。 」
Carter繼續大膽地預測:「AI代理程式能夠透過分析程式執行時間的行為,檢查未知的因素,以執行過去開發人員難以企及的QA、可觀察性與安全任務。」據此,開發人員可以高屋建瓴地從上層定義系統架構、非功能性、以及操作要求,從而指導生成式AI進行程式碼開發和自動測試,而非親歷親為。
雖然目前Copilots和許多生成式AI工具主要專注於編程,但是其新的功能也會改變SDLC中的其他階段。 Gigster的首席解決方案工程師Humberto Moreira認為:「隨著生成式AI被納入SDLC,不同的模型會有其最適合的特定週期階段。例如,A模型可能會針對需求進行最佳化;B模型則是針對程式碼開發,而C模型卻針對的是QA。」
實際上,由於各類工具提供了更強大的測試案例,並且能夠對程式碼的變更提供更快的回饋,因此生成式AI模式的轉變已經對QA產生了一定的影響。 Descope的聯合創始人Gilad Shriki說:「隨著AI的崛起,從SDK到測試、再到文檔,所有圍繞著軟體工程的方方面面都會得到生成式AI的輔助。開發人員甚至需要以特定的AI使用格式,來記錄他們的工作。」
生成式AI在軟體開發中的角色可能會從目前傳統的人類開發職能中分離出來。也就是說,由機器扮演的不同程式碼產生器、編譯器、以及其他開發細分角色會逐漸出現。
Chainguard的工程副總裁Dustin Kirkland認為:「除了人類開發者熟悉的傳統程式碼開發視角,另一種隱藏的視角將會出現。這種視角雖然對於人類的可讀性較低,但是可以被由AI扮演的編譯器和解釋器完全領會。它將作為另一種程式碼的中間層,提供所謂AI安全優化的防禦視圖。」不過,也有人質疑:AI本身的安全辨識能力是否準確、有效率。
的開發者體驗總監Cody De Arkland提出了使用生成式AI、以及互動式學習,來協助提升軟體應用的可靠性和操作性的用例。其中包括:
##當然,這些用例也伴隨著一個問題:#生成式AI 將啟用或增強哪些新一代開發和SRE能力。
隨著生成式AI更多地參與整個SDLC中,一個新的問題可能會出現,即:生成式AI可能引發的知識產權(包括程式碼和資料)等風險。為此,企業需要權衡其收益是否大於風險。
#########Tabnine生態系統和業務開發副總裁Brandon Jung認為:我們需要密切注意進入模型的數據,特別是訓練集中的數據,花時間和精力去評估和選擇AI模型,以保護企業最寶貴的資產--程式碼和數據。
雖然我們還處於用生成式AI#開發軟體的初期,但是生成式AI#演算法、以及支援這些演算法的工具,是否能夠建立起保護企業資產的保障措施,則在很大程度上需要依賴#生成式AI本身對於軟體開發、測試、部署、以及維護的掌控能力。
#陳峻(Julian Chen),51CTO社群編輯,具備十多年的IT專案實施經驗,善於對內部和外部資源與風險實施管控,專注於傳播網路與資訊安全知識與經驗。
原文標題:#10 ways generative AI will transform software development#,作者:Isaac Sacolick
以上是生成式AI將在十個方面改變軟體開發的詳細內容。更多資訊請關注PHP中文網其他相關文章!