評測軟件工程師的軟件工程知識技術水平的標准
(一)什么是軟件工程(Software Engineering)?
1、百度百科上對軟件工程這一學科的解釋是:軟件工程是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟件的學科。它涉及程序設計語言、數據庫、軟件開發工具、系統平台、標准、設計模式等方面。
2、我的理解:隨着計算機技術的日益發展,軟件的規模越來越大,軟件的結構越來越復雜,軟件開發與維護的難度也越來越高,軟件開發人員迫切需要有一種科學的方法來指導軟件的開發與維護工作,從而使軟件開發過程趨於規模化、流程化,同時也便於后期的回溯與維護。而軟件工程就是這樣一種指導軟件開發和維護的學科。
(二)什么是軟件工程師(Software Engineer)?
顧名思義,軟件工程師就是掌握軟件工程領域相關知識,並且能夠熟練應用這些知識來解決現實生活中的軟件相關問題的“領域專家”。
簡單來說,軟件工程師是從事軟件開發相關工作的人員的統稱。它是一個廣義的概念,包括軟件設計人員、軟件架構人員、軟件工程管理人員、程序員等一系列崗位,工作內容都與軟件開發生產相關。
(三)軟件工程師的分級及要求
1、軟件工程師評級
一般分為4級,分別是:(1)軟件技術員 (2)助理軟件工程師 (3)軟件工程師
(4)高級軟件工程師
2、軟件工程師要求
總的來說,對軟件工程師的技術要求是比較全面的。
(1) 首先最基礎的是要掌握一門編程語言(C/C++/Java/Python等);
(2) 其次還要掌握數據庫相關技術(SQL/Oracle/DB2等);
(3) 關注行業前沿技術,例如JavaScript、Ajax、Spring等;
(4) 其他關於網絡工程和軟件的技術也要有所了解。
(四)如何評測一個軟件工程師的軟件工程知識技能水平高低?
1、因素
(1)軟件開發流程、文檔資料留存
(2)編程思維、代碼風格及代碼優化能力
(3)責任心、抗壓能力、溝通能力等軟實力。
2、衡量標准
可通過計算機技術與軟件專業技術資格(水平)考試來加以評測。
軟件工程知識技能水平測評試題
一、 單項選擇題(20分=2分×10)
1. 軟件工程的基本要素包括方法、工具和( )。
A. 軟件系統 B. 硬件系統 C. 過程 D. 人員
正確答案:C
試題來源:2015上半年中級軟件設計師考試試題
試題解析:本題考查軟件工程的基本概念。
軟件工程是一種層次化的技術,從底向上分別為質量、過程、方法和工具。任何工程方法必須以有組織的質量承諾為基礎。軟件工程的基礎是過程,過程是將技術結合在一起的凝聚力,使得計算機軟件能夠被合理地和及時地開發,過程定義了一組關鍵過程區域,構成了軟件項目管理控制的基礎;方法提供了建造軟件在技術上需要“如何做”’它覆蓋了一系列的任務。方法也依賴於一些基本原則,這些原則控制了每一個技術區域而且包含建模活動和其他描述技術;工具對過程和方法提供了自動或半自動的支持,如計算機輔助軟件工程(CASE)。軟件工程的基本要素包括方法、工具和過程。
2. 在( )設計階段選擇適當的解決方案,將系統分解為若干個子系統,建立整個系統的體系結構。
A. 概要 B. 詳細 C. 結構化 D. 面向對象
正確答案:A
試題來源:2015上半年中級軟件設計師考試試題
試題解析:本題考查軟件工程的基本概念。
軟件設計的任務是基於需求分析的結果建立各種設計模型,給出問題的解決方案。從工程管理的角度,可以將軟件設計分為兩個階段:概要設計階段和詳細設計階段。結構化設計方法中,概要設計階段進行軟件體系結構的設計、數據設計和接口設計:詳細設計階段進行數據結構和算法的設計。面向對象設計方法中,概要設計階段進行體系結構設計、初步的類設計、數據設計、結構設計:詳細設計階段進行構件設計。
結構化設計和面向對象設計是兩種不同的設計方法,結構化設計根據系統的數據流圖進行設計,模塊體現為函數、過程及子程序:面向對象設計基於面向對象的基本概念進行,模塊體現為類、對象和構件等。
3. 以下關於結構化開發方法的敘述中,不正確的是( )。
A. 總的指導思想是自頂向下,逐層分解
B. 基本原則是功能的分解與抽象
C. 與面向對象開發方法相比,更適合於大規模、特別復雜的項目
D. 特別適合於數據處理領域的項目
正確答案:C
試題來源:2014下半年中級軟件設計師考試試題
試題解析:本題考查對結構化開發方法、面向對象開發方法的理解。
結構化開發方法是一種面向數據流的開發方法,其基本思想是軟件功能的分解和抽象,結構化開發方法又稱生命周期法,是迄今為止最傳統應用最廣泛的一種信息系統開發方法結構化開發方法采用系統工程的思想和工程化的方法,按用戶至上的原則。結構化、模塊化、自頂向下地對信息系統進行分析與設計。該方法嚴格按照信息系統開發的階段性開展設計工作,每個階段都產生一定的設計成果,通過評估后再進入下一階段開發工作。因此,結構化開發方法具有以下優點:
●開發工作的順序性、階段性適合初學者參與軟件的開發
●開發工作的階段性評估可以減少開發工作重復性和提高開發的成功率
●該方法有利於提高系統開發的正確性、可靠性和可維護性。具有完整的開發質量保正措施
結構化開發方法存在的不足主要是開發周明太長,個性化開發階段的文檔編寫工作量過大或過於傾瑣無法發揮開發人員的個性化開發能力。一般來說,結構化開發方法主要適用於組織規模較大,組織結構相對穩定的企業,這些大型企業往往業務處理過程規范,信息系統數據需求非常明確,在一定時期內需求變化不大。
4. 類( )之間存在着一般和特殊的關系。
A. 汽車與輪船
B. 交通工具與飛機
C. 輪船與飛機
D. 汽車與飛機
正確答案:B
試題來源:2014下半年中級軟件設計師考試試題
試題解析:本題考查類的相關知識。
飛機屬於交通工具的一種。
5. 以下關於軟件維護和可維護性的敘述中,不正確的是( )。
A. 軟件維護要解決軟件產品交付用戶之后運行中發生的各種問題
B. 軟件的維護期通常比開發期長得多,其投入也大得多
C. 進行質量保證審查可以提高軟件產品的可維護性
D. 提高可維護性是在軟件維護階段考慮的問題
正確答案:D
試題來源:2014下半年中級軟件設計師考試試題
試題解析:本題考查軟件維護相關知識。
在軟件開發的各個階段都需考慮軟件的可維護性。
6. 某項目為了修正一個錯誤而進行了修改。錯誤修改后,還需要進行( )以發現這一修改是否引起原本正確運行的代碼出錯。
A. 單元測試 B. 接收測試 C. 安裝測試 D. 回歸測試
正確答案:D
試題來源:2013上半年中級軟件設計師考試試題
試題解析:本題考查軟件測試相關知識。
回歸測試是指修改了舊代碼后,重新進行測試以確認修改沒有引入新的錯誤或導致其他代碼產生錯誤。
( 7 )設計模式允許一個對象在其狀態改變時,通知依賴它的所有對象。該設計模式的類圖如下圖,其中,( 8 )在其狀態發生改變時,向它的各個觀察者發出通知。
7. A.命令(Command) B.責任鏈(Chain of Responsibility) C.觀察者(Observer) D.迭代器(Iterator)
8. A.Subject B.ConcreteSubject C.Observer D.ConcreteObserver
正確答案:7-8:C B
試題來源:2011下半年中級軟件設計師考試試題
試題解析:本題考查設計模式的基本知識。
命令(Command)模式通過將請求封裝為一個對象,可將不同的請求對客戶進行參數化。責任鏈(Chain of Responsibility)模式將多個對象的請求連成一條鏈,並沿着這條鏈傳遞該請求,直到有一個對象處理它為止,避免請求的發送者和接收者之間的耦合關系。觀察者(Observer)模式定義對象之間的一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並被自動更新。
在上述觀察者模式的類圖中,Subject(目標)知道其觀察者,可以有任意多個觀察者觀察同一個目標,提供注冊和刪除觀察者對象的接口。Observer(觀察者)為那些在目標發生改變時需獲得通知的對象定義一個更新接口。ConcreteSubject(具體目標)將有關狀態存入各ConcreteObserver對象,當它的狀態發生改變時,向它的各個觀察者發出通知。ConcreteObserver(具體觀察者)維護一個指向ConcreteSubject對象的引用,存儲有關狀態,實現Observer的更新接口以使自身狀態與目標的狀態保持一致。
某項目包含的項目如下表所示,完成整個項目的最短時間為( 9 )周。不能通過縮短活動( 10 )的工期,來縮短整個項目的完成時間。
活動編號 |
工期(周) |
直接前驅 |
A |
3 |
- |
B |
5 |
A |
C |
1 |
B |
D |
3 |
A |
E |
5 |
D |
F |
4 |
C,E |
G |
3 |
C,E |
H |
4 |
F,G |
9. A. 16 B. 17 C. 18 D. 19
10. A. A B. B C. D D. F
正確答案:9-10:D B
試題來源:2015上半年中級軟件設計師考試試題
試題解析:本題考查軟件項目管理的基礎知識。
活動圖是描述一個項目中各個工作任務相互依賴關系的一種模型,項目的許多重要特性可以通過分析活動圖得到,如估算項目完成時間,計算關鍵路徑和關鍵活動等。根據上表給出的數據,構建活動圖,如下圖所示。
從上圖可以看出,關鍵路徑為:A-D-E-F-H,其長度為19,關鍵路徑上的活動均為關鍵活動。
二、 完型填空題(10分=2分×5)
軟件測試是軟件質量保證的主要手段之一,測試的費用已超過(A)的30%以上。因此,提高測試的有效性十分重要。“高產”的測試是指(B)。根據國家標准GB8566-88《計算機軟件開發規范》的規定,軟件的開發和維護划分為8個階段,其中,單元測試是在(C)階段完成的,集成測試的計划是在(D)階段制定的,確認測試的計划是在(E)階段制定的。
【供選擇的答案】
A:
①軟件開發費用 ②軟件維護費用
③軟件開發和維護費用 ④軟件研制費用
⑤軟件生存期全部
B:
①用適量的測試用例運行程序,證明被測程序正確無誤
②用適量的測試用例運行程序,證明被測程序符合相應的要求
③用少量的測試用例運行程序,發現被測程序盡可能多的錯誤
④用少量的測試用例運行程序,糾正被測程序盡可能多的錯誤
C-E:
①可行性研究和計划 ②需求分析
③概要設計 ④詳細設計
⑤實現 ⑥集成測試
⑦確認測試 ⑧使用和維護
正確答案:A-E:① ③ ⑤ ③ ②
試題來源:2016年8月福建師范大學《軟件測試技術》課程考試
試題解析:本題考查軟件測試相關知識。
目前,在大中型軟件開發項目中,測試都占據着重要地位,同時,測試也是在將軟件交付給客戶之前所必須完成的步驟。測試所花費用已超過軟件開發費用的30%以上。如何組織好測試,特別是如何選擇測試用例,對保障軟件質量,降低測試費用有着重要的意義。一個高效的測試,是指通過對所設計的少量測試用例進行測試,從而發現被測試程序中盡可能多的問題,並完成修改。測試按照被測試的內容可分為3種:單元測試(對程序單元或模塊單獨進行測試)、組裝測試 (把已通過單元測試的模塊連接起來,測試模塊間的接口及軟件設計中的問題,常用功能測試辦法)和確認測試(對軟件系統作全面測試,以確認開發的軟件是否符合驗收標准)。根據國家標准GB8566-88計算機軟件開發規范的規定,軟件開發和維護分為8個階段,分別為可行性研究和計划、需求分析、概要設計、詳細設計、實現、組裝測試、確認測試和使用維護。GB8566-88規定單元測試在實現階段完成;組裝測試在組裝測試階段完成,但組裝測試的計划應該在概要設計階段制定,而確認測試的計划則在需求分析階段就應該制定好。
三、 判斷題(10分=2分×5)
- 軟件的開發與運行經常受到硬件的限制和制約。( )
- 模塊內 的高內聚往往意味着模塊間的松耦合。( )
- 軟件的質量好壞主要由驗收人員負責,其他開發人員不必關心。( )
- 缺乏處理大型軟件項目的經驗,是產生軟件危機的唯一原因。( )
- 隨着軟件復雜性的不斷提高,軟件的維護難度越來越大。( )
正確答案:1 √ 2 √ 3 × 4 × 5 √
四、 名詞解釋(25分=5分×5)
1. 軟件危機
是指在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題
2. 耦合
是一個軟件結構內不同模塊間相互程度的度量
3. 內聚
標志着一個模塊內各個元素彼此結合的緊密程度
4. 信息隱藏
使得一個模塊內包含的信息對於不需要這些信息的模塊來說,是不能訪問的
5. 模塊化
把程序划分成獨立命名且可獨立訪問的模塊,每一個模塊完成一個功能,把這些模塊集成起來構成一個整體,可以完成指定的功能滿足用戶的需求。
五、代碼閱讀及流程圖、N-S圖轉換(20分)
下面是一段用賽德爾迭代法求解線性方程組的程序。其中A[n,n] 是方程組的系數矩陣, B[n]是方程組的右端項,X[n] 是方程組的解向量。eps是控制迭代精度的較小實數。imax是控制迭代的最大次數。flag是標志,=0,表示迭代不收斂;=1,表示迭代收斂。
for k := 1 to n do X[k] := 0.0; X[n] := 1.0; for i := 1 to imax do begin flag := 1; for j := 1 to n to begin s := B[j]; for k := 1 to n do begin if j =k then s := s + X[k]; s := s-A[j, k] * X[k] end; if abs(X[j]-s) > (abs(s) + 1.0) * eps then flag := 0; X[j] := s; end; if flag =1 then goto L1; end; L1:
(1) 試畫出它的結構化的程序流程圖。
(2) 將它改為N-S圖。
(3) 計算它的McCabe環路復雜性。
正確答案:
(1)a. 使用goto語句: b. 不使用goto語句:
(2)a.使用goto語句: b.不使用goto語句:
(3)流圖G的環形復雜度V(G)=P+1,其中,P是流圖中判定結點的數目,在程序結構圖中,判定結點P一定有7個,所以環路復雜性為8。