如何測評軟件工程知識技能水平
1.編程能力
對一個給定的問題,能快速的用自己掌握的編程語言解決問題,能解決實際問題。當然,擁有良好的編程能力也是找到一個好工作的必備技能。
2.具有軟件工程的概念
基礎軟件工程師從事的工作相對於系統分析師和高級程序員要單純一些,但是 他們仍然是整個軟件工程中重要的一環,他們同樣需要具有軟件工程的概念:從項目需求分析開始到安裝調試完畢,軟件工程師都必須能清楚地理解和把握這些過程,並能勝任各種環節的具體工作。
3.學習能力
學習能力顯然是必須的,當出現一個可以落地的新技術,且新技術能解決公司或個人面臨的問題,且在能力范圍內,具有良好的學習能力顯然是必須。而且如今是學習型社會,提倡活到老學到老,只有具備良好的學習能力,才能不被社會淘汰,才能成為一個對社會有益的人。
4.團隊協作
當今社會是合作型社會,良好的團隊協作能力顯然是必須的,好的團隊協作能發揮出1+1>2的能力,而低效的團隊協作就會像故事里說的那樣,一個和尚挑水吃,兩個和尚抬水吃,三個和尚沒水吃。良好的團隊協作能力是保證一個團隊高效運行的基礎,為個人,為企業,創造更多的價值。
5.跨領域解決問題
現今各個行業結合越來越緊密,這就需要我們具備跨專業的融合能力,能將自己的知識結合其他領域的知識,很好的運用起來,這樣才能開發出讓用戶滿意讓公司放心的好產品,因為隨着經濟的發展,用戶的需求層次也在不斷提高,這就要求我們也要提升自己的素質,服務於用戶。
高級軟件工程期末試題
一、選擇題
1)面向對象的主要特征除標識唯一性,分類性,封裝性,模塊獨立性,還有( A )。
A. 多態性 B. 完整性
C. 可移植性 D. 兼容性
解析:面向對象主要有四大特性,分別為:抽象、封裝、繼承、多態。
2)在面向對象的設計中,我們應遵循的設計准則除了模塊化、抽象、低耦合、高內聚以外,還有( B )。
A. 隱藏復雜性 B. 信息隱藏
C. 兼容性 D. 類的開發
解析:還有可重用
3)下列哪個階段不屬於軟件生存周期的三大階段(C )。
A、計划階段 B、開發階段
C、編碼階段 D、維護階段
解析:軟件周期三大簡化階段為計划階段、開發階段、維護階段,其中維護最為耗時。
4)下面哪個不屬於面向對象的思想(D )。
A.封裝 B.繼承
C.多態 D.耦合
解析:無
5)數據耦合、公共耦合、標記耦合、控制耦合的耦合性從低到高的順序是( B )。
A.數據、公共、標記、控制 B.數據、標記、控制、公共
C.控制、數據、標記、公共 D.控制、數據、公共、標記
6)面向對象的分析方法主要是建立三類模型,即( D )。
A.系統模型、ER 模型、應用模型
B.對象模型、動態模型、應用模型
C.E-R模型、對象模型、功能模型
D.對象模型、動態模型、功能模型
解析:面向對象的分析方法主要是建立對象模型、動態模型、功能模型。
7)某企業財務系統的需求中,屬於功能需求的是(A)。
A.每個月特定的時間發放員工工資
B.系統的響應時間不超過3秒
C.系統的計算精度符合財務規則的要求
D.系統可以允許100個用戶同事查詢自己的工資
解析:只有A的描述中屬於功能方面
8)瀑布模型的存在問題是( B )。
A.用戶容易參與開發 B.缺乏靈活性
C.用戶與開發者易溝通 D.適用可變需求
解析:瀑布模型的問題是靈活性差,不容易適應用戶需求的變化,D剛好說法錯誤。
9)測試的關鍵問題是( D )。
A. 如何組織對軟件的評審
B. 如何驗證程序的正確性
C. 如何采用綜合策略
D. 如何選擇測試用例
解析:測試的關鍵問題是如何選擇測試用例
10)軟件測試中根據測試用例設計的方法的不同可分為黑盒測試和白盒測試兩種, 下列說法正確的是( D)
A. 前者屬於靜態測試, 后者屬於動態測試 B. 都屬於靜態測試
C. 前者屬於動態測試, 后者屬於靜態測試 D. 都屬於動態測試
解析:黑盒測試和白盒測試都屬於動態測試。
11)以下說法錯誤的是(A)
A.面向對象分析與面向對象設計的定義沒有明顯區別
B.從面向對象分析到面向對象設計,是一個逐漸擴充模型的過程
C.在實際的軟件開發過程中,面向對象分析與面向對象設計的界限是模糊的
D.面向對象分析和面向對象設計活動是一個多次反復迭代的過程
解析:軟件開發的分析過程就是分析系統需求的過程,分析工作主要包括理解、表達和驗證。面向對象分析的關鍵是識別問題域內的對象及其關系。分析的任務基本完成后,下一步則是將分析的成果用於設計中。就是根據成本與要求,規划出系統應如何實現的問題。所以A中“分析與設計的定義沒有明顯區別”的說法是不正確的。
12)軟件的結構化設計(SD)方法中,一般分為概要設計和詳細設計兩階段,其中詳細設計主要是要建立( C )。
A、軟件結構 B、軟件過程
C、軟件模型 D、軟件模塊
解析:結構化設計又可以分為總體(概要)設計和詳細設計。在總體設計中,需要明確整個系統的結構並進行模塊的划分,同時需要確定每個模塊的功能、接口及各模塊間的調用關系。詳細設計主要是建立軟件模型
二、填空題
1)列舉詳細設計中常用的圖形描述工具( 程序流程圖、盒圖、問題分析圖 )
2)軟件過程的基本活動是分析、設計(實現)(測試)、演化
3)軟件工程的3個要素是(過程、方法、工具)
4)耦合度中最松散的是(非直接耦合)
三、名詞解釋
請用自己的語言解釋下列名詞
1)內聚
解析:標志着一個模塊內各個元素彼此結合的緊密程度
2)設計模式
解析:設計模式是對軟件工程中普遍存在(反復出現)的各種問題,所提出的解決方案。設計模式並不直接用來完成代碼的編寫,而是描述在各種不同情況下,要怎么解決問題的一種方案。
3)模塊化
解析:把程序划分成獨立命名且可獨立訪問的模塊,每一個模塊完成一個功能,把這些模塊集成起來構成一個整體,可以完成指定的功能滿足用戶的需求。
4)重構
解析:重構就是通過調整程序代碼改善軟件的質量、性能,使其程序的設計模式和架構更趨合理,提高軟件的擴展性和維護性。
四、簡答題
1)說出3你所熟悉的設計模式,並簡要描述。
解析:適配器(Adapter)模式:將一個類的接口轉換成客戶希望的另外一個接口,使得原本由於接口不兼容而不能一起工作的那些類能一起工作。
單例(Singleton)模式:某個類只能生成一個實例,該類提供了一個全局訪問點供外部獲取該實例,其拓展是有限多例模式。
原型(Prototype)模式:將一個對象作為原型,通過對其進行復制而克隆出多個和原型類似的新實例。
工廠方法(Factory Method)模式:定義一個用於創建產品的接口,由子類決定生產什么產品。
抽象工廠(AbstractFactory)模式:提供一個創建產品族的接口,其每個子類可以生產一系列相關的產品。
建造者(Builder)模式:將一個復雜對象分解成多個相對簡單的部分,然后根據不同需要分別創建它們,最后構建成該復雜對象。
代理(Proxy)模式:為某對象提供一種代理以控制對該對象的訪問。即客戶端通過代理間接地訪問該對象,從而限制、增強或修改該對象的一些特性。
2)軟件測試要經過哪些步驟 ?這些測試與軟件開發各階段之間有什么關系 ?
解析:軟件測試要經過的步驟是:單元測試→集成測試→確認測試→系統測試。
單元測試對源程序中每一個程序單元進行測試, 檢查各個模塊是否正確實現規定的功能, 從而發現模塊在編碼中或算法中的錯誤。該階段涉及編碼和詳細設計文檔。
集成測試是為了檢查與設計相關的軟件體系結構的有關問題, 也就是檢查概要設計是否合理有效。
確認測試主要是檢查已實現的軟件是否滿足需求規格說明書中確定了的各種需求。
系統測試是把已確認的軟件與其他系統元素 (如硬件、其他支持軟件、數據、人工等 )結合在一起進行測試。以確定軟件是否可以支付使用。
3)試着畫出網上選課系統的用例圖。
用例有:登陸;找回密碼;查看課程信息;按課程編號程序查詢;按課程名查詢;選擇課程;刪除已經選擇的課程;維護課程信息。參與者有系統管理員和學生用戶。
解析:
五、應用題
根據下面的偽碼畫出為N-S圖和PAD圖
void root ( float root1, float root2 ) { i = 1; j = 0; while ( i <= 10 ) { 輸入一元二次方程的系數a, b, c; p = b*b – 4*a*c; if ( p < 0 ) 輸出“方程i無實數根”; else if ( p > 0 ) 求出根並輸出; if ( p == 0 ) { 求出重根並輸出; j = j + 1; } i = i +1; } 輸出重根的方程的個數j; }
解析:N-S圖:
PAD圖