本書系統(tǒng)地介紹了軟件工程的概念、原理、方法和案例,比較全面地反映了軟件工程技術的全貌。全書共3篇,分16章,分別以“面向過程的軟件工程”、“面向對象的軟件工程”和“軟件工程實驗”為主線闡述軟件工程原理和方法。本書第2篇還介紹了軟件體系結構、設計模式、軟件工程新技術等內(nèi)容,體現(xiàn)了軟件工程的最新理論和技術。本書的主要特色是強調以面向過程或面向對象的思想指導軟件開發(fā)過程,并配以實例分析和說明,便于教學和應用。
本書適合作為高等院校計算機、軟件工程專業(yè)或信息類相關專業(yè)本科生或研究生軟件工程課程的教材,也可作為軟件開發(fā)技術人員的參考書。
1.將軟件工程理論緊密結合軟件工程實際。第3篇(第16章)“軟件工程實驗”,介紹圖書館圖書管理系統(tǒng)和瀏覽器系統(tǒng)實驗 2.介紹了最新的綜合案例和工具。
第1篇 面向過程的軟件工程
第1章 概述
1.1 軟件和軟件危機
1.1.1 軟件的定義、特點及分類
1.1.2 軟件危機的定義及表現(xiàn)形式
1.1.3 軟件危機的產(chǎn)生原因及解決途徑
1.2 軟件工程
1.2.1 軟件工程的定義及目標
1.2.2 軟件工程的研究內(nèi)容和基本原理
1.2.3 軟件工程的發(fā)展史
1.3 軟件過程和軟件的生存周期
1.3.1 軟件過程
1.3.2 軟件生存周期
1.4 軟件開發(fā)模型
1.4.1 瀑布模型
第1篇 面向過程的軟件工程
第1章 概述
1.1 軟件和軟件危機
1.1.1 軟件的定義、特點及分類
1.1.2 軟件危機的定義及表現(xiàn)形式
1.1.3 軟件危機的產(chǎn)生原因及解決途徑
1.2 軟件工程
1.2.1 軟件工程的定義及目標
1.2.2 軟件工程的研究內(nèi)容和基本原理
1.2.3 軟件工程的發(fā)展史
1.3 軟件過程和軟件的生存周期
1.3.1 軟件過程
1.3.2 軟件生存周期
1.4 軟件開發(fā)模型
1.4.1 瀑布模型
1.4.2 快速原型模型
1.4.3 增量模型
1.4.4 螺旋模型
1.4.5 噴泉模型
1.4.6 基于構件的開發(fā)模型
1.4.7 統(tǒng)一過程(RUP)模型
1.4.8 基于形式化的開發(fā)模型
1.5 傳統(tǒng)的軟件工程和面向對象的軟件工程
1.5.1 傳統(tǒng)軟件工程方法
1.5.2 面向對象軟件工程方法
1.5.3 傳統(tǒng)軟件工程和面向對象軟件工程的分析方法對比
本章小結
習題1
第2章 可行性研究
2.1 可行性研究的目的和任務
2.2 可行性研究的步驟
2.3 系統(tǒng)流程圖
2.3.1 系統(tǒng)流程圖的符號
2.3.2 系統(tǒng)流程圖示例
2.4 成本-效益分析
2.4.1 貨幣的時間價值
2.4.2 投資回收期
2.4.3 純收入
2.5 可行性研究報告的主要內(nèi)容
本章小結
習題2
第3章 軟件需求分析
3.1 需求分析的任務和步驟
3.1.1 需求分析的任務
3.1.2 需求分析的步驟
3.2 需求獲取的常用方法
3.2.1 需求獲取的常用方法
3.2.2 快速建立軟件原型模型來獲取需求
3.3 需求分析的常用方法
3.3.1 功能分解方法
3.3.2 結構化分析方法
3.3.3 信息建模方法
3.3.4 面向對象方法
3.4 結構化分析方法
3.4.1 自頂向下逐層分解的分析策略
3.4.2 結構化分析描述工具
3.4.3 數(shù)據(jù)流圖
3.4.4 數(shù)據(jù)字典
3.4.5 加工邏輯的描述
3.5 需求分析圖形工具
3.5.1 層次方框圖
3.5.2 維納圖
3.5.3 IPO圖
3.6 SA方法的應用
3.7 數(shù)據(jù)庫內(nèi)容的需求分析和描述
3.7.1 數(shù)據(jù)庫內(nèi)容的需求分析
3.7.2 數(shù)據(jù)庫內(nèi)容的需求分析描述
3.8 需求規(guī)格說明書
本章小結
習題3
第4章 軟件總體設計
4.1 軟件總體設計的目標和任務
4.2 軟件結構設計準則
4.2.1 軟件體系結構設計準則
4.2.2 軟件模塊設計準則
4.3 軟件設計的概念和原理
4.3.1 模塊和模塊化
4.3.2 抽象
4.3.3 信息隱蔽和局部化
4.3.4 模塊獨立性及其度量
4.4 數(shù)據(jù)庫設計
4.4.1 數(shù)據(jù)庫系統(tǒng)的三級模式概念
4.4.2 數(shù)據(jù)庫邏輯設計原則
4.4.3 關系數(shù)據(jù)庫規(guī)范化
4.5 軟件結構設計的圖形工具
4.5.1 軟件結構圖
4.5.2 層次圖
4.5.3 HIPO圖
4.6 結構化設計方法
4.6.1 數(shù)據(jù)流圖及其類型
4.6.2 結構化設計方法的步驟
4.6.3 變換型數(shù)據(jù)流圖的分析設計
4.6.4 事務型數(shù)據(jù)流圖的分析設計
4.6.5 綜合分析設計
4.7 總體設計說明書
本章小結
習題4
第5章 軟件詳細設計
5.1 詳細設計的目的與任務
5.2 結構化程序設計
5.3 詳細設計工具
5.3.1 程序流程圖
5.3.2 盒圖(N-S圖)
5.3.3 問題分析圖(PAD圖)
5.3.4 過程設計語言(PDL)
5.4 人機界面設計
5.4.1 人機界面設計問題
5.4.2 人機界面設計原則
5.4.3 人機界面設計過程
5.5 詳細設計說明書
本章小結
習題5
第6章 軟件編碼
6.1 程序設計語言的分類
6.1.1 基礎語言
6.1.2 結構化語言
6.1.3 面向對象語言
6.2 程序設計語言的選擇
6.3 程序設計風格
6.3.1 程序內(nèi)部文檔
6.3.2 數(shù)據(jù)說明
6.3.3 語句構造
6.3.4 輸入/輸出
6.3.5 效率
本章小結
習題6
第7章 軟件測試
7.1 軟件測試的目標
7.2 軟件測試的原則
7.3 軟件測試方法及分類
7.3.1 靜態(tài)測試與動態(tài)測試
7.3.2 黑盒測試與白盒測試
7.4 軟件測試用例的設計
7.4.1 白盒技術
7.4.2 黑盒技術
7.5 軟件測試過程
7.5.1 單元測試
7.5.2 集成測試
7.5.3 確認測試
7.5.4 系統(tǒng)測試
7.5.5 α測試和β測試
7.6 調試
7.6.1 調試的目的和任務
7.6.2 常用調試技術
7.7 軟件測試階段終止的條件
本章小結
習題7
第8章 軟件維護
8.1 軟件維護概述
8.1.1 軟件維護的定義
8.1.2 軟件維護的分類
8.1.3 軟件維護的特點
8.2 軟件維護的過程
8.2.1 結構化維護與非結構化維護
8.2.2 維護組織
8.2.3 維護工作的流程
8.2.4 維護工作的組織管理
8.3 軟件可維護性
8.3.1 軟件可維護性的定義
8.3.2 軟件可維護性的度量
8.3.3 提高軟件可維護性的方法
8.4 軟件維護中存在的問題
8.4.1 軟件維護困難的表現(xiàn)
8.4.2 軟件維護的副作用
8.4.3 軟件維護的代價
8.5 再工程和逆向工程
8.5.1 再工程與逆向工程的概念
8.5.2 為什么要實施軟件再工程
8.5.3 軟件再工程技術
本章小結
習題8
第2篇 面向對象的軟件工程
第9章 面向對象方法學
9.1 面向對象方法概述
9.1.1 面向對象方法學的發(fā)展
9.1.2 面向對象方法學的優(yōu)點和不足
9.2 面向對象的軟件工程
9.2.1 面向對象基本概念
9.2.2 對象、類及類之間關系的分析
9.2.3 典型的面向對象開發(fā)方法
9.3 統(tǒng)一建模語言UML
9.3.1 UML的發(fā)展
9.3.2 UML的定義及主要內(nèi)容
9.3.3 UML的特點和用途
9.3.4 UML的模型視圖簡介
9.3.5 UML常用軟件開發(fā)工具
9.4 統(tǒng)一軟件開發(fā)過程RUP概述
9.4.1 RUP的歷史
9.4.2 RUP的特色
9.4.3 RUP軟件開發(fā)的生存周期
9.4.4 RUP過程的建!
本章小結
習題9
第10章 面向對象的分析
10.1 面向對象的分析過程
10.1.1 用例模型
10.1.2 對象模型
10.1.3 動態(tài)模型
10.1.4 物理(實現(xiàn))模型
10.1.5 4種模型之間的關系
10.2 建立用例模型
10.2.1 需求分析與用例建!
10.2.2 確定系統(tǒng)范圍和系統(tǒng)邊界
10.2.3 確定參與者
10.2.4 確定用例
10.2.5 確定用例之間的關系
10.3 建立對象模型
10.3.1 確定類和對象
10.3.2 確定關聯(lián)
10.3.3 確定屬性
10.3.4 建立對象類圖
10.3.5 劃分主題
10.3.6 優(yōu)化對象模型
10.4 建立動態(tài)行為模型
10.4.1 建立順序圖
10.4.2 建立通信圖
10.4.3 建立狀態(tài)圖
10.4.4 建立活動圖
10.5 建立物理實現(xiàn)模型
10.5.1 建立構件圖
10.5.2 建立部署圖
10.6 面向對象軟件開發(fā)過程的案例分析
10.6.1 系統(tǒng)需求
10.6.2 系統(tǒng)用例模型
10.6.3 系統(tǒng)對象模型
10.6.4 系統(tǒng)動態(tài)行為模型
10.6.5 系統(tǒng)物理實現(xiàn)模型
本章小結
習題10
第11章 面向對象的設計與實現(xiàn)
11.1 面向對象的設計準則和啟發(fā)式規(guī)則
11.1.1 面向對象設計準則
11.1.2 啟發(fā)式規(guī)則
11.2 系統(tǒng)設計
11.2.1 問題域子系統(tǒng)設計
11.2.2 人機交互子系統(tǒng)設計
11.2.3 任務管理子系統(tǒng)設計
11.2.4 數(shù)據(jù)管理子系統(tǒng)設計
11.3 服務、關聯(lián)與聚合關系設計
11.3.1 服務設計
11.3.2 關聯(lián)設計
11.3.3 聚合關系設計
11.4 面向對象設計優(yōu)化
11.5 面向對象系統(tǒng)的實現(xiàn)
11.5.1 面向對象程序設計語言的選擇
11.5.2 面向對象程序設計風格
本章小結
習題11
第12章 軟件開發(fā)工具StarUML及其應用
12.1 軟件開發(fā)工具StarUML概述
12.1.1 StarUML的安裝及使用
12.1.2 StarUML的主要功能
12.2 StarUML環(huán)境下的UML圖形建模
12.2.1 StarUML的用例圖、類圖和包圖
12.2.2 StarUML的交互圖和狀態(tài)機圖
12.2.3 StarUML的構件圖與部署圖
12.2.4 StarUML的正向工程和逆向工程
12.3 一個簡易教學管理系統(tǒng)的分析和設計
12.3.1 系統(tǒng)需求描述及分析
12.3.2 系統(tǒng)問題領域分析
12.3.3 靜態(tài)結構模型的建立
12.3.4 動態(tài)行為模型的建立
12.3.5 系統(tǒng)物理模型的建立
12.3.6 代碼框架自動生成的過程
本章小結
習題12
第13章 軟件體系結構
13.1 軟件體系結構概述
13.2 經(jīng)典的軟件體系結構風格
13.2.1 管道-過濾器(流程處理)體系結構
13.2.2 分層體系結構
13.2.3 客戶機/服務器體系結構
13.2.4 瀏覽器/服務器體系結構(B/S)
13.3 現(xiàn)代的軟件體系結構風格
13.3.1 公共對象請求代理體系結構
13.3.2 基于層次消息總線的體系結構風格
13.3.3 異構結構風格
本章小結
習題13
第14章 設計模式
14.1 設計模式概述
14.1.1 設計模式的出現(xiàn)和發(fā)展
14.1.2 設計模式和軟件體系結構的關系
14.1.3 設計模式的優(yōu)點和分類
14.2 GRASP設計模式及其應用
14.2.1 GRASP設計模式概念及其分類
14.2.2 幾種典型的GRASP設計模式應用簡介
14.3 GoF設計模式及其應用
14.3.1 GoF設計模式的組成及其分類
14.3.2 創(chuàng)建型GoF設計模式應用實例
14.3.3 結構型GoF設計模式應用實例
14.3.4 行為型GoF設計模式應用實例
本章小結
習題14
第15章 軟件工程新技術
15.1 軟件復用技術
15.1.1 軟件復用概念及分類
15.1.2 軟件復用的關鍵技術和復用粒度
15.2 基于構件的軟件工程技術
15.2.1 中間件技術
15.2.2 構件與構件化
15.2.3 構件模型及描述語言
15.2.4 構件的檢索與組裝
15.2.5 基于構件的軟件工程方法
15.2.6 SOA與SaaS
15.3 軟件過程與標準化
15.3.1 軟件過程及其改進
15.3.2 ISO 9000標準
15.3.3 軟件能力成熟度模型(CMM)
15.3.4 PSP、TSP和CMMI
15.4 敏捷軟件開發(fā)過程
15.4.1 敏捷及敏捷過程相關概念
15.4.2 典型的敏捷過程模型
15.5 Web軟件工程
15.5.1 Web軟件工程概述
15.5.2 Web軟件的需求分析
15.5.3 Web軟件的設計
15.5.4 Web軟件的測試
15.6 軟件產(chǎn)品線技術
15.6.1 軟件產(chǎn)品線基本概念
15.6.2 軟件產(chǎn)品線方法
15.6.3 北大青鳥工程
本章小結
習題15
第3篇 軟件工程實驗
第16章 軟件工程實驗
16.1 面向過程的軟件工程實驗
實驗1 圖書管理系統(tǒng)的可行性分析
實驗2 圖書管理系統(tǒng)的項目開發(fā)計劃
實驗3 圖書管理系統(tǒng)的需求分析
實驗4 圖書管理系統(tǒng)的總體設計
實驗5 圖書管理系統(tǒng)的詳細設計及編碼實現(xiàn)
實驗6 圖書管理系統(tǒng)的測試
實驗7 圖書管理系統(tǒng)用戶手冊的撰寫
實驗8 圖書管理系統(tǒng)項目開發(fā)總結報告的撰寫
16.2 面向對象的軟件工程實驗
實驗9 瀏覽器系統(tǒng)的可行性分析
實驗10 瀏覽器系統(tǒng)的項目開發(fā)計劃
實驗11 瀏覽器系統(tǒng)的需求分析
實驗12 瀏覽器系統(tǒng)的體系結構設計
實驗13 采用面向對象方法進行瀏覽器系統(tǒng)的詳細設計
實驗14 利用StarUML正向工程功能完成代碼框架的自動生成實驗
實驗15 利用StarUML逆向工程功能完成修改設計的實驗
實驗16 瀏覽器系統(tǒng)的測試
實驗17 瀏覽器系統(tǒng)用戶手冊的撰寫
實驗18 瀏覽器系統(tǒng)項目開發(fā)總結報告的撰寫
附錄A UML圖總結
A.1 活動圖
A.2 類圖
A.3 通信圖
A.4 構件圖
A.5 組合結構圖
A.6 部署圖
A.7 對象圖
A.8 包圖
A.9 參數(shù)化通信圖
A.10 順序圖
A.11 狀態(tài)圖
A.12 計時圖
A.13 用例圖
附錄B UML中定義的常用版型(stereotype)、約束(constraint)和標記(tag)
附錄C GOF給出的軟件設計模式
C.1 創(chuàng)建型模式(Creational)
C.2 結構型(Structural)模式
C.3 行為(Behavioral)模式
參考文獻