《軟件工程理論與實(shí)踐》按照典型的軟件開發(fā)過程來組織內(nèi)容,旨在培養(yǎng)讀者具備軟件工程思想及實(shí)際軟件開發(fā)的能力。《軟件工程理論與實(shí)踐》共14章,主要內(nèi)容包括軟件工程與軟件過程、軟件需求分析、軟件設(shè)計(jì)、軟件編程與軟件測(cè)試,以及軟件維護(hù)與軟件工程管理,如軟件規(guī)模估算、進(jìn)度計(jì)劃、人員組織和軟件開發(fā)風(fēng)險(xiǎn)管理等內(nèi)容。
《軟件工程理論與實(shí)踐》可以作為普通高校計(jì)算機(jī)相關(guān)專業(yè)“軟件工程”課程的教材,也可以供學(xué)習(xí)軟件工程的讀者單獨(dú)使用(包括參加計(jì)算機(jī)等級(jí)考試或相關(guān)專業(yè)自學(xué)考試)參考。
適讀人群 :高等院校計(jì)算機(jī)類相關(guān)專業(yè)學(xué)生
本書詳細(xì)而全面地介紹了可以實(shí)際用于軟件開發(fā)實(shí)踐的各種技能。
提供教學(xué)計(jì)劃、部分習(xí)題的參考答案。
附錄對(duì)課程設(shè)計(jì)進(jìn)行了指導(dǎo),并提供可供模仿的一個(gè)完整項(xiàng)目,包括文檔和代碼。
通過實(shí)驗(yàn)講述流行的軟件開發(fā)工具(如軟件繪圖工具M(jìn)icrosoft Visio、面向?qū)ο蠼9ぞ逺ational Rose、軟件實(shí)現(xiàn)工具Visual Studio、軟件測(cè)試工具UnitTest和軟件項(xiàng)目管理工具M(jìn)icrosot Project等)。
前言
軟件工程是研究軟件開發(fā)和管理的一門工程科學(xué),是計(jì)算機(jī)學(xué)科及相關(guān)專業(yè)的主干課程,也是軟件從業(yè)人員必不可少的專業(yè)知識(shí)。目前,軟件工程的理論在我國各企業(yè)和部門的軟件開發(fā)中得到了廣泛應(yīng)用,軟件工程課程也受到了各大專院校相關(guān)專業(yè)的重視。
軟件工程是一門理論與實(shí)踐并重的課程。本書在講述軟件工程的基本概念、原理和方法的基礎(chǔ)上,詳細(xì)而全面地介紹了可以實(shí)際用于軟件開發(fā)實(shí)踐的各種技能。旨在使學(xué)生通過有限課時(shí)的學(xué)習(xí)后,不僅能對(duì)軟件工程的原理有所認(rèn)識(shí),而且能具備實(shí)際開發(fā)軟件的各種技能,比如熟練使用各種軟件工程工具,按照標(biāo)準(zhǔn)和規(guī)范編寫文檔等。
本書共分為14章,內(nèi)容涉及軟件工程的基本原理和概念、軟件開發(fā)生命周期的各個(gè)階段、軟件工程管理的相關(guān)內(nèi)容、如何使用各種自動(dòng)化工具來輔助軟件開發(fā)的過程,以及課程設(shè)計(jì)。
本書與其他書的不同之處在于,除了講述必要的軟件工程理論之外,還通過實(shí)驗(yàn)講述流行的軟件開發(fā)工具(如軟件繪圖工具M(jìn)icrosoftVisio、面向?qū)ο蠼9ぞ逺ationalRose、軟件實(shí)現(xiàn)工具VisualStudio、軟件測(cè)試工具UnitTest和軟件項(xiàng)目管理工具M(jìn)icrosotProject等),以及它們是如何應(yīng)用于“‘墨韻’讀書會(huì)書籍共享平臺(tái)”的開發(fā)的。附錄對(duì)課程設(shè)計(jì)進(jìn)行了指導(dǎo),如怎樣進(jìn)行項(xiàng)目選題、組建團(tuán)隊(duì)、團(tuán)隊(duì)工作方式和項(xiàng)目進(jìn)度安排等。附錄B中所提供的“‘墨韻’讀書會(huì)書籍共享平臺(tái)”(包括文檔和代碼)是學(xué)生在做課程設(shè)計(jì)中可供模仿的一個(gè)完整項(xiàng)目。所有這些使得軟件工程的三要素——過程、方法和工具,在本書中得到了充分體現(xiàn)。
建議先修課程:計(jì)算機(jī)導(dǎo)論、面向?qū)ο蟪绦蛟O(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫原理等。
建議理論教學(xué)時(shí)數(shù):3248學(xué)時(shí)。
建議實(shí)驗(yàn)(實(shí)踐)教學(xué)時(shí)數(shù):1632學(xué)時(shí)。
教師可以按照自己對(duì)軟件工程的理解適當(dāng)省略一些章節(jié),也可以根據(jù)教學(xué)目標(biāo),靈活地調(diào)整章節(jié)的順序,增減各章的學(xué)時(shí)數(shù)。
另外,與本書配套的各章節(jié)的部分習(xí)題的參考答案,以及教學(xué)PPT可在機(jī)械工業(yè)出版社教育服務(wù)網(wǎng)(wwwcmpeducom)的本書頁面中免費(fèi)注冊(cè)下載。
本書在編寫的過程中,得到了楊婧團(tuán)隊(duì)、傅博團(tuán)隊(duì)、張昊文團(tuán)隊(duì)、王子烈團(tuán)隊(duì)以及翁學(xué)平、劉宇翔、楊承昊的大力支持,在此表示感謝。感謝所有為本書做出貢獻(xiàn)的同仁們。
由于軟件工程是一門新興學(xué)科,軟件工程的教學(xué)方法本身還在探索之中,加之編者的水平和能力有限,本書難免有疏漏之處。懇請(qǐng)各位同仁和廣大讀者給予批評(píng)指正,也希望各位能將實(shí)踐過程中的經(jīng)驗(yàn)和心得與我們進(jìn)行交流(yunxianglu@hotmailcom)。
編者2017年6月
前言
第1章軟件工程概述
1.1軟件
1.1.1軟件的概念及特點(diǎn)
1.1.2軟件的分類
1.2軟件危機(jī)
1.2.1軟件危機(jī)的表現(xiàn)與原因
1.2.2軟件危機(jī)的啟示
1.3軟件工程
1.3.1軟件工程的概念
1.3.2軟件工程研究的內(nèi)容
1.3.3軟件工程的目標(biāo)和原則
1.3.4軟件工程知識(shí)體系
1.3.5軟件工程的發(fā)展
1.4軟件開發(fā)方法
1.5軟件工程工具
1.6“‘墨韻’讀書會(huì)書籍共享平臺(tái)”
案例介紹
習(xí)題
第2章軟件過程
2.1軟件過程概述
2.2軟件生命周期
2.2.1軟件生命周期的概念
2.2.2傳統(tǒng)軟件生命周期的各個(gè)階段
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敏捷過程與極限編程
2.3.9幾種模型之間的關(guān)系
2.3.10選擇軟件過程模型
2.4軟件過程模型實(shí)例
習(xí)題
第3章可行性研究及需求分析
3.1可行性研究
3.1.1項(xiàng)目立項(xiàng)概述
3.1.2可行性研究的內(nèi)容
3.1.3可行性研究的步驟
3.2需求分析
3.2.1需求分析的任務(wù)
3.2.2需求分析的步驟
3.2.3需求管理
3.2.4需求分析的常用方法
3.3軟件開發(fā)計(jì)劃書編寫指南
3.4需求規(guī)格說明書編寫指南
3.5可行性研究實(shí)例
習(xí)題
第4章結(jié)構(gòu)化分析
4.1結(jié)構(gòu)化分析概述
4.2結(jié)構(gòu)化分析方法
4.2.1功能建模
4.2.2數(shù)據(jù)建模
4.2.3行為建模
4.2.4數(shù)據(jù)字典
4.2.5加工規(guī)格說明
4.3結(jié)構(gòu)化分析圖形工具
4.3.1層次方框圖
4.3.2Warnier圖
4.3.3IPO圖
4.4結(jié)構(gòu)化分析實(shí)例
4.5實(shí)驗(yàn):使用Visio繪制“‘墨韻’
讀書會(huì)書籍共享平臺(tái)”的數(shù)據(jù)
流圖
習(xí)題
第5章面向?qū)ο蠓椒ㄅcUML
5.1面向?qū)ο蟮能浖こ谭椒?
5.1.1面向?qū)ο蟮幕靖拍?
5.1.2面向?qū)ο蟮能浖こ谭椒ǖ?
特征與優(yōu)勢(shì)
5.1.3面向?qū)ο蟮膶?shí)施步驟
5.2統(tǒng)一建模語言UML
5.2.1UML簡(jiǎn)述
5.2.2UML的特點(diǎn)
5.2.3UML的應(yīng)用范圍
5.2.4UML的圖
5.2.5UML“4+1”視圖
5.3靜態(tài)建模機(jī)制
5.3.1用例圖
5.3.2類圖和對(duì)象圖
5.3.3包圖
5.4動(dòng)態(tài)建模機(jī)制
5.4.1順序圖
5.4.2協(xié)作圖
5.4.3狀態(tài)圖
5.4.4活動(dòng)圖
5.5描述物理架構(gòu)的機(jī)制
5.5.1構(gòu)件圖
5.5.2部署圖
習(xí)題
第6章面向?qū)ο蠓治?
6.1面向?qū)ο蠓治龇椒?
6.1.1面向?qū)ο蠓治鲞^程
6.1.2面向?qū)ο蠓治鲈瓌t
6.2面向?qū)ο蠼?
6.2.1建立對(duì)象模型
6.2.2建立動(dòng)態(tài)模型
6.2.3建立功能模型
6.2.43種模型之間的關(guān)系
6.3面向?qū)ο蠓治鰧?shí)例
6.4實(shí)驗(yàn)
6.4.1利用Rose創(chuàng)建“‘墨韻’讀書會(huì)
書籍共享平臺(tái)”的用例模型
6.4.2利用Rose繪制 “‘墨韻’讀書會(huì)
書籍共享平臺(tái)”的類圖
6.4.3利用Rose繪制 “‘墨韻’讀書會(huì)
書籍共享平臺(tái)”的對(duì)象圖
6.4.4利用Rose繪制“‘墨韻’讀書會(huì)
書籍共享平臺(tái)”的包圖
6.4.5利用Rose繪制 “‘墨韻’讀書會(huì)
書籍共享平臺(tái)”的狀態(tài)圖
6.4.6利用Rose繪制“‘墨韻’讀書會(huì)
書籍共享平臺(tái)”的順序圖
習(xí)題
第7章軟件設(shè)計(jì)
7.1軟件設(shè)計(jì)的基本概念
7.1.1軟件設(shè)計(jì)的意義和目標(biāo)
7.1.2軟件設(shè)計(jì)的原則
7.1.3軟件設(shè)計(jì)的分類
7.2數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)
7.3用戶界面設(shè)計(jì)
7.3.1設(shè)計(jì)驅(qū)動(dòng)開發(fā)
7.3.2目標(biāo)用戶群體
7.3.3簡(jiǎn)潔與清晰
7.3.4實(shí)現(xiàn)模型與心智模型
7.3.5設(shè)計(jì)的規(guī)范性
7.3.6設(shè)計(jì)的可用性和易用性
7.3.7設(shè)計(jì)的一致性
7.3.8設(shè)計(jì)的容錯(cuò)性
7.4軟件設(shè)計(jì)說明書編寫指南
習(xí)題
第8章軟件體系結(jié)構(gòu)與設(shè)計(jì)模式
8.1軟件體系結(jié)構(gòu)的概念
8.1.1什么是軟件體系結(jié)構(gòu)
8.1.2軟件體系結(jié)構(gòu)建模
8.1.3軟件體系結(jié)構(gòu)的分層模型
8.1.4軟件體系結(jié)構(gòu)的作用
8.2典型的軟件體系結(jié)構(gòu)風(fēng)格
8.2.1數(shù)據(jù)流風(fēng)格
8.2.2調(diào)用/返回風(fēng)格
8.2.3獨(dú)立構(gòu)件風(fēng)格
8.2.4虛擬機(jī)風(fēng)格
8.2.5倉庫風(fēng)格
8.3軟件質(zhì)量屬性
8.4分布式系統(tǒng)結(jié)構(gòu)
8.4.1多處理器體系結(jié)構(gòu)
8.4.2客戶端/服務(wù)器體系結(jié)構(gòu)
8.4.3分布式對(duì)象體系結(jié)構(gòu)
8.4.4對(duì)等端體系結(jié)構(gòu)
8.4.5代理
8.5體系結(jié)構(gòu)框架
8.5.1模型-視圖-控制器
8.5.2模型-視圖-表示器
8.5.3J2EE體系結(jié)構(gòu)框架
8.5.4PCMEF框架
8.5.5PCBMER框架
8.6軟件系統(tǒng)的設(shè)計(jì)模式
8.6.1工廠模式
8.6.2橋接模式
8.6.3策略模式
8.6.4其他模式
習(xí)題
第9章結(jié)構(gòu)化設(shè)計(jì)
9.1結(jié)構(gòu)化軟件設(shè)計(jì)概述
9.2結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析
的關(guān)系
9.3體系結(jié)構(gòu)設(shè)計(jì)
9.3.1表示軟件結(jié)構(gòu)的圖形工具
9.3.2面向數(shù)據(jù)流的設(shè)計(jì)方法
9.3.3面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法
9.4接口設(shè)計(jì)
9.4.1接口設(shè)計(jì)概述
9.4.2界面設(shè)計(jì)
9.5數(shù)據(jù)設(shè)計(jì)
9.6過程設(shè)計(jì)
9.6.1程序流程圖
9.6.2N-S圖
9.6.3PAD圖
9.6.4結(jié)構(gòu)化語言
9.7結(jié)構(gòu)化設(shè)計(jì)實(shí)例
9.8實(shí)驗(yàn):利用Visio繪制“‘墨韻’
讀書會(huì)書籍共享平臺(tái)”的
結(jié)構(gòu)圖
習(xí)題
第10章面向?qū)ο笤O(shè)計(jì)
10.1面向?qū)ο笤O(shè)計(jì)與結(jié)構(gòu)化設(shè)計(jì)
10.2面向?qū)ο笤O(shè)計(jì)與面向?qū)ο?
分析的關(guān)系
10.3面向?qū)ο笤O(shè)計(jì)的過程與原則
10.3.1面向?qū)ο笤O(shè)計(jì)的過程
10.3.2面向?qū)ο笤O(shè)計(jì)的原則
10.4面向?qū)ο笤O(shè)計(jì)的啟發(fā)規(guī)則
10.5系統(tǒng)設(shè)計(jì)
10.5.1系統(tǒng)分解
10.5.2問題域子系統(tǒng)的設(shè)計(jì)
10.5.3人機(jī)交互子系統(tǒng)的設(shè)計(jì)
10.5.4任務(wù)管理子系統(tǒng)的設(shè)計(jì)
10.5.5數(shù)據(jù)管理子系統(tǒng)的設(shè)計(jì)
10.6對(duì)象設(shè)計(jì)
10.6.1設(shè)計(jì)類中的服務(wù)
10.6.2設(shè)計(jì)類的關(guān)聯(lián)
10.6.3對(duì)象設(shè)計(jì)優(yōu)化
10.7面向?qū)ο笤O(shè)計(jì)實(shí)例
10.8實(shí)