軟件工程師是IT領域的重要崗位之一,隨着IT行業多年的發展,軟件工程師也有不少細分的方向。做爲一名合格的軟件工程師,我認爲須要具備如下幾個方面的知識結構:算法
一、操做系統知識,掌握操做系統的體系結構是進行軟件研發的重要基礎。主要內容包括資源管理、任務調度、併發管理、權限管理、網絡管理等內容。編程
二、編程語言和算法。編程語言是軟件工程師必備的技能,算法是軟件工程師的重點知識結構,算法的掌握狀況每每可以決定軟件工程師的成長高度。設計模式
三、領域知識,不一樣開發領域須要掌握不一樣的知識結構。網絡
除了這些軟件工程師必備的專業基礎知識外,咱們還應當具備較高水平的軟件工程知識技能,所以我認爲還應當具備如下的技能:數據結構
一、學習能力,IT技術更新換代十分迅速,要讓本身常常處在學習狀態才能不被時代淘汰架構
二、設計能力。咱們課程中也介紹了那麼多設計模式,咱們應當熟練地掌握這些技能並可以運用自如,要善於優化本身設計的代碼。併發
三、團隊協做能力,這方面不只包括善於交流等軟技能,還應當包括咱們自身的適應團隊的能力。一個軟件的開發一般須要一個團隊進行開發,須要將你們的代碼進行整合,這時若是一我的的代碼寫的十分亂,可讀性不好,儘管功能已經完成,可是在後續的開發中 會帶來許多的麻煩。所以咱們在編程過程當中應當注意本身代碼的可讀性、可重構性。編程語言
軟件工程知識技能水平測評試題模塊化
1、單選題(10題,每題三分)函數
一、瀑布模型的存在問題是(B)
A.用戶容易參與開發 B.缺少靈活性
C.用戶與開發者易溝通 D.適用可變需求
解析:考察對瀑布模型的理解,瀑布模型各個階段的劃分徹底固定、模型是線性的,用戶只有等到整個過程的末期才能見到開發成果,不適應需求的變化,缺少靈活性。
二、軟件設計中模塊劃分應遵循的準則是(C)
A. 低內聚低耦合 B. 高耦合高內聚
C. 高內聚低耦合 D.以上說法均錯誤
解析:根據軟件設計原理提出的優化準則:劃分模塊時,儘可能作到高內聚、低耦合,保持模塊相對獨立性,並以此原則優化初始的軟件結構。
三、開發軟件所需高成本和產品的低質量之間有着尖銳的矛盾,這種現象稱做( B )。
A. 軟件投機 B. 軟件危機 C. 軟件工程 D 軟件產生
解析:考察對這些概念的理解
四、在設計測試用例時,(A)是用得最多的一種黑盒測試方法。
A. 等價類劃分 B. 邊界值分析 C. 因果圖 D. 斷定表
解析:等價類劃分是一種典型的黑盒測試方法。等價類劃分是指分步驟把海量的測試用例集減得很小但過程一樣有效。也就是說,選取足夠小測試用例,發現更多軟件缺陷。
五、軟件測試的目的是? (D )
A、 證實軟件的正確性
B、 找出軟件系統中存在的全部錯誤
C、 證實軟件系統中存在錯誤
D、 儘量多的發現軟件系統中的錯誤
解析:進行軟件測試是爲了:
一、發現被測對象與用戶需求之間的差別,即缺陷。
二、經過測試活動發現並解決缺陷,增長人們對軟件質量的信心。
三、經過測試活動了解被測對象的質量情況,爲決策提供數據依據。
四、經過測試活動積累經驗,預防缺陷出現,下降產品失敗風險
綜上所述,D正確。
六、設函數C(X)定義問題X的複雜程序,函數E(X)肯定解決問題X須要的工做量(時間)。
對於兩個問題P1和P2,若是C(P1)>C(P2)顯然E(P1)>E(P2),則得出結論E(P1+P2)>E(P1)+E(P2)就是:( A )
A.模塊化的根據 B.逐步求精的根據 C.抽象的根據 D.信息隱藏和局部化的根據
解析:從 E(P1+P2)> E(P1)+E(P2)看出:總體的複雜性大於局部之和,因此須要模塊化下降耦合帶來的複雜性。
七、對象實現了數據和操做的結合,使數據和操做( C )於對象的統一體中。
A. 結合 B. 隱藏 C. 封裝 D. 抽象
解析:考察對對象和封裝概念的理解
八、軟件維護產生的反作用,是指(C)。
A.開發時的錯誤 B.隱含的錯誤
C.因修改軟件而形成的錯誤 D.運行時誤操做
解析:考察對軟件維護過程的理解
九、SA方法的分析步驟是首先調查瞭解當前系統的工做流程,而後(A)。
A.得到當前系統的物理模型,抽象出當前系統的邏輯模型,創建目標系統的邏輯模型
B.得到當前系統的物理模型,抽象出目標系統的邏輯模型,創建目標系統的物理模型
C.得到當前系統的邏輯模型,抽象出目標系統的物理模型,創建目標系統的邏輯模型
D.得到當前系統的邏輯模型,抽象出目標系統的物理模型,創建目標系統的物理模型
解析:SA方法的基本思想:「由頂向下逐層分解」,它先分析當前現實環境中已存在的人工系統,再考慮即將開發的軟件系統,所以首先得到當前系統的物理模型,是現實環境中已經存在的,而後抽象出邏輯模型,再來考慮目標系統,創建目標系統的邏輯模型。
十、當一個模塊直接使用另外一個模塊的內部數據, 這種模塊之間的耦合爲(D )
A. 數據耦合 B. 公共耦合 C. 標記耦合 D. 內容耦合
解析:不能夠被數據所迷惑而選擇A選項,若一個模塊直接訪問另外一個模塊的內部數據、一個模塊不經過正常入口轉到另外一個模塊內部、兩個模塊有一部分程序代碼重疊或者一個模塊有多個入口,上述幾個情形之一發生則兩個模塊之間就發生了內容耦合。
2、名詞解釋(4題,每題5分)
一、重構
答:經過調整程序代碼改善軟件的質量、性能,使其程序的設計模式和架構更趨合理,提升軟件的擴展性和維護性
二、多態
答:在面嚮對象語言中,接口的多種不一樣的實現方式即爲多態
三、模塊化
答:是指解決一個複雜問題時自頂向下逐層把系統劃分紅若干模塊的過程,有多種屬性,分別反映其內部特性
四、結構衝突
答:輸入數據與輸出數據結構找不到對應關係的狀況,稱爲結構衝突
3、判斷題(10題,每題2分)
一、軟件工程學只有理論意義,沒有實際用途。(F)
二、面向對象建模獲得的模型包含系統的 3 個要素,即靜態結構、交互次序和數據變換。(T )
三、軟件生存週期是從軟件開始開發到開發結束的整個時期(F)
四、耦合用於衡量一個模塊內部的各個元素彼此結合的緊密程度。(F)
五、爲了加快軟件維護做業的進度,應儘量增長維護人員的數目.(F)
六、以對象,類,繼承和通訊爲基礎的面向對象設計方法(OOD)也是常見的軟件概要設計方法之一.(T)
七、完成測試做業後,爲了縮短源程序的長度應刪除程序中的註解。( F)
八、系統結構圖是精確表達程序結構的圖形表示法。所以,有時也能夠將系統結構圖看成系統流程圖使用。(F)
九、數據流圖和數據字典共同構成系統的邏輯模型。(T)
十、白盒測試法是將程序當作一個透明的盒子,不須要了解程序的內部結構和處理過程。(F)
4、簡答題(3題,共30分)
一、什麼是軟件生存週期,分爲哪些階段?(6分)
答:一個軟件從定義到開發、使用和維護,直到最終被廢棄,要經歷一個漫長的時期,一般把軟件經歷的這個漫長的時期稱爲生存週期。軟件生存週期就是從提出軟件產品開始,直到該軟件產品被淘汰的全過程。能夠分爲軟件計劃與可行性研究階段(問題定義、可行性研究)、需求分析階段、軟件設計階段(概要設計和詳細設計)、軟件編碼階段、軟件測試階段和軟件運行與維護階段
二、分析軟件危機產生的主要緣由有哪些?(10分)
答:致使軟件危機的主要緣由有:
(1)軟件日益複雜和龐大(2)軟件開發管理困難和複雜(3)軟件開發技術落後(4)生產方式落後(5)開發工具落後(6)軟件開發費用不斷增長
(每點2分,答對5點滿分)
三、模塊間的耦合性包括哪些類型?按強弱排列。(14分)
答:耦合有如下幾種,他們之間的耦合度由高到低排列:
1.內容耦合:如一個功能模塊直接訪問另外一個功能模塊的內容,則這兩個功能模塊稱爲內容耦合。
2.公共耦合:如一個功能模塊都訪問統一全局數據結構,則稱之爲公共耦合。
3.外部耦合:如一個功能模塊都訪問統一全局數據項,則稱之爲外部耦合。
4.控制耦合:如一個功能模塊明顯的把開關量、名字等信息送入另外一個功能模塊,控制另外一功能模塊的功能,則稱爲控制耦合。
5.標記耦合:如一個功能模塊共享了某個記錄,而不是簡單變量,即這些功能模塊都需某一數據的子結構時,就須要按該記錄的結構進行操做,並經過參數表來傳遞記錄信息,這樣的耦合稱爲標記耦合。
6.數據耦合:如一個功能模塊訪問另外一功能模塊,被訪問的功能模塊的輸入和輸出都是數據項參數,則這兩個功能模塊爲數據耦合。
7.非直接耦合:若兩個功能模塊沒有直接關係,他們之間的聯繫徹底是經過主程序的控制和調用來實現的,便稱這兩個功能模塊爲非直接耦合,獨立性最強。