本書作為中級職稱的全國計算機(jī)技術(shù)與軟件專業(yè)技術(shù)資格(水平)考試(簡稱軟考)指定教材,具有比較權(quán)威的指導(dǎo)意義。本書根據(jù)《軟件設(shè)計師考試大綱》(2018年審定通過)的重點內(nèi)容,組織了12章的內(nèi)容,考生在學(xué)習(xí)教材內(nèi)容的同時,還須對照考試大綱,認(rèn)真學(xué)習(xí)和復(fù)習(xí)大綱的知識點。
本書是在《軟件設(shè)計師考試大綱》的指導(dǎo)下,對《軟件設(shè)計師教程(第4版)》進(jìn)行了認(rèn)真修編,部分章節(jié)是重寫后形成的。在本書中,強(qiáng)化了軟件工程部分的知識,增加了Web應(yīng)用系統(tǒng)分析與設(shè)計知識。
本書適合參加本級別考試的考生和大學(xué)在校生作為教材。
軟件設(shè)計師教程(第5版)依據(jù)2018年審定通過的軟件設(shè)計師考試大綱大綱編寫,涵蓋軟件設(shè)計師(中級)崗位所要求的主要知識及應(yīng)用技術(shù)。通過軟件設(shè)計師考試的考生可以獲得由人力資源和社會保障部、工業(yè)和信息化部認(rèn)可的職業(yè)資格證書,本考試為中級資格認(rèn)證。
前
言
全國計算機(jī)技術(shù)與軟件專業(yè)技術(shù)資格(水平)考試實施至今已經(jīng)歷了二十余年,在社會上產(chǎn)生了很大的影響,對我國軟件產(chǎn)業(yè)的形成和發(fā)展做出了重要的貢獻(xiàn)。為了適應(yīng)我國計算機(jī)信息技術(shù)發(fā)展的需求,人力資源和社會保障部、工業(yè)和信息化部決定將考試的級別拓展到計算機(jī)信息技術(shù)行業(yè)的各個方面,以滿足社會上對各種計算機(jī)信息技術(shù)人才的需要。
編者受全國計算機(jī)專業(yè)技術(shù)資格考試辦公室委托,對《軟件設(shè)計師教程(第4版)》進(jìn)行改寫,以適應(yīng)新的考試大綱要求。在考試大綱中,要求考生掌握的知識面很廣,每個章節(jié)的內(nèi)容都能構(gòu)成相關(guān)領(lǐng)域的一門甚至多門課程,因此編寫的難度很高。考慮到參加考試的人員已有一定的基礎(chǔ),所以本書中只對考試大綱中所涉及的知識領(lǐng)域的要點加以闡述,但限于篇幅所限,不能詳細(xì)地展開,請讀者諒解。
全書共分12章,各章節(jié)內(nèi)容安排如下:
第1章主要介紹計算機(jī)系統(tǒng)基礎(chǔ)知識、計算機(jī)體系結(jié)構(gòu)以及安全性、可靠性和系統(tǒng)性能評測基礎(chǔ)。
第2章主要介紹程序設(shè)計語言的基本概念與基本成分,闡述了匯編程序、編譯程序與解釋程序的基本原理。
第3章主要介紹數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)知識,包括線性結(jié)構(gòu)、數(shù)組、廣義表、樹和圖,以及查找和排序的基本算法。
第4章主要介紹操作系統(tǒng)基本概念與分類及特點、進(jìn)程管理、存儲管理、設(shè)備管理、文件管理、作業(yè)管理等。
第5章主要介紹軟件工程中軟件過程與過程模型、需求分析與需求工程、系統(tǒng)設(shè)計、系統(tǒng)測試、系統(tǒng)運(yùn)行與維護(hù)、軟件項目管理、軟件質(zhì)量、軟件度量、軟件工具與軟件開發(fā)環(huán)境基礎(chǔ)知識。
第6章主要介紹系統(tǒng)分析與設(shè)計、結(jié)構(gòu)化分析與設(shè)計、Web應(yīng)用系統(tǒng)分析與設(shè)計、用戶界面設(shè)計基礎(chǔ)知識。
第7章主要介紹面向?qū)ο蟮幕靖拍詈兔嫦驅(qū)ο箝_發(fā)技術(shù),包括面向?qū)ο蟮姆治雠c設(shè)計方法,UML以及設(shè)計模式的概念和應(yīng)用。
第8章主要介紹算法設(shè)計與分析的基本概念,包括分治法、動態(tài)規(guī)劃法、貪心法、回溯法、分支界限法、概率算法、近似算法、數(shù)據(jù)挖掘算法及智能優(yōu)化算法。
第9章主要介紹數(shù)據(jù)庫的基本概念、數(shù)據(jù)模型、關(guān)系代數(shù)、SQL語言、規(guī)范化理論和事務(wù)處理等控制功能。
第10章主要介紹網(wǎng)絡(luò)與信息安全基礎(chǔ)知識,包括網(wǎng)絡(luò)體系結(jié)構(gòu)、網(wǎng)絡(luò)互連設(shè)備、網(wǎng)絡(luò)構(gòu)件、網(wǎng)絡(luò)協(xié)議、網(wǎng)絡(luò)應(yīng)用、信息安全和網(wǎng)絡(luò)安全方面的基礎(chǔ)知識。
第11章主要介紹標(biāo)準(zhǔn)化與知識產(chǎn)權(quán)基礎(chǔ)知識。
第12章主要介紹結(jié)構(gòu)化分析與設(shè)計、數(shù)據(jù)庫分析與設(shè)計、面向?qū)ο蠓治雠c設(shè)計、算法分析與設(shè)計以及面向過程、面向?qū)ο蟮某绦蛟O(shè)計與實現(xiàn)。
本書第1章由張淑平、馬志欣編寫,第2章由張淑平編寫,第3章由張淑平、陳靜玉、宋勝利編寫,第4章由王亞平編寫,第5章、第6章、第7章由霍秋艷、褚華編寫,第8章由覃桂敏、褚華編寫,第9章由王亞平編寫,第10章由嚴(yán)體華編寫,第11章由劉強(qiáng)編寫,第12章由王亞平、褚華、霍秋艷、覃桂敏、張淑平編寫,最后由霍秋艷、褚華統(tǒng)稿。
在本書的編寫過程中,參考了許多相關(guān)的書籍和資料,編者在此對這些參考文獻(xiàn)的作者表示感謝。同時感謝清華大學(xué)出版社在本書出版過程中所給予的支持和幫助。
因水平有限,書中難免存在欠妥之處,望讀者指正,以利改進(jìn)和提高。
編 者
2018年1月
目
錄
第1章 計算機(jī)網(wǎng)絡(luò)概論... 1
1.1 計算機(jī)系統(tǒng)基礎(chǔ)知識... 1
1.1.1 計算機(jī)系統(tǒng)硬件基本組成... 1
1.1.2 中央處理單元... 1
1.1.3 數(shù)據(jù)表示... 4
1.1.4 校驗碼... 10
1.2 計算機(jī)體系結(jié)構(gòu)... 12
1.2.1 計算機(jī)體系結(jié)構(gòu)的發(fā)展... 12
1.2.2 存儲系統(tǒng)... 20
1.2.3 輸入/輸出技術(shù)... 31
1.2.4 總線結(jié)構(gòu)... 35
1.3 安全性、可靠性與系統(tǒng)性能評測
基礎(chǔ)知識... 38
1.3.1 計算機(jī)安全概述... 38
1.3.2 加密技術(shù)和認(rèn)證技術(shù)... 40
1.3.3 計算機(jī)可靠性... 48
1.3.4 計算機(jī)系統(tǒng)的性能評價... 51
第2章 程序設(shè)計語言基礎(chǔ)知識... 56
2.1 程序設(shè)計語言概述... 56
2.1.1 程序設(shè)計語言的基本概念... 56
2.1.2 程序設(shè)計語言的基本成分... 61
2.2 語言處理程序基礎(chǔ)... 67
2.2.1 匯編程序基本原理... 67
2.2.2 編譯程序基本原理... 69
2.2.3 解釋程序基本原理... 96
第3章 數(shù)據(jù)結(jié)構(gòu)... 99
3.1 線性結(jié)構(gòu)... 99
3.1.1 線性表... 99
3.1.2 棧和隊列... 104
3.1.3 串... 108
3.2 數(shù)組、矩陣和廣義表... 113
3.2.1 數(shù)組... 113
3.2.2 矩陣... 115
3.2.3 廣義表... 116
3.3 樹... 118
3.3.1 樹與二叉樹的定義... 118
3.3.2 二叉樹的性質(zhì)與存儲結(jié)構(gòu)... 119
3.3.3 二叉樹的遍歷... 122
3.3.4 線索二叉樹... 125
3.3.5 最優(yōu)二叉樹... 126
3.3.6 樹和森林... 130
3.4 圖... 133
3.4.1 圖的定義與存儲... 134
3.4.2 圖的遍歷... 138
3.4.3 生成樹及最小生成樹... 140
3.4.4 拓?fù)渑判蚝完P(guān)鍵路徑... 143
3.4.5 最短路徑... 146
3.5 查找... 149
3.5.1 查找的基本概念... 149
3.5.2 靜態(tài)查找表的查找方法... 150
3.5.3 動態(tài)查找表... 154
3.5.4 哈希表... 161
3.6 排序... 165
3.6.1 排序的基本概念... 165
3.6.2 簡單排序... 165
3.6.3 希爾排序... 168
3.6.4 快速排序... 169
3.6.5 堆排序... 170
3.6.6 歸并排序... 173
3.6.7 基數(shù)排序... 174
3.6.8 內(nèi)部排序方法小結(jié)... 175
3.6.9 外部排序... 176
第4章 操作系統(tǒng)知識... 180
4.1 操作系統(tǒng)概述... 180
4.1.1
操作系統(tǒng)的基本概念... 180
4.1.2
操作系統(tǒng)分類及特點... 181
4.1.3
操作系統(tǒng)的發(fā)展... 185
4.2 進(jìn)程管理... 185
4.2.1
基本概念... 185
4.2.2 進(jìn)程的控制... 189
4.2.3 進(jìn)程間的通信... 189
4.2.4 管程... 193
4.2.5 進(jìn)程調(diào)度... 195
4.2.6 死鎖... 198
4.2.7 線程... 202
4.3 存儲管理... 202
4.3.1 基本概念... 203
4.3.2 存儲管理方案... 204
4.3.3 分頁存儲管理... 205
4.3.4 分段存儲管理... 208
4.3.5 段頁式存儲管理... 209
4.3.6 虛擬存儲管理... 211
4.4 設(shè)備管理... 216
4.4.1 設(shè)備管理概述... 216
4.4.2 I/O軟件... 217
4.4.3 設(shè)備管理采用的相關(guān)技術(shù)... 218
4.4.4 磁盤調(diào)度... 221
4.5 文件管理... 224
4.5.1 文件與文件系統(tǒng)... 224
4.5.2 文件的結(jié)構(gòu)和組織... 225
4.5.3 文件目錄... 227
4.5.4 存取方法和存儲空間的管理... 229
4.5.5 文件的使用... 231
4.5.6 文件的共享和保護(hù)... 231
4.5.7 系統(tǒng)的安全與可靠性... 233
4.6 作業(yè)管理... 234
4.6.1 作業(yè)與作業(yè)控制... 235
4.6.2 作業(yè)調(diào)度... 236
4.6.3 用戶界面... 238
第5章 軟件工程基礎(chǔ)知識... 239
5.1 軟件工程概述... 239
5.1.1 計算機(jī)軟件... 240
5.1.2 軟件工程基本原理... 241
5.1.3 軟件生存周期... 243
5.1.4 軟件過程... 245
5.2 軟件過程模型... 247
5.2.1 瀑布模型(Waterfall Model)... 248
5.2.2 增量模型(Incremental
Model)... 249
5.2.3 演化模型(Evolutionary
Model)... 250
5.2.4 噴泉模型
(Water Fountain Model)... 252
5.2.5 基于構(gòu)件的開發(fā)模型
(Component-based
Development Model)... 252
5.2.6 形式化方法模型(Formal
Methods Model)... 253
5.2.7 統(tǒng)一過程(UP)模型... 253
5.2.8 敏捷方法(Agile
Development)... 254
5.3 需求分析... 256
5.3.1 軟件需求... 256
5.3.2 需求分析原則... 257
5.3.3 需求工程... 257
5.4 系統(tǒng)設(shè)計... 260
5.4.1 概要設(shè)計... 261
5.4.2 詳細(xì)設(shè)計... 262
5.5 系統(tǒng)測試... 262
5.5.1 系統(tǒng)測試與調(diào)試... 262
5.5.2 傳統(tǒng)軟件的測試策略... 264
5.5.3 測試面向?qū)ο筌浖?.. 271
5.5.4 測試Web應(yīng)用... 272
5.5.5 測試方法... 273
5.5.6 調(diào)試... 276
5.6 運(yùn)行和維護(hù)知識... 278
5.6.1 系統(tǒng)轉(zhuǎn)換... 278
5.6.2 系統(tǒng)維護(hù)概述... 279
5.6.3 系統(tǒng)評價... 283
5.7 軟件項目管理... 284
5.7.1 軟件項目管理涉及的范圍... 284
5.7.2 軟件項目估算... 287
5.7.3 進(jìn)度管理... 289
5.7.4 軟件項目的組織... 292
5.7.5 軟件配置管理... 294
5.7.6 風(fēng)險管理... 296
5.8 軟件質(zhì)量... 300
5.8.1 軟件質(zhì)量特性... 300
5.8.2 軟件質(zhì)量保證... 302
5.8.3 軟件評審... 304
5.8.4 軟件容錯技術(shù)... 306
5.9 軟件度量... 307
5.9.1 軟件度量分類... 307
5.9.2 軟件復(fù)雜性度量... 309
5.10 軟件工具與軟件開發(fā)環(huán)境... 311
5.10.1 軟件工具... 311
5.10.2 軟件開發(fā)環(huán)境... 313
第6章 結(jié)構(gòu)化開發(fā)方法... 315
6.1 系統(tǒng)分析與設(shè)計概述... 315
6.1.1 系統(tǒng)分析概述... 315
6.1.2 系統(tǒng)設(shè)計的基本原理... 317
6.1.3 系統(tǒng)總體結(jié)構(gòu)設(shè)計... 319
6.1.4 系統(tǒng)文檔... 323
6.2 結(jié)構(gòu)化分析方法... 325
6.2.1 結(jié)構(gòu)化分析方法概述... 325
6.2.2 數(shù)據(jù)流圖... 325
6.2.3 數(shù)據(jù)字典(DD)... 335
6.3 結(jié)構(gòu)化設(shè)計方法... 337
6.3.1 結(jié)構(gòu)化設(shè)計的步驟... 337
6.3.2 數(shù)據(jù)流圖到軟件體系結(jié)構(gòu)的
映射... 338
6.4 WebApp分析與設(shè)計... 340
6.4.1 WebApp的特性... 341
6.4.2 WebApp需求模型... 341
6.4.3 WebApp設(shè)計... 344
6.5 用戶界面設(shè)計... 346
6.5.1 用戶界面設(shè)計的黃金原則... 346
6.5.2 用戶界面的分析與設(shè)計... 348
6.5.3 用戶界面設(shè)計問題... 349