《軟件工程實用教程》按照典型的軟件開發(fā)過程來組織內(nèi)容,旨在培養(yǎng)讀者具備軟件工程思想及實際軟件開發(fā)的能力。全書共12章,主要內(nèi)容包括軟件工程與軟件過程、軟件需求分析與建模、軟件設計與建模、軟件編程與軟件測試以及軟件工程的其他相關內(nèi)容,如軟件規(guī)模估算、進度計劃、人員組織、軟件開發(fā)風險管理等。
《軟件工程實用教程》可以作為普通高校計算機相關專業(yè)“軟件工程”課程的教材,也可以供學習軟件工程的讀者單獨使用(包括參加計算機等級考試或相關專業(yè)自學考試)參考。
《軟件工程實用教程》是高等院校計算機科學、軟件工程及相關專業(yè)“軟件工程”課程的理想教材,也可以供程序員、軟件測試工程師、系統(tǒng)工程師以及軟件項目經(jīng)理等相關人員閱讀參考。
軟件工程是研究軟件開發(fā)和管理的一門工程科學,是計算機學科及相關專業(yè)的主干課程,也是軟件從業(yè)人員必不可少的專業(yè)知識。目前,軟件工程的理論在我國各企業(yè)和部門的軟件開發(fā)中得到了廣泛的應用,軟件工程課程也受到了各大專院校相關專業(yè)的重視,各種軟件工程理論教材也很多。
軟件工程是一門理論與實踐并重的課程。本書在講述軟件工程的基本概念、原理和方法的基礎上,詳細而全面地介紹了可以實際用于軟件開發(fā)實踐的各種技能。旨在使學生通過有限課時的學習后,不僅能對軟件工程的原理有所認識,而且能具備實際開發(fā)軟件的各種技能,比如熟練使用各種軟件工程工具,按照標準和規(guī)范編寫文檔等。
本書共分為12章,內(nèi)容涉及軟件工程的基本原理和概念、軟件開發(fā)生命周期的各個階段、軟件工程管理的相關內(nèi)容、如何使用各種自動化工具來輔助軟件開發(fā)的過程,以及課程設計。
本書與其他書的不同之處在于,除了講述必要的軟件工程理論之外,還通過實驗講述比較流行的軟件開發(fā)工具(如軟件繪圖工具Microsoft Visio、面向?qū)ο蠼9ぞ逺ational Rose、軟件實現(xiàn)工具Visual Studio、軟件測試工具UnitTest、軟件項目管理工具Microsoft Project等)是如何應用于“小型網(wǎng)上書店系統(tǒng)”的。書中還講述了課程設計的指導,如怎樣進行項目選題、組建團隊、團隊工作方式和項目進度安排等。本書中所講述的“小型網(wǎng)上書店系統(tǒng)”是學生在做課程設計中可供模仿的一個項目。所有這些使得軟件工程的三要素——過程、方法和工具在本書中能夠充分地體現(xiàn)。
本書理論知識的教學安排建議如下:
軟件工程是研究軟件開發(fā)和管理的一門工程科學,是計算機學科及相關專業(yè)的主干課程,也是軟件從業(yè)人員必不可少的專業(yè)知識。目前,軟件工程的理論在我國各企業(yè)和部門的軟件開發(fā)中得到了廣泛的應用,軟件工程課程也受到了各大專院校相關專業(yè)的重視,各種軟件工程理論教材也很多。
軟件工程是一門理論與實踐并重的課程。本書在講述軟件工程的基本概念、原理和方法的基礎上,詳細而全面地介紹了可以實際用于軟件開發(fā)實踐的各種技能。旨在使學生通過有限課時的學習后,不僅能對軟件工程的原理有所認識,而且能具備實際開發(fā)軟件的各種技能,比如熟練使用各種軟件工程工具,按照標準和規(guī)范編寫文檔等。
本書共分為12章,內(nèi)容涉及軟件工程的基本原理和概念、軟件開發(fā)生命周期的各個階段、軟件工程管理的相關內(nèi)容、如何使用各種自動化工具來輔助軟件開發(fā)的過程,以及課程設計。
本書與其他書的不同之處在于,除了講述必要的軟件工程理論之外,還通過實驗講述比較流行的軟件開發(fā)工具(如軟件繪圖工具Microsoft Visio、面向?qū)ο蠼9ぞ逺ational Rose、軟件實現(xiàn)工具Visual Studio、軟件測試工具UnitTest、軟件項目管理工具Microsoft Project等)是如何應用于“小型網(wǎng)上書店系統(tǒng)”的。書中還講述了課程設計的指導,如怎樣進行項目選題、組建團隊、團隊工作方式和項目進度安排等。本書中所講述的“小型網(wǎng)上書店系統(tǒng)”是學生在做課程設計中可供模仿的一個項目。所有這些使得軟件工程的三要素——過程、方法和工具在本書中能夠充分地體現(xiàn)。
本書理論知識的教學安排建議如下。
章節(jié)內(nèi)容學時數(shù)
第1章軟件工程概述2~4
第2章軟件過程2
第3章可行性研究及需求分析2
第4章結(jié)構(gòu)化需求分析2~4
第5章面向?qū)ο蠓治?~8
第6章軟件設計2~4
第7章結(jié)構(gòu)化設計方法4~6
第8章面向?qū)ο笤O計2
第9章軟件編程1~2
第10章軟件測試概述2
第11章軟件測試方法與過程5~8
第12章軟件工程的其他相關內(nèi)容2~4
建議先修課程:計算機導論、面向?qū)ο蟪绦蛟O計、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫原理等。
建議理論教學時數(shù):32~48學時。
建議實驗(實踐)教學時數(shù):16~32學時。
教師可以按照自己對軟件工程的理解適當?shù)貏h除一些章節(jié),也可以根據(jù)教學目標,靈活地調(diào)整章節(jié)的順序,增減各章的學時數(shù)。
由于軟件工程是一門新興學科,軟件工程的教學方法本身還在探索之中,加之作者的水平和能力有限,本書內(nèi)容難免有疏漏之處。懇請各位同仁和廣大讀者給予批評指正,也希望各位能將實踐過程中的經(jīng)驗和心得與作者交流(yunxianglu@hotmail.com)。
編者
2015年1月
第一部分軟件工程與軟件過程
第1章軟件工程概述
1.1軟件
1.1.1軟件的概念
1.1.2軟件的特點
1.1.3軟件的分類
1.2軟件危機
1.2.1軟件危機的表現(xiàn)
1.2.2軟件危機的原因
1.3軟件工程
1.3.1軟件工程的概念
1.3.2軟件工程的基本內(nèi)容
1.3.3軟件工程目標和原則
1.3.4軟件工程的知識體系
1.4軟件工程的相關工具
1.5軟件工程的常用信息源
1.6“小型網(wǎng)上書店系統(tǒng)”案例介紹
小結(jié)
習題
第2章軟件過程
2.1軟件過程概述
2.2軟件生命周期
2.2.1軟件生命周期的概念
2.2.2傳統(tǒng)軟件生命周期的各個階段
2.3軟件過程模型
2.3.1瀑布模型
2.3.2快速原型模型
2.3.3增量模型
2.3.4螺旋模型
2.3.5噴泉模型
2.3.6基于組件的開發(fā)模型
2.3.7統(tǒng)一軟件開發(fā)過程模型
2.3.8敏捷模型
小結(jié)
習題
第二部分軟件需求分析與建模
第3章可行性研究及需求分析
3.1可行性研究
3.1.1可行性研究的目的與意義
3.1.2可行性研究的內(nèi)容
3.1.3可行性研究的步驟
3.2需求分析
3.2.1需求分析的目的與意義
3.2.2需求分析的步驟
3.2.3需求管理
3.3軟件開發(fā)計劃書編寫指南
3.4需求規(guī)格說明書編寫指南
3.5實驗
3.5.1Visio的功能及使用方法介紹
3.5.2Rose的功能及使用方法介紹
小結(jié)
習題
第4章結(jié)構(gòu)化需求分析
4.1結(jié)構(gòu)化需求分析的方法
4.2結(jié)構(gòu)化需求分析的工具
4.2.1實體關系(ER)圖
4.2.2數(shù)據(jù)流圖
4.2.3狀態(tài)轉(zhuǎn)換圖
4.2.4數(shù)據(jù)字典
4.3實驗: 利用Visio繪制“小型網(wǎng)上書店系統(tǒng)”的數(shù)據(jù)流圖
小結(jié)
習題
第5章面向?qū)ο蠓治?br />
5.1面向?qū)ο蟮能浖こ谭椒?br />
5.1.1面向?qū)ο蟮幕靖拍?br />
5.1.2面向?qū)ο蟮能浖こ谭椒ǖ奶卣髋c優(yōu)勢
5.2UML簡介
5.2.1用例圖
5.2.2類圖和對象圖
5.2.3狀態(tài)圖
5.2.4順序圖
5.2.5活動圖
5.2.6協(xié)作圖
5.2.7構(gòu)件圖
5.2.8部署圖
5.2.9包圖
5.3面向?qū)ο蠓治龇椒?br />
5.3.1面向?qū)ο蠓治鲞^程
5.3.2面向?qū)ο蠓治鲈瓌t
5.4面向?qū)ο蠼?br />
5.4.1建立對象模型
5.4.2建立動態(tài)模型
5.4.3建立功能模型
5.4.4三種模型之間的關系
5.5實驗
5.5.1利用Rose繪制“小型網(wǎng)上書店系統(tǒng)”的用例圖
5.5.2利用Rose繪制“小型網(wǎng)上書店系統(tǒng)”的類圖
5.5.3利用Rose繪制“小型網(wǎng)上書店系統(tǒng)”的對象圖
5.5.4利用Rose繪制“小型網(wǎng)上書店系統(tǒng)”的狀態(tài)圖
5.5.5利用Rose繪制“小型網(wǎng)上書店系統(tǒng)”的順序圖
5.6案例:“小型網(wǎng)上書店系統(tǒng)”的需求規(guī)格說明書
小結(jié)
習題
第三部分軟件設計與建模
第6章軟件設計
6.1軟件設計的基本概念
6.1.1軟件設計的意義和目標
6.1.2軟件設計的分類
6.1.3軟件設計的原則
6.2軟件的體系結(jié)構(gòu)
6.2.1軟件的體系結(jié)構(gòu)概述
6.2.2軟件系統(tǒng)的設計模式
6.3分布式系統(tǒng)結(jié)構(gòu)
6.3.1多處理器體系結(jié)構(gòu)
6.3.2客戶/服務器體系結(jié)構(gòu)
6.3.3分布式對象體系結(jié)構(gòu)
6.3.4對等端體系結(jié)構(gòu)
6.3.5代理
6.4體系結(jié)構(gòu)框架
6.4.1模型視圖控制器
6.4.2模型視圖表示器
6.4.3J2EE體系結(jié)構(gòu)框架
6.4.4PCMEF
6.4.5PCBMER
6.5數(shù)據(jù)庫結(jié)構(gòu)設計
6.6人機界面設計
6.7軟件設計說明書編寫指南
小結(jié)
習題
第7章結(jié)構(gòu)化設計方法
7.1結(jié)構(gòu)化軟件設計方法
7.1.1表示軟件結(jié)構(gòu)的圖形工具
7.1.2面向數(shù)據(jù)流的設計方法
7.1.3面向數(shù)據(jù)結(jié)構(gòu)的設計方法
7.2結(jié)構(gòu)化軟件設計工具
7.2.1流程圖
7.2.2NS圖
7.2.3PAD
7.2.4判定表
7.2.5判定樹
7.2.6過程設計語言
7.3實驗: 利用Visio繪制“小型網(wǎng)上書店系統(tǒng)”的結(jié)構(gòu)圖
小結(jié)
習題
第8章面向?qū)ο笤O計
8.1面向?qū)ο笤O計方法
8.1.1面向?qū)ο蟮脑O計原則
8.1.2面向?qū)ο笤O計的啟發(fā)規(guī)則
8.1.3系統(tǒng)設計
8.1.4對象設計
8.2實驗
8.2.1利用Rose繪制“小型網(wǎng)上書店系統(tǒng)”的活動圖
8.2.2利用Rose繪制“小型網(wǎng)上書店系統(tǒng)”的協(xié)作圖
8.2.3利用Rose繪制“小型網(wǎng)上書店系統(tǒng)”的構(gòu)件圖
8.2.4利用Rose繪制“小型網(wǎng)上書店系統(tǒng)”的部署圖
8.3案例:“小型網(wǎng)上書店系統(tǒng)”的軟件設計說明書
小結(jié)
習題
第四部分軟件編程與軟件測試
第9章軟件編程
9.1編程語言
9.1.1編程語言的發(fā)展與分類
9.1.2選擇編程語言需考慮的因素
9.2編程風格
9.3編程人員的基本素質(zhì)
9.4實驗
9.4.1Visual Studio使用方法介紹
9.4.2利用Visual Studio實現(xiàn)“小型網(wǎng)上書店系統(tǒng)”的用戶登錄模塊
小結(jié)
習題
第10章軟件測試概述
10.1軟件測試的基本概念
10.1.1軟件測試的原則
10.1.2軟件測試模型
10.2軟件測試的分類
10.3測試用例
10.3.1測試用例編寫
10.3.2測試用例設計
10.3.3測試用例場景
10.4測試分析報告編寫指南
小結(jié)
習題
第11章軟件測試方法與過程
11.1軟件測試方法
11.2黑盒測試
11.2.1等價類劃分法
11.2.2邊界值分析法
11.2.3錯誤推測法
11.2.4因果圖法
11.2.5決策表法
11.2.6場景法
11.2.7黑盒測試選擇
11.3白盒測試
11.3.1代碼檢查法
11.3.2靜態(tài)結(jié)構(gòu)分析法
11.3.3程序插樁技術
11.3.4邏輯覆蓋法
11.3.5基本路徑法
11.3.6白盒測試方法選擇
11.3.7白盒測試和黑盒測試比較
11.4軟件測試的一般步驟
11.5單元測試
11.5.1單元測試概述
11.5.2單元測試內(nèi)容
11.5.3單元測試方法
11.6集成測試
11.6.1集成測試概述
11.6.2集成測試分析
11.6.3集成測試策略
11.7系統(tǒng)測試
11.7.1系統(tǒng)測試概述
11.7.2系統(tǒng)測試類型
11.8驗收測試
11.8.1驗收測試概述
11.8.2驗收測試內(nèi)容
11.8.3α測試和β測試
11.9回歸測試
11.10面向?qū)ο蟮能浖䴗y試
11.11軟件調(diào)試
11.11.1調(diào)試過程
11.11.2調(diào)試途徑
11.12實驗
11.12.1利用Visual Studio中的工具進行單元測試
11.12.2利用Visual Studio對“小型網(wǎng)上書店系統(tǒng)”的用戶登錄模塊
進行
單元測試
11.13案例:“小型網(wǎng)上書店系統(tǒng)”的測試分析報告
小結(jié)
習題
第五部分軟件工程的其他相關內(nèi)容
第12章軟件工程的其他相關內(nèi)容
12.1軟件估算
12.1.1軟件估算的概念
12.1.2軟件估算的方法
12.1.3軟件估算的原則與技巧
12.2軟件開發(fā)進度計劃
12.2.1Gantt圖
12.2.2PERT圖
12.3軟件開發(fā)人員組織
12.3.1民主制程序員組
12.3.2主程序員組
12.3.3現(xiàn)代程序員組
12.4軟件開發(fā)風險管理
12.4.1軟件開發(fā)風險
12.4.2軟件開發(fā)風險管理
12.5軟件質(zhì)量保證
12.5.1軟件質(zhì)量的基本概念
12.5.2軟件質(zhì)量保證的措施
12.6軟件配置管理概述
12.6.1軟件配置管理術語
12.6.2配置管理的過程
12.6.3配置管理的角色劃分
12.7軟件維護
12.7.1軟件維護的過程
12.7.2軟件維護的分類
12.7.3軟件的可維護性
12.7.4軟件維護的副作用
12.7.5軟件再工程技術
12.8軟件工程標準與軟件文檔
12.8.1軟件工程標準
12.8.2軟件文檔
12.9軟件過程能力成熟度模型
12.10軟件項目管理
12.10.1軟件項目管理概述
12.10.2軟件項目管理與軟件工程的關系
12.11軟件復用
12.12實驗
12.12.1Project的功能及使用方法介紹
12.12.2利用Project管理“小型網(wǎng)上書店系統(tǒng)”的開發(fā)過程
小結(jié)
習題
附錄A課程設計指導
附錄B模擬考試題與參考答案
附錄C部分習題參考答案
參考文獻