《21世紀復(fù)旦大學(xué)研究生教學(xué)用書·軟件工程:方法與實踐》系統(tǒng)性地介紹軟件工程的基本概念、軟件開發(fā)過程以及需求工程、軟件設(shè)計、軟件構(gòu)造、軟件測試、軟件維護等基本的軟件工程技術(shù)。此外,本書還介紹基于構(gòu)件的軟件開發(fā)方法、軟件產(chǎn)品線開發(fā)方法、模型驅(qū)動的體系結(jié)構(gòu)等新的軟件開發(fā)方法。本書突出軟件工程方法的工程實踐,以大量的實踐案例和示例貫穿各部分內(nèi)容,同時基于軟件構(gòu)造工具、軟件測試工具、軟件維護工具等介紹相應(yīng)的工程實踐。
《21世紀復(fù)旦大學(xué)研究生教學(xué)用書·軟件工程:方法與實踐》第1章對軟件工程的基本概念、軟件開發(fā)的根本性困難以及軟件工程知識領(lǐng)域進行概述。第2章介紹軟件過程。第3章至第7章按照軟件開發(fā)的基本過程分別介紹需求工程、軟件設(shè)計、軟件構(gòu)造、軟件測試和軟件維護5個技術(shù)領(lǐng)域。第8章和第9章則分別介紹軟件復(fù)用與構(gòu)件技術(shù)和軟件產(chǎn)品線。最后,第10章介紹幾種軟件開發(fā)新技術(shù)(面向方面的編程、面向特征的編程、模型驅(qū)動的體系結(jié)構(gòu))。
第1章 軟件工程概述
1.1軟件工程基本概念
1.2軟件開發(fā)的根本性困難
1.3軟件工程知識領(lǐng)域
1.4各章內(nèi)容簡介
1.4.1軟件過程
1.4.2需求工程
1.4.3軟件設(shè)計
1.4.4軟件構(gòu)造
1.4.5軟件測試
1.4.6軟件維護
1.4.7軟件復(fù)用與構(gòu)件技術(shù)
1.4.8軟件產(chǎn)品線
1.4.9軟件開發(fā)新技術(shù)
本章參考文獻
第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用況驅(qū)動,以構(gòu)架為中心
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章 軟件設(shè)計
4.1軟件設(shè)計概述
4.1.1軟件設(shè)計的目標
4.1.2軟件設(shè)計的相關(guān)概念
4.1.3軟件設(shè)計的設(shè)計原則
4.1.4軟件設(shè)計的過程模型
4.2模型和視圖4.2.1模型
4.2.2視圖
4.2.3UML建模語言
4.3質(zhì)量屬性
4.3.1質(zhì)量屬性和設(shè)計
4.3.2ISO/IEC25010
4.3.3質(zhì)量屬性效用樹
4.4軟件體系結(jié)構(gòu)設(shè)計
4.4.1軟件體系結(jié)構(gòu)的定義
4.4.2軟件體系結(jié)構(gòu)視圖
4.4.3風(fēng)格、模式和框架
4.4.4軟件體系結(jié)構(gòu)模式
4.5設(shè)計評審
4.5.1設(shè)計評審目標
4.5.2設(shè)計評審原則
4.5.3體系結(jié)構(gòu)評估方法
本章參考文獻
第5章 軟件構(gòu)造
5.1軟件構(gòu)造的概述
5.2構(gòu)造階段的設(shè)計
5.2.1抽象數(shù)據(jù)類型
5.2.2類和接口
5.2.3依賴
5.2.4契約式設(shè)計
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測試驅(qū)動開發(fā)
5.5集成
5.5.1“大爆炸”集成和增量集成
5.5.2持續(xù)集成
5.6軟件構(gòu)造工具
5.6.1版本管理系統(tǒng)
5.6.2編譯和調(diào)試工具
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軟件測試技術(shù)
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面向?qū)ο筌浖臏y試
6.6.1面向?qū)ο筌浖䴗y試的難點
6.6.2面向?qū)ο筌浖臏y試方法
本章參考文獻
第7章 軟件維護
7.1軟件維護概述
7.1.1軟件維護類型
7.1.2軟件的可維護性
7.1.3軟件維護過程
7.1.4軟件再工程
7.1.5軟件維護技術(shù)
7.2軟件分析
7.2.1靜態(tài)分析
7.2.2動態(tài)分析
7.2.3開發(fā)歷史分析
7.3程序理解與變更影響分析
7.3.1特征定位
7.3.2軟件制品追蹤關(guān)系
7.3.3變更影響分析
7.4軟件逆向工程
7.4.1軟件逆向工程概述
7.4.2程序度量
7.4.3模型逆向恢復(fù)
7.4.4軟件體系結(jié)構(gòu)逆向恢復(fù)
7.4.5軟件可視化
7.5軟件重構(gòu)
7.5.1代碼的壞味道
7.5.2基本的軟件重構(gòu)類型
7.5.3重構(gòu)的原則
7.6軟件維護工具
7.6.1缺陷跟蹤管理工具
7.6.2任務(wù)管理工具
7.6.3特征定位工具
7.6.4克隆分析工具
7.6.5逆向分析工具
7.6.6代碼分析和度量工具
本章參考文獻
第8章 軟件復(fù)用與構(gòu)件技術(shù)
8.1軟件復(fù)用基礎(chǔ)
8.1.1軟件復(fù)用分類
8.1.2軟件復(fù)用的發(fā)展、現(xiàn)狀與挑戰(zhàn)
8.1.3軟件復(fù)用經(jīng)濟學(xué)
8.2軟件復(fù)用過程
8.2.1軟件復(fù)用的一般過程
8.2.2復(fù)用過程標準IEEE 1517
8.2.3軟件復(fù)用成熟度模型
8.3軟件復(fù)用技術(shù)
8.3.1生成式復(fù)用
8.3.2組裝式復(fù)用
8.3.3面向?qū)ο蠹夹g(shù)中的軟件復(fù)用
8.4基于構(gòu)件的軟件開發(fā)
8.4.1軟件構(gòu)件的定義
8.4.2軟件構(gòu)件模型
8.4.3構(gòu)件組裝技術(shù)
8.4.4商用成品構(gòu)件
8.4.5構(gòu)件管理
8.4.6構(gòu)件化對企業(yè)的影響
8.5基于框架與中間件的復(fù)用
8.5.1框架技術(shù)
8.5.2中間件技術(shù)
本章參考文獻
第9章 軟件產(chǎn)品線
9.1軟件產(chǎn)品線基本思想和方法
9.1.1從軟件復(fù)用到軟件產(chǎn)品線
9.1.2軟件產(chǎn)品線工程
9.1.3軟件產(chǎn)品線的特點和優(yōu)勢
9.1.4軟件產(chǎn)品線開發(fā)過程
9.2軟件產(chǎn)品線范圍和可變性
9.2.1產(chǎn)品線開發(fā)經(jīng)濟效益
9.2.2產(chǎn)品線范圍
9.2.3軟件產(chǎn)品線可變性
9.3領(lǐng)域工程
9.3.1領(lǐng)域需求工程
9.3.2領(lǐng)域設(shè)計
9.3.3領(lǐng)域?qū)崿F(xiàn)
9.4應(yīng)用系統(tǒng)工程
9.4.1應(yīng)用系統(tǒng)需求工程
9.4.2應(yīng)用系統(tǒng)設(shè)計
9.4.3應(yīng)用系統(tǒng)實現(xiàn)
9.5軟件產(chǎn)品線管理
9.5.1軟件產(chǎn)品線管理中的特殊問題
9.5.2軟件產(chǎn)品線組織管理
9.5.3軟件產(chǎn)品線技術(shù)管理
本章參考文獻
第10章 軟件開發(fā)新技術(shù)
10.1面向方面的編程
10.1.1AOP概述
10.1.2AOP與OOP的關(guān)系
10.1.3AOP的實現(xiàn)框架與工具
10.1.4AspectJ簡介及其應(yīng)用實例
10.1.5Spring AOP簡介及其應(yīng)用實例
10.1.6JBoss AOP簡介及其應(yīng)用實例
10.2面向特征的編程
10.2.1FOP概述
10.2.2FOP語言模型
10.2.3FeatureIDE
10.3模型驅(qū)動的體系結(jié)構(gòu)
10.3.1MDA概述
10.3.2MDA模型體系
10.3.3基于MDA的軟件開發(fā)過程
10.3.4MDA應(yīng)用實例
本章參考文獻