1. 軟件工程作為一種戰略優勢
我們生活在一個由軟件驅動的變革時代。軟件以及所有軟件工程的過程、實踐、技術和支持它的科學領域,使我們的醫療、國防、商業、通信、教育和能源系統成為可能。它也是幾乎所有研究領域的關鍵賦能組件,如智能基礎設施(納米技術)、人類增強(生物技術)和自主交通。然而,對軟件的依賴使我們容易受到其自身弱點的影響。軟件的弱點直接反映了軟件工程的現狀和實踐中的不足之處,它們可以毫無預警地影響數百萬人。2021年,軟件問題導致了美國歷史上最大規模的輸油管道關閉,并導致了數百家企業的癱瘓。軟件質量問題還導致了飛機和汽車墜毀中的生命損失,以及航空飛行的昂貴故障。
如果沒有永遠投資軟件工程的催化劑,隨著我們越來越依賴于越來越大且越來越復雜的軟件系統,情況將會進一步惡化。本報告旨在成為此類催化劑。確定將支持未來系統的關鍵技術和研究領域,并制定指導研究工作的路線圖,是使軟件成為競爭優勢的關鍵一步。本研究概述了旨在使未來軟件系統更安全、可預測和可進化的努力。卡內基梅隆大學軟件工程研究所(CMU SEI)與軟件工程界進行了接觸,并組建了一個由遠見卓識者和高級思想領袖組成的咨詢委員會,以確保軟件工程的生態系統觀點的廣泛性,并在將來的研發愿景和路線圖中得到體現。
2. 調查結果反映了新的學習、挑戰和研究需求
不出所料,本研究調查指出,軟件工程研究是一個高度動態、快速發展的領域,技術可以迅速崛起并發展成為現代生活基礎設施的組成部分。雖然這也許并不令人驚訝,但最近的技術趨勢在多范圍內融合在一起,并出現速度和質量都很高的軟件能力,其中許多技術和能力在10年前都是無法想象的。
以下調查結果來源于軟件工程實踐的現狀、有助于推進軟件工程實踐狀態的新趨勢和新興技術、與軟件工程研究社區舉辦的研討會、文獻調查、與該領域專家的訪談以及我們咨詢委員會的投入。他們總結了軟件工程未來所需的關鍵學習、關鍵挑戰和新研究。
保持國家軟件工程能力是一項戰略優勢。軟件工程影響一切,因為軟件無處不在,包括我們國家的基礎設施、國防、金融、教育和醫療系統。我們對軟件系統日益增長的依賴使得我們必須保持國家在軟件工程領域的領導地位和戰略優勢。我們需要提高軟件工程的知名度,使其獲得與其對國家安全和競爭力的重要性相稱的持續認可和投資。
保持國家軟件工程能力需要持續的研究。新型軟件系統將繼續超越當前的軟件工程理論、工具和實踐所能支持的范圍。未來的系統和軟件工程的根本性轉變需要在智能自動化、確保系統進化、理解組合系統和新的系統類型(如人工智能系統、社會規模系統和量子系統)等領域的重點突破。
保持國家軟件工程能力需要促進戰略伙伴關系。我們需要促成戰略伙伴關系與合作,以推動行業、研究實驗室、學術界和政府之間的軟件工程研究創新。
保持國家軟件工程能力需要持續的投資。決策者必須認識到軟件工程的好處,并使其成為一項重要的國家能力。這種承認將意味著持續的戰略投資。
軟件工程的愿景需要改變。當前的軟件開發流水線概念將被基于程序員意圖不斷進化系統的AI和人合作概念所取代。
將重點放在再保證的系統上,使新能力能夠持續、快速地整合。由于軟件無處不在,因此對軟件的需求不斷增加,不斷發展,以整合新的功能。因此,我們需要了解如何在不損害現有能力的情況下,持續有效地重新保證依賴軟件的系統,提高鑒證證據和論據的重要性將是關鍵。
社會級規模的系統需要新的設計原則。對軟件影響的認知正在產生新的質量屬性需求,軟件工程師需要開發更好的設計方法。除了傳統屬性(可修改性、可靠性、性能等),還需要添加一個新的質量屬性列表,如透明度、影響力等。
需要重新構構造軟件工程的人才隊伍。依賴于軟件的系統是由一群擁有完全不同技能的人為許多不同的目的而構建的,其中許多人沒有受過正式的軟件工程培訓。我們需要更好地了解所需勞動力的性質以及了解如何促進其增長。

