21世紀(jì)高等學(xué)校規(guī)劃教材:軟件工程
定 價:39.5 元
- 作者:尤志寧 ,等 著
- 出版時間:2010/8/1
- ISBN:9787302226802
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP311.5
- 頁碼:444
- 紙張:膠版紙
- 版次:1
- 開本:16開
《軟件工程》在軟件工程的知識域組織方面參考了IEEE和ACM提出的“軟件工程的知識體系(SWEBOK)”的基本框架,比較全面、系統(tǒng)地反應(yīng)了軟件工程的全貌,從理論與實踐的視角介紹了軟件工程的基本原理、概念和技術(shù)方法。全書共18章,在內(nèi)容結(jié)構(gòu)上可分為軟件工程與項目管理、結(jié)構(gòu)化開發(fā)方法、面向?qū)ο蟮拈_發(fā)方法及軟件工程高級專題4個部分。在每章后面都附有思考與練習(xí)題,供讀者復(fù)習(xí)鞏固之用。
《軟件工程》汲取了國內(nèi)外軟件工程的精華,并融人了作者多年在教學(xué)與科研過程中對軟件工程的理解與經(jīng)驗總結(jié)。在內(nèi)容上既兼顧了傳統(tǒng)、實用的軟件開發(fā)方法,又引入了軟件工程領(lǐng)域比較新穎的技術(shù)和方法,并結(jié)合一個貫穿全書的具體案例加以介紹!盾浖こ獭返牧硪粋特點是介紹了許多軟件工程度量與估算的技術(shù)與方法,突出了軟件工程學(xué)科工程化、可度量的特點。
《軟件工程》可作為計算機(jī)相關(guān)專業(yè)本科生或研究生的教材,同時也可作為軟件工程領(lǐng)域?qū)I(yè)人員的參考書。
《軟件工程》特色:內(nèi)容涵蓋軟件工程理論與實踐的最新發(fā)展,以具體案例為驅(qū)動,貫穿結(jié)構(gòu)化方法與面向?qū)ο蠓椒ǖ娜^程,軟件項目管理內(nèi)容符合美國項目管理學(xué)會(PMI)的主要體系框架,軟件度量使軟件工程成為可量化的學(xué)科。
面向?qū)ο蟪绦蛟O(shè)計(OOP)技術(shù)是當(dāng)前主流的程序設(shè)計技術(shù)。和傳統(tǒng)的面向過程的程序設(shè)計技術(shù)相比,面向?qū)ο蟪绦蛟O(shè)計技術(shù)具有明顯的優(yōu)勢。這種優(yōu)勢主要體現(xiàn)在以下幾個方面:
(1) 傳統(tǒng)的面向過程的程序設(shè)計方法忽略了數(shù)據(jù)和操作之間的內(nèi)在聯(lián)系,程序中的數(shù)據(jù)和操作它們的方法分離,而面向?qū)ο蟪绦蛟O(shè)計技術(shù)將程序要處理的數(shù)據(jù)和處理它們的方法封裝在一起,構(gòu)成一個統(tǒng)一體——對象。程序中用對象模型來建,F(xiàn)實世界中的事物。這樣就使得空間模型的結(jié)構(gòu)和問題空間模型的結(jié)構(gòu)相一致。使用面向?qū)ο蟮姆椒ń鉀Q問題的思路更加符合人類一貫的思維方法。
(2) 面向?qū)ο蟮姆庋b技術(shù)為程序提供了更好的數(shù)據(jù)安全性。
(3) 面向?qū)ο蟮睦^承技術(shù)為程序提供了更好的可重用性。
(4) 面向?qū)ο蟮亩鄳B(tài)調(diào)用技術(shù)使程序具有更好的可擴(kuò)展性。
(5) 和傳統(tǒng)的面向過程的程序設(shè)計方法相比,面向?qū)ο蟮某绦蛟O(shè)計技術(shù)更適合開發(fā)大型的圖形界面應(yīng)用程序。
目前,常用的面向?qū)ο蟮木幊陶Z言有C++、Java、C#等。
C++語言是由C語言發(fā)展演變成的一種面向?qū)ο蟮某绦蛟O(shè)計語言。它既具備C語言面向過程設(shè)計方法的特點,同時又支持面向?qū)ο蟮某绦蛟O(shè)計方法。它是目前程序員使用最多的編程語言之一。
本書以C++語言為基礎(chǔ),闡述面向?qū)ο蟮木幊淘。本書的特色是?nèi)容全面、語言簡潔易懂、重點突出,是一部面向大學(xué)本科計算機(jī)科學(xué)相關(guān)專業(yè)的入門教材。
為了使讀者能夠透徹理解面向?qū)ο缶幊痰脑砗头椒,本書使用了大量自編的例程。全部例程的源代碼均使用Visual C++ 6.0編寫,并編譯通過。
本書由董正言主編,張聰、劉文濤、阮靈等老師也參加了部分章節(jié)的編寫工作。
由于學(xué)識水平和時間的限制,疏漏和不妥之處在所難免,敬請批評指正。
作者
2010年5月
第1章 軟件工程概述
1.1 軟件的定義與特點
1.1.1 什么是軟件
1.1.2 軟件的特點與本質(zhì)
1.1.3 “沒有銀彈”——復(fù)雜性是“軟件危機(jī)”的本質(zhì)原因
1.2 軟件工程的定義及研究的內(nèi)容
1.2.1 科學(xué)、工程與技術(shù)的界定
1.2.2 軟件工程的定義與原理
1.2.3 軟件工程的3個要素
1.2.4 軟件開發(fā)方法——對客觀世界的認(rèn)知觀
1.2.5 軟件工程與相關(guān)科學(xué)的關(guān)系
1.3 軟件工程的教育與知識體系
1.3.1 軟件工程的教育體系
1.3.2 CC2005的4個方向?qū)I(yè)規(guī)范
1.3.3 軟件工程的知識體系——SWEBOK
1.4 軟件工程的標(biāo)準(zhǔn)
1.4.1 軟件工程標(biāo)準(zhǔn)化的意義
1.4.2 軟件工程的國際標(biāo)準(zhǔn)與體系
1.4.3 國家標(biāo)準(zhǔn)
1.5 計算機(jī)輔助軟件工程
1.6 軟件工程人員的職業(yè)道德與行為準(zhǔn)則
本章小結(jié)
思考與練習(xí)
第2章 軟件過程
2.1 軟件過程
2.1.1 過程及其特征
2.1.2 軟件過程的公共框架
2.2 軟件過程模型
2.2.1 理解軟件過程模型
2.2.2 瀑布模型
2.2.3 演化軟件過程模型
2.2.4 快速原型開發(fā)方法
2.2.5 統(tǒng)一軟件過程
2.2.6 核心工作流
2.2.7 形式化方法模型
2.2.8 軟件復(fù)用一一基于構(gòu)件的開發(fā)方法
2.2.9 第4代技術(shù)
2.2.10微軟公司的軟件過程模型
2.3 軟件過程改進(jìn)
2.3.1 軟件能力成熟度模型——CMM與CMMI
2.3 CMM/CMMI的應(yīng)用及面臨的問題
2.3.3 個體軟件過程
2.3.4 團(tuán)隊軟件過程
2.3.5 CMM、TSP、PSP三者的關(guān)系
本章小結(jié)
思考與練習(xí)
第3章 軟件工程領(lǐng)域下的項目管理
3.1 項目管理的歷史實踐
3.1.1 遠(yuǎn)古的偉大工程實踐
3.1.2 溝通的故事——巴比倫塔的倒塌
3.2 軟件項目管理的范圍與內(nèi)容
3.2.1 什么是項目管理
3.2.2 軟件項目管理的范圍
3.2.3 人員
3.2.4 產(chǎn)品
3.2.5 過程
3.2.6 項目
3.3 軟件項目管理的活動一一從這里開始
3.3.1 軟件項目管理的活動概述
3.3.2 項目溝通與需求管理
3.3.3 軟件項目計劃的制定
3.3.4 項目范圍與管理
3.3.5 3-:作分解結(jié)構(gòu)
3.3.6 軟件項目的組織
3.4 項目進(jìn)度管理
3.4.1 項目里程碑
3.4.2 人員與工作量分配
3.4.3 項目進(jìn)度管理的可視化工具
3.4.4 項目管理軟件及其功能
本章小結(jié)
思考與練習(xí)
第4章 軟件項目估算
4.1 軟件項目估算概述
4.1.1 什么是估算
4.1.2 軟件項目估算的特點
4.1.3 軟件項目估算的復(fù)雜性分析
4.1.4 軟件項目估算的相關(guān)內(nèi)容
4.2 項目規(guī)模估算
4.2.1 基于代碼行的規(guī)模估算
4.2.2 功能點估算
4.2.3 基于計劃評審技術(shù)的規(guī)模估算
4.3 工作量估算
4.3.1 用代碼行與功能點估算工作量的例子
4.3.2 基于數(shù)學(xué)模型的工作量估算
4.3.3 COCOMO模型
4.3.4 COCOMOⅡ模型
4.3.5 Putnam模型
4.4 軟件成本估算
4.4.1 軟件項目成本的組成
4.4.2 軟件成本的估算方法
4.4.3 估算技術(shù)的應(yīng)用與評價
4.5 項目進(jìn)度估算
4.5.1 三點估算方法
4.5.2 項目進(jìn)度獲取值分析——項目計劃與實際進(jìn)展的定量比較
4.6 軟件工程經(jīng)濟(jì)學(xué)
4.6.1 經(jīng)濟(jì)學(xué)與工程經(jīng)濟(jì)學(xué)
4.6.2 軟件工程經(jīng)濟(jì)學(xué)研究的基本問題
4.6.3 資金的時間價值
4.6.4 軟件工程經(jīng)濟(jì)學(xué)中的成本效益評價技術(shù)
本章小結(jié)
思考與練習(xí)
第5章 軟件質(zhì)量管理
5.1 軟件質(zhì)量及其特性
5.1.1 難以定義和度量的軟件質(zhì)量
5.1.2 軟件質(zhì)量特性
5.1.3 軟件質(zhì)量保證及其活動
5.2 軟件配置管理
5.2.1 制定項目的配置計劃
5.2.2 軟件配置項及其標(biāo)識
5.2.3 版本控制
5.2.4 變更控制
5.2.5 正式技術(shù)復(fù)審
本章小結(jié)
思考與練習(xí)
第6章 軟件風(fēng)險管理
6.1 軟件項目的風(fēng)險管理
6.1.1 風(fēng)險與項目風(fēng)險
6.1.2 軟件項目風(fēng)險與管理
6.1.3 軟件風(fēng)險的定義
6.1.4 軟件風(fēng)險的類型
6.2 軟件風(fēng)險管理的體系框架
6.2.1 常見風(fēng)險管理過程框架
6.2.2 軟件風(fēng)險管理的一般過程
6.3 風(fēng)險識別
6.3.1 風(fēng)險識別過程
6.3.2 風(fēng)險識別的方法與工具
6.4 風(fēng)險分析
6.4.1 風(fēng)險分析過程
6.4.2 風(fēng)險分析的技術(shù)與工具
6.5 風(fēng)險規(guī)劃
6.5.1 風(fēng)險規(guī)劃過程
6.5.2 風(fēng)險規(guī)劃的工具與技術(shù)
6.6 風(fēng)險監(jiān)控
6.6.1 風(fēng)險監(jiān)控過程
6.6.2 風(fēng)險監(jiān)控的技術(shù)與方法
6.6.3 風(fēng)險監(jiān)控與管理計劃——RMMM計劃
本章小結(jié)
思考與練習(xí)
第2篇 結(jié)構(gòu)化開發(fā)方法
第7章 面向過程的結(jié)構(gòu)化分析
7.1 系統(tǒng)工程
……
第3篇 面向?qū)ο蟮拈_發(fā)方法
第11章 面向?qū)ο蟾攀?br>第12章 面向?qū)ο蠓治?br>第13章 面向?qū)ο笤O(shè)計
第14章 面向?qū)ο鬁y試
第15章 面向?qū)ο笙到y(tǒng)的技術(shù)度量
第4篇 軟件工程高級專題
第16章 敏捷過程開發(fā)
第17章 Web工程
第18章 形式化方法
附錄A 軟件工程和知可視化表征
瀑布模型強(qiáng)調(diào)系統(tǒng)開發(fā)應(yīng)有完整的周期,且必須完整地經(jīng)歷周期中的每一個開發(fā)階段。由于該模式強(qiáng)調(diào)系統(tǒng)開發(fā)過程需有完整的規(guī)劃、分析、設(shè)計、測試及文件等管理與控制,因此能有效地確保系統(tǒng)品質(zhì),它已經(jīng)成為業(yè)界大多數(shù)軟件開發(fā)的標(biāo)準(zhǔn)。
“線性”是人們最容易掌握并能熟練應(yīng)用的思維方法。當(dāng)人們碰到一個復(fù)雜的“非線性”問題時,總是千方百計地將其分解或轉(zhuǎn)化為一系列簡單的線性問題,然后逐個解決。然而在實踐中,過程很少能夠以純線性的方式進(jìn)行。應(yīng)提倡以一種迭代的方式重復(fù)地使用瀑布模型,通過回到前面的階段或改變前一階段的結(jié)果的迭代是非常普遍的。但是,很多人忽視了這一點。
線性順序模型過程的缺點也是非常明顯的,主要有以下幾點。
(1)實際的項目很少按照該模型給出的順序進(jìn)行。
。2)項目初期用戶常常難以清楚地給出所有需求,而這恰恰是線性順序模型所必須給出的。
(3)用戶必須有耐心,程序的運(yùn)行版本要等到項目開發(fā)晚期才能得到。大的錯誤如果到檢查運(yùn)行程序時才被發(fā)現(xiàn),后果可能是災(zāi)難性的。
。4)開發(fā)者常常被不必要地耽擱。項目組某些成員不得不等待組內(nèi)其他成員先完成其依賴的任務(wù)。
盡管如此,瀑布模型仍然是軟件工程中應(yīng)用最廣泛的過程模型。很顯然,它比起軟件開發(fā)中隨意的狀態(tài)要好得多。
2.2.3演化軟件過程模型
人們已經(jīng)越來越認(rèn)識到軟件就像所有復(fù)雜系統(tǒng)一樣要經(jīng)過一段時間的演化。業(yè)務(wù)和產(chǎn)品需求隨著開發(fā)的發(fā)展常常發(fā)生改變,想找到最終產(chǎn)品的一條直線路徑是不可能的。
演化模型是利用一種迭代的思想方法,它的特征是使軟件工程師漸進(jìn)地開發(fā)逐步完善的軟件版本。主要包括增量模型和螺旋模型兩種范型。