《軟件工程:面向對象和傳統的方法(原書第8版)》是軟件工程領域的經典著作,被加州大學伯克利分校等180多所美國高校選作教材。本書第8版繼續保持了前七版的特色,采用傳統方法與面向對象方法并重的方式,全面系統地介紹軟件工程的理論與實踐,并新增了第10章(第一部分的關鍵內容)和第18章(新興技術)兩章內容。全書分為兩大部分,第一部分介紹軟件工程概念,第二部分著重軟件工程技術,教師可根據不同教學目的從任一部分開始講授課程。
《軟件工程:面向對象和傳統的方法(原書第8版)》是高等院校軟件工程課程的理想教材,同時也是專業軟件開發人員和管理者的理想參考書。
出版者的話
譯者序
前言
第1章 軟件工程的范疇
1.1 歷史方面
1.2 經濟方面
1.3 維護性方面
1.3.1 維護的傳統和現代觀點
1.3.2 交付后維護的重要性
1.4 需求、分析和設計方面
1.5 小組編程方面
1.6 為什么沒有計劃階段
1.7 為什么沒有測試階段
1.8 為什么沒有文檔階段
1.9 面向對象范型
1.10 正確看待面向對象范型
1.11 術語
1.12 道德問題
本章回顧
進一步閱讀指導
習題
第一部分 軟件工程概念
第2章 軟件生命周期模型
2.1 理論上的軟件開發
2.2 Winburg小型實例研究
2.3 Winburg小型實例研究心得
2.4 野鴨拖拉機公司小型實例研究
2.5 迭代和遞增
2.6 修訂的Winburg小型實例研究
2.7 迭代和遞增的風險和其他方面
2.8 迭代和遞增的控制
2.9 其他生命周期模型
2.9.1 編碼-修補生命周期模型
2.9.2 瀑布生命周期模型
2.9.3 快速原型開發生命周期模型
2.9.4 開源生命周期模型
2.9.5 敏捷過程
2.9.6 同步-穩定生命周期模型
2.9.7 螺旋生命周期模型
2.10 生命周期模型的比較
本章回顧
進一步閱讀指導
習題
第3章 軟件過程
3.1 統一過程
3.2 面向對象范型內的迭代和遞增
3.3 需求流
3.4 分析流
3.5 設計流
3.6 實現流
3.7 測試流
3.7.1 需求制品
3.7.2 分析制品
3.7.3 設計制品
3.7.4 實現制品
3.8 交付后維護
3.9 退役
3.10 統一過程的各階段
3.10.1 開始階段
3.10.2 細化階段
3.10.3 構建階段
3.10.4 轉換階段
3.11 一維與二維生命周期模型
3.12 改進軟件過程
3.13 能力成熟度模型
3.14 軟件過程改進方面的其他努力
3.15 軟件過程改進的代價和收益
本章回顧
進一步閱讀指導
習題
第4章 軟件小組
4.1 小組組織
4.2 民主小組方法
4.3 傳統的主程序員小組方法
4.3.1 《紐約時報》項目
4.3.2 傳統的主程序員小組方法的不實用性
4.4 主程序員小組和民主小組之外的編程小組
4.5 同步-穩定小組
4.6 敏捷過程小組
4.7 開源編程小組
4.8 人員能力成熟度模型
4.9 選擇合適的小組組織
本章回顧
進一步閱讀指導
習題
第5章 軟件工程工具
5.1 逐步求精法
5.2 成本-效益分析法
5.3 分治
5.4 關注分離
5.5 軟件度量
5.6 CASE
5.7 CASE的分類
5.8 CASE的范圍
5.9 軟件版本
5.9.1 修訂版
5.9.2 變種版
5.10 配置控制
5.10.1 交付后維護期間的配置控制
5.10.2 基準
5.10.3 產品開發過程中的配置控制
5.11 建造工具
5.12 使用CASE技術提高生產力
本章回顧
進一步閱讀指導
習題
第6章 測試
6.1 質量問題
6.1.1 軟件質量保證
6.1.2 管理獨立
6.2 非執行測試
6.2.1 走查
6.2.2 管理走查
6.2.3 審查
6.2.4 審查與走查的對比
6.2.5 評審的優缺點
6.2.6 審查的度量
6.3 執行測試
6.4 應該測試什么
6.4.1 實用性
6.4.2 可靠性
6.4.3 健壯性
6.4.4 性能
6.4.5 正確性
6.5 測試與正確性證明
6.5.1 正確性證明的例子
6.5.2 正確性證明小型實例研究
6.5.3 正確性證明和軟件工程
6.6 誰應當完成執行測試
6.7 測試什么時候停止
本章回顧
進一步閱讀指導
習題
第7章 從模塊到對象
7.1 什么是模塊
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.3 耦合
7.3.1 內容耦合
7.3.2 共用耦合
7.3.3 控制耦合
7.3.4 印記耦合
7.3.5 數據耦合
7.3.6 耦合示例
7.3.7 耦合的重要性
7.4 數據封裝
7.4.1 數據封裝和產品開發
7.4.2 數據封裝和產品維護
7.5 抽象數據類型
7.6 信息隱藏
7.7 對象
7.8 繼承、多態和動態綁定
7.9 面向對象范型
本章回顧
進一步閱讀指導
習題
第8章 可重用性和可移植性
8.1 重用的概念
8.2 重用的障礙
8.3 重用實例研究
8.3.1 Raytheon導彈系統部
8.3.2 歐洲航天局
8.4 對象和重用
8.5 設計和實現期間的重用
8.5.1 設計重用
8.5.2 應用框架
8.5.3 設計模式
8.5.4 軟件體系結構
8.5.5 基于組件的軟件工程
8.6 其他設計模式
8.6.1 FLIC小型實例研究
8.6.2 適配器設計模式
8.6.3 橋設計模式
8.6.4 迭代器設計模式
8.6.5 抽象工廠設計模式
8.7 設計模式的種類
8.8 設計模式的優缺點
8.9 重用及互聯網
8.10 重用和交付后維護
8.11 可移植性
8.11.1 硬件的不兼容性
8.11.2 操作系統的不兼容性
8.11.3 數值計算軟件的不兼容性
8.11.4 編譯器的不兼容性
8.12 為什么需要可移植性
8.13 實現可移植性的技術
8.13.1 可移植的系統軟件
8.13.2 可移植的應用軟件
8.13.3 可移植的數據
8.13.4 模型驅動結構
本章回顧
進一步閱讀指導
習題
第9章 計劃和估算
9.1 計劃和軟件過程
9.2 周期和成本估算
9.2.1 產品規模的度量
9.2.2 成本估算技術
9.2.3 中間COCOMO
9.2.4 COCOMO II
9.2.5 跟蹤周期和成本估算
9.3 軟件項目管理計劃的組成
9.4 軟件項目管理計劃框架
9.5 IEEE 軟件項目管理計劃
9.6 計劃測試
9.7 計劃面向對象的項目
9.8 培訓需求
9.9 文檔標準
9.10 用于計劃和估算的CASE工具
9.11 測試軟件項目管理計劃
本章回顧
進一步閱讀指導
習題
第二部分 軟件生命周期的工作流
第10章 第一部分的關鍵內容
10.1 軟件開發:理論與實踐
10.2 迭代和遞增
10.3 統一過程
10.4 工作流概述
10.5 軟件小組
10.6 成本-效益分析法
10.7 度量
10.8 CASE
10.9 版本和配置
10.10 測試術語
10.11 執行測試和非執行測試
10.12 模塊性
10.13 重用
10.14 軟件項目管理計劃
本章回顧
習題
第11章 需求
11.1 確定客戶需要什么
11.2 需求流概述
11.3 理解應用域
11.4 業務模型
11.4.1 訪談
11.4.2 其他技術
11.4.3 用例
11.5 初始需求
11.6 對應用域的初始理解:MSG基金實例研究
11.7 初始業務模型:MSG基金實例研究
11.8 初始需求:MSG基金實例研究
11.9 繼續需求流:MSG基金實例研究
11.10 修訂需求:MSG基金實例研究
11.11 測試流:MSG基金實例研究
11.12 傳統的需求階段
11.13 快速原型開發
11.14 人的因素
11.15 重用快速原型
11.16 需求流的CASE工具
11.17 需求流的度量
11.18 需求流面臨的挑戰
本章回顧
進一步閱讀指導
習題
第12章 傳統的分析
12.1 規格說明文檔
12.2 非形式化規格說明
12.3 結構化系統分析
12.4 結構化系統分析:MSG基金實例研究
12.5 其他半形式化技術
12.6 建造實體-關系模型
12.7 有窮狀態機
12.8 Petri網
12.9 Z
12.9.1 Z:電梯問題實例研究
12.9.2 Z的分析
12.10 其他的形式化技術
12.11 傳統分析技術的比較
12.12 在傳統分析階段測試
12.13 傳統分析階段的CASE工具
12.14 傳統分析階段的度量
12.15 軟件項目管理計劃:MSG基金實例研究
12.16 傳統分析階段面臨的挑戰
本章回顧
進一步閱讀指導
習題
第13章 面向對象分析
13.1 分析流
13.2 抽取實體類
13.3 面向對象分析:電梯問題實例研究
13.4 功能建模:電梯問題實例研究
13.5 實體類建模:電梯問題實例研究
13.5.1 名詞抽取
13.5.2 CRC卡片
13.6 動態建模:電梯問題實例研究
13.7 測試流:面向對象分析
13.8 抽取邊界類和控制類
13.9 初始功能模型:MSG基金實例研究
13.10 初始類圖:MSG基金實例研究
13.11 初始動態模型:MSG基金實例研究
13.12 修訂實體類:MSG基金實例研究
13.13 抽取邊界類:MSG基金實例研究
13.14 抽取控制類:MSG基金實例研究
13.15 用例實現:MSG基金實例研究
13.15.1 Estimate Funds Available for Week用例
13.15.2 Manage an Asset用例
13.15.3 Update Estimated Annual Operating Expenses用例
13.15.4 Produce a Report用例
13.16 類圖遞增:MSG基金實例研究
13.17 測試流:MSG基金實例研究
13.18 統一過程中的規格說明文檔
13.19 關于參與者和用例更詳細的內容
13.20 面向對象分析流的CASE工具
13.21 面向對象分析流的度量
13.22 面向對象分析流面臨的挑戰
本章回顧
進一步閱讀指導
習題
第14章 設計
14.1 設計和抽象
14.2 面向操作設計
14.3 數據流分析
14.3.1 小型實例研究:字數統計
14.3.2 數據流分析擴展
14.4 事務分析
14.5 面向數據設計
14.6 面向對象設計
14.7 面向對象設計:電梯問題實例研究
14.8 面向對象設計:MSG基金實例研究
14.9 設計流
14.10 測試流:設計
14.11 測試流:MSG基金實例研究
14.12 詳細設計的形式化技術
14.13 實時設計技術
14.14 設計的CASE工具
14.15 設計的度量
14.16 設計流面臨的挑戰
本章回顧
進一步閱讀指導
習題
第15章 實現
15.1 編程語言的選擇
15.2 第四代語言
15.3 良好的編程實踐
15.3.1 使用一致和有意義的變量名
15.3.2 自文檔代碼的問題
15.3.3 使用參數
15.3.4 為增加可讀性的代碼編排
15.3.5 嵌套的if語句
15.4 編碼標準
15.5 代碼重用
15.6 集成
15.6.1 自頂向下的集成
15.6.2 自底向上的集成
15.6.3 三明治集成
15.6.4 面向對象產品的集成
15.6.5 集成的管理
15.7 實現流
15.8 實現流:MSG基金實例研究
15.9 測試流:實現
15.10 測試用例選擇
15.10.1 規格說明測試與代碼測試
15.10.2 規格說明測試的可行性
15.10.3 代碼測試的可行性
15.11 黑盒單元測試技術
15.11.1 等價測試和邊界值分析
15.11.2 功能測試
15.12 黑盒測試用例:MSG基金實例研究
15.13 玻璃盒單元測試技術
15.13.1 結構測試:語句、分支和路徑覆蓋
15.13.2 復雜性度量
15.14 代碼走查和審查
15.15 單元測試技術的比較
15.16 凈室
15.17 測試對象時潛在的問題
15.18 單元測試的管理方面
15.19 何時該重實現而不是調試代碼制品
15.20 集成測試
15.21 產品測試
15.22 驗收測試
15.23 測試流:MSG基金實例研究
15.24 實現的CASE工具
15.24.1 軟件開發全過程的CASE工具
15.24.2 集成化開發環境
15.24.3 商業應用環境
15.24.4 公共工具基礎結構
15.24.5 環境的潛在問題
15.25 測試流的CASE工具
15.26 實現流的度量
15.27 實現流面臨的挑戰
本章回顧
進一步閱讀指導
習題
第16章 交付后維護
16.1 開發與維護
16.2 為什么交付后維護是必要的
16.3 對交付后維護程序員的要求是什么
16.4 交付后維護小型實例研究
16.5 交付后維護的管理
16.5.1 缺陷報告
16.5.2 批準對產品的修改
16.5.3 確保可維護性
16.5.4 迭代維護造成的問題
16.6 面向對象軟件的維護
16.7 交付后維護技能與開發技能
16.8 逆向工程
16.9 交付后維護期間的測試
16.10 交付后維護的CASE工具
16.11 交付后維護的度量
16.12 交付后維護:MSG基金實例研究
16.13交付后維護面臨的挑戰
本章回 顧
進一步閱讀指導
習題
第17章 UML的進一步討論
17.1 UML不是一種方法
17.2 類圖
17.2.1 聚合
17.2.2 多重性
17.2.3 組合
17.2.4 泛化
17.2.5 關聯
17.3 注解
17.4 用例圖
17.5 構造型
17.6 交互圖
17.7 狀態圖
17.8 活動圖
17.9 包
17.10 組件圖
17.11 部署圖
17.12 UML圖回顧
17.13 UML和迭代
本章回顧
進一步閱讀指導
習題
第18章 新興技術
18.1 面向層面技術
18.2 模型驅動技術
18.3 基于組件技術
18.4 面向服務技術
18.5 面向服務技術和基于組件技術的比較
18.6 社交計算
18.7 Web工程
18.8 云技術
18.9 Web 3.0
18.10 計算機安全
18.11 模型檢查
18.12 目前和未來
本章回顧
進一步閱讀指導
附錄
附錄A 學期項目:巧克力愛好者匿名
附錄B 軟件工程資源
附錄C 需求流:MSG基金實例研究
附錄D 結構化系統分析:MSG基金實例研究
附錄E 分析流:MSG基金實例研究
附錄F 軟件項目管理計劃:MSG基金實例研究
附錄G 設計流:MSG基金實例研究
附錄H 實現流:MSG基金實例研究(C++版)
附錄I 實現流:MSG基金實例研究(Java版)
附錄J 測試流:MSG基金實例研究