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