如何評測軟件工程知識技能水平?
一、軟件工程師定義
軟件工程師(Software Engineer):是從事軟件職業的人員的一種職業能力的認證,通過它說明具備了工程師的資格。軟件工程師是從事軟件開發相關工作的人員的統稱。
- 其中包括軟件設計人員、軟件架構人員、軟件工程管理人員、程序員等一系列崗位,工作內容都與軟件開發生產相關。
- 技術要求是比較全面的,除了最基礎的編程語言(C語言/C++/JAVA等)、數據庫技術(SQL/ORACLE/DB2等)等,還有諸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING等前沿技術。此外,關於網絡工程和軟件測試的其他技術也要有所涉獵。
二、軟件工程師的軟件工程知識技能水平主要體現
對於軟件工程的能力要求也是多樣性的、多方面的,對於不同崗位的具體要求會有所差別,但基本要求能力都是相同的。
基本要求及主要體現如下:
1.編程語言能力
作為一名專業的軟件工程師,一方面,是否掌握了程序員的基本功:鍵盤輸入速度,快捷鍵,編譯和調試工具等,熟練掌握常用的工具集—VSCode/Vim、正則表達式等;另一方面,應該能夠熟練掌握基礎編程語言,並且能夠深入理解OOP、OOA、OOD等編程思想。精通一門編程語言能為以后的軟件開發打下堅實的基礎。
2.編碼能力
這里說的編碼可不是照着書本敲代碼,而是能夠獨立的運用代碼,編寫一個程序出來,而是嚴格規范的代碼風格,合理使用空格、空行、縮進、注釋,代碼邏輯清晰,沒有冗余和重復,遵從架構與設計原則,熟練使用各種編程庫和API,編寫出簡潔、規范、可讀性強、健壯安全的代碼。
3.學習能力
IT技術可謂是更新換代最快的了,從市面上的電腦和手機就可以看出來。所以,只依靠自己之前學到的知識,很快就會被這個時代所淘汰,軟件工程師應具備的技能里很重要的一點就是學習能力。因為只有具備了學習能力,才能在離開學校之后仍然能夠獨立地學習最新的技術,同時能夠自主的發現現在有什么新技術,市場上流行的技術元素與市場需求的變化。
4.業務能力
熟悉解決問題的流程:分析問題、形成方案、探索嘗試解決問題、單元測試、重構程序以滿足不斷變化的需求,並在理解業務的基礎上進行需求分析,編寫的代碼結構清晰,具有良好的可靠性、魯棒性、可移植性和可重用性,滿足高內聚低耦合的要求,准確地表達出用戶的需求,開發出高質量的軟件。
5.設計能力
一個優秀的軟件工程師不僅僅具備扎實的專業知識與技能,而且還要具備一定的設計能力。因為只有這樣,才能使一個軟件或者應用更加完美,更加容易受到人們的歡迎,從而獲得更廣闊的市場。
6.團隊協作能力
軟件開發並不是孤軍奮戰,很多時候一個軟件需要幾個人一起開發,這個時候就需要大家齊心協力,共同努力了。這時候,作為軟件工程師就需要具備一定的團隊協作能力了,來保證每個人都負責相應的方向,不能只為了突出自己而不顧整個團隊。
7.健康的心理素質
開發軟件本身就是一項艱苦的腦力和體力勞動,軟件工程師開發成功一個軟件,要經過反復修改,要花費大量的進間和精力,這些都有要求軟件工程師有較好的心理承受能力。很多學生往往只注重計算機專業知識的培養,而忽視了語言表達能力和溝通能力、工程經濟分析能力,以及心理素質的培養。
三、針對以上內容提供一份軟件工程知識技能水平的測評試題
一、選擇題
- 下列模塊獨立性最強的是( )
A、非直接耦合
B、數據耦合
C、公共耦合
D、內容耦合
參考答案:A
- 結構化方法是一種基於( )的方法。
A.數據結構
B.程序結構
C.算法
D.數據流
參考答案:D
- 面向對象分析方法的基本思想之一是( )
A. 基於過程或函數來構造一個模塊
B. 基於事件及對事件的響應來構造一個模塊
C. 基於問題領域的成分來構造一個模塊
D. 基於數據結構來構造一個模塊
參考答案:C
- 軟件測試的目標是( )。
A. 證明軟件是正確的
B. 發現錯誤、降低錯誤帶來的風險
C. 排除軟件中所有的錯誤
D. 與軟件調試相同
參考答案:B
- 按不同人員的工作內容來分類軟件過程,支持過程包括( )。
A. 維護過程、演化過程等
B. 質量保證過程、配置管理過程等
C. 基礎設施過程、改進過程等
D. 管理過程、培訓過程等
參考答案:B
二、簡答題
-
什么是單元測試,集成測試,白盒測試,黑盒測試?(來自教學PPT)
參考答案:
單元測試:是指對軟件中的最小可測試單元進行檢查和驗證。(局部)
集成測試:是將經過單元測試的模塊組裝起來進行測試。(全局)
黑盒測試:如果知道產品應該具有的功能,可以通過測試來檢驗是否每個功能都能正常使用。(內部不可見,功能測試)
白盒測試:如果知道產品的內部工作過程,可以通過測試來檢驗產品內部動作是否按照規格說明書的規定正常進行。(內部細節可見) -
說出3你所熟悉的設計模式,並簡要描述。
參考答案:
單例(Singleton)模式:某個類只能生成一個實例,該類提供了一個全局訪問點供外部獲取該實例,其拓展是有限多例模式。
原型(Prototype)模式:將一個對象作為原型,通過對其進行復制而克隆出多個和原型類似的新實例。
工廠方法(Factory Method)模式:定義一個用於創建產品的接口,由子類決定生產什么產品。
抽象工廠(AbstractFactory)模式:提供一個創建產品族的接口,其每個子類可以生產一系列相關的產品。
建造者(Builder)模式:將一個復雜對象分解成多個相對簡單的部分,然后根據不同需要分別創建它們,最后構建成該復雜對象。
代理(Proxy)模式:為某對象提供一種代理以控制對該對象的訪問。即客戶端通過代理間接地訪問該對象,從而限制、增強或修改該對象的一些特性。
適配器(Adapter)模式:將一個類的接口轉換成客戶希望的另外一個接口,使得原本由於接口不兼容而不能一起工作的那些類能一起工作。