軟件設計師主要完成三項工作:(1)寫文檔;(2)組織和指導程序員開展工作;(3)軟件優化和集成測試,開發高質量的軟件。這個工作需要工程師的實際工作能力和專業水平。具體來說,通過該考試的合格人員,可以根據軟件開發項目管理和軟件工程的要求,進行軟件設計,編寫程序設計說明書等相應文檔,組織和指導程序員編寫和調試程序,對軟件進行優化和集成,開發出符合系統總體設計要求的高質量軟件。
考試內容要求
知識點的掌握從深到淺可以分為五個層次,分別要求熟練、掌握、理解、熟悉、明白。包括2精通(常用的數據結構和算法,軟件設計的方法和技術),8精通,2熟悉,1正確理解,具體體現在以下12個方面:
(1)掌握數據表示、算術和邏輯運算;
(2)掌握相關應用數學和離散數學的基礎知識;
(3)掌握計算機體系結構、各主要部件的性能和基本工作原理;
(4)掌握操作系統和編程語言的基礎知識,了解編譯器的基礎知識;
(5)熟悉常用數據結構和常用算法;
(6)熟悉數據庫、網絡和多媒體的基礎知識;
(7)掌握C編程語言和C++、Java、Visual Basic、Visual C++中的壹種;
(8)熟悉軟件工程、軟件過程改進和軟件開發項目管理的基礎知識;
(9)掌握軟件設計的方法和技術;
(10)掌握常用信息技術標準、安全、相關法律法規基礎知識;
(11)了解信息化和計算機應用基礎知識;
(12)正確閱讀和理解計算機領域的英文資料。
解析:與2001考試大綱相比,新大綱要求知識面更廣,更加註重軟件設計開發的實踐能力,這在下午的考試中得到了充分體現。考試內容除技術要求外,還要求具備軟件工程實踐能力、安全、標準化、法律法規等方面的知識。畢竟軟件設計師是軟件行業的中堅力量,所以考試要求比較高。
二、考試範圍
考試科目1:計算機與軟件工程知識
本節包含以下內容:
計算機科學基金會
l計算機系統知識
l系統開發和操作的知識
l安全知識
l標準化知識
l信息化基礎知識
l計算機專業英語
1.計算機科學基礎
1.1數系及其變換
二進制、十進制和十六進制等常用記數系統及其相互轉換。
1.2數據的表示
(原碼、補碼、移位碼的表示,整數和實數的內置表示,精度和溢出)
非數字表示法(字符和漢字表示法、聲音表示法、圖像表示法)
校驗方法和校驗碼(奇偶校驗碼、漢明校驗碼、循環冗余校驗碼)
1.3算術和邏輯運算
計算機中的二進制數運算方法
邏輯代數的基本運算和邏輯表達式的簡化
分析1.1/1.2/1.3
這部分的要求和程序員考試大綱基本壹致。
要點:數字表示,校驗碼
難點:數字的四種編碼:原碼、補碼、移位碼及其變換方法。浮點數的表示及其規範化。
試題壹般分布在:數制表示、數據表示、校驗碼長度、邏輯表達式(公式、等價變換),定義了“與”、“非”、“異或”的運算規則。
考查頻率較高的內容:浮點數規格化、十進制轉換、求補數。
1.4數學基礎知識
命題邏輯、謂詞邏輯和形式邏輯的基礎知識
常見數值計算(誤差、矩陣和行列式、近似方程求解、插值、數值積分)
排列組合,概率論和應用統計學的應用(數據的統計分析)
基本操作方法(預測與決策、線性規劃、網絡圖、模擬)
分析1.4
教學大綱要求掌握相關應用數學和離散數學的基礎知識。
這部分作為背景知識,雖然沒有專門考察,但是在其他題目中,尤其是編程中出現過。
1.5通用數據結構
數組(靜態數組、動態數組)、線性表、鏈表(單向鏈表、雙向鏈表、循環鏈表)、隊列、堆棧、樹(二叉樹、搜索樹、平衡樹、線索樹、堆)、圖等的定義、存儲和操作。
哈希(存儲地址計算、沖突處理)
1.6常用算法
排序算法、搜索算法、數值計算方法、字符串處理方法、數據壓縮算法、遞歸算法、圖形相關算法。
算法與數據結構的關系,算法效率,算法設計,算法描述(流程圖,偽代碼,決策表),算法復雜度。
分析1.5/1.6
因為數據結構是程序設計的基礎,算法與數據結構密切相關,所以這部分分為考試的重點內容,需要熟練掌握。
重點:順序存儲結構和鏈式存儲結構的特點,鏈表中的頭節點,棧的操作和溢出,循環隊列的基本操作。
數組元素的存儲位置,特殊矩陣的壓縮存儲,廣義表的表頭和表尾的求解。
二叉樹存儲方法、由遍歷順序確定的二叉樹以及二叉樹的計數問題
圖的遍歷算法,最小生成樹算法,拓撲排序和關鍵路徑及最短路徑算法。
平均搜索長度,半搜索決策樹,平衡二叉樹的最小節點數,插入操作和平衡處理,哈希表的構造和搜索。
排序的穩定性,快速排序的分析與改進,內部排序的時間下界,算法的時間復雜度分析。
難點:二叉樹節點與深度的關系,存儲(矩陣,鄰接表)與運算,遍歷,
考查頻率較高的內容:樹遍歷、數據元素存儲方式、搜索樹、平衡樹。
考題壹般分布在:數據元素的存儲方式、隊列和棧的性質和比較、鏈表運算、二叉樹的定義和性質、二叉樹的遍歷/節點計算、樹的遍歷、搜索樹、平衡樹等。,以及圖的概念和性質。
常見的排序算法,搜索算法,遞歸算法,算法的基本特征,常見的算法思想,算法效率的比較(時間和空間復雜度),算法的描述和算法復雜度的比較。
2.計算機系統知識
2.1硬件知識
2.1.1計算機系統的組成、體系結構分類和特點
CPU和內存的組成、性能和基本工作原理
常用I/O設備和通信設備的性能及基本工作原理。
I/O接口的功能、類型和特性
(中斷系統、DMA、I/O處理器模式)
CISC/RISC,流水線,多處理器,並行處理
2.1.2存儲系統
主存-緩存存儲系統的工作原理
虛擬內存的基本工作原理,多級存儲系統的性能價格比
RAID類型和特征
分析2.1.1/2.1.2
分析:磁盤存儲的容量計算、地址映射、流水線和系統結構分類。
重點:緩存替換算法,內存和接口的尋址方式,流水線操作。
難點:I/O控制模式、地址計算、並行處理的概念和層次。
考查頻率較高的內容:指令的尋址方式和指令的執行過程;存儲容量的計算,
流水線處理器的主要指標,CISC/RISC比較等。
2.1.3安全、可靠性和系統性能評估的基礎知識
診斷和容錯
系統可靠性分析和評估
計算機系統性能評估方法
解析2.1.3這部分內容多為記憶內容。
重點:數據加/解密知識、計算機安全等級、認證技術、數字簽名等。
平均故障間隔時間的定義,平均修復時間,計算機可靠性模型,性能評估。
難點:數據加密/解密知識,密鑰系統
考試頻率較高的內容:可靠性性能評估、數據安全知識、計算機可靠性與性能評估。
2.2軟件知識
2.2.1操作系統知識
操作系統的內核(中斷控制)、進程和線程的概念。
處理器管理(狀態轉換,* * *獨占和排他、分時輪換、搶占、死鎖)
存儲管理(主存保護、動態連接分配、分段、分頁、虛擬內存)
設備管理(I/O控制、假脫機)
文件管理(文件目錄、文件組織、訪問方法、訪問控制、恢復處理)
作業管理(作業調度、作業控制語言、多道程序設計)
漢字處理,多媒體處理,人機界面
網絡操作系統和嵌入式操作系統的基礎知識
操作系統的配置
分析2.2.1
重點:處理器管理、存儲管理、作業調度、進程調度、頁面調度等操作系統的五大管理功能尤為重要,狀態轉移、* *共享與互斥、分時輪換、搶占與死鎖。
難點:作業調度,進程調度,頁面調度算法,PV操作。
考試題型壹般分布在:操作系統概述、處理器管理、存儲、文件管理、作業、進程調度和進程狀態改變。
考查頻率較高的內容:PV操作、進程死鎖/同步、內存分配、並發執行程序、進程間狀態轉移、PV實現的進程間同步互斥、死鎖及其避免、地址變換、頁面替換、工作集。
2.2.2編程語言和語言處理程序的知識
匯編、編譯和解釋系統的基本知識和工作原理。
程序設計語言的基本組成部分:數據、操作、控制和傳輸、過程(函數)調用。
各種編程語言的主要特點和應用
分析
解析:語法考試,自動機,正則化
重點:編譯器的基本組成,正則表達式和有限自動機,語法和語言的形式化描述,中間代碼,自動機原理,語法和語言的定義。
考查頻率較高的內容:正則表達式與正則集合之間的轉換,有限自動機與正則表達式。
2.3計算機網絡知識
網絡架構(網絡拓撲、OSI/RM、基本網絡協議)
傳輸介質、傳輸技術、傳輸方法和傳輸控制器
常見的網絡設備和各種通信設備
客戶機/服務器結構,瀏覽器/服務器結構。
局域網拓撲結構,訪問控制,局域網聯網,局域網間連接,局域網-廣域網連接。
互聯網基礎和應用
網絡軟件
網絡管理
網絡性能分析
分析2.3
計算機網絡中OSI/RM的七層劃分及各種協議的作用。傳輸理論,互聯設備,互聯網知識,除了參考模型理論,都比較瑣碎,需要知識積累。
重點:網絡分類,拓撲結構,OSI參考模型層次結構和相應的協議,帶寬計算,子網劃分,防火墻技術。
難點:IP子網劃分;傳輸控制,各層協議的功能
考試題型壹般分布在:這部分知識除了上面的難點部分基本屬於理解記憶的知識點,知識點比較分散,但是考試中的考點都在大綱所列的知識點之中。
考查頻率較高的內容:TCP/IP協議、參考模型的7層協議、IP地址的分類、各種網絡設備的比較;
2.4數據庫知識
數據庫管理系統的功能和特點
數據庫模型(概念模型、外部模型、內部模型)
數據模型,ER圖,第壹範式,第二範式,第三範式。
數據操作(集合操作和關系操作)
數據庫語言(SQL)
數據庫的控制功能(並發控制、恢復、安全性和完整性)
數據倉庫和分布式數據庫的基本知識
分析2.4
這部分對於上午和下午的題目都很重要,是學習和復習的重點。
重點:用E-R模型表示實際問題,擴展E-R模型,ER圖到關系模型的轉換,數據庫語言(SQL),SELECT查詢語句的應用,關系代數表達式,關系模型的完整性約束,函數依賴。
難點:五種基本關系運算方法,組合關系運算方法,正則化理論(),函數依賴,分解保持函數依賴,分解保持無損連接和函數依賴,判斷壹個分解的無損連通性和保持函數。
考查頻率較高的內容:數據模型、關系運算與SQL語句的轉換、函數依賴。
2.5多媒體知識
多媒體系統的基本知識,多媒體設備的性能特點和常用的多媒體文件格式。
簡單圖形的繪制和圖像文件的處理方法
音視頻信息的應用
多媒體應用開發過程
分析2.5
理解記憶基本上是壹個知識點。
重點:多媒體的基本概念,聲音數字化的過程,圖像壓縮和編碼,視頻文件的國際標準,流媒體的概念,多媒體計算機系統,和虛擬現實技術。
難點:多媒體信息的容量計算、數據壓縮、常見的多媒體文件格式、音視頻的物理特性等。
考查頻率較高的內容:信息基礎知識和容量計算。
2.6系統性能知識
性能指標(響應時間、吞吐量、周轉時間)和性能設計。
性能測試和性能評估
可靠性指標、計算和可靠性設計
可靠性測試和可靠性評估
分析2.6
重點:可靠性評估
考核頻率較高的內容:系統可靠性和設備周轉時間的計算。
2.7計算機應用基礎知識
信息管理、數據處理、輔助設計、自動控制、科學計算、人工智能等基礎知識。
電信服務的基本知識
通用應用系統
分析2.7
這部分內容不是考試的重點,只是做個大概的了解。
3.系統開發和操作知識
這部分涉及上午的考試和下午的考試,是軟件設計師工作能力的重點。
3.1軟件工程、軟件過程改進和軟件開發項目管理知識
軟件工程知識
軟件開發生命周期每個階段的目標和任務
軟件開發項目管理的基礎知識(時間管理、成本管理、質量管理、人力資源管理、風險管理等)。)及其常用管理工具。
主要軟件開發方法(生命周期法、原型法、面向對象法、CASE)
軟件開發工具和環境知識
軟件過程改進的知識
軟件質量管理知識
軟件開發過程評估和軟件能力成熟度評估的基本知識
分析3.1
重點:軟件開發方法,CMM,成本估算,風險分析,進度管理,人員管理,軟件開發環境。
3.2系統分析的基礎知識
系統分析的目的和任務
結構化方法(數據流圖(DFD)、數據字典(DD)、實體關系圖(ERD)、結構化語言描述處理)。
統壹建模語言(UML)
系統規範
分析3.2
重視UML在系統分析中的應用
重點:數據流圖(DFD),數據字典(DD)和實體關系圖(ERD)
測試中心:UML的各種圖表
3.3系統設計知識
系統設計的目的和任務
結構化設計方法和工具(系統流程圖、HIPO圖、控制流程圖)
系統總體結構設計(總體布局、設計原則、模塊結構設計、數據存儲設計、系統配置方案)
詳細的系統設計(代碼設計、數據庫設計、用戶界面設計、流程設計)
系統設計規範
分析3.3
要點:系統流程圖、HIPO圖和控制流程圖。
3.4系統實施知識
系統實施的主要任務
結構化編程、面向對象編程和可視化編程。
編程風格
編程語言的選擇
系統測試的目的、類型和方法(黑盒測試、白盒測試和灰盒測試)
測試設計和管理(誤差曲線、誤差消除、收斂、註入失敗、測試用例設計、系統測試報告)
系統轉換的基本知識
3.5系統操作和維護知識
系統運行管理基礎知識
系統維護的基本知識
系統評價的基礎知識
分析3.4/3.5
重點:結構化設計中的信息流、轉換分析、系統結構設計原則、系統劃分、模塊設計、數據存儲設計、面向對象編程、測試方法、系統維護分類。
難點:系統測試方法、測試分類、系統可維護性評估指標。
3.6面向對象的開發方法
面向對象的開發概念(類、對象、屬性、封裝、繼承、多態、對象間的引用)
面向對象開發方法的優勢和有效領域
面向對象的設計方法(架構、類設計、用戶界面設計)
面向對象的實現方法(編程語言的選擇、類的實現、方法的實現、用戶界面的實現、測試數據的準備)
面向對象編程語言(如C++、Java、Visual、Bsasic、Visual C++)的基本機制
面向對象數據庫和分布式對象的概念。
分析3.6
重點:面向對象開發:類、對象、屬性、封裝、繼承、多態、OMT方法。
難點:建議多掌握數據流圖和結構化方法。
分析3
試題壹般分布在:DFD,軟件的生命周期;數據流圖;模塊之間的關系;軟件測試的分類,軟件質量管理的特點(標準),主要的軟件開發方法,系統測試和軟件能力成熟度評估。
考查頻率較高的內容:數據流圖、黑盒/白盒測試、面向對象技術的概念。
4.安全知識
安全的基本概念
防止計算機病毒和計算機犯罪。
訪問控制、入侵防禦和安全管理措施
加密和解密機制
風險分析、風險類型、抗風險措施和內部控制
分析4
系統安全是目前社會關註的問題,也是應用價值很高的知識,可以結合現實中的相關問題加深理解。
考查頻率較高的內容:加密解密算法,
5.標準化知識
標準化意識、標準化發展和標準制定過程。
國際標準、國家標準、行業標準和企業標準的基本知識
了解代碼標準、文件格式標準、安全標準、軟件開發規範和文檔標準。
標準化組織
6.信息化基礎知識
信息意識
全球信息化趨勢、國家信息化戰略、企業信息化戰略和策略。
相關法律法規
遠程教育、電子商務、電子政務等基礎知識。
企業信息資源管理基礎知識
分析5/6
信息化和標準化知識是新的考點。標準化有標準認定、標準修訂等,是對基礎素質的壹種考查,也要重視。
檢查頻率高的內容。
7.計算機英語
掌握計算機技術的基本詞匯
能正確閱讀和理解計算機領域的英文資料。
分析7
專業英語是對專業知識和英語水平的考驗。考前要有意識的看壹些英語專業資料。
考試題型壹般分布在:軟件行業標準、計算機安全基礎知識、信息化基礎知識。
檢查頻率高的內容:行業標準類別;計算機安全,CMM分類,計算機軟件版權。
考試科目二:軟件設計
這壹部分的具體內容如下:
l外部設計
l內部設計
l程序設計
l系統實施
l軟件工程
這部分涉及軟件設計的日常工作,也出現在上午的考試題中。
1.外部設計
1.1了解系統需求描述
1.2系統開發準備
選擇開發方法,準備開發環境,制定開發計劃。
1.3設計系統功能
選擇系統結構,設計各子系統的功能和接口,設計安全策略、需求和實現方法,制定詳細的工作流和數據流。
1.4設計數據模型
設計ER模型和數據模型。
1.5撰寫外部設計文檔
系統配置圖、子系統關系圖、系統流程圖、系統功能規範、輸入輸出規範、數據規範和用戶手冊框架。
設計系統測試要求
1.6設計審查
應該能從考試描述中讀懂。
2.內部設計
2.1設計軟件結構
根據組件分解,確定組件的功能規格和組件之間的接口。
采用中間件和工具
2.2設計輸入和輸出
屏幕界面設計,設計輸入輸出檢驗方法和檢驗信息。
2.3設計物理數據
分析數據特征,確定邏輯數據組織和存儲介質,設計記錄格式和處理方式。
把邏輯數據結構變成物理數據結構,計算容量,優化。
2.4組件的創建和重用
創建和重用組件的概念
使用子程序庫或類庫。
2.5編寫內部設計文件
組件劃分圖、組件之間的接口、組件處理指令、屏幕設計文檔、報表設計文檔、文件設計文檔和數據庫設計文檔。
2.6設計審查
3.編程;編排
3.1模塊劃分(原則、方法和標準)
3.2編寫程序設計文件
模塊規範(功能和接口描述、程序處理邏輯描述、輸入輸出數據格式描述)
測試要求的描述(測試類型和目標、測試用例、測試方法)
3.3程序設計審查
4.系統實現
4.1配置計算機系統及其環境
4.2選擇合適的編程語言
4.3掌握C編程語言以及C++、Java、Visual Basic、Visual C++等任何編程語言,從而指導程序員進行編程和測試,並進行必要的優化。
4.4系統測試
指導程序員進行模塊測試和驗收。
準備系統集成測試環境和測試工具。
準備測試數據
寫壹份測試報告
5.軟件工程
軟件生命周期模型(瀑布模型、螺旋模型、噴泉模型)和軟件成本模型。
定義軟件需求(系統目標、配置、功能、性能和約束)
描述軟件需求的方法(功能層次模型、數據流模型、控制流模型、面向數據模型、面向對象模型等)。)
定義軟件需求的方法(結構化方法,面向對象的分析方法)
軟件設計(分析和集成、逐步細化、抽象、信息隱藏)
軟件設計方法(結構化設計方法、Jackson方法、Warnier方法、面向對象設計方法)
編程(結構化編程、面向對象編程)
軟件測試的原理和方法
軟件質量(軟件質量特征,軟件質量控制)
軟件過程評估和軟件能力成熟度評估的基本方法
軟件開發環境和開發工具(分析工具、設計工具、編程工具、測試工具、維護工具、案例)
軟件工程的發展趨勢(面向組件、統壹建模語言(UML))
軟件過程改進模型和方法
這壹部分綜合分析了:
軟件設計師,關鍵是設計軟件的能力。要求:熟悉軟件工程、軟件過程改進和軟件開發項目管理的基礎知識;精通軟件設計方法和技術;掌握C編程語言和四種指定的面向對象語言之壹。這部分專業能力很大程度上依賴於工作實踐,需要壹定的經驗積累,是工程師實際工作能力和專業水平的體現。如果沒有實踐經驗,就要學會向別人學習,向別人學習,彌補自己的不足。
這部分主要體現在下午的考試中,現在分析壹下如何應對下午的考試:
最近考試,下午的題分五個題目,壹個是數據庫,壹個是程序填空題,壹個是面向對象語言題,另外兩個題目是數據流圖,UML,或者流程圖。
數據庫題目要求完成SQL語言,這就要求考生熟悉SQL語言,這對於上午和下午的題目都非常重要。這是學習和復習的壹個重點。
數據流圖,DFD是分析系統數據流的圖,意在讓用戶了解系統的功能、輸入、輸出和數據存儲。請仔細弄清楚它的應用。在繪制數據流圖的情況下,會確定系統的功能,然後細化後逐漸走向物理結構。考核時,試題多從父圖與子圖的平衡來分析。這部分內容,解決壹個問題的關鍵是高度重視題目描述,正確深刻理解其內容,必要時多看幾遍,看懂給出的圖表。這樣,答案就容易了,答案其實就包含在解釋裏。
流程圖是大家比較熟悉的壹個話題,描述的是解決壹個具體問題的思路,是面向過程的。但問題千差萬別,要理解思路,認真回答。
最簡單也是最難的答題方式就是程序填空。為了便於閱卷,這類題目以程序填空的形式出現,不僅要求理解問題的本質,還要明確作者解決問題的思路,這比獨立完成程序設計的難度要大得多。解決問題,先設計好自己的思路,怎麽解決問題,順序是什麽;然後試著看程序,怎麽用同樣的方法思考,很好,這個問題很好解決。如果思路不壹致,盡量找出每壹段代碼的功能和邏輯結構,然後找出命題人的解題思路,再方便地解題。人們常說答案在於題目,這是對的。在分析問題的過程中,找到自己想要的答案。但前提條件是考生要熟悉語言,了解解題思路,這樣才能答對。這個題目比較難,要麽不拿分,要麽拿滿分。
近年來,關於統壹建模語言UML的考察很多,引起了考生的關註。它代表了軟件工程的發展趨勢,是目前可視化建模事實上的工業標準。人們對圖表的理解比其他形式更容易,圖表能更清晰地描述和解釋問題的本質。因此,UML體現了這壹特性。這類問題的難度和數據流圖差不多,解題思路自然也是壹樣的。從形式上看,數據流圖更加簡潔,UML類的題目透露出壹種新穎現代的氣息。
最後壹個題目,面向對象語言,是壹個可選題目,給了考生自由,可以發揮個人優勢。命題註意到了不同語言考試難度的壹致性,要求考生回答同壹個問題,實現了形式上的公平,這自然是壹種進步。