通過一個學期對高級軟件工程課程的學習,我認為軟件工程師的軟件工程知識技能水平高低主要體現在以下幾個方面
- 一名合格的軟件工程師必須掌握目前比較流行的語言,比如說C、C++、JAVA、C#、VB等常用的一種或者多種語言,具備進行簡單應用開發的能力。這是做好軟件工程師的一個前提條件,也是一個基本功。
- 對Windows、Linux、Unix等大型主流操作系統的使用和應用開發的熟練掌握,包括一些網絡的基礎知識。
- 掌握軟件需求分析技術,包括對軟件的分析和度量各種技術,包括軟件靜態和動態分析技術,以及編寫軟件UML和質量分析報告的能力等。
- 了解常用開發技術,掌握各類軟件架構的特點,具備良好的學習技術。
- 綜合素質上,需要具備良好的英語聽說讀寫能力、具有良好的語言及文字表達能力、較好的溝通技巧及團隊合作精神、有較強的責任感及進取精神、細心、耐心,具備逆向思維能力等。
試題
1.在面向對象設計的原則中、(36)原則是指抽象不應該依賴予細節,細節應該依賴於抽象,即應針對接口編程,而不是針對實現編程。
(36)A.開閉 B.里氏替換 C.最少知識 D.依賴倒置
【答案】D 【解析】
依賴倒置原則是指抽象不應該依賴於細節,細節應當依賴於抽象。換言之,要針對接口編程,而不是針對實現編程。在程序代碼中傳遞參數時或在組合(或聚合)關系中,盡量引用層次高的抽象層類,即使用接口和抽象類進行變量類型聲明、參數類型聲明和方法返回類型聲明,以及數據類型的轉換等,而不要用具體類來做這些事情。為了確保該原則的應用,一個具體類應當只實現接口和抽象類中聲明過的方法,而不要給出多余
的方法,否則,將無法調用到在子類中增加的新方法。
實現開閉原則的關鍵是抽象化,並且從抽象化導出具體化實現,如果說開閉原則是OOD的目標的話,那么依賴倒置原則就是OOD的主要機制。有了抽象層,可以使得系統具有很好的靈活性,在程序中盡量使用抽象層進行編程,而將具體類寫在配置文件中,這樣,如果系統行為發生變化,則只需要擴展抽象層,並修改配置文件,而無須修改原有系統的源代碼,在不修改的情況下來擴展系統功能,滿足開閉原則的要求。依賴倒置原則是COM、CORBA、EJB、Spring等技術和框架背后的基本原則之一。
2. 執行者(Actor) 與用例之間的關系是 ( C )
(A)包含關系 (B)泛化關系 (C)關聯關系 (D)擴展關系
3. 在類圖中,下面哪個符號表示繼承關系( C )
4.在類圖中,“#”表示的可見性是(B)
(A) Public (B) Protected (C) Private (D) Package
5. 在類圖中,下面哪個符號表示接口( C )
6.模塊A直接訪問模塊B的內部數據,則模塊A和模塊B的耦合類型為 D
A.數據耦合 B.標記耦合 C.公共耦合 D.內容耦合
解析:一般可將耦合度從弱到強分為以下七級:
★非直接耦合
指兩個模塊中任一個都不依賴對方獨立工作。這類耦合度最低。
★數據耦合
指兩個模塊間只是通過參數表傳遞簡單數據。
★特征耦合
指兩個模塊都與同一個數據結構有關。
★控制耦合
指兩個模塊間傳遞的信息中含有控制信息。
★外部耦合
指若干模塊都與同一個外部環境關聯,例如I/0處理使所有I/O模塊與特定的設備、格式和通信協議相關聯。
★公共耦合
指兩個或多個模塊通過引用一個公共區的數據而發生相互作用。
★內容耦合
最高耦合度的是內容耦合。出現內容耦合的情形包括:當一個模塊使用另一模塊內部的控制
和控制信息;一個模塊直接轉移到另一模塊內部等等。
一般說來,盡量使用數據耦合,少用控制耦合,限制外部耦合,完全不用內容耦合。
7. 某公司擬開發一個地面清潔機器人。機器人的控制者首先定義清潔任務和任務之間的關系,機器人接受任務后,需要響應外界環境中觸發的一些突發事件,根據自身狀態進行動態調整,最終自動完成任務。針對上述需求,該機器人應該采用()架構風格最為合適。
A.面向對象 B.主程序-子程序 C.規則系統 D.管道-過濾器
【答案】C 【解析】本題考查架構風格與架構設計策略的理解與掌握。
根據題目描述,機器人需要根據自身狀態的外界環境進行自動調整,這是一個典型的根據外部事件進行響應的場景。比較4個候選項,規則系統比較適合根據外鄒事件,以自身狀態為基礎自動進行處理和動作的場景。
8.某公司擬開發一個語音識別系統,其語音識別的主要過程包括分割原始語音信號、識別音素、產生候選詞、判定語法片斷、提供語義解釋等,每個過程都需要進行基於先驗知識的條件判斷並進行相應的識別動作。針對該系統的特點,采用()架構風格最為合適。
(47)A.解釋器 B.面向對象 C.黑板 D.隱式調用
【答案】C 【解析】本題考查架構風格與架構設計策略的理解與掌握。
根據題目描述,語音識別系統是一個十分典型的專家系統,其特點是求解的正確結果不止一個,求解過程比較復雜,需要通過專家知識和反饋逐步得到正確結果。因此對比4個候選項,黑板結構特別適合求解這類問題。
9.某公司擬開發了個轎車巡航定速系統,系統需要持續測量車輛當前的實時速度,並根據設定的期望速度啟動控制轎車的油門和剎車。針對上述需求,采用()架構風格最為合適。
(48)A.解釋器 B.過程控制 C.分層 D.管道-過濾器
【答案】B 【解析】本題考查架構風格與架構設計策略的理解與掌握。
根據題目描述,轎車巡航定速系統是一個十分典型的控制系統,其特點是不斷采集系統當前狀態,與系統中的設定狀態進行對比,並通過將當前狀態與設定狀態進行對比從而進行控制。因此對比4個候選項,過程控制特別適合求解這類問題。
10. 某公司擬開發一套在線游戲系統,該系統的設計目標之一是支持用戶自行定義游戲對象屬性,行為和對象之間的交互關系。為了實現上述目標,公司應該采用(49)架構風格最為合適。
A.管道-過濾器 B.隱式調用 C.主程序-子程序 D.解釋器
【答案】D 【解析】本題主要考查軟件架構設計策略與架構風格的理解與掌握。
根據題干描述,該軟件系統特別強調用戶定義系統中對象的關系和行為這一特性,這需要在軟件架構層面提供一種運行時的系統行為定義與改變的能力,根據常見架構風格的特點和適用環境,可以知道最合適的架構設計風格應該是解釋器風格。
11、在嵌入式系統的存儲部件中,存取速度最快的是(B)。
A.內存 B.寄存器組 C.Flash D.Cache
存取速度:寄存器 > Cache > 內存 > 硬盤 > 光盤 > 軟盤
寄存器屬於CPU的一個組成部分而緩存只是集成到CPU封裝內完全是和CPU獨立的器件。另外二者速度相差很大,寄存器存取速度最快 其次緩存最后是內存。
12在UML提供的系統視圖中,(35)是邏輯視圖的一次執行實例,描述了並發與同步結構;(36)是最基本的需求分析模型。
(35)A.進程視圖 B.實現視圖 C.部署視圖 D.用例視圖
【答案】A D 【解析】
UML對系統架構的定義是系統的組織結構,包括系統分解的組成部分,以及它們的關聯性、交互機制和指導原則等提供系統設計的信息。具體來說,就是指以下5個系統視圖:
①邏輯視圖。邏輯視圖也稱為設計視圖,它表示了設計模型中在架構方面具有重要意義的部分,即類、子系統、包和用例實現的子集。
②進程視圖。進程視圖是可執行線程和進程作為活動類的建模,它是邏輯視圖的一次執行實例,描述了並發與同步結構。
③實現視圖。實現視圖對組成基於系統的物理代碼的文件和構件進行建模。
④部署視圖。部署視圖把構件部署到一組物理節點上,表示軟件到硬件的映射和分布結構。 ⑤用例視圖。用例視圖是最基本的需求分析模型。
13. 以下關於軟件架構設計重要性的描述,(C)是錯誤的。
A.軟件架構設計能夠滿足系統的性能、安全性、可維護性等品質
B.軟件架構設計能夠幫助項目干系入(Stakeholder)更好地理解軟件結構
C.軟件架構設計能夠幫助架構師更好地捕獲和細化系統需求
D.軟件架構設計能夠有效地管理系統的復雜性,並降低系統維護費用
【答案】C 【解析】本題主要考査軟件架構設計的重要性。
軟件架構設計是降低成本、改進質量、按時和按需交付產品的關鍵因素。軟件架構設計能夠滿足系統的性能、安全性、可維護性等品質;軟件架構設計能夠幫助項目干系人(Stakeholder)更好地理解軟件結構:軟件架構設計能夠有效地管理系統的復雜性,並降低系統維護費用;軟件架構設計對系統開發具有指導性:軟件架構設計為系統復用奠定的基礎;軟件架構設計能夠支持沖突分析。需要注意的是,軟件架構設計與系統需求是直交的,兩者並無必然聯系。
13. 在嵌入式系統設計時,下面幾種存儲結構中對程序員是透明的是(11)。
(11)A.高速緩存 B.磁盤存儲器 C.內存 D.flash存儲器
【答案】A 【解析】本題主要考查嵌入式系統程序設計中對存儲結構的操作。
14.對某公司欲開發一種工業機器人,用來進行汽車零件的裝配。公司的架構師經過分析與討論,給出了該機器人控制軟件的兩種候選架構方案:閉環控制和分層結構。以下對於這兩種候選架構的選擇理由,錯誤的是
A.應該采用閉環控制架構,因為閉環結構給出了將軟件分解成幾個協作構件的方法,這對於復雜任務特別適合
B.應該采用閉環控制結構,因為閉環控制架構中機器人的主要構件(監控器、傳感器、發動機等)是彼此分開的,並能夠獨立替換
C.應該采用分層結構,因為分層結構很好地組織了用來協調機器人操作的構件,系統結構更加清晰
D.應該采用分層結構,因為抽象層的存在,滿足了處理不確定性的需要:在較低層次不確定的實現細節在較髙層次會變得確定
【答案】A 【解析】
能夠進行替換與重用,但閉環結構通常適用於處理簡單任務(如機器裝配等),並不適用於復雜任務。分層結構的特點是通過引入抽象層,在較低層次不確定的實現細節在較高層次會變得確定,並能夠組織層間構件的協作,系統結構更加清晰。
15. Windows操作系統在圖形用戶界面處理方面采用的核心架構風格是(51)風格。Java語言宣傳的“一次編寫,到處運行”的特性,從架構風格上看符合(52)風格的特點。
(51)A.虛擬機 B.管道-過濾器 C.事件驅動 D.微內核-擴展
(52)A.虛擬機 B.管道-過濾器 C.事件驅動 D.微內核-擴展
【答案】C A 【解析】
Windows操作系統在圖形用戶界面處理方面采用的是典型的“事件驅動”的架構風格,首先注冊事件處理的是回調函數,當某個界面事件發生時(例如鍵盤敲擊、鼠標移
動等),系統會查找並選擇合適的回調函數處理該事件。Java語言是一種解釋型語言,
在Java虛擬機上運行,這從架構風格上看是典型的“虛擬機”風格,即通過虛擬機架構屏蔽不同的硬件環境。
二.判斷題
1.軟件的開發與運行經常受到硬件的限制和制約。(√)
2. 模塊內的高內聚往往意味着模塊間的松耦合。(√)
3. 軟件的質量好壞主要由驗收人員負責,其他開發人員不必關心。(X)
4.判定覆蓋不一 定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋。(√)
5.應該盡量使用機器語言編寫代碼,提高程序運行效率,而減少高級語言的使用。(X)
6. UML只能應用於軟件系統模型的建立。(X)
7. 軟件測試的目的是為了無一遺漏的找出所有的錯誤。(X)
8.用戶對軟件需求的描述不精確,往往是產生軟件危機的原因之一-。(√)
9. 目前,軟件項目的進度安排的兩種比較常用的方法是程序評估與審查技術( PERT)
和關鍵路徑法(CPM)。(√ )
10.一個好的開發人員應具備的素質和能力包括善於與周圍人員團結協作,建立良好的
人際關系,善於聽取別人的意見。(√ )
11.目前的絕大多數軟件都不適合於快速原型技術。(X)
12.面向數據的設計方法適用場合是具有明顯的層次信息結構的應用如:企事業的信息
管理系統;系統軟件(如操作系統)等。(√ )
13.缺乏處理大型軟件項目的經驗。是產生軟件危機的唯一原因。(X)
14.測試計划、測試用例、出錯統計和有關的分析報告一般不用長期保存。 (X)
15. 軟件也會磨損和老化。 (X)
16.完善性維護是提高或完善軟件的性能。(√)
17.缺乏有力的方法學的指導和有效的開發工具的支持,這 往往是產生軟件危機的原
因之一。(√)
18.一個好的開發人員應具備的素質和能力不包括具有良好的書面和口頭表達能力。(X)
19.在用戶需求分析時觀察用戶手工操作過程不是為了模擬手工操作過程,而是為了獲
取第一手資料,並從中提取出有價值的需求。(√ )
25.用窮舉測試是較現實的測試方法。(X)
二.大題
1. 圖書管理系統功能性需求說明如下: (25分)
✧圖書管理系統能夠為一定數量的借閱者提供服務。每個借閱者能夠擁有唯一 標識其存在的編號。圖書館向每一一個借閱者發放圖書
證,其中包含每-一個借閱者的編號和個人信息。提供的服務包括:提供查詢圖書信息、查詢個人信息服務和預定圖書服務等。
✧當借閱者需要借閱圖書、歸還書籍時需要通過圖書管理員進行,即借閱者不直接與系統交互,而是通過圖書管理員充當借閱者的
代理和系統交互。
✧系統管理員主要負責系統的管理維護工作,包括對圖書、數目、借閱者的添加、刪除和修改。並且能夠查詢借閱者、圖書和圖書
管理員的信息。
✧° 可以通過圖書的名稱或圖書的ISBN/ISSN號對圖書進行查找。
回答下面問題:
1) 該系統中有哪些參與者? (3分)
借閱者 圖書管理員 系統管理員
2) 確定該系統中的類,找出類之間的關系並畫出類圖
用戶類、用戶角色類、圖書類、預定類、借閱類、書目類(6分)
類圖(6分) 6個類每2個1分,6個關系每2個1分
3) 畫出語境“借閱者預定圖書”的時序圖(10分)
2. 某軟件公司欲開發一個網絡設備管理系統,對管理區域內的網絡設備(如路由器和交換機等)進行遠程監視和控制。公司的系統分析師首先對系統進行了需求分析,識別出如下3項核心需求:
(a)目前需要管理的網絡設備確定為10類20種,未來還將有新類別的網絡設備納入到該設備管理系統中;
(b)不同類別的網絡設備,監視和控制的內容差異較大;同一類網絡設備,監視和控制的內容相似,但不同廠商的實現方式(包括控制接口格式、編程語言等)差異較大;
(c)網絡管理員能夠在一個統一的終端之上實現對這些網絡設備的可視化呈現和管理操作。
針對上述需求,公司研發部門的架構師對網絡設備管理系統的架構進行了分析與設計,架構師王工認為該系統可以采用MVC架構風格實現,即對每種網絡設備設計一個監控組件,組件通過調用網絡設備廠商內置的編程接口對監控指令進行接收和處理;系統管理員通過管理模塊向監控組件發送監控指令,對網絡設備進行遠程管理;網絡狀態、監控結果等信息會在控制終端上進行展示。針對不同網絡設備的差異,王工認為可以對當前的20種網絡設備接口進行調研與梳理,然后通過定義統一操作接口屏蔽設備差異。李工同意王工提出的MVC架構風格和定義統一操作接口的思路,但考慮到未來還會有新類別的網絡設備接入,認為還需要采用擴展接口的方式支持系統開發人員擴展或修改現有操作接口。公司組織專家進行架構評審,最終同意了王工的方案和李工的改進意見。
————————————————
【問題1】 請用300字以內的文字解釋什么是MVC架構風格以及其中的組件交互關系,並根據題干描述,指出該系統中的M、V、C分別對應什么。
MVC架構風格最初是Smalltalk-80中用來構建用戶界面時采用的架構設計風格。其中M代表模型(Model),V代表視圖(View),C代表控制器(Controller)。在該風格中,模型表示待展示的對象,視圖表示模型的展示,控制器負責把用戶的動作轉成針對模型的操作。模型通過更新視圖的數據來反映自身的變化。
在本系統中,模型(M)代表監控組件、視圖(V)代表控制終端、控制器(C)代表管理模塊。
本題主要考査MVC架構風格的定義以及擴展接口模式結構的分析與理解。
MVC架構風格最初是Smalltalk-80中用來構建用戶界面時采用的架構設計風格。其中M代表模型(Model),V代表視圖(View),C代表控制器(Controller)。在該風格中,模型表示待展示的對象,視圖表示模型的展示,控制器負責把用戶的動作轉成針對模型的操作。模型通過更新視圖的數據來反映自身的變化。
在本系統中,模型(M)代表監控組件、視圖(V)代表控制終端、控制器(C)代表管理模塊。
3. 閱讀以下關於軟件系統建模的敘述,在答題紙上回答問題1至問題3。
【說明】
某軟件公司計划開發一套教學管理系統,用於為高校提供教學管理服務。該教學管理系統基本的需求包括:
(1)系統用戶必須成功登錄到系統后才能使用系統的各項功能服務;
(2)管理員(Registrar)使用該系統管理學校(University)、系(Department)、教師(Lecturer)、學生(Student)和課程(Course)等教學基礎信息;
(3)學生使用系統選擇並注冊課程,必須通過所選課程的考試才能獲得學分;如果考試不及格,必須參加補考,通過后才能獲得課程學分;
(4)教師使用該系統選擇所要教的課程,並從系統獲得選擇該課程的學生名單;
(5)管理員使用系統生成課程課表,維護系統所需的有關課程、學生和教師的信息;
(6)每個月到了月底系統會通過打印機打印學生的考勤信息。
項目組經過分析和討論,決定采用面向對象開發技術對系統各項需求建模。
————————————————
【問題1】(7分) 用例建模用來描述待開發系統的功能需求,主要元素是用例和參與者。請根據題目所述需求,說明教學服務系統中有哪些參與者。
【參考答案】 學生、教師、管理員、時間、打印機。
【試題解析】
參與者是指系統以外的,需要使用系統或與系統交互的事物,包括:人或組織、設備、外部系統等。在本題中,較為容易識別的參與者包括:學生、教師、管理員,比較隱晦的參與者包括:時間、打印機。
【問題2】(7分)
用例是對系統行為的動態描述,用例獲取是需求分析階段的主要任務之一。請指出在面向對象系統建模中,用例之間的關系有哪幾種類型?對題目所述教學服務系統的需求建模時,
“登錄系統”用例與“注冊課程”用例之間、“參加考試”用例與“參加補考”用例之間的關系分別屬於哪種類型?
用例之間的關系包括:包含、擴展、泛化。 “登錄系統”用例與“注冊課程”用例之間的關系為:包含關系。
“參加考試”用例與“參加補考”用例之間的關系為:擴展關系。 【問題3】(11分)
類圖主要用來描述系統的靜態結構,是組件圖和配置圖的基礎。請指出在面向對象系統建模中,類之間的關系有哪幾種類型?對題目所述教學服務系統的需求建模時,類University與類Student之間、類University和類Department之間、類Student和類Course之間的關系分別屬於哪種類型?
【參考答案】 類之間的關系包括:關聯、聚合、組合、依賴、泛化、實現(可寫可不寫,因為實現是接口與類之間的關系,而接口是一種特殊的類)。
類University與類Student之間的關系是:聚合關系。 類University與類Department之間的關系是:組合關系。
類Student與類Course之間的關系是:關聯關系。
【試題解析】 依賴關系:一個事物發生變化影響另一個事物。 泛化關系:特殊/一般關系。 關聯關系:描述了一組鏈,鏈是對象之間的連接。
聚合關系:整體與部分生命周期不同。 組合關系:整體與部分生命周期相同。 實現關系:接口與類之間的關系。