《軟件工程(原書第10版)》是系統介紹軟件工程理論的經典教材,共包含四個部分:第1部分(第1~9章)是對軟件工程的一般性介紹,介紹了軟件工程的一些重要概念(如軟件過程和敏捷方法),描述了基本的軟件開發活動(從需求規格說明一直到系統演化);第二部分(第10~14章)關注軟件系統可依賴性和信息安全等重要話題;第三部分(第15~21章)介紹更高級的軟件工程話題;第四部分(第22~25章)關注技術管理問題。
《軟件工程(原書第10版)》適合作為軟件和系統工程專業本科生或研究生教材,同時也是軟件工程師難得的參考書。
軟件工程在過去50年之中取得了令人矚目的進展。我們的社會已經無法在缺少大型專業化軟件系統的情況下正常運轉了。國家的公用事業和基礎設施(如能源、通信、交通)全都依賴于復雜且可靠的計算機系統。軟件使得我們可以探索空間,創造萬維網這一人類歷史上最重要的信息系統。智能手機和平板電腦無處不在,而為這些設備開發軟件的整個“應用開發產業”已經在過去幾年中悄然形成。
人類現在正面臨著一系列迫切的挑戰——氣候變化和極端天氣、自然資源的減少、需要為更多的人口提供食物和住房、國際恐怖主義的威脅,以及為老年人提供令人滿意的生活。我們需要新技術來幫助我們應對這些挑戰,可以肯定的是軟件將在這些技術中扮演核心角色。因此,軟件工程對于我們在這個星球上的未來極其重要。我們必須繼續培養軟件工程師并推動軟件工程學科的持續發展,從而滿足開發更多的軟件系統以及創造我們所需要的越來越復雜的未來系統的需要。
當然,軟件項目還存在很多問題。系統仍然有時會延遲交付并且成本超支。我們正在創造越來越復雜的軟件系統之系統(software systems of systems),在這條道路上遇到各種困難也是不足為奇的。然而,我們不應該讓這些問題掩蓋軟件工程領域已經取得的巨大成就,以及所形成的各種令人印象深刻的軟件工程方法和技術。
本書的不同版本已經有超過30年的歷史,而這一版同樣遵循了本書第1版中所建立的基本原則:
1.按照工業界實踐介紹軟件工程,不對任何特定的方法(例如敏捷開發、形式化方法)持傾向性態度。在現實中,工業界往往將各種技術(例如敏捷以及基于計劃的開發)混合在一起使用,這一點也在本書中有所反映。
2.根據我所知道的以及所理解的知識介紹軟件工程。很多人建議我增加并詳細介紹其他相關話題,例如開源軟件開發、UML的使用以及移動軟件工程等,但是我對這些領域的了解并不多,我個人的工作主要是在系統可靠性和系統工程方面,這一點在我為本書所選擇的高級專題中有所反映。
我認為現代軟件工程的關鍵問題是管理復雜性,將敏捷和其他方法結合起來,并確保我們的系統安全以及有韌性。這些問題是我在這一版中修改和新增內容的主要因素。