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