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