本書作為中級職稱的全國計算機技術與軟件專業(yè)技術資格(水平)考試(簡稱軟考)指定教材,具有比較權威的指導意義。本書根據《軟件設計師考試大綱》(2018年審定通過)的重點內容,組織了12章的內容,考生在學習教材內容的同時,還須對照考試大綱,認真學習和復習大綱的知識點。
本書是在《軟件設計師考試大綱》的指導下,對《軟件設計師教程(第4版)》進行了認真修編,部分章節(jié)是重寫后形成的。在本書中,強化了軟件工程部分的知識,增加了Web應用系統(tǒng)分析與設計知識。
本書適合參加本級別考試的考生和大學在校生作為教材。
軟件設計師教程(第5版)依據2018年審定通過的軟件設計師考試大綱大綱編寫,涵蓋軟件設計師(中級)崗位所要求的主要知識及應用技術。通過軟件設計師考試的考生可以獲得由人力資源和社會保障部、工業(yè)和信息化部認可的職業(yè)資格證書,本考試為中級資格認證。
前
言
全國計算機技術與軟件專業(yè)技術資格(水平)考試實施至今已經歷了二十余年,在社會上產生了很大的影響,對我國軟件產業(yè)的形成和發(fā)展做出了重要的貢獻。為了適應我國計算機信息技術發(fā)展的需求,人力資源和社會保障部、工業(yè)和信息化部決定將考試的級別拓展到計算機信息技術行業(yè)的各個方面,以滿足社會上對各種計算機信息技術人才的需要。
編者受全國計算機專業(yè)技術資格考試辦公室委托,對《軟件設計師教程(第4版)》進行改寫,以適應新的考試大綱要求。在考試大綱中,要求考生掌握的知識面很廣,每個章節(jié)的內容都能構成相關領域的一門甚至多門課程,因此編寫的難度很高。考慮到參加考試的人員已有一定的基礎,所以本書中只對考試大綱中所涉及的知識領域的要點加以闡述,但限于篇幅所限,不能詳細地展開,請讀者諒解。
全書共分12章,各章節(jié)內容安排如下:
第1章主要介紹計算機系統(tǒng)基礎知識、計算機體系結構以及安全性、可靠性和系統(tǒng)性能評測基礎。
第2章主要介紹程序設計語言的基本概念與基本成分,闡述了匯編程序、編譯程序與解釋程序的基本原理。
第3章主要介紹數據結構的基礎知識,包括線性結構、數組、廣義表、樹和圖,以及查找和排序的基本算法。
第4章主要介紹操作系統(tǒng)基本概念與分類及特點、進程管理、存儲管理、設備管理、文件管理、作業(yè)管理等。
第5章主要介紹軟件工程中軟件過程與過程模型、需求分析與需求工程、系統(tǒng)設計、系統(tǒng)測試、系統(tǒng)運行與維護、軟件項目管理、軟件質量、軟件度量、軟件工具與軟件開發(fā)環(huán)境基礎知識。
第6章主要介紹系統(tǒng)分析與設計、結構化分析與設計、Web應用系統(tǒng)分析與設計、用戶界面設計基礎知識。
第7章主要介紹面向對象的基本概念和面向對象開發(fā)技術,包括面向對象的分析與設計方法,UML以及設計模式的概念和應用。
第8章主要介紹算法設計與分析的基本概念,包括分治法、動態(tài)規(guī)劃法、貪心法、回溯法、分支界限法、概率算法、近似算法、數據挖掘算法及智能優(yōu)化算法。
第9章主要介紹數據庫的基本概念、數據模型、關系代數、SQL語言、規(guī)范化理論和事務處理等控制功能。
第10章主要介紹網絡與信息安全基礎知識,包括網絡體系結構、網絡互連設備、網絡構件、網絡協(xié)議、網絡應用、信息安全和網絡安全方面的基礎知識。
第11章主要介紹標準化與知識產權基礎知識。
第12章主要介紹結構化分析與設計、數據庫分析與設計、面向對象分析與設計、算法分析與設計以及面向過程、面向對象的程序設計與實現。
本書第1章由張淑平、馬志欣編寫,第2章由張淑平編寫,第3章由張淑平、陳靜玉、宋勝利編寫,第4章由王亞平編寫,第5章、第6章、第7章由霍秋艷、褚華編寫,第8章由覃桂敏、褚華編寫,第9章由王亞平編寫,第10章由嚴體華編寫,第11章由劉強編寫,第12章由王亞平、褚華、霍秋艷、覃桂敏、張淑平編寫,最后由霍秋艷、褚華統(tǒng)稿。
在本書的編寫過程中,參考了許多相關的書籍和資料,編者在此對這些參考文獻的作者表示感謝。同時感謝清華大學出版社在本書出版過程中所給予的支持和幫助。
因水平有限,書中難免存在欠妥之處,望讀者指正,以利改進和提高。
編 者
2018年1月
目
錄
第1章 計算機網絡概論... 1
1.1 計算機系統(tǒng)基礎知識... 1
1.1.1 計算機系統(tǒng)硬件基本組成... 1
1.1.2 中央處理單元... 1
1.1.3 數據表示... 4
1.1.4 校驗碼... 10
1.2 計算機體系結構... 12
1.2.1 計算機體系結構的發(fā)展... 12
1.2.2 存儲系統(tǒng)... 20
1.2.3 輸入/輸出技術... 31
1.2.4 總線結構... 35
1.3 安全性、可靠性與系統(tǒng)性能評測
基礎知識... 38
1.3.1 計算機安全概述... 38
1.3.2 加密技術和認證技術... 40
1.3.3 計算機可靠性... 48
1.3.4 計算機系統(tǒng)的性能評價... 51
第2章 程序設計語言基礎知識... 56
2.1 程序設計語言概述... 56
2.1.1 程序設計語言的基本概念... 56
2.1.2 程序設計語言的基本成分... 61
2.2 語言處理程序基礎... 67
2.2.1 匯編程序基本原理... 67
2.2.2 編譯程序基本原理... 69
2.2.3 解釋程序基本原理... 96
第3章 數據結構... 99
3.1 線性結構... 99
3.1.1 線性表... 99
3.1.2 棧和隊列... 104
3.1.3 串... 108
3.2 數組、矩陣和廣義表... 113
3.2.1 數組... 113
3.2.2 矩陣... 115
3.2.3 廣義表... 116
3.3 樹... 118
3.3.1 樹與二叉樹的定義... 118
3.3.2 二叉樹的性質與存儲結構... 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 拓撲排序和關鍵路徑... 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 基數排序... 174
3.6.8 內部排序方法小結... 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 進程管理... 185
4.2.1
基本概念... 185
4.2.2 進程的控制... 189
4.2.3 進程間的通信... 189
4.2.4 管程... 193
4.2.5 進程調度... 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 設備管理... 216
4.4.1 設備管理概述... 216
4.4.2 I/O軟件... 217
4.4.3 設備管理采用的相關技術... 218
4.4.4 磁盤調度... 221
4.5 文件管理... 224
4.5.1 文件與文件系統(tǒng)... 224
4.5.2 文件的結構和組織... 225
4.5.3 文件目錄... 227
4.5.4 存取方法和存儲空間的管理... 229
4.5.5 文件的使用... 231
4.5.6 文件的共享和保護... 231
4.5.7 系統(tǒng)的安全與可靠性... 233
4.6 作業(yè)管理... 234
4.6.1 作業(yè)與作業(yè)控制... 235
4.6.2 作業(yè)調度... 236
4.6.3 用戶界面... 238
第5章 軟件工程基礎知識... 239
5.1 軟件工程概述... 239
5.1.1 計算機軟件... 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 基于構件的開發(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)設計... 260
5.4.1 概要設計... 261
5.4.2 詳細設計... 262
5.5 系統(tǒng)測試... 262
5.5.1 系統(tǒng)測試與調試... 262
5.5.2 傳統(tǒng)軟件的測試策略... 264
5.5.3 測試面向對象軟件... 271
5.5.4 測試Web應用... 272
5.5.5 測試方法... 273
5.5.6 調試... 276
5.6 運行和維護知識... 278
5.6.1 系統(tǒng)轉換... 278
5.6.2 系統(tǒng)維護概述... 279
5.6.3 系統(tǒng)評價... 283
5.7 軟件項目管理... 284
5.7.1 軟件項目管理涉及的范圍... 284
5.7.2 軟件項目估算... 287
5.7.3 進度管理... 289
5.7.4 軟件項目的組織... 292
5.7.5 軟件配置管理... 294
5.7.6 風險管理... 296
5.8 軟件質量... 300
5.8.1 軟件質量特性... 300
5.8.2 軟件質量保證... 302
5.8.3 軟件評審... 304
5.8.4 軟件容錯技術... 306
5.9 軟件度量... 307
5.9.1 軟件度量分類... 307
5.9.2 軟件復雜性度量... 309
5.10 軟件工具與軟件開發(fā)環(huán)境... 311
5.10.1 軟件工具... 311
5.10.2 軟件開發(fā)環(huán)境... 313
第6章 結構化開發(fā)方法... 315
6.1 系統(tǒng)分析與設計概述... 315
6.1.1 系統(tǒng)分析概述... 315
6.1.2 系統(tǒng)設計的基本原理... 317
6.1.3 系統(tǒng)總體結構設計... 319
6.1.4 系統(tǒng)文檔... 323
6.2 結構化分析方法... 325
6.2.1 結構化分析方法概述... 325
6.2.2 數據流圖... 325
6.2.3 數據字典(DD)... 335
6.3 結構化設計方法... 337
6.3.1 結構化設計的步驟... 337
6.3.2 數據流圖到軟件體系結構的
映射... 338
6.4 WebApp分析與設計... 340
6.4.1 WebApp的特性... 341
6.4.2 WebApp需求模型... 341
6.4.3 WebApp設計... 344
6.5 用戶界面設計... 346
6.5.1 用戶界面設計的黃金原則... 346
6.5.2 用戶界面的分析與設計... 348
6.5.3 用戶界面設計問題... 349