本書系統(tǒng)地介紹了軟件工程的概念、原理、方法和案例,比較全面地反映了軟件工程技術(shù)的全貌。全書共3篇,分16章,分別以“面向過程的軟件工程”、“面向?qū)ο蟮能浖こ獭焙汀败浖こ虒嶒灐睘橹骶闡述軟件工程原理和方法。本書第2篇還介紹了軟件體系結(jié)構(gòu)、設(shè)計模式、軟件工程新技術(shù)等內(nèi)容,體現(xiàn)了軟件工程的最新理論和技術(shù)。本書的主要特色是強調(diào)以面向過程或面向?qū)ο蟮乃枷胫笇?dǎo)軟件開發(fā)過程,并配以實例分析和說明,便于教學(xué)和應(yīng)用。
本書適合作為高等院校計算機、軟件工程專業(yè)或信息類相關(guān)專業(yè)本科生或研究生軟件工程課程的教材,也可作為軟件開發(fā)技術(shù)人員的參考書。
1.將軟件工程理論緊密結(jié)合軟件工程實際。第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 軟件工程的定義及目標(biāo)
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 軟件工程的定義及目標(biāo)
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 基于構(gòu)件的開發(fā)模型
1.4.7 統(tǒng)一過程(RUP)模型
1.4.8 基于形式化的開發(fā)模型
1.5 傳統(tǒng)的軟件工程和面向?qū)ο蟮能浖こ獭?br />1.5.1 傳統(tǒng)軟件工程方法
1.5.2 面向?qū)ο筌浖こ谭椒ā?br />1.5.3 傳統(tǒng)軟件工程和面向?qū)ο筌浖こ痰姆治龇椒▽Ρ取?br />本章小結(jié)
習(xí)題1
第2章 可行性研究
2.1 可行性研究的目的和任務(wù)
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)容
本章小結(jié)
習(xí)題2
第3章 軟件需求分析
3.1 需求分析的任務(wù)和步驟
3.1.1 需求分析的任務(wù)
3.1.2 需求分析的步驟
3.2 需求獲取的常用方法
3.2.1 需求獲取的常用方法
3.2.2 快速建立軟件原型模型來獲取需求
3.3 需求分析的常用方法
3.3.1 功能分解方法
3.3.2 結(jié)構(gòu)化分析方法
3.3.3 信息建模方法
3.3.4 面向?qū)ο蠓椒ā?br />3.4 結(jié)構(gòu)化分析方法
3.4.1 自頂向下逐層分解的分析策略
3.4.2 結(jié)構(gòu)化分析描述工具
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方法的應(yīng)用
3.7 數(shù)據(jù)庫內(nèi)容的需求分析和描述
3.7.1 數(shù)據(jù)庫內(nèi)容的需求分析
3.7.2 數(shù)據(jù)庫內(nèi)容的需求分析描述
3.8 需求規(guī)格說明書
本章小結(jié)
習(xí)題3
第4章 軟件總體設(shè)計
4.1 軟件總體設(shè)計的目標(biāo)和任務(wù)
4.2 軟件結(jié)構(gòu)設(shè)計準(zhǔn)則
4.2.1 軟件體系結(jié)構(gòu)設(shè)計準(zhǔn)則
4.2.2 軟件模塊設(shè)計準(zhǔn)則
4.3 軟件設(shè)計的概念和原理
4.3.1 模塊和模塊化
4.3.2 抽象
4.3.3 信息隱蔽和局部化
4.3.4 模塊獨立性及其度量
4.4 數(shù)據(jù)庫設(shè)計
4.4.1 數(shù)據(jù)庫系統(tǒng)的三級模式概念
4.4.2 數(shù)據(jù)庫邏輯設(shè)計原則
4.4.3 關(guān)系數(shù)據(jù)庫規(guī)范化
4.5 軟件結(jié)構(gòu)設(shè)計的圖形工具
4.5.1 軟件結(jié)構(gòu)圖
4.5.2 層次圖
4.5.3 HIPO圖
4.6 結(jié)構(gòu)化設(shè)計方法
4.6.1 數(shù)據(jù)流圖及其類型
4.6.2 結(jié)構(gòu)化設(shè)計方法的步驟
4.6.3 變換型數(shù)據(jù)流圖的分析設(shè)計
4.6.4 事務(wù)型數(shù)據(jù)流圖的分析設(shè)計
4.6.5 綜合分析設(shè)計
4.7 總體設(shè)計說明書
本章小結(jié)
習(xí)題4
第5章 軟件詳細設(shè)計
5.1 詳細設(shè)計的目的與任務(wù)
5.2 結(jié)構(gòu)化程序設(shè)計
5.3 詳細設(shè)計工具
5.3.1 程序流程圖
5.3.2 盒圖(N-S圖)
5.3.3 問題分析圖(PAD圖)
5.3.4 過程設(shè)計語言(PDL)
5.4 人機界面設(shè)計
5.4.1 人機界面設(shè)計問題
5.4.2 人機界面設(shè)計原則
5.4.3 人機界面設(shè)計過程
5.5 詳細設(shè)計說明書
本章小結(jié)
習(xí)題5
第6章 軟件編碼
6.1 程序設(shè)計語言的分類
6.1.1 基礎(chǔ)語言
6.1.2 結(jié)構(gòu)化語言
6.1.3 面向?qū)ο笳Z言
6.2 程序設(shè)計語言的選擇
6.3 程序設(shè)計風(fēng)格
6.3.1 程序內(nèi)部文檔
6.3.2 數(shù)據(jù)說明
6.3.3 語句構(gòu)造
6.3.4 輸入/輸出
6.3.5 效率
本章小結(jié)
習(xí)題6
第7章 軟件測試
7.1 軟件測試的目標(biāo)
7.2 軟件測試的原則
7.3 軟件測試方法及分類
7.3.1 靜態(tài)測試與動態(tài)測試
7.3.2 黑盒測試與白盒測試
7.4 軟件測試用例的設(shè)計
7.4.1 白盒技術(shù)
7.4.2 黑盒技術(shù)
7.5 軟件測試過程
7.5.1 單元測試
7.5.2 集成測試
7.5.3 確認(rèn)測試
7.5.4 系統(tǒng)測試
7.5.5 α測試和β測試
7.6 調(diào)試
7.6.1 調(diào)試的目的和任務(wù)
7.6.2 常用調(diào)試技術(shù)
7.7 軟件測試階段終止的條件
本章小結(jié)
習(xí)題7
第8章 軟件維護
8.1 軟件維護概述
8.1.1 軟件維護的定義
8.1.2 軟件維護的分類
8.1.3 軟件維護的特點
8.2 軟件維護的過程
8.2.1 結(jié)構(gòu)化維護與非結(jié)構(gòu)化維護
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 軟件再工程技術(shù)
本章小結(jié)
習(xí)題8
第2篇 面向?qū)ο蟮能浖こ?/p>
第9章 面向?qū)ο蠓椒▽W(xué)
9.1 面向?qū)ο蠓椒ǜ攀觥?br />9.1.1 面向?qū)ο蠓椒▽W(xué)的發(fā)展
9.1.2 面向?qū)ο蠓椒▽W(xué)的優(yōu)點和不足
9.2 面向?qū)ο蟮能浖こ獭?br />9.2.1 面向?qū)ο蠡靖拍睢?br />9.2.2 對象、類及類之間關(guān)系的分析
9.2.3 典型的面向?qū)ο箝_發(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過程的建!
本章小結(jié)
習(xí)題9
第10章 面向?qū)ο蟮姆治觥?br />10.1 面向?qū)ο蟮姆治鲞^程
10.1.1 用例模型
10.1.2 對象模型
10.1.3 動態(tài)模型
10.1.4 物理(實現(xiàn))模型
10.1.5 4種模型之間的關(guān)系
10.2 建立用例模型
10.2.1 需求分析與用例建!
10.2.2 確定系統(tǒng)范圍和系統(tǒng)邊界
10.2.3 確定參與者
10.2.4 確定用例
10.2.5 確定用例之間的關(guān)系
10.3 建立對象模型
10.3.1 確定類和對象
10.3.2 確定關(guān)聯(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 建立構(gòu)件圖
10.5.2 建立部署圖
10.6 面向?qū)ο筌浖_發(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)模型
本章小結(jié)
習(xí)題10
第11章 面向?qū)ο蟮脑O(shè)計與實現(xiàn)
11.1 面向?qū)ο蟮脑O(shè)計準(zhǔn)則和啟發(fā)式規(guī)則
11.1.1 面向?qū)ο笤O(shè)計準(zhǔn)則
11.1.2 啟發(fā)式規(guī)則
11.2 系統(tǒng)設(shè)計
11.2.1 問題域子系統(tǒng)設(shè)計
11.2.2 人機交互子系統(tǒng)設(shè)計
11.2.3 任務(wù)管理子系統(tǒng)設(shè)計
11.2.4 數(shù)據(jù)管理子系統(tǒng)設(shè)計
11.3 服務(wù)、關(guān)聯(lián)與聚合關(guān)系設(shè)計
11.3.1 服務(wù)設(shè)計
11.3.2 關(guān)聯(lián)設(shè)計
11.3.3 聚合關(guān)系設(shè)計
11.4 面向?qū)ο笤O(shè)計優(yōu)化
11.5 面向?qū)ο笙到y(tǒng)的實現(xiàn)
11.5.1 面向?qū)ο蟪绦蛟O(shè)計語言的選擇
11.5.2 面向?qū)ο蟪绦蛟O(shè)計風(fēng)格
本章小結(jié)
習(xí)題11
第12章 軟件開發(fā)工具StarUML及其應(yīng)用
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的構(gòu)件圖與部署圖
12.2.4 StarUML的正向工程和逆向工程
12.3 一個簡易教學(xué)管理系統(tǒng)的分析和設(shè)計
12.3.1 系統(tǒng)需求描述及分析
12.3.2 系統(tǒng)問題領(lǐng)域分析
12.3.3 靜態(tài)結(jié)構(gòu)模型的建立
12.3.4 動態(tài)行為模型的建立
12.3.5 系統(tǒng)物理模型的建立
12.3.6 代碼框架自動生成的過程
本章小結(jié)
習(xí)題12
第13章 軟件體系結(jié)構(gòu)
13.1 軟件體系結(jié)構(gòu)概述
13.2 經(jīng)典的軟件體系結(jié)構(gòu)風(fēng)格
13.2.1 管道-過濾器(流程處理)體系結(jié)構(gòu)
13.2.2 分層體系結(jié)構(gòu)
13.2.3 客戶機/服務(wù)器體系結(jié)構(gòu)
13.2.4 瀏覽器/服務(wù)器體系結(jié)構(gòu)(B/S)
13.3 現(xiàn)代的軟件體系結(jié)構(gòu)風(fēng)格
13.3.1 公共對象請求代理體系結(jié)構(gòu)
13.3.2 基于層次消息總線的體系結(jié)構(gòu)風(fēng)格
13.3.3 異構(gòu)結(jié)構(gòu)風(fēng)格
本章小結(jié)
習(xí)題13
第14章 設(shè)計模式
14.1 設(shè)計模式概述
14.1.1 設(shè)計模式的出現(xiàn)和發(fā)展
14.1.2 設(shè)計模式和軟件體系結(jié)構(gòu)的關(guān)系
14.1.3 設(shè)計模式的優(yōu)點和分類
14.2 GRASP設(shè)計模式及其應(yīng)用
14.2.1 GRASP設(shè)計模式概念及其分類
14.2.2 幾種典型的GRASP設(shè)計模式應(yīng)用簡介
14.3 GoF設(shè)計模式及其應(yīng)用
14.3.1 GoF設(shè)計模式的組成及其分類
14.3.2 創(chuàng)建型GoF設(shè)計模式應(yīng)用實例
14.3.3 結(jié)構(gòu)型GoF設(shè)計模式應(yīng)用實例
14.3.4 行為型GoF設(shè)計模式應(yīng)用實例
本章小結(jié)
習(xí)題14
第15章 軟件工程新技術(shù)
15.1 軟件復(fù)用技術(shù)
15.1.1 軟件復(fù)用概念及分類
15.1.2 軟件復(fù)用的關(guān)鍵技術(shù)和復(fù)用粒度
15.2 基于構(gòu)件的軟件工程技術(shù)
15.2.1 中間件技術(shù)
15.2.2 構(gòu)件與構(gòu)件化
15.2.3 構(gòu)件模型及描述語言
15.2.4 構(gòu)件的檢索與組裝
15.2.5 基于構(gòu)件的軟件工程方法
15.2.6 SOA與SaaS
15.3 軟件過程與標(biāo)準(zhǔn)化
15.3.1 軟件過程及其改進
15.3.2 ISO 9000標(biāo)準(zhǔn)
15.3.3 軟件能力成熟度模型(CMM)
15.3.4 PSP、TSP和CMMI
15.4 敏捷軟件開發(fā)過程
15.4.1 敏捷及敏捷過程相關(guān)概念
15.4.2 典型的敏捷過程模型
15.5 Web軟件工程
15.5.1 Web軟件工程概述
15.5.2 Web軟件的需求分析
15.5.3 Web軟件的設(shè)計
15.5.4 Web軟件的測試
15.6 軟件產(chǎn)品線技術(shù)
15.6.1 軟件產(chǎn)品線基本概念
15.6.2 軟件產(chǎn)品線方法
15.6.3 北大青鳥工程
本章小結(jié)
習(xí)題15
第3篇 軟件工程實驗
第16章 軟件工程實驗
16.1 面向過程的軟件工程實驗
實驗1 圖書管理系統(tǒng)的可行性分析
實驗2 圖書管理系統(tǒng)的項目開發(fā)計劃
實驗3 圖書管理系統(tǒng)的需求分析
實驗4 圖書管理系統(tǒng)的總體設(shè)計
實驗5 圖書管理系統(tǒng)的詳細設(shè)計及編碼實現(xiàn)
實驗6 圖書管理系統(tǒng)的測試
實驗7 圖書管理系統(tǒng)用戶手冊的撰寫
實驗8 圖書管理系統(tǒng)項目開發(fā)總結(jié)報告的撰寫
16.2 面向?qū)ο蟮能浖こ虒嶒灐?br />實驗9 瀏覽器系統(tǒng)的可行性分析
實驗10 瀏覽器系統(tǒng)的項目開發(fā)計劃
實驗11 瀏覽器系統(tǒng)的需求分析
實驗12 瀏覽器系統(tǒng)的體系結(jié)構(gòu)設(shè)計
實驗13 采用面向?qū)ο蠓椒ㄟM行瀏覽器系統(tǒng)的詳細設(shè)計
實驗14 利用StarUML正向工程功能完成代碼框架的自動生成實驗
實驗15 利用StarUML逆向工程功能完成修改設(shè)計的實驗
實驗16 瀏覽器系統(tǒng)的測試
實驗17 瀏覽器系統(tǒng)用戶手冊的撰寫
實驗18 瀏覽器系統(tǒng)項目開發(fā)總結(jié)報告的撰寫
附錄A UML圖總結(jié)
A.1 活動圖
A.2 類圖
A.3 通信圖
A.4 構(gòu)件圖
A.5 組合結(jié)構(gòu)圖
A.6 部署圖
A.7 對象圖
A.8 包圖
A.9 參數(shù)化通信圖
A.10 順序圖
A.11 狀態(tài)圖
A.12 計時圖
A.13 用例圖
附錄B UML中定義的常用版型(stereotype)、約束(constraint)和標(biāo)記(tag)
附錄C GOF給出的軟件設(shè)計模式
C.1 創(chuàng)建型模式(Creational)
C.2 結(jié)構(gòu)型(Structural)模式
C.3 行為(Behavioral)模式
參考文獻