A. 軟體工程師需要學習哪些課程
SQL Server2005資料庫設計和高級查詢、數據結構、C#面向對象程序設計、HTML5與CSS3開發、JavaScript、jQuery高級編程、PHP開發、軟體工程、JAVA面向對象程序設計、J2EE伺服器端高級編程、APP應用程序開發、oracle資料庫、Android應用開發等。
B. 成為一名軟體工程師要學哪些課程
中國計算機軟體設計師考試大綱
一、考試說明
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))
· 軟體過程改進模型和方法
C. 軟體開發工程師需要學什麼
1. Java技術目標:掌握企業項目開發流程及相關技術,能夠使用SSM框架、SSH框架技術,快速開發性能穩定的企業級應用。
2. Web前端技術目標:掌握前端設計思想理念,能使用HTML5、CSS3、JavaScript、jQuery、Ajax、bootstrap等技術完成。
3. 資料庫技術目標:掌握資料庫設計思想、使用E-R圖、第三範式進行規范的資料庫設計;能使用三大關系型資料庫MySQL、Oracle、SqlServer進行資料庫開發。
4. 大數據技術目標:認識大數據和雲計算,能夠在Hadoop平台上進行數據存儲和數據的基本分析。
5. Android技術目標:掌握安卓開發方面的基礎技術,能夠完成簡單的Android本地應用程序。
6. .NET技術目標:掌握ASP.NET MVC框架,能夠完成企業級應用開發。
D. C++軟體工程師需要學習哪些方面的知識
C++書單:1:第一本
基礎好一些的,可以看Stanley B. Lippman的C++ Primer,基礎不太好的話,可以看Stanley B. Lippman的 Essential C++
2:第二本
Pike和Kernighan的The Practice of Programming
3:第三本
Bruce Eckel寫的、台灣候捷譯的Thinking in C++
4:進階
Scott Meyers的Effective C++和More Effective C++
NOTE:一切中國大陸作者的書,一概不要看。一切VC++或講特定的編譯器的書,一概不要看。如果需要補C語言 的課,買一本非常小的K&R的The C Programming Language足矣,其它的書一概不要看。不要先學C,再學C++ ,而要直接學C++。
網路安全書單:1:《TCP/IP詳解三卷本》
2:《UNIX環境高級編程》
3:《UNIX網路編程兩卷》:這三套書就不介紹了,google上一搜就一打,這里的下載連接稍後會加上。
4:《FreeBSD HandBook》
5:《FreeBSD使用大全》:這兩本會帶你走進BSD的世界
6:《萊昂氏UNIX源代碼分析》:這個也沒什麼介紹的,china-pub上給他的標簽是:曠世奇書。(汗...怎麼聽著 像《九陰真經》)
7:《C語言程序設計》
8:《計算機操作系統》
9:《80x86匯編語言程序設計教程》:大學里都學過的,但也不要忘了常翻翻,會有收獲的。
10:《CCIE SECURITY EXAM GUIDE》
11:《The CISSP Prep Guide》:兩個安全界最頂級的IT認證考試的指南。
12:《Windows網路編程》
13:《Windows 核心編程》
14:《Windows NT設備驅動程序編寫》:MS無疑是桌面系統的老大,想不學都不行啊!
15:《網路設計師教程》
16:《CCNA認證考試指南》:兩本網路基礎的書。a、防火牆技術
b、入侵檢測技術
c、蜜罐技術
d、風險分析和滲透測試
e、操作系統安全(主要指Unix類操作系統)
f、網路設備安全(主要指路由器,交換機)
g、加密解密技術
h、病毒技術
i、PKI與CA體系
j、攻擊技術(比如:溢出,注入,腳本等,歡迎寫下你的入侵筆記)
k、sniff技術
l、口令破解
m、掃描與漏洞檢測
n、物理安全
o、安全管理與人員培訓
p、安全制度和法律
q、訪問控制
r、事件響應和取證
s、災難恢復
t、應用程序安全
u、編寫安全代碼
v、社交工程學
w、資料庫安全
x、郵件系統安全
y、其他相關(比如:思路,理念,概念及資訊) 9.這里有一份書單,想學習網路安全的朋友可以參考一下,如果把這些書都讀透了想不做高手都不行。
(我在學習的過程中走了不少彎路,希望這些書可以告訴大家怎樣前進) 《TCP/IP詳解三卷本》
《UNIX環境高級編程》
《UNIX網路編程兩卷》:這三套書就不介紹了,google上一搜就一打,這里的下載連接稍後會加上。
《FreeBSD HandBook》
《FreeBSD使用大全》:這兩本會帶你走進BSD的世界
《萊昂氏UNIX源代碼分析》:這個也沒什麼介紹的,china-pub上給他的標簽是:曠世奇書。(汗...怎麼聽著像《九陰真經》)
《C語言程序設計》
《計算機操作系統》
《80x86匯編語言程序設計教程》:大學里都學過的,但也不要忘了常翻翻,會有收獲的。
《CCIE SECURITY EXAM GUIDE》
《The CISSP Prep Guide》:兩個安全界最頂級的IT認證考試的指南。
《Windows網路編程》
《Windows 核心編程》
《Windows NT設備驅動程序編寫》:MS無疑是桌面系統的老大,想不學都不行啊!
《網路設計師教程》
《CCNA認證考試指南》:兩本網路基礎的書。
E. 計算機專業的考 軟體工程師 ,要學些什麼課程啊只學了C,C++
當軟體工程師僅僅學C++而不學MFC的話相當於0基礎,不過也不能算0基礎,起碼還懂得面向對象了。此外,要當軟體工程師,你要學java(最近安卓開發比較火),也可以學.NET Framework平台作網站。也可以學C#做程序,也可以只用C++做程序,不過C++有點過時了(對於新人來說)。此外,當軟體工程師不如當設計師,去學做項目,比如網站設計、軟體設計等等等需求分析。
此外,不可或缺的一點:你要學資料庫,包括資料庫設計,sql語言等。。。
還要懂些網路基礎。
Good luck to you!
F. 如果想當一個軟體工程師要學習什麼
1、計算機硬體原理:了解硬體怎麼工作,知道軟體是怎樣在硬體上工作的,CPU架構,指令,怎麼做運算,內存如何工作,內容地址是怎麼回事,硬碟如何存儲,數據和指令如何通過電路和元器件轉化成電流和脈沖,可能需要數據電路的原理。無論從事計算機哪方面,比如網路、軟硬體,這個原理都必須精通。因為計算機技術是很抽象的,但是在現實和具象上是依賴硬體。
2、操作系統原理:在了解了硬體原理後,了解操作系統是怎麼工作的。因為所有的軟體都是基於操作系統的,而操作系統本身也是一個軟體。這些結合硬體來理解,就更容易了。
3、編譯原理:了解軟體從源文件到目標文件,到執行的全過程。如果有必要,其中的東西也要專門買書去研究。這樣代碼上不容易犯錯誤。了解了硬體原理和操作系統原理的基礎上,了解編譯原理也就比較簡單。當然每種語言編譯過程都不一樣,但是原理都是基本相同。
4、數據結構和演算法分析:好的演算法,事半功倍,此外可能還要補一些高中數學、高等數學的知識。
以上每部分,都要至少1-2個月或者150個小時以上的鑽研,要做到基本掌握。如果不掌握以上部分,不是說學不了軟體,但是如果想學精通,想比一般人強,是不可能的,因為你只知道怎麼做,但是為什麼這樣做不清楚,就是死記硬背了,反反復復的記憶效率也很差。
有時候很多獨立的軟體開發的工具書,沒有講的那麼細致,只是告訴你如何做,但是不會告訴你為什麼這樣做,另外一些好的方法也無法告訴你,因為都需要從基礎的硬體電路電流原理來介紹,如果從原理上說,那會說的沒完沒了。
大約半年甚至1年後,此時你所有軟體開發需要掌握的基礎知識,都比較明白了。再開始研究程序開發,就會覺得開發很簡單,事半功倍。因為你已經從原理上理解了,軟體是怎麼工作的。所以也知道軟體開發的學習周期至少在1年以上。 達到能夠開發中型軟體,至少也要1年半,而且這個時間還是每天都在鑽研的時間。
G. 軟體工程師要學哪些東西
軟體工程師要學習和掌握的東西:
(一).NET方面的開發
⒈熟悉.net開發體系,熟悉C# ASP .NET;
⒉熟悉SQLServer,Oracle資料庫開發;
⒊具有企業管理系統項目經驗;
4.了解企業ERP及財務管理軟體(用友,金蝶)者優先;
5.善於溝通,能獨立撰寫方案。為人誠實,善於學習,做事認真負責,積極主動,具有敬業精神,有團隊精神。
(二)JAVA應用程序開發
1.熟練使用Struts2+Spring+Hibernate
2.掌握Jquery
3.掌握Java
4.熟悉Oracle
5.掌握xml/webservice
6.掌握OOD、OOP
7.基本文檔寫作能力
(三)web、資料庫方面的開發
⒈練掌握ASP,NET;等編程語言,熟悉.Net開發環境,理解.Net Framework,理解並能熟練使用WebService、O/R mapping、Remoting、多線程等技術;
2.熱衷於互聯網WEB開發,熱衷於鑽研最新的前沿技術,精通XML,Javascript,CSS,AJAX等WEB前端技術;
3.熟練的技術文檔編寫能力,熟練使用Rose,Power Design,Visio等建模和設計軟體,有一定的架構設計能力;
4.精通SQL server資料庫技術,了解資料庫性能調優者優先.
(四)php項目開發
⒈使用PHP語言開發互聯網應用程序;
⒉網站產品和網站功能模塊的開發與維護;
⒊與頁面設計師協調溝通,編寫部分Javascript和HTML;
⒋參與底層MVC框架的編寫與維護。
軟體工程師一般指從事軟體開發職業的人。軟體工程師是一個認證考試,具體地說是從事軟體職業的人員的一種職業能力的認證,通過它說明具備了工程師的資格。軟體工程師的技術要求是比較全面的,除了最基礎的編程語言(C語言/C++/JAVA等)、資料庫技術(SQL/ORACLE/DB2等)等,還有諸多如JAVA SCRIPT、AJAX、HIBERNATE、SPRING等前沿技術。此外,關於網路工程和軟體測試的其他技術也要有所涉獵。
對於軟體工程師,不太重視學歷,但並不是對學歷沒有要求,重點關注項目的經驗和學習知識的能力,能否利用軟體工程專業知識來解決問題,根據崗位不同,對軟體工程師的要求也有所不同。具體能力要根據崗位和自己的興趣愛好選定自己的職業規劃方向,一方面要詳細了解軟體工程師的要求,可以關注企業的招聘信息;一方面自己要貯備通用的知識技能,廣泛閱讀相關的計算機材料對自己以後的發展大有幫助。可以確定的是軟體工程師的前途在未來的發展依然是不斷升溫的職業,比較需要有技術和良好前景的專業之一。
工作內容:
1、 指導程序員的工作;
2、 參與軟體工程系統的設計、開發、測試等過程;
3 、協助工程管理人保證項目的質量;
4 、負責工程中主要功能的代碼實現;
5 、解決工程中的關鍵問題和技術難題;
6 、協調各個程序員的工作,並能與其它軟體工程師協作工作;
7、還要編寫各種各樣的軟體說明書,如:需求說明書,概要說明書等考試科目。工程師是中級職稱,考試的題目包括了計算機體系結構、軟體工程、資料庫、數據結構、編譯原理等計算機學科的基礎課程。
H. C/C++軟體開發工程師要學什麼
您好 這是我所了解的 希望能幫助您!
1.精通C和C++ 這個是必須的!
2.熟悉數據結構 (能用C或C++實現)
3.了解相關的圖形化界面 (windows api ,MFC,VC++)
4.UML及軟體工程
5.資料庫(大型軟體的設計離不開資料庫 MS SQL MY SQL 甲骨文)
當您有以上技術及一定經驗 便能勝任C/C++軟體工程師了