為了滿足“軟件工程”課程學時較少的高等學校對一本適用教材的迫切需求,作者對先后榮獲了全國普通高等學校工科電子類專業(yè)優(yōu)秀教材一等獎和全國優(yōu)秀暢銷書獎,并被評為北京高等教育精品教材的《軟件工程導論》作了精心改編,保留了原書中較重要、較新穎的內容,刪除或簡化了一些較陳舊或較次要的內容,寫出了《軟件工程》。
《軟件工程》全面系統(tǒng)地講述了軟件工程的概念、原理和典型的方法學,并介紹了軟件項目的管理技術。本書正文共13章,第1章是概述,第2章至第8章順序講述軟件生命周期各階段的任務、過程、結構化方法和工具,第9章至第12章分別講述面向對象方法學引論、面向對象分析、面向對象設計和面向對象實現,第13章介紹軟件項目管理。正文后面有兩個附錄,分別講述了用面向對象方法和結構化方法開發(fā)兩個軟件的過程,對讀者深入理解軟件工程學很有幫助,也是上機實習的好材料。
本書可作為高等院校“軟件工程”課程的教材或教學參考書,也可供有一定實際經驗的軟件工作人員和需要開發(fā)應用軟件的廣大計算機用戶閱讀參考。
作者編著的《軟件工程導論》已經出版了5個版本,累計銷售了近一百萬冊,先后榮獲全國普通高等學校工科電子類專業(yè)優(yōu)秀教材二等獎和一等獎,并被評為全國優(yōu)秀暢銷書(前10名)和北京高等教育精品教材,國內許多高校把它選作“軟件工程”課的教材。
但是,也有一些“軟件工程”課程學時較少的高校教師反映,《軟件工程導論》內容較多,用它作教材感到授課學時比較緊張。為了滿足這部分學校的需求,作者對《軟件工程導論》作了精心改編,保留了原書中較重要、較新穎的內容,刪除或簡化了一些較陳舊或較次要的內容,寫出了《軟件工程》。該書在保持原書結構不變的前提下把篇幅減少了近六分之一,將顯著減少授課所需的學時。
編者
2009年5月
第1章 軟件工程學概述
1.1 軟件危機
1.1.1 軟件危機的介紹
1.1.2 產生軟件危機的原因
1.1.3 消除軟件危機的途徑
1.2 軟件工程
1.2.1 軟件工程的介紹
1.2.2 軟件工程的基本原理
1.2.3 軟件工程方法學
1.3 軟件生命周期
1.4 軟件過程
1.4.1 瀑布模型
1.4.2 快速原型模型
1.4.3 增量模型
1.4.4 螺旋模型
1.4.5 噴泉模型
1.4.6 Rational統(tǒng)一過程
1.4.7 敏捷過程與極限編程
1.4.8 微軟過程
1.5 小結
習題
第2章 可行性研究
2.1 可行性研究的任務
2.2 可行性研究過程
2.3 數據流圖
2.3.1 符號
2.3.2 例子
2.3.3 命名
2.3.4 用途
2.4 數據字典
2.4.1 數據字典的內容
2.4.2 定義數據的方法
2.4.3 數據字典的用途
2.4.4 數據字典的實現
2.5 成本/效益分析
2.5.1 成本估計
2.5.2 成本/效益分析的方法
2.6 小結
習題
軟件工程目 錄 第3章 需求分析
3.1 需求分析的任務
3.1.1 確定對系統(tǒng)的綜合要求
3.1.2 分析系統(tǒng)的數據要求
3.1.3 導出系統(tǒng)的邏輯模型
3.1.4 修正系統(tǒng)開發(fā)計劃
3.2 與用戶溝通獲取需求的方法
3.2.1 訪談
3.2.2 面向數據流自頂向下求精
3.2.3 簡易的應用規(guī)格說明技術
3.2.4 快速建立軟件原型
3.3 分析建模與規(guī)格說明
3.3.1 分析建模
3.3.2 軟件需求規(guī)格說明
3.4 實體-聯系圖
3.4.1 數據對象
3.4.2 屬性
3.4.3 聯系
3.4.4 實體-聯系圖的符號
3.5 數據規(guī)范化
3.6 狀態(tài)轉換圖
3.6.1 狀態(tài)
3.6.2 事件
3.6.3 符號
……
第4章 形式化說明技術
第5章 總體設計
第6章 詳細設計
第7章 實現
第8章 維護
第9章 面向對象方法學引論
第10章 面向對象分析
第11章 面向對象設計
第12章 面向對象實現
第13章 軟件項目管理
附錄A C++類庫管理系統(tǒng)的分析與設計
附錄B 一個漢字行編輯程序的設計
參考文獻
第1章 軟件工程學概述
迄今為止,計算機系統(tǒng)已經經歷了4個不同的發(fā)展階段,但是,人們仍然沒有徹底擺脫“軟件危機”的困擾,軟件已經成為限制計算機系統(tǒng)發(fā)展的瓶頸。
為了更有效地開發(fā)與維護軟件,軟件工作者在20世紀60年代后期開始認真研究消除軟件危機的途徑,從而逐漸形成了一門新興的工程學科——計算機軟件工程學(通常簡稱為“軟件工程”)。
1.1 軟件危機
在計算機系統(tǒng)發(fā)展的早期時代(20世紀60年代中期以前),通用硬件相當普遍,軟件卻是為每個具體應用而專門編寫的。這時的軟件通常是規(guī)模較小的程序,編寫者和使用者往往是同一個(或同一組)人。這種個體化的軟件環(huán)境,使得軟件設計通常是在人們頭腦中進行的一個隱含的過程,除了程序清單之外,沒有其他文檔資料保存下來。
從20世紀60年代中期到70年代中期是計算機系統(tǒng)發(fā)展的第二個時期,這個時期的一個重要特征是出現了“軟件作坊”,廣泛使用產品軟件。但是,“軟件作坊”基本上仍然沿用早期形成的個體化軟件開發(fā)方法。隨著計算機應用的日益普及,軟件數量急劇膨脹。在程序運行時發(fā)現的錯誤必須設法改正;用戶有了新的需求時必須相應地修改程序;硬件或操作系統(tǒng)更新時,通常需要修改程序以適應新的環(huán)境。上述種種軟件維護工作,以令人吃驚的比例耗費資源。更嚴重的是,許多程序的個體化特性使得它們最終成為不可維護的!败浖C”就這樣開始出現了11968年北大西洋公約組織的計算機科學家在聯邦德國召開國際會議,討論軟件危機問題,在這次會議上正式提出并使用了“軟件工程”這個名詞,一門新興的工程學科就此誕生了。
……