確切的說是軟件設計師,沒有軟件工程師這種考試的。
軟考改革之後,軟件設計類就分為:程序員-軟件設計師-系統分析師 這三個級別,程序員相當於以前的初程和中程,軟件設計師相當於高程。即軟件設計師考出之後是中級職稱。區別在於以前的高程終身有效,現在的軟件設計師有效期3年,三年之後需要再培訓。
據說相關教程為清華大學的《軟件設計師教程》
軟件設計師考試大綱
壹、考試說明
1.考試要求:
(1) 掌握數據表示、算術和邏輯運算;
(2) 掌握相關的應用數學、離散數學的基礎知識;
(3) 掌握計算機體系結構以及各主要部件的性能和基本工作原理;
(4) 掌握操作系統、程序設計語言的基礎知識,了解編譯程序的基本知識;
(5) 熟練掌握常用數據結構和常用算法;
(6) 熟悉數據庫、網絡和多媒體的基礎知識;
(7) 掌握C程序設計語言,以及C++、Java、Visual、Basic、Visual C++中的壹種程序設計語言;
(8) 熟悉軟件工程、軟件過程改進和軟件開發項目管理的基礎知識;
(9) 熟悉掌握軟件設計的方法和技術;
(10) 掌握常用信息技術標準、安全性,以及有關法律、法規的基本知識;
(11) 了解信息化、計算機應用的基礎知識;
(12) 正確閱讀和理解計算機領域的英文資料。
2.通過本考試的合格人員能根據軟件開發項目管理和軟件工程的要求,按照系統總體設計規格說明書進行軟件設計,編寫程序設計規格說明書等相應的文檔,組織和指導程序員編寫、調試程序,並對軟件進行優化和集成測試,開發出符合系統總體設計要求的高質量軟件;具有工程的實際工作能力和業務水平。
3.本考試設置的科目包括:
(1) 計算機與軟件工程知識,考試時間為150分鐘,筆試;
(2) 軟件設計,考試時間為150分鐘,筆試。
二、考試範圍
考試科目1:計算機與軟件工程知識
1. 計算機科學基礎
1.1 數制及其轉換
二進制、十進制和十六進制等常用制數制及其相互轉換1.2 數據的表示
數的表示(原碼、反碼、補碼、移碼表示,整數和實數的機內表示,精度和溢出) 非數值表示(字符和漢字表示、聲音表示、圖像表示) 校驗方法和校驗碼(奇偶校驗碼、海明校驗碼、循環冗余校驗碼)1.3 算術運算和邏輯運算
計算機中的二進制數運算方法 邏輯代數的基本運算和邏輯表達式的化簡1.4 數學基礎知識
命題邏輯、謂詞邏輯、形式邏輯的基礎知識 常用數值計算(誤差、矩陣和行列式、近似求解方程、插值、數值積分) 排列組合、概率論應用、應用統計(數據的統計分析) 運算基本方法(預測與決策、線性規劃、網絡圖、模擬)1.5 常用數據結構
數組(靜態數組、動態數組)、線性表、鏈表(單向鏈表、雙向鏈表、循環鏈表)、隊列、棧、樹(二叉樹、查找樹、平衡樹、線索樹、線索樹、堆)、圖等的定義、存儲和操作 Hash(存儲地址計算,沖突處理)1.6 常用算法
排序算法、查找算法、數值計算方法、字符串處理方法、數據壓縮算法、遞歸算法、圖的相關算法 算法與數據結構的關系、算法效率、算法設計、算法描述(流程圖、偽代碼、決策表)、算法的復雜性2. 計算機系統知識
2.1 硬件知識
2.1.1 計算機系統的組成、體系結構分類及特性
CPU和存儲器的組成、性能和基本工作原理 常用I/O設備、通信設備的性能,以及基本工作原理 I/O接口的功能、類型和特性 I/O控制方式(中斷系統、DMA、I/O處理機方式) CISC/RISC,流水線操作,多處理機,並行處理2.1.2 存儲系統
主存-Cache存儲系統的工作原理 虛擬存儲器基本工作原理,多級存儲體系的性能價格 RAID類型和特性2.1.3 安全性、可靠性與系統性能評測基礎知識
診斷與容錯 系統可靠性分析評價 計算機系統性能評測方式2.2 軟件知識
2.2.1 操作系統知識
操作系統的內核(中斷控制)、進程、線程概念 處理機管理(狀態轉換、***享與互斥、分時輪轉、搶占、死鎖) 存儲管理(主存保護、動態連接分配、分段、分頁、虛存) 設備管理(I/O控制、假脫機) 文件管理(文件目錄、文件組織、存取方法、存取控制、恢復處理) 作業管理(作業調度、作業控制語言(JCL)、多道程序設計) 漢字處理,多媒體處理,人機界面 網絡操作系統和嵌入式操作系統基礎知識 操作系統的配置2.2.2 程序設計語言和語言處理程序的知識
匯編、編譯、解釋系統的基礎知識和基本工作原理 程序設計語言的基本成分:數據、運算、控制和傳輸,過程(函數)調用 各類程序設計語言主要特點和適用情況2.3 計算機網絡知識
網絡體系結構(網絡拓撲、OSI/RM、基本的網絡協議) 傳輸介質、傳輸技術、傳輸方法、傳輸控制 常用網絡設備和各類通信設備 Client/Server結構、Browser/Server結構 LAN拓撲,存取控制,LAN的組網,LAN間連接,LAN-WAN連接 因特網基礎知識以及應用 網絡軟件 網絡管理 網絡性能分析2.4 數據庫知識
數據庫管理系統的功能和特征 數據庫模型(概念模式、外模式、內模式) 數據模型,ER圖,第壹範式、第二範式、第三範式 數據操作(集合運算和關系運算) 數據庫語言(SQL) 數據庫的控制功能(並發控制、恢復、安全性、完整性) 數據倉庫和分布式數據庫基礎知識2.5 多媒體知識
多媒體系統基礎知識,多媒體設備的性能特性,常用多媒體文件格式 簡單圖形的繪制,圖像文件的處理方法 音頻和視頻信息的應用 多媒體應用開發過程2.6 系統性能知識
性能指標(響應時間、吞吐量、周轉時間)和性能設計 性能測試和性能評估 可靠性指標及計算、可靠性設計 可靠性測試和可靠性評估2.7 計算機應用基礎知識
信息管理、數據處理、輔助設計、自動控制、科學計算、人工智能等基礎知識 遠程通信服務基礎知識 常用應用系統3. 系統開發和運行知識
3.1 軟件工程、軟件過程改進和軟件開發項目管理知識
軟件工程知識 軟件開發生命周期各階段的目標和任務 軟件開發項目管理基礎知識(時間管理、成本管理、質量管理、人力資源管理、風險管理等)及其常用管理工具 主要的軟件開發方法(生命周期法、原型法、面向對象法、CASE) 軟件開發工具與環境知識 軟件過程改進知識 軟件質量管理知識 軟件開發過程評估、軟件能力成熟評估基礎知識3.2 系統分析基礎知識
系統分析的目的和任務 結構化分析方法(數據流圖(DFD)、數據字典(DD)、實體關系圖(ERD)、描述加工處理的結構化語言) 統壹建模語言(UML) 系統規格說明書3.3 系統設計知識
系統設計的目的和任務 結構化設計方法和工具(系統流程圖、HIPO圖、控制流程圖) 系統總體結構設計(總體布局、設計原則、模塊結構設計、數據存儲設計、系統配置方案) 系統詳細設計(代碼設計、數據庫設計、用戶界面設計、處理過程設計) 系統設計說明書3.4 系統實施知識
系統實施的主要任務 結構化程序設計、面向對象程序設計、可視化程序設計 程序設計風格 程序設計語言的選擇 系統測試的目的、類型,系統測試方法(黑盒測試、白盒測試、灰盒測試) 測試設計和管理(錯誤曲線、錯誤排除、收斂、註入故障、測試用例設計、系統測試報告) 系統轉換基礎知識3.5 系統運行和維護知識
系統運行管理基礎知識 系統維護基礎知識 系統評價基礎知識3.6 面向對象開發方法
面向對象開發概念(類、對象、屬性、封裝性、繼承性、多態性、對象之間的引用) 面向對象開發方法的優越性以及有效領域 面向對象設計方法(體系結構、類的設計、用戶接口設計) 面向對象實現方法(選擇程序設計語言、類的實現、方法的實現、用戶接口的實現、準備測試數據) 面向對象程序設計語言(如C++、Java、Visual、Bsasic、Visual C++)的基本機制 面向對象數據庫、分布式對象的概念4. 安全性知識
安全性基本概念 防治計算機病毒、防範計算機犯罪 存取控制、防闖入、安全管理措施 加密與解密機制 風險分析、風險類型、抗風險措施和內部控制5. 標準化知識
標準化意識、標準化的發展、標準制訂過程 國際標準、國家標準、行業標準、企業標準基本知識 代碼標準、文件格式標準、安全標準、軟件開發規範和文檔標準知識 標準化機構6. 信息化基礎知識
信息化意識 全球信息化趨勢、國家信息化戰略、企業信息化戰略和策略 有關的法律、法規 遠程教育、電子商務、電子政務等基礎知識 企業信息資源管理基礎知識7. 計算機專業英語
掌握計算機技術的基本詞匯 能正確閱讀和理解計算機領域的英文資料考試科目2:軟件設計
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方法、面向對象設計方法) 程序設計(結構化程序設計、面向對象程序設計) 軟件測試的原則與方法 軟件質量(軟件質量特性、軟件質量控制) 軟件過程評估基本方法、軟件能力成熟度評估基本方法 軟件開發環境和開發工具(分析工具、設計工具、編程工具、測試工具、維護工具、CASE) 軟件工程發展趨勢(面向構件,統壹建模語言(UML)) 軟件過程改進模型和方法