本書系統(tǒng)地介紹了軟件工程的概念、原理、方法和案例,比較全面地反映了軟件工程技術(shù)的全貌。全書共3篇,分16章,分別以“面向過程的軟件工程”、“面向?qū)ο蟮能浖こ獭焙汀败浖こ虒?shí)驗(yàn)”為主線闡述軟件工程原理和方法。本書第2篇還介紹了軟件體系結(jié)構(gòu)、設(shè)計(jì)模式、軟件工程新技術(shù)等內(nèi)容,體現(xiàn)了軟件工程的最新理論和技術(shù)。本書的主要特色是強(qiáng)調(diào)以面向過程或面向?qū)ο蟮乃枷胫笇?dǎo)軟件開發(fā)過程,并配以實(shí)例分析和說明,便于教學(xué)和應(yīng)用。
本書適合作為高等院校計(jì)算機(jī)、軟件工程專業(yè)或信息類相關(guān)專業(yè)本科生或研究生軟件工程課程的教材,也可作為軟件開發(fā)技術(shù)人員的參考書。
1.將軟件工程理論緊密結(jié)合軟件工程實(shí)際。第3篇(第16章)“軟件工程實(shí)驗(yàn)”,介紹圖書館圖書管理系統(tǒng)和瀏覽器系統(tǒng)實(shí)驗(yàn) 2.介紹了最新的綜合案例和工具。
第1篇 面向過程的軟件工程
第1章 概述
1.1 軟件和軟件危機(jī)
1.1.1 軟件的定義、特點(diǎn)及分類
1.1.2 軟件危機(jī)的定義及表現(xiàn)形式
1.1.3 軟件危機(jī)的產(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 軟件和軟件危機(jī)
1.1.1 軟件的定義、特點(diǎn)及分類
1.1.2 軟件危機(jī)的定義及表現(xiàn)形式
1.1.3 軟件危機(jī)的產(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ū)ο筌浖こ痰姆治龇椒▽?duì)比
本章小結(jié)
習(xí)題1
第2章 可行性研究
2.1 可行性研究的目的和任務(wù)
2.2 可行性研究的步驟
2.3 系統(tǒng)流程圖
2.3.1 系統(tǒng)流程圖的符號(hào)
2.3.2 系統(tǒng)流程圖示例
2.4 成本-效益分析
2.4.1 貨幣的時(shí)間價(jià)值
2.4.2 投資回收期
2.4.3 純收入
2.5 可行性研究報(bào)告的主要內(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è)計(jì)
4.1 軟件總體設(shè)計(jì)的目標(biāo)和任務(wù)
4.2 軟件結(jié)構(gòu)設(shè)計(jì)準(zhǔn)則
4.2.1 軟件體系結(jié)構(gòu)設(shè)計(jì)準(zhǔn)則
4.2.2 軟件模塊設(shè)計(jì)準(zhǔn)則
4.3 軟件設(shè)計(jì)的概念和原理
4.3.1 模塊和模塊化
4.3.2 抽象
4.3.3 信息隱蔽和局部化
4.3.4 模塊獨(dú)立性及其度量
4.4 數(shù)據(jù)庫設(shè)計(jì)
4.4.1 數(shù)據(jù)庫系統(tǒng)的三級(jí)模式概念
4.4.2 數(shù)據(jù)庫邏輯設(shè)計(jì)原則
4.4.3 關(guān)系數(shù)據(jù)庫規(guī)范化
4.5 軟件結(jié)構(gòu)設(shè)計(jì)的圖形工具
4.5.1 軟件結(jié)構(gòu)圖
4.5.2 層次圖
4.5.3 HIPO圖
4.6 結(jié)構(gòu)化設(shè)計(jì)方法
4.6.1 數(shù)據(jù)流圖及其類型
4.6.2 結(jié)構(gòu)化設(shè)計(jì)方法的步驟
4.6.3 變換型數(shù)據(jù)流圖的分析設(shè)計(jì)
4.6.4 事務(wù)型數(shù)據(jù)流圖的分析設(shè)計(jì)
4.6.5 綜合分析設(shè)計(jì)
4.7 總體設(shè)計(jì)說明書
本章小結(jié)
習(xí)題4
第5章 軟件詳細(xì)設(shè)計(jì)
5.1 詳細(xì)設(shè)計(jì)的目的與任務(wù)
5.2 結(jié)構(gòu)化程序設(shè)計(jì)
5.3 詳細(xì)設(shè)計(jì)工具
5.3.1 程序流程圖
5.3.2 盒圖(N-S圖)
5.3.3 問題分析圖(PAD圖)
5.3.4 過程設(shè)計(jì)語言(PDL)
5.4 人機(jī)界面設(shè)計(jì)
5.4.1 人機(jī)界面設(shè)計(jì)問題
5.4.2 人機(jī)界面設(shè)計(jì)原則
5.4.3 人機(jī)界面設(shè)計(jì)過程
5.5 詳細(xì)設(shè)計(jì)說明書
本章小結(jié)
習(xí)題5
第6章 軟件編碼
6.1 程序設(shè)計(jì)語言的分類
6.1.1 基礎(chǔ)語言
6.1.2 結(jié)構(gòu)化語言
6.1.3 面向?qū)ο笳Z言
6.2 程序設(shè)計(jì)語言的選擇
6.3 程序設(shè)計(jì)風(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章 軟件測(cè)試
7.1 軟件測(cè)試的目標(biāo)
7.2 軟件測(cè)試的原則
7.3 軟件測(cè)試方法及分類
7.3.1 靜態(tài)測(cè)試與動(dòng)態(tài)測(cè)試
7.3.2 黑盒測(cè)試與白盒測(cè)試
7.4 軟件測(cè)試用例的設(shè)計(jì)
7.4.1 白盒技術(shù)
7.4.2 黑盒技術(shù)
7.5 軟件測(cè)試過程
7.5.1 單元測(cè)試
7.5.2 集成測(cè)試
7.5.3 確認(rèn)測(cè)試
7.5.4 系統(tǒng)測(cè)試
7.5.5 α測(cè)試和β測(cè)試
7.6 調(diào)試
7.6.1 調(diào)試的目的和任務(wù)
7.6.2 常用調(diào)試技術(shù)
7.7 軟件測(cè)試階段終止的條件
本章小結(jié)
習(xí)題7
第8章 軟件維護(hù)
8.1 軟件維護(hù)概述
8.1.1 軟件維護(hù)的定義
8.1.2 軟件維護(hù)的分類
8.1.3 軟件維護(hù)的特點(diǎn)
8.2 軟件維護(hù)的過程
8.2.1 結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)
8.2.2 維護(hù)組織
8.2.3 維護(hù)工作的流程
8.2.4 維護(hù)工作的組織管理
8.3 軟件可維護(hù)性
8.3.1 軟件可維護(hù)性的定義
8.3.2 軟件可維護(hù)性的度量
8.3.3 提高軟件可維護(hù)性的方法
8.4 軟件維護(hù)中存在的問題
8.4.1 軟件維護(hù)困難的表現(xiàn)
8.4.2 軟件維護(hù)的副作用
8.4.3 軟件維護(hù)的代價(jià)
8.5 再工程和逆向工程
8.5.1 再工程與逆向工程的概念
8.5.2 為什么要實(shí)施軟件再工程
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)點(diǎn)和不足
9.2 面向?qū)ο蟮能浖こ獭?br />9.2.1 面向?qū)ο蠡靖拍睢?br />9.2.2 對(duì)象、類及類之間關(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的特點(diǎn)和用途
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 對(duì)象模型
10.1.3 動(dòng)態(tài)模型
10.1.4 物理(實(shí)現(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 建立對(duì)象模型
10.3.1 確定類和對(duì)象
10.3.2 確定關(guān)聯(lián)
10.3.3 確定屬性
10.3.4 建立對(duì)象類圖
10.3.5 劃分主題
10.3.6 優(yōu)化對(duì)象模型
10.4 建立動(dòng)態(tài)行為模型
10.4.1 建立順序圖
10.4.2 建立通信圖
10.4.3 建立狀態(tài)圖
10.4.4 建立活動(dòng)圖
10.5 建立物理實(shí)現(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)對(duì)象模型
10.6.4 系統(tǒng)動(dòng)態(tài)行為模型
10.6.5 系統(tǒng)物理實(shí)現(xiàn)模型
本章小結(jié)
習(xí)題10
第11章 面向?qū)ο蟮脑O(shè)計(jì)與實(shí)現(xiàn)
11.1 面向?qū)ο蟮脑O(shè)計(jì)準(zhǔn)則和啟發(fā)式規(guī)則
11.1.1 面向?qū)ο笤O(shè)計(jì)準(zhǔn)則
11.1.2 啟發(fā)式規(guī)則
11.2 系統(tǒng)設(shè)計(jì)
11.2.1 問題域子系統(tǒng)設(shè)計(jì)
11.2.2 人機(jī)交互子系統(tǒng)設(shè)計(jì)
11.2.3 任務(wù)管理子系統(tǒng)設(shè)計(jì)
11.2.4 數(shù)據(jù)管理子系統(tǒng)設(shè)計(jì)
11.3 服務(wù)、關(guān)聯(lián)與聚合關(guān)系設(shè)計(jì)
11.3.1 服務(wù)設(shè)計(jì)
11.3.2 關(guān)聯(lián)設(shè)計(jì)
11.3.3 聚合關(guān)系設(shè)計(jì)
11.4 面向?qū)ο笤O(shè)計(jì)優(yōu)化
11.5 面向?qū)ο笙到y(tǒng)的實(shí)現(xiàn)
11.5.1 面向?qū)ο蟪绦蛟O(shè)計(jì)語言的選擇
11.5.2 面向?qū)ο蟪绦蛟O(shè)計(jì)風(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)機(jī)圖
12.2.3 StarUML的構(gòu)件圖與部署圖
12.2.4 StarUML的正向工程和逆向工程
12.3 一個(gè)簡易教學(xué)管理系統(tǒng)的分析和設(shè)計(jì)
12.3.1 系統(tǒng)需求描述及分析
12.3.2 系統(tǒng)問題領(lǐng)域分析
12.3.3 靜態(tài)結(jié)構(gòu)模型的建立
12.3.4 動(dòng)態(tài)行為模型的建立
12.3.5 系統(tǒng)物理模型的建立
12.3.6 代碼框架自動(dòng)生成的過程
本章小結(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 客戶機(jī)/服務(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 公共對(duì)象請(qǐng)求代理體系結(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è)計(jì)模式
14.1 設(shè)計(jì)模式概述
14.1.1 設(shè)計(jì)模式的出現(xiàn)和發(fā)展
14.1.2 設(shè)計(jì)模式和軟件體系結(jié)構(gòu)的關(guān)系
14.1.3 設(shè)計(jì)模式的優(yōu)點(diǎn)和分類
14.2 GRASP設(shè)計(jì)模式及其應(yīng)用
14.2.1 GRASP設(shè)計(jì)模式概念及其分類
14.2.2 幾種典型的GRASP設(shè)計(jì)模式應(yīng)用簡介
14.3 GoF設(shè)計(jì)模式及其應(yīng)用
14.3.1 GoF設(shè)計(jì)模式的組成及其分類
14.3.2 創(chuàng)建型GoF設(shè)計(jì)模式應(yīng)用實(shí)例
14.3.3 結(jié)構(gòu)型GoF設(shè)計(jì)模式應(yīng)用實(shí)例
14.3.4 行為型GoF設(shè)計(jì)模式應(yīng)用實(shí)例
本章小結(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 軟件過程及其改進(jìn)
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è)計(jì)
15.5.4 Web軟件的測(cè)試
15.6 軟件產(chǎn)品線技術(shù)
15.6.1 軟件產(chǎn)品線基本概念
15.6.2 軟件產(chǎn)品線方法
15.6.3 北大青鳥工程
本章小結(jié)
習(xí)題15
第3篇 軟件工程實(shí)驗(yàn)
第16章 軟件工程實(shí)驗(yàn)
16.1 面向過程的軟件工程實(shí)驗(yàn)
實(shí)驗(yàn)1 圖書管理系統(tǒng)的可行性分析
實(shí)驗(yàn)2 圖書管理系統(tǒng)的項(xiàng)目開發(fā)計(jì)劃
實(shí)驗(yàn)3 圖書管理系統(tǒng)的需求分析
實(shí)驗(yàn)4 圖書管理系統(tǒng)的總體設(shè)計(jì)
實(shí)驗(yàn)5 圖書管理系統(tǒng)的詳細(xì)設(shè)計(jì)及編碼實(shí)現(xiàn)
實(shí)驗(yàn)6 圖書管理系統(tǒng)的測(cè)試
實(shí)驗(yàn)7 圖書管理系統(tǒng)用戶手冊(cè)的撰寫
實(shí)驗(yàn)8 圖書管理系統(tǒng)項(xiàng)目開發(fā)總結(jié)報(bào)告的撰寫
16.2 面向?qū)ο蟮能浖こ虒?shí)驗(yàn)
實(shí)驗(yàn)9 瀏覽器系統(tǒng)的可行性分析
實(shí)驗(yàn)10 瀏覽器系統(tǒng)的項(xiàng)目開發(fā)計(jì)劃
實(shí)驗(yàn)11 瀏覽器系統(tǒng)的需求分析
實(shí)驗(yàn)12 瀏覽器系統(tǒng)的體系結(jié)構(gòu)設(shè)計(jì)
實(shí)驗(yàn)13 采用面向?qū)ο蠓椒ㄟM(jìn)行瀏覽器系統(tǒng)的詳細(xì)設(shè)計(jì)
實(shí)驗(yàn)14 利用StarUML正向工程功能完成代碼框架的自動(dòng)生成實(shí)驗(yàn)
實(shí)驗(yàn)15 利用StarUML逆向工程功能完成修改設(shè)計(jì)的實(shí)驗(yàn)
實(shí)驗(yàn)16 瀏覽器系統(tǒng)的測(cè)試
實(shí)驗(yàn)17 瀏覽器系統(tǒng)用戶手冊(cè)的撰寫
實(shí)驗(yàn)18 瀏覽器系統(tǒng)項(xiàng)目開發(fā)總結(jié)報(bào)告的撰寫
附錄A UML圖總結(jié)
A.1 活動(dòng)圖
A.2 類圖
A.3 通信圖
A.4 構(gòu)件圖
A.5 組合結(jié)構(gòu)圖
A.6 部署圖
A.7 對(duì)象圖
A.8 包圖
A.9 參數(shù)化通信圖
A.10 順序圖
A.11 狀態(tài)圖
A.12 計(jì)時(shí)圖
A.13 用例圖
附錄B UML中定義的常用版型(stereotype)、約束(constraint)和標(biāo)記(tag)
附錄C GOF給出的軟件設(shè)計(jì)模式
C.1 創(chuàng)建型模式(Creational)
C.2 結(jié)構(gòu)型(Structural)模式
C.3 行為(Behavioral)模式
參考文獻(xiàn)