一 選擇題
-
軟件工程的基本目標是( B )。
A. 消除軟件固有的復雜性 B. 開發高質量的軟件
C. 努力發揮開發人員的創造性潛能 D. 更好地維護正在使用的軟件產品
-
下面的( C )說法是正確的。
A. 軟件危機在 20 世紀 70 年代末期全面爆發
B. 當前先進的軟件工程方法已經解決了軟件危機的問題
C. 軟件危機是指在計算機軟件的開發和維護過程中遇到的一系列嚴重問題
D. 軟件危機是指在軟件產品中存在一系列的質量問題
-
軟件過程的基本活動是( A )。
A. 分析、設計、實現、測試、演化B. 溝通、計划、建模、構造、部署
C. 計划、分析、設計、實現、調試
D. 溝通、風險管理、度量、產品化、評審
-
軟件開發的增量模型是( B )。
A. 用於大型開發團隊項目的最好方法
B. 核心工作產品需要快速開發時使用的一種好方法
C. 需求被明確定義時使用的一種合適方法
D. 需求不明確時使用的一種合適方法
-
基於組件的開發模型是( C )。
A. 只適用於計算機硬件設計
B. 不能支持可重用組件的開發
C. 在面向對象技術獲得支持的情況下應用得更好
D. 增加了開發風險和成本
-
基線(Baseline)是指在項目生命周期的不同時間點上,一個或一組配置項通過( C ) 而進入正式受控的一種狀態。
A. 存取控制 B. 質量控制
C. 正式評審 D. 變更管理
-
內聚表示一個模塊( B )的程度,耦合表示一個模塊( D )的程度
A. 可以被更加細化
B. 僅關注在一件事情上
C. 能夠適時地完成其功能
D. 聯接其他模塊和外部世界
-
下面的( D )界面設計原則不允許用戶保持對計算機交互的控制。
A. 允許交互中斷
B. 允許交互操作取消
C. 對臨時用戶隱藏技術內部信息
D. 只提供一種規定的方法完成任務
-
類的行為應該基於( C )進行測試
A. 數據流圖 B. 對象圖
C. 狀態圖 D. 用例圖
-
逆向工程(Reverse Engineering)通常在軟件生命周期的( D )階段,它是從源代碼或者目標代碼中提取設計信息
A. 需求分析 B. 軟件設計
C. 軟件測試 D. 軟件維護
二 簡答題
-
一架客機由數百萬個單獨的部件組成,需要上千人組裝。微軟於 1989 年 11 月發布的 WindowsWord 最初版本,花費了 55 人年,生成了 149,000 行源代碼,晚了 4 年交付使用。客機通常 都是按時並低於預算交付使用,而軟件卻非如此。請討論一下開發客機與開發文字處理軟件的 不同之處,分析並說明導致這種局面的原因。
-
軟件本質上具有復雜性,文字處理軟件中數據,狀態和邏輯關系的可能組合遠比客機中各個單獨部件之間的關聯更為復雜,這種復雜性會對問題理解,人員溝通,系統描述,軟件變更,功能擴充帶來極大的困難
-
軟件具有不可見性,客機是有形的物體,易於准確的描述其結構,控制整個開發進度,文字處理軟件是不可見的邏輯實體,很難准確地和完整地描述其結構,在開發完成之前無法直觀的看到結果,因此難以控制整個開發進度
-
軟件開發通常是手工定制開發的,在開發過程中其設計需要隨着需求和環境的變化而不斷修改,而客機通常是通過已有的零件組裝而成,其質量,成本,進度更加容易控制
-
-
軟件生命周期主要包括哪些階段?請簡要說明各階段的主要任務。
軟件的生命周期一般包括:分析,設計, 實現,測試,演化(或維護階段
- 分析階段:分析,整理和提煉所收集到的用戶需求,建立完整的分析模型,將其編寫成軟件需求規格說明和初步的用戶使用手冊
- 設計階段:設計人員依據軟件的需求規格說明文檔,確定軟件的體系結構,進而確定每個模塊的實現算法,數據結構和接口等,編寫設計說明書,並組織進行設計審核
- 實現階段:將設計的各個模塊編寫成計算機可接受的程序代碼
- 測試階段:在設計測試用例的基礎上,測試軟件各個組成模塊,然后將各個模塊集成起來,測試整個產品的功能和性能是否滿足已有的規格說明
- 演化階段:為了改正錯誤,適應環境變化和增強功能,對軟件進行一系列修訂
-
下列需求描述是否存在問題?如果有問題,請說明所存在的問題並給出一種正確的描述。
-
軟件應該易於使用。
問題:需求描述不可驗證
改正:對於一個沒有經驗的用戶而言,經過兩小時的培訓就可以使用系統的所有功能
-
系統通過 ADO 與圖書資料數據庫連接,並從圖書資料數據表中獲得圖書資料的基本信息。
問題:在需求描述中給出了實現細節
改正:系統可以存取圖書資料的基本信息
-
由於版權的限制,某些電子資料只能讓用戶瀏覽和打印而不能下載。
正確
-
ATM系統檢驗用戶存取的合法性。
問題:需求描述存在二義性
改正:系統通過用戶名和密碼檢驗用戶存取的合法性
-
ATM 系統每周 7 天、每天 24 小時都可以使用。
正確
-
-
經過代碼審查和單元測試,單個組件的有效性已經得到全面驗證,為什么還要進行集成測試? 在集成測試時,增量式集成方法為什么比一次性整體集成方法要好?
- 單個組件正常工作並不意味着所有組件集成在- -起可以正常工作,因為組件相互連接時接口會引起許多新問題,集成測試正是將通過單元測試的各個組件組裝在一-起進行綜合測試,以便發現與接口有關的各種錯誤。整體一次性集成方法可能在測試時發現大量錯誤,造成定位和糾正錯誤十分困難;增量式集成方法通過逐漸加入組件,可以比較容易定位和糾正錯誤。
三 分析題
- 在本課程的實驗項目中,你們經歷了團隊組織與開發管理的過程,並應用面向對象 技術進行軟件的設計與實現。請結合該實驗項目,回答以下問題:
- 你使用的配置管理工具是什么?其版本存取的控制流程是什么?
- 為什么需要定義軟件需求的優先級?
- 為什么需要將整個系統划分成若干子系統?子系統的划分應符合什么原則?
- 分析類圖與設計類圖有什么不同?
- 在類設計中,你建議使用什么方法進行屬性的設置和讀取?這樣做有什么好處?
-
答案示例:
-
在VSS和CVS中選擇其中之一進行回答:
VSS: 開發人員從項目數據庫中檢出需要變更的配置對象,系統同時將配置庫中的該對象進行加鎖:開發人員完成修改並通過檢測后,將修改后的對象登入配置庫中,系統解除該版本的封鎖,形成一個新的版本。CVS:開發人員從項目數據庫中檢出需要變更的配置對象;開發人員在自己的工作空間中進行修改,在通過檢測后提交修改后的配置對象,並使用系統命令與原有版本進行合並,形成- -個新的版本。
-
軟件開發很難在規定的時間內實現所有的需求,通過定義需求的優先級,可以在保證核心功能的前提下削減部分需求,從而將有限的開發力量投入到核心功能的開發上,同時確保了開發進度。
-
划分子系統可以降低系統的復雜性,也有利於開發的組織。子系統的划分應符合“高內聚低耦合”的原則。
-
分析類圖是面向問題域建模,不關注技術實現問題;設計類圖是面向實現域建模,它以分析類圖為基礎集中研究實現問題。
-
在類設計中,建議使用set方法和get方法進行進行屬性的設置和讀取;好處:降低類之間的耦合度。
-
參考來源: [清華2006軟件工程期末試題]:https://wenku.baidu.com/view/4d696eec102de2bd96058859.html