3. 未來軟件工程的指導性愿景和路線圖
我們的指導性愿景是,當前的軟件開發流水線概念被替換為人和軟件是值得信賴的合作者,可以根據程序員的意圖快速開發系統。為了實現這一愿景,我們預計未來系統工程需要新的開發和架構范例。
我們的研究有助于為未來系統的軟件工程提供新的研究領域。與顧問委員會和軟件工程研究社區的其他領導者密切合作,我們制定了包含六個研究重點領域的研究路線圖。下圖顯示了這些領域以及要開展的研究主題列表,隨后對每個研究重點領域進行了簡短描述。
3.1 人工智能增強了軟件開發
在軟件開發過程的每個階段,人工智能都能提供幫助。通過減輕繁瑣的任務,人們將能夠更好地專注于需要創造力的任務,以及只有人類才能提供的創新。為了實現這一重要目標,我們需要重新設計整個軟件開發過程,增加對開發人員的人工智能和自動化工具支持。關鍵的挑戰將是利用整個生命周期中生成的數據。該研究領域的重點是人工智能增強軟件開發在開發的每個階段會是什么樣子。在持續演進過程中,人工智能在承擔常規任務時特別有用。
3.2 確保軟件系統的持續演進
當考慮當今依賴于軟件的系統時,它們不是靜態的(甚至不經常更新的)工程工件。相反,它們是流動的,這意味著它們將經歷幾乎連續的更新和改進,并仍然有效。因此,該研究領域的目標是開發快速和有保證的軟件演化的理論和實踐,以實現持續演化系統的有效性和有界性的再保證。
3.3 通過組合正確性進行軟件構建
隨著依賴于軟件的系統范圍和規模不斷增長和變化,這些系統的復雜性使得任何一個人或團體都無法理解整個系統。因此,有必要使用支持模塊化組件組合的技術和平臺來集成(并持續重新集成)軟件系統。這是特別困難的,因為許多這樣的組件是從現有元素中重用的,而這些元素不是設計為在一起集成或演進的。該研究領域的目標是創建方法和工具,以規范和實施組合規則,允許(1)創建所需的行為(功能和質量屬性)和(2)保證這些行為。
3.4 人工智能賦能的軟件系統工程化
人工智能支持系統是軟件依賴系統,包括了人工智能和非人工智能組件,與沒有人工智能的系統相比,具有一些不同的固有特征。然而,支持人工智能的系統首先是一種軟件系統。這些系統與傳統軟件系統的開發和維護有許多相似之處。該研究領域的重點是探索現有的軟件工程能夠可靠地支持人工智能系統的開發,以及識別和增強軟件工程技術,用于規范、設計、架構、分析、部署和維護具有人工智能組件的系統。
3.5 社會規模系統的工程化
社會規模的軟件系統,如今天的商業社交媒體系統,旨在保持用戶參與,并經常影響他們的生活和工作。社會規模系統的一個關鍵挑戰是預測社會激勵的質量屬性,當人類是系統的組成部分時,這些屬性會出現。目標是利用社會科學的知識來構建和發展考慮這些屬性的社會規模軟件系統。
3.6 量子計算的軟件系統工程
量子計算軟件工程的進步與硬件的進步同樣重要。這一研究領域的目標是首先使當前的量子計算機能夠更容易、更可靠地編程,然后隨著更大、完全容錯的量子計算系統變得可用,實現越來越多的抽象。一個關鍵挑戰是最終將這些類型的系統完全集成到統一的軟件開發生命周期中。
4. 研究和立法建議促進變革
促進軟件工程的變革將導致更值得信賴和能力更強的依賴于軟件的系統。本節前面預覽的路線圖所示的研究重點領域衍生了一系列促進變革所需的研究建議,隨后是制定建議,重點是需要的人員、投資和維護。
以下研究解決了各種挑戰,如人工智能的日益使用、確保不斷變化的系統、組合和重新組合系統以及社會技術的工程化和異構系統。
使AI成為可靠的系統能力增強器。軟件工程和人工智能社區應該聯手發展人工智能的工程學科。這將有助于人工智能軟件系統的開發和發展,使其按預期運行,并使人工智能成為軟件工程生產力的倍增器。
軟件系統演進和規模化保證的理論和開發實踐。軟件工程研究社區應該開發一種理論和相關實踐,以重新確保不斷演進的軟件系統。本研究的一個焦點是保證論證,它應該是與系統架構同等重要的軟件工程工件,以確保小的系統更改只需要增量的重新保證。
為組合技術開發形式語義。計算機科學界應該關注最新一代的組合技術,以確保依賴注入框架等技術通過指定系統行為的不同抽象級別來保持語義。這將允許在實現可預測的運行時行為的同時,通過組合獲得演進的好處。
社會規模的社會技術系統實現成熟的工程化。軟件工程社區應與社會科學社區合作,為社會技術系統開發工程原理。社會學和心理學等學科的理論和技術應用于發現社會技術系統的新設計原則,這反過來應導致社會規模系統的更可預測行為。
促進對新計算模型工程的更多關注,重點是量子使能的軟件系統。軟件工程界應與量子計算界合作,以預測量子賦能的新架構范例計算系統。重點應該是理解量子計算模型如何影響軟件堆棧的所有層。
上述建議側重于實現變革的科學和工程障礙。以下立法建議側重于體制障礙,包括經濟、人力和政策障礙。
確保投資優先權反映軟件工程作為國家關鍵能力的重要性。軟件工程在國家安全和全球市場競爭力中的戰略作用應反映在國家研究活動中,包括美國白宮科技政策辦公室(OSTP)和網絡與信息技術研發(NITRD)開展的研究活動。這些研究活動應將軟件工程研究視為與芯片制造和人工智能同等重要的投資重點,有利于國家競爭力和安全。
將軟件工程研究的持續進展制度化。軟件工程的持續進步要求將軟件工程研究和實踐影響的持續審查和再投資周期制度化。保持國家軟件工程水平需要研究資金來源和機構與軟件工程界的行業和政府領導人合作,定期審查軟件工程的狀態。
制定一項戰略,確保未來軟件工程的有效勞動力。目前,軟件工程由具有大量跨學科技能的人員執行,并不總是包括軟件工程的正式培訓。此外,軟件工程的性質似乎正在改變,以反映依賴于軟件系統的流動性。我們需要更好地了解所需勞動力的性質以及如何促進其增長。軟件工程界、軟件行業和學術界應制定一項戰略,以確保未來軟件工程人員隊伍的有效性。
5. 構建面向未來的系統需要的軟件工程
基于軟件的性質,它在能力、復雜性和互聯方面在持續無限制增長。軟件的發展似乎沒有停滯不前。為了使未來的軟件系統安全、可預測和可進化,來自私人和公共來源投資的軟件工程界必須共同努力,從戰略上推進軟件工程的理論和實踐,以實現下一代軟件依賴系統。























