《21世紀復旦大學研究生教學用書·軟件工程:方法與實踐》系統(tǒng)性地介紹軟件工程的基本概念、軟件開發(fā)過程以及需求工程、軟件設計、軟件構造、軟件測試、軟件維護等基本的軟件工程技術。此外,本書還介紹基于構件的軟件開發(fā)方法、軟件產品線開發(fā)方法、模型驅動的體系結構等新的軟件開發(fā)方法。本書突出軟件工程方法的工程實踐,以大量的實踐案例和示例貫穿各部分內容,同時基于軟件構造工具、軟件測試工具、軟件維護工具等介紹相應的工程實踐。
《21世紀復旦大學研究生教學用書·軟件工程:方法與實踐》第1章對軟件工程的基本概念、軟件開發(fā)的根本性困難以及軟件工程知識領域進行概述。第2章介紹軟件過程。第3章至第7章按照軟件開發(fā)的基本過程分別介紹需求工程、軟件設計、軟件構造、軟件測試和軟件維護5個技術領域。第8章和第9章則分別介紹軟件復用與構件技術和軟件產品線。最后,第10章介紹幾種軟件開發(fā)新技術(面向方面的編程、面向特征的編程、模型驅動的體系結構)。
第1章 軟件工程概述
1.1軟件工程基本概念
1.2軟件開發(fā)的根本性困難
1.3軟件工程知識領域
1.4各章內容簡介
1.4.1軟件過程
1.4.2需求工程
1.4.3軟件設計
1.4.4軟件構造
1.4.5軟件測試
1.4.6軟件維護
1.4.7軟件復用與構件技術
1.4.8軟件產品線
1.4.9軟件開發(fā)新技術
本章參考文獻
第2章 軟件過程
2.1概述
2.1.1基本概念
2.1.2ISO/IEC 12207軟件生存周期過程
2.1.3軟件過程模型
2.2統(tǒng)一軟件開發(fā)過程
2.2.1迭代和增量的過程框架
2.2.2用況驅動,以構架為中心
2.2.3核心工作流
2.3敏捷和精益方法
2.3.1概述
2.3.2敏捷方法的價值觀和原則
2.3.3精益思想
2.3.4敏捷和精益實踐簡介
2.4軟件能力成熟度和過程改進
2.4.1軟件過程改進
2.4.2能力成熟度模型集成
本章參考文獻
第3章 軟件需求工程
3.1需求工程概述
3.1.1軟件需求
3.1.2現(xiàn)狀與挑戰(zhàn)
3.1.3需求制品
3.1.4需求工程過程及活動
3.2系統(tǒng)與上下文分析
3.2.1軟件密集型系統(tǒng)
3.2.2從系統(tǒng)需求到軟件需求
3.2.3系統(tǒng)上下文
3.2.4問題框架方法
3.3需求制品
3.3.1目標
3.3.2場景
3.3.3面向方案的需求
3.4需求工程活動
3.4.1需求獲取
3.4.2需求分析
3.4.3文檔化
3.4.4需求確認
3.5需求管理
3.5.1需求追蹤管理
3.5.2需求優(yōu)先級管理
3.5.3需求變更管理
本章參考文獻
第4章 軟件設計
4.1軟件設計概述
4.1.1軟件設計的目標
4.1.2軟件設計的相關概念
4.1.3軟件設計的設計原則
4.1.4軟件設計的過程模型
4.2模型和視圖4.2.1模型
4.2.2視圖
4.2.3UML建模語言
4.3質量屬性
4.3.1質量屬性和設計
4.3.2ISO/IEC25010
4.3.3質量屬性效用樹
4.4軟件體系結構設計
4.4.1軟件體系結構的定義
4.4.2軟件體系結構視圖
4.4.3風格、模式和框架
4.4.4軟件體系結構模式
4.5設計評審
4.5.1設計評審目標
4.5.2設計評審原則
4.5.3體系結構評估方法
本章參考文獻
第5章 軟件構造
5.1軟件構造的概述
5.2構造階段的設計
5.2.1抽象數(shù)據(jù)類型
5.2.2類和接口
5.2.3依賴
5.2.4契約式設計
5.3編碼
5.3.1語言
5.3.2編程規(guī)范
5.3.3錯誤處理
5.4單元測試
5.4.1基本概念
5.4.2自動化單元測試框架
5.4.3依賴和測試替身
5.4.4測試先行
5.4.5測試驅動開發(fā)
5.5集成
5.5.1“大爆炸”集成和增量集成
5.5.2持續(xù)集成
5.6軟件構造工具
5.6.1版本管理系統(tǒng)
5.6.2編譯和調試工具
5.6.3集成開發(fā)環(huán)境
本章參考文獻
第6章 軟件測試
6.1軟件測試概述
6.1.1軟件測試的價值
6.1.2軟件測試的概念
6.1.3典型的軟件測試級別
6.1.4軟件測試的原則
6.2軟件測試過程
6.2.1軟件測試過程模型
6.2.2軟件測試標準
6.3軟件測試技術
6.3.1黑盒測試
6.3.2白盒測試
6.3.3組合測試
6.3.4變異測試
6.3.5靜態(tài)測試
6.4軟件測試類型
6.4.1單元測試
6.4.2集成測試
6.4.3系統(tǒng)測試
6.4.4驗收測試
6.4.5回歸測試
6.5軟件測試工具
6.5.1靜態(tài)代碼分析工具
6.5.2系統(tǒng)測試工具
6.6面向對象軟件的測試
6.6.1面向對象軟件測試的難點
6.6.2面向對象軟件的測試方法
本章參考文獻
第7章 軟件維護
7.1軟件維護概述
7.1.1軟件維護類型
7.1.2軟件的可維護性
7.1.3軟件維護過程
7.1.4軟件再工程
7.1.5軟件維護技術
7.2軟件分析
7.2.1靜態(tài)分析
7.2.2動態(tài)分析
7.2.3開發(fā)歷史分析
7.3程序理解與變更影響分析
7.3.1特征定位
7.3.2軟件制品追蹤關系
7.3.3變更影響分析
7.4軟件逆向工程
7.4.1軟件逆向工程概述
7.4.2程序度量
7.4.3模型逆向恢復
7.4.4軟件體系結構逆向恢復
7.4.5軟件可視化
7.5軟件重構
7.5.1代碼的壞味道
7.5.2基本的軟件重構類型
7.5.3重構的原則
7.6軟件維護工具
7.6.1缺陷跟蹤管理工具
7.6.2任務管理工具
7.6.3特征定位工具
7.6.4克隆分析工具
7.6.5逆向分析工具
7.6.6代碼分析和度量工具
本章參考文獻
第8章 軟件復用與構件技術
8.1軟件復用基礎
8.1.1軟件復用分類
8.1.2軟件復用的發(fā)展、現(xiàn)狀與挑戰(zhàn)
8.1.3軟件復用經(jīng)濟學
8.2軟件復用過程
8.2.1軟件復用的一般過程
8.2.2復用過程標準IEEE 1517
8.2.3軟件復用成熟度模型
8.3軟件復用技術
8.3.1生成式復用
8.3.2組裝式復用
8.3.3面向對象技術中的軟件復用
8.4基于構件的軟件開發(fā)
8.4.1軟件構件的定義
8.4.2軟件構件模型
8.4.3構件組裝技術
8.4.4商用成品構件
8.4.5構件管理
8.4.6構件化對企業(yè)的影響
8.5基于框架與中間件的復用
8.5.1框架技術
8.5.2中間件技術
本章參考文獻
第9章 軟件產品線
9.1軟件產品線基本思想和方法
9.1.1從軟件復用到軟件產品線
9.1.2軟件產品線工程
9.1.3軟件產品線的特點和優(yōu)勢
9.1.4軟件產品線開發(fā)過程
9.2軟件產品線范圍和可變性
9.2.1產品線開發(fā)經(jīng)濟效益
9.2.2產品線范圍
9.2.3軟件產品線可變性
9.3領域工程
9.3.1領域需求工程
9.3.2領域設計
9.3.3領域實現(xiàn)
9.4應用系統(tǒng)工程
9.4.1應用系統(tǒng)需求工程
9.4.2應用系統(tǒng)設計
9.4.3應用系統(tǒng)實現(xiàn)
9.5軟件產品線管理
9.5.1軟件產品線管理中的特殊問題
9.5.2軟件產品線組織管理
9.5.3軟件產品線技術管理
本章參考文獻
第10章 軟件開發(fā)新技術
10.1面向方面的編程
10.1.1AOP概述
10.1.2AOP與OOP的關系
10.1.3AOP的實現(xiàn)框架與工具
10.1.4AspectJ簡介及其應用實例
10.1.5Spring AOP簡介及其應用實例
10.1.6JBoss AOP簡介及其應用實例
10.2面向特征的編程
10.2.1FOP概述
10.2.2FOP語言模型
10.2.3FeatureIDE
10.3模型驅動的體系結構
10.3.1MDA概述
10.3.2MDA模型體系
10.3.3基于MDA的軟件開發(fā)過程
10.3.4MDA應用實例
本章參考文獻