圖書簡介
軟體工程是指導計算機軟體開發的工程科學技術,本書是在《軟體工程》第2版的基礎上,根據使用該教材的教師和讀者的意見,對原書在結構和內容上做了很多調整和修改,第3版增強了結構化和面向對象方法的理論基礎。全書共分為4個部分,第一部分(第1~3章)是基礎理論,第二部分(第4~6章)是結構化方法,第三部分(第7~16章)是面向對象方法與實現,第四部分(第17~20章)是質量與工程管理。本書對每章概念都進行了嚴格的論述,每個概念都有相應的例子解釋,同時每章都配有習題,使讀者鞏固所學知識。
目錄
第1部分基礎理論
第1章緒論
1.1軟體概述
1.1.1什麼是計算機軟體
1.1.2軟體的特點
1.1.3軟體的分類
1.1.4軟體的發展
1.1.5軟體危機
1.2軟體工程
1.2.1軟體工程與方法學
1.2.2軟體工程的基本原理
1.2.3軟體工程的目標
1.2.4軟體工程的內容
1.2.5軟體工程的原則
1.2.6軟體工程面臨的問題
小結
綜合練習一
第2章基本理論
2.1軟體工程過程
2.2軟體生命周期
2.2.1軟體分析時期
2.2.2軟體設計時期
2.2.3編碼與測試時期
2.2.4運行與維護時期
2.3軟體生命周期模型
2.3.1軟體生命周期模型的概念
2.3.2瀑布模型
2.3.3原型模型
2.3.4增量模型
2.3.5螺旋模型
2.3.6噴泉模型
2.3.7基於知識的模型
2.3.8變換模型
2.4軟體開發方法
2.4.1結構化方法
2.4.2Jackson方法
2.4.3維也納開發方法
2.4.4面向對象的開發方法
2.5軟體工具與開發
2.5.1軟體工具箱
2.5.2軟體開發環境
2.5.3計算機輔助軟體工程
小結
綜合練習二
第3章可行性研究
3.1可行性研究任務與步驟
3.1.1研究任務
3.1.2研究步驟
3.2系統分析
3.2.1系統分析員
3.2...
3.2.2面臨的問題域
3.2.3通信技術
3.3分析原理
3.3.1信息域
3.3.2建立模型
3.3.3分解
3.4系統模型與模擬
3.4.1系統模型
3.4.2系統建模和模擬
3.5成本效益分析
3.6可行性研究的文檔
3.7項目開發計畫
3.7.1方案選擇
3.7.2制定項目開發計畫
小結
綜合練習三
第2部分結構化方法
第4章需求分析與體系結構
4.1需求分析
4.1.1需求分析的特點
4.1.2需求分析的原則
4.1.3需求分析的任務
4.1.4需求分析的方法
4.2結構化分析
4.2.1自頂向下逐層分解
4.2.2結構化分析步驟
4.3系統流程圖
4.4數據流圖
4.4.1基本圖形符號
4.4.2畫數據流圖
4.4.3結構化分析方法的套用
4.5數據字典
4.5.1內容及格式
4.5.2數據字典的實現
*4.6從需求到體系結構
*4.7RTRSM的基本元素
4.7.1狀態轉換圖
4.7.2模板
4.7.3規則集
*4.8RTRSM到體系結構的轉換步驟
4.8.1描述系統的功能單元(組件)
4.8.2描述連線件
4.8.3描述軟體的配置
*4.9基於軟體體系結構開發方法
4.9.1軟體體系結構的開發過程
4.9.2分散式對象技術
4.9.3體系結構與分散式對象結合方法
*4.10軟體體系結構求精方法
4.10.1行為替代的體系結構求精方法
4.10.2基於風格的體系結構求精方法
4.10.3構件體系結構求精方法
4.10.4形式化方法與Z語言
4.10.5UML和Z結合的求精方法
*4.11一種新的軟體體系結構設計方法
4.11.1體系結構需求和軟體體系結構
4.11.2新的軟體體系結構設計過程
小結
綜合練習四
第5章總體設計
5.1軟體設計的重要性
5.2設計過程
5.3軟體總體設計
5.4設計基本原理
5.4.1抽象
5.4.2細化
5.4.3模組化
5.4.4軟體體系結構
5.4.5程式結構
5.4.6數據結構
5.4.7軟體過程
5.5體系結構設計
5.5.1軟體結構圖
5.5.2模組的大小
5.5.3扇出和扇入與深度和寬度
5.5.4模組的耦合
5.5.5模組的內聚
5.5.6結構設計的一般準則
5.5.7模組的作用域與控制域
5.6結構化設計
5.6.1數據流的類型
5.6.2過程步驟
5.6.3變換分析設計
5.6.4事務分析設計
5.6.5混合流設計
5.6.6結構化設計方法套用示例
5.6.7設計的後期處理
5.7軟體結構最佳化
5.7.1軟體結構設計最佳化準則
5.7.2軟體結構的HIPO圖
小結
綜合練習五
第6章軟體詳細設計
6.1詳細設計的任務與方法
6.1.1詳細設計的基本任務
6.1.2詳細設計方法
6.2設計表示法
6.2.1結構化語言
6.2.2判定表
6.2.3判定樹
6.3結構化程式設計
6.3.1流程圖程式
6.3.2三種基本控制結構
6.3.3常用符號
*6.3.4正規程式
*6.3.5基本程式
*6.3.6結構化程式
*6.4結構化定理
6.4.1程式函式
6.4.2基本定理
6.4.3非結構化轉換為結構化
6.4.4常見錯誤
6.5過程設計語言
小結
綜合練習六
第3部分面向對象方法與實現
第7章面向對象方法概論
7.1面向對象簡介
7.1.1什麼是面向對象
7.1.2面向對象方法的歷史及現狀
7.2面向對象的相關概念
7.2.1對象
7.2.2類
7.2.3對象圖
7.2.4屬性
7.2.5服務
7.2.6封裝
7.2.7繼承
7.2.8多重繼承
7.2.9訊息
7.2.10結構與連線
7.2.11多態性
7.2.12永久對象
7.2.13主動對象
7.2.14對象類的表示方法
7.3連結與關聯
7.3.1一般概念
7.3.2重數
7.3.3關聯的重要性
7.3.4三元關聯
7.3.5關聯的候選關鍵字
7.3.6異或關聯
7.3.7資格關聯
7.3.8連結屬性
7.3.9用關聯模型化為類
7.3.10角色名
7.3.11排序
7.3.12資格符
7.4構造分組
7.4.1模組
7.4.2表
小結
綜合練習七
第8章模型
8.1統一建模語言
8.1.1模型的建立
8.1.2UML的基本圖示
8.1.3UML語義
8.1.4UML的基本元素
8.1.5UML的詞別
8.2UML的評價
8.2.1UML成功的因素
8.2.2UML的積極作用
8.2.3UML不能起到的作用
8.2.4UML的缺點
8.2.5UML的未來
8.3對象模型
8.3.1表示方法
8.3.2表示結構
8.3.3例子
8.4動態模型
8.4.1事件和狀態
8.4.2操作
8.4.3嵌套狀態圖
8.4.4實踐技巧
8.5功能模型
8.5.1數據流圖
8.5.2指定的操作
8.5.3約束
8.5.4功能模型的實例
8.5.5三種模型的關係
小結
綜合練習八
第9章對象分析
9.1對象、主動對象以及它們的類
9.2研究問題域和用戶需求
9.2.1研究用戶需求,明確係統責任
9.2.2研究問題域
9.2.3確定系統邊界
9.3發現對象
9.3.1正確地運用抽象原則
9.3.2策略與啟發
9.3.3對象的發現和標識
9.3.4審查和篩選
9.3.5識別主動對象
9.4對象分類,建立類圖的對象層
9.4.1異常情況的檢查和調整
9.4.2類的命名
9.4.3建立類圖的對象層
9.5對象的屬性和服務
9.6定義屬性
9.6.1策略與啟發
9.6.2審查與篩選
9.6.3推遲到OOD考慮的問題
9.6.4屬性的命名和定位
9.6.5屬性的詳細說明
9.7定義服務
9.7.1對象的狀態與狀態轉換圖
9.7.2行為分類
9.7.3發現服務的策略與啟發
9.7.4審查與調整
9.7.5認識對象的主動行為
9.7.6服務的命名和定位
9.7.7服務的詳細說明
9.8套用實例
9.8.1功能需求
9.8.2發現對象
9.8.3對象層表示
9.8.4電梯系統的屬性描述
9.8.5電梯系統的服務定義
9.8.6電梯系統的特徵層
小結
綜合練習九
第10章關係分析
10.1一般特殊結構
10.1.1一般特殊結構及其用途
10.1.2如何發現一般特殊結構
10.1.3審查與調整
10.1.4多繼承及多態性問題
10.1.5一般特殊結構的簡化
10.1.6調整對象層和特徵層
10.2整體部分結構
10.2.1整體部分結構及其用途
10.2.2如何發現整體部分結構
10.2.3審查與篩選
10.2.4簡化對象的定義
10.2.5支持軟體復用
10.2.6整體部分結構的進一步運用
10.2.7調整對象層和屬性層
10.3實例連線
10.3.1簡單的實例連線
10.3.2複雜的實例連線及其表示
10.3.3三元關聯問題
10.3.4如何建立實例連線
10.3.5對象層、特徵層的增補及實例連線說明
10.4訊息連線
10.4.1訊息的定義
10.4.2順序系統中的訊息
10.4.3並發系統中的訊息
10.4.4訊息對OOA的意義
10.4.5表示訊息連線
10.5如何建立訊息連線
10.5.1建立控制執行緒內部的訊息連線
10.5.2建立控制執行緒之間的訊息連線
10.5.3對象分布問題及其訊息的影響
10.6訊息的詳細說明
10.7電梯例子
10.7.1一般特殊關係
10.7.2整體部分關係
10.7.3連線
10.7.4電梯控制系統的關係層
小結
綜合練習十
第11章控制驅動的設計
11.1設計原則
11.1.1類型一致性與閉合行為
11.1.2其他主要原則
11.1.3類的狀態空間和行為
11.2相關技術問題
11.2.1系統總體方案
11.2.2軟體體系結構
11.2.3分散式系統的體系結構風格
11.2.4系統的並發性
11.3如何設計控制驅動
11.3.1選擇軟體體系結構
11.3.2確定系統分布方案
11.3.3識別控制流
11.3.4用主動對象表示控制流
11.3.5把控制驅動部分看做一個主題
11.4控制實現
11.4.1在程式內進行狀態設定
11.4.2狀態機器引擎
11.4.3控制作為並發任務
小結
綜合練習十一
第12章問題域的設計
12.1問題域部分設計環境
12.1.1為適應編成環境的調整
12.1.2從分析和系統結構著手
12.1.3對象設計的步驟
12.1.4對象模型工具
12.2完善對象的細節
12.3設計算法
12.3.1選擇算法
12.3.2選擇數據結構
12.3.3定義內部類和操作
12.3.4指定操作的職責
12.4繼承的調整
12.4.1重新安排類和操作
12.4.2抽象出公共的行為
12.4.3使用授權共享實現
12.5關聯設計
12.5.1分析關聯遍歷
12.5.2單向關聯
12.5.3雙向關聯
12.5.4連結屬性
12.6設計最佳化
12.6.1性能的影響因素
12.6.2改進性能的設計策略
12.6.3重新安排執行次序以獲得效率
12.6.4保存導出屬性避免重複計算
12.7物理打包
12.7.1信息隱藏
12.7.2實體的相關性
12.7.3構造模組
12.8設計決策文檔
小結
綜合練習十二
第13章用戶界面設計
13.1人的因素
13.1.1分析活動者
13.1.2從UseCase分析人機互動
13.1.3分析處理異常事件的人機互動
13.1.4命令的組織
13.1.5輸出信息的組織結構
13.2界面設計風格
13.2.1選單
13.2.2對話框
13.2.3視窗
13.3人機界面設計準則
13.4人機界面設計過程
13.4.1界面模型
13.4.2界面支持系統
13.4.3界面元素
13.4.4界面設計形式
13.5描述方法與技術
13.5.1靈境技術
13.5.2多通道人機互動技術
小結
綜合練習十三
第14章資料庫及其接口設計
14.1數據管理系統及其選擇
14.2技術整合
14.3數據接口
14.4對象存儲方案和數據接口的設計策略
14.4.1針對檔案系統的設計
14.4.2針對RDBMS的設計
14.4.3使用OODBMS
小結
綜合練習十四
*第15章形式化方法
15.1基礎知識
15.1.1形式化方法概念
15.1.2形式化規約語言
15.2有限狀態機
15.3Petri網基本原理
15.3.1靜態結構
15.3.2動態特徵
15.3.3轉移啟動規則
15.3.4行為特性
15.3.5行為特性分析方法
15.3.6結構特性分析方法
15.3.7Petri網到程式結構的轉換
小結
綜合練習十五
第16章軟體實現
16.1程式設計語言的特性及選擇
16.1.1程式設計語言特性
16.1.2程式設計語言的選擇
16.2程式設計風格
16.3程式設計效率
16.3.1代碼效率
16.3.2記憶體效率
16.3.3I/O效率
16.4冗餘編程
16.5軟體容錯技術
16.5.1容錯軟體
16.5.2容錯的一般方法
16.5.3容錯軟體的設計過程
16.5.4軟體的容錯系統結構
小結
綜合練習十六
第4部分質量與工程管理
第17章軟體質量
17.1軟體質量概述
17.1.1軟體質量的定義
17.1.2軟體質量的特性
17.1.3軟體質量特性之間的競爭
17.2軟體質量的度量和評價
17.2.1軟體質量的度量
17.2.2軟體質量度量的分類
17.2.3軟體質量的評價
17.3軟體質量保證
17.3.1軟體質量保證概述
17.3.2軟體質量保證原則
17.3.3軟體質量保證計畫
17.3.4軟體質量保證措施
17.3.5軟體質量管理小組
17.4技術評審與審查
17.4.1評審過程
17.4.2選擇參加評審的成員
17.4.3評審的管理和組織
17.4.4評審的方法
17.4.5走查和審查
17.4.6開發過程的評審
17.4.7對評審的綜合評價
17.5軟體的可靠性
小結
綜合練習十七
第18章軟體測試
18.1軟體測試概述
18.1.1軟體測試的目的
18.1.2軟體測試的原則
18.2軟體測試方法
18.2.1靜態測試
18.2.2動態測試
18.3測試用例的設計
18.3.1白盒技術
18.3.2黑盒技術
18.4軟體測試過程
18.4.1軟體測試過程中的信息
18.4.2軟體測試的步驟與各開發階段的關係
18.4.3單元測試
18.4.4集成測試
18.4.5確認測試
18.5調試
小結
綜合練習十八
第19章軟體維護
19.1軟體維護概述
19.1.1軟體維護的定義
19.1.2影響維護工作的因素
19.1.3維護成本
19.2軟體可維護性
19.2.1軟體可維護性的定義
19.2.2可維護性的度量
19.3軟體維護的特點
19.3.1非結構化維護和結構化維護
19.3.2維護的困難性
19.3.3軟體維護的費用
19.4軟體維護的實施
19.4.1維護的組織
19.4.2維護的流程
19.4.3維護技術
19.4.4維護的副作用
19.5維護“老化代碼”
19.6逆向工程和再工程
19.6.1預防性維護
19.6.2逆向工程的元素
19.6.3再工程中的重構技術
小結
綜合練習十九
第20章軟體項目管理與計畫
20.1軟體項目管理概述
20.1.1軟體管理的對象
20.1.2軟體開發中的資源
20.1.3分解技術
20.2項目管理過程
20.3軟體開發成本估算
20.3.1軟體開發成本估算方法
20.3.2軟體開發成本估算的經驗模型
20.4風險分析
20.4.1風險識別
20.4.2風險估算
20.4.3風險評價
20.4.4風險駕馭和監控
20.5進度安排
20.5.1軟體開發小組人數與軟體生產率
20.5.2任務的確定與並行性
20.5.3制定開發進度計畫
20.5.4進度安排的圖形方法
20.5.5項目的追蹤和控制
20.6軟體項目的組織
20.6.1軟體項目管理的特點
20.6.2軟體項目組織的建立
20.6.3人員配備
小結
綜合練習二十
參考答案
參考文獻