軟件工程——方法與實踐許家珆習題答案_第1頁
軟件工程——方法與實踐許家珆習題答案_第2頁
軟件工程——方法與實踐許家珆習題答案_第3頁
軟件工程——方法與實踐許家珆習題答案_第4頁
軟件工程——方法與實踐許家珆習題答案_第5頁
已閱讀5頁,還剩17頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、習 題 答 案許家珆編習題一答案 一、選擇題 1. 軟件的主要特性是(A B C)。 A) 無形 B) 高成本 C) 包括程序和文檔D) 可獨立構成計算機系統 2. 軟件工程三要素是(C D)。 A) 技術、方法和工具B) 方法、工具和過程 C) 方法、對象和類 D) 過程、模型、方法 3. 包含風險分析的軟件工程模型是(A)。 A) 螺旋模型 B) 瀑布模型 C) 增量模型D) 噴泉模型 4. 軟件工程的主要目標是(C)。 A) 軟件需求 B) 軟件設計 C) 風險分析 D) 軟件實 現 5. 下列屬于面向對象開發方法的是(A B C D)。 A) Booch B) UML C) Coad

2、D) OMT 6. 軟件危機的主要表現是(B D)。 A) 軟件成本太高B) 軟件產品的質量低劣 C) 軟件開發人員明顯不足 D) 軟件生產率低下 7. 軟件開發方法的主要工作模型有(A B C) A) 螺旋模型 B) 循環模型 C) 瀑布模型 D) 專家模型 8. 軟件工程的目標有(A B C)。 A) 易于維護 B) 低的開發成本 C) 高性能 D) 短的開發期 9. 軟件工程學的目的和意義是()。 A) 應用科學的方法和工程化的規范管理來指導軟件開發 B) 克服軟件危機 C) 作好軟件開發的培訓工作 D) 以較低的成本開發出高質量的軟件 二、 判斷題 1. 軟件就是程序,編寫軟件就是編寫

3、程序。() 2. 瀑布模型的最大優點是將軟件開發的各個階段劃分得十分清晰。() 3. 結構化方法的工作模型是使用螺旋模型進行開發。() 4. 結構化方法和JSP方法都不適合于大型軟件的開發。() 5. 原型化開發方法包括生成原型和實現原型兩個步驟。() 6. 面向對象的開發方法包括面向對象的分析、面向對象的設計和面向對象的程序設計。( ) 7. 軟件危機的主要表現是軟件的需求量迅速增加,軟件價格上升。() 8. 軟件工具的作用是為了延長軟件產品的壽命。() 9. 軟件工程過程應該以軟件設計為中心,關鍵是編寫程序。() 10. RCP法與RSP法的主要區別是前者采用循環漸進的開發方式,原型將成為

4、最終的產品,而后者將被廢棄。() 三、簡答題 1. 軟件產品的特性是什么? 答: 軟件是一種邏輯產品,具有無形性;軟件產品的生產主要是研制;軟件不存在磨損和老化問題,但存在退化問題;軟件產品的生產主要是腦力勞動;軟件產品的成本非常昂貴,其開發方式目前尚未完全擺脫手工生產方式; 軟件具有“復雜性”,其開發和運行常受到計算機系統的限制。 2. 軟件發展有幾個階段?各有何特征? 答: 程序設計階段。硬件特征:價格貴、存儲容量小、運行可靠性差。軟件特征:只有程序、程序設計概念,不重視程序設計方法。 程序系統階段。硬件特征:速度、容量及工作可靠性有明顯提高,價格降低,銷售有爆炸性增長 。軟件特征:程序員

5、數量猛增,開發人員素質低。 軟件工程階段。硬件特征:向超高速、大容量、微型化及網絡化方向發展。軟件特征:開發技術有很大進步,但未獲得突破性進展,軟件價格不斷上升,未完全擺脫軟件危機。 3. 什么是軟件危機?其產生的原因是什么? 答:“軟件危機”(Software Crisis)的出現是由于軟件的規模越來越大,復雜度不斷增 加,軟件需求量增大。而軟件開發過程是一種高密集度的腦力勞動,軟件開發的模式及技術 不能適應軟件發展的需要。致使大量質量低劣的軟件涌向市場,有的花費大量人力、財力, 而在開發過程中就夭折。軟件危機主要表現在兩個方面: (1) 軟件產品質量低劣,甚至開發過程就夭折。 (2) 軟件

6、生產率低,不能滿足需要。 4. 什么是軟件生存周期模型?它有哪些主要模型? 答:軟件生存周期模型是描述軟件開發過程中各種活動如何執行的模型。 主要模型包括:瀑布模型、增量模型、螺旋模型、噴泉模型、變換模型和基于知識的模型。 5. 有哪些主要的軟件開發方法? 答:主要的軟件開發方法有:結構化開發方法、Jackson(JSP、JSD)方法、原型化開發方 法、維也納開發方法(VDM)和面向對象的開發方法。 6. 軟件生命期各階段的任務是什么? 答:軟件生命期瀑布模型分為六個階段: 可行性研究與計劃(確定系統的目標和規模,分析項目的可行性); 需求分析與規格說明(明確系統的規格和要求); 設計(包括概

7、要設計和詳細設計,將系統分解為模塊); 編程(用程序語言實現每個模塊,簡單容易); 測試(發現并改正錯誤,分為模塊測試、集成測試和系統聯調三級); 運行維護(擴充功能、糾錯等)。 習題二答案一、 選擇題 1. 需求分析的主要目的是( )。 A) 系統開發的具體方案 B) 進一步確定用戶的需求 C) 解決系統是“做什么的問題” D) 解決系統是“如何做的問題” 2. 需求分析的主要方法有( )。 A) 形式化分析方法 B) PAD圖描述 C) 結構化分析(SA)方法 D) OOA法 3. 面向對象的分析方法主要是建立三類模型,即()。 A) 系統模型、ER模型、應用模型 B) 對象模型、動態模型

8、、應用模型 C) -模型、對象模型、功能模型 D) 對象模型、動態模型、功能模型 4. 法的主要描述手段有()。 A) 系統流程圖和模塊圖 B) 圖、數據詞典、加工說明 C) 軟件結構圖、加工說明 D) 功能結構圖、加工說明 5. 畫分層圖的基本原則有( )。 A) 數據守恒原則 B) 分解的可靠性原則 C) 子、父圖平衡的原則 D) 數據流封閉的原則 6. 在E-R模型中,包含以下基本成分(C)。 A) 數據、對象、實體 B) 控制、聯系、對象 C) 實體、聯系、屬性 D) 實體、屬性、聯系 7. 畫DFD圖的主要目的是(A D)。 A) 作為需求分析階段用戶與開發者之間交流信息的工具 B)

9、 對系統的數據結構進行描述 C) 對目標系統的層次結構進行描述 D) 作為分析和設計的工具 8. 數據字典是數據流圖中所有元素的定義的集合,一般由以下四類條目組成(C)。 A) 數據說明條目、控制流條目、加工條目、數據存儲條目 B) 數據流條目、數據項條目、文件條目、加工條目 C) 數據源條目、數據流條目、數據處理條目、數據文件條目 D) 數據流條目、數據文件條目、數據池條目、加工條目 9. 在需求分析階段主要采用圖形工具來描述的原因是(B C)。 A) 圖形的信息量大,便于描述規模大的軟件系統 B) 圖形工具能夠極好地概括描述一個系統的信息,比文字敘述能夠更好地表達重 要的細節 C) 圖形能

10、夠更加直觀地描述目標系統,便于用戶理解和交流,有利于開發者與用 戶之間達成一致的需求 D) 圖形比文字描述簡單、形象 二、 判斷題 1. 在進行了可行性分析后,需求分析就只需要解決目標系統的設計方案。() 2. 法是面向數據流,建立在數據封閉原則上的需求分析方法。() 3. HIPO法既是需求分析方法,又是軟件設計方法。() 4. 在面向對象的需求分析方法中,建立動態模型是最主要的任務。() 5. 加工小說明是對系統流程圖中的加工進行說明。() 6. 判定表的優點是容易轉換為計算機實現,缺點是不能夠描述組合條件。() 7. 需求分析的主要方法有SD法、OOA法及HIPO法等。() 8. 分層的

11、DFD圖可以用于可行性分析階段,描述系統的物理結構。() 9. 信息建模方法是從數據的角度來建立信息模型的,最常用的描述信息模型的方法是E-R 圖。() 10. 用于需求分析的軟件工具,應該能夠保證需求的正確性,即驗證需求的一致性、完整性、現實性和有效性。() 三、 問答題 1. 什么是需求分析?需求分析階段的基本任務是什么? 答: 需求分析是當前軟件工程中的關鍵問題,需求分析階段的任務是:在可行性分析的基礎上,進一步了解、確定用戶需求。準確地回答 “系統必須做什么?” 的問題。獲得需求規格說 明書。還涉及到軟件系統的目標、軟件系統提供的服務、軟件系統的約束和軟件系統運行的環境。它還涉及到這些

12、因素和系統的精確規格說明,以及系統進化之間的關系。 需求分析的基本任務包括: (1) 抽取需求分析現行系統存在需要解決的問題。獲取足夠多的問題領域的知識,需求抽取的方法一般有問卷法、面談法、數據采集法、用例法、情景實例法以及基于目標的方法等;還有知識工程方法,例如,場記分析法、卡片分類法、分類表格技術和基于模型的知識獲取等 。 (2) 模擬和分析需求需求分析和模擬又包含三個層次的工作。首先是需求建模。需求模型的表現形式有自然語言、半形式化(如圖、表、結構化英語等)和形式化表示等三種。需求概念模型的要求包括實現的獨立性:不模擬數據的表示和內部組織等;需求模擬技術又分為企業模擬、功能需求模擬和非功

13、能需求模擬等。 (3) 傳遞需求傳遞需求的主要任務是書寫軟件需求規格說明。 (4) 認可需求就是對需求規格說明達成一致,其主要任務是沖突求解,包括定義沖突和沖突求解兩方面。常用的沖突求解方法有:協商、競爭、仲裁、強制、教育等,其中有些只能用人的因素去控制。 (5) 進化需求客戶的需要總是不斷(連續)地增長,但是一般的軟件開發又總是落后于客戶需求的增長,如何管理需求的進化(變化)就成為軟件進化的首要問題。對于傳統的變化管理過程來說,其基本成分包括軟件配置、軟件基線和變化審查小組。當前的發展是軟件家族法 ,即產品線方法。多視點方法也是管理需求變化的一種新方法,它可以用于管理不一致性, 并進行關于變

14、化的推理。 2. M公司的軟件產品以開發實驗型的新軟件為主。用瀑布模型進行軟件開發已經有近十年了,并取得了一些成功。若你作為一名管理員剛加入M公司,你認為快速原型法對公司的軟件開發更加優越,請向公司副總裁寫一份報告闡明你的理由,切記:副總裁不喜歡報告長度 超過一頁(B5)。 參考答案提示: 應先簡述瀑布模型的缺點,它已不適宜開發實驗型的軟件。根據快速原型法的特點,說明它特別適合于開發探索型、實驗型的軟件。 3. 如何畫分層數據流圖? 答: 總的原則是:至頂而下,逐層分解(畫分層數據流圖)。 比較復雜的系統不能畫在一張紙上,逐層分解的畫法可以控制每一層的復雜度。 頂層:將整個系統作為一個加工,描

15、述系統邊界(輸入與輸出)。 中間層:表示某個加工分解為一組子加工,其中的子加工還需進一步分解。 底層:由不再進行分解的基本加工組成。 4. 加工小說明有哪些描述方法? 答: 結構化語言:介于自然語言和形式語言(如謂詞邏輯)之間。 結構化英語:通常由外層和內層結構組成。 漢語的情況:精確、簡明扼要、文體可以靈活。 判定表:適用于表述比較復雜的加工邏輯,如具有多項選擇條件的操作。 判定樹:本質上與判定表相同,圖形表示更易于理解。 5. 考察下圖中子圖、父圖的平衡。 圖1圖2參考答案: 顯然,圖1中子圖與父圖不平衡。改正如下: 如果有如下數據條目: 訂貨單=客戶+賬號+數量則子、父圖平衡 6. 畫出

16、銀行取款過程的DFD圖。問題描述為:儲戶用存折取款,首先填寫取款單,根據“ 賬卡”中的信息檢驗取款單與存折,如有問題,將問題反饋給儲戶,否則,登錄“儲戶存款 數據庫”,修改相應數據,并更新“賬卡”,同時發出付款通知,出納向儲戶付款。 參考答案: 7. 常用的軟件需求分析方法有哪些? 答: 結構化分析方法(SA)、功能分解法、信息建模法、面向對象的分析方法(OOA)。 習題三答案 一、 選擇題 1. 模塊的基本特征是(A C)。 A) 外部特征(輸入/輸出、功能) B) 內部特征(輸入/輸出、功能) C) 內部特征(局部數據、代碼) D) 外部特征(局部數據、代碼 ) 2. SD方法的設計總則是

17、(C D)。 A) 程序簡潔、操作方便B) 結構清晰、合理 C) 模塊內聚性強 D) 模塊之間耦合度低 3. 軟件設計的主要任務是(A B D)。 A) 將分析階段獲得的需求說明轉換為計算機中可實現的系統 B) 完成系統的數據結構和程序結構設計 C) 完成模塊的編碼和測試 D) 對模塊內部的過程進行設計 4. 設計階段應達到的目標有( )。 A) 提高可靠性和可維護性 B) 提高應用范圍 C) 結構清晰 D) 提高可理解性和效率 5. 從工程管理的角度來看,軟件設計分兩步完成(D)。 A) 系統分析模塊設計 B) 詳細設計總體設 計 C) 模塊設計詳細設計 D) 總體設計詳細設 計 6. 模塊

18、獨立性準則由以下定性指標來衡量()。 A) 分解度 B) 耦合度 C) 屏蔽性 D) 內聚性 7. 用戶界面設計的任務包括(A B C)。 A) 確定用戶界面類型 B) 建立任務模型 C) 建立用戶模型 D) 建立功能模型 8. 程序設計語言可以分為(B C D)。 A) 面向過程的語言B) 機器語言 C) 高級語言D) 匯編語言 9. 程序效率包括(A C D)幾個方面的內容。 A) 代碼效率 B) 運行效率C) 存儲效率 D) I/O效率 10. SP方法中的基本控制結構有(A B C)。 A) 順序結構 B) 選擇結構 C) 重復結構 D) GOTO結構 11. 內部文檔可用注釋語言書寫

19、,注釋語言分為(A B C D)。 A) 序言性注釋 B) 描述性注釋 C) 功能性注釋 D) 狀態性注釋 12. 為使程序中數據說明更易于理解和維護,必須遵循以下原則(A B C) 。 A) 數據說明的次序應當規范化 B) 一個語句說明多個變量時,各變量名按字母順序排列 C) 對于復雜的數據結構,要加注釋,說明在程序實現時的特點 D) 定義變量名應按字母順序排列 13. 源程序的效率與(D)階段確定的算法的效率直接有關。 A) 概要設計 B) 總體設計 C) 單元設計 D) 詳細設計 14. 在詳細設計翻譯轉換成源程序代碼后,算法效率反映為對程序的哪幾個方面的要求 (C D)。 A) 讀寫速

20、度 B) 代碼長度 C) 存儲容量 D) 執行速度 15. 提高程序效率的根本途徑在于(B C)。 A) 編程時對程序語句進行調整B) 選擇良好的設計方法 C) 使程序最大限度的簡潔D) 選擇良好的數據結構與算法 二、判斷題 1. 劃分模塊可以降低軟件的復雜度和工作量,所以應該將模塊分得越小越好。 () 2. 在網狀結構中任何兩個模塊都是平等的,沒有從屬關系,所以在軟件開發過程中常常被使用。() 3. 信息隱蔽原則有利于提高模塊的內聚性。() 4. 中心變換型的DFD圖可看成是對輸入數據進行轉換而得到輸出數據的處理,因此可以使 用事務分析技術得到初始的模塊結構圖。() 5. SD法是一種面向數

21、據結構的設計方法,強調程序結構與問題結構相對應。 () 6. 所謂結構沖突,是指輸入數據與輸出數據之間很少或沒有結構上的對應關系。通常解決 的辦法是:構造一個或者多個中間結構,在輸入和輸出結構之間進行轉換。() 7. 當模塊的控制范圍是其作用范圍的子集時,模塊之間的耦合度較低。() 8. JACKSON方法是以數據流、數據封閉性準則逐層分解的。() 9. 程序設計語言的工程特性包括:可移植性、可重用性、可維護性、局部性和順序性。() 10. 項目應用領域是選擇語言的關鍵因素。() 11. FORTRAN、Pascal、C語言、PL/1和匯編語言都是科學工程計算可選用的語言。() 12. 要用快

22、速原型法開發軟件,應選用4GL語言。() 13. 提高程序效率的根本途徑是選擇良好的設計方法、數據結構與算法。() 14. 良好的程序設計風格簡單說就是高的編程技巧。() 三、簡答題 1. 模塊內聯系和模塊間聯系有哪些種類? 答:塊間聯系的各種類型的劃分,從以下3方面考慮: 按塊間聯系的方式(可分為直接引用與過程調用); 按塊間共用信息的作用(可分為數據型、控制型與混合型); 按塊間共用的信息數量多少(信息多聯系緊密)。 (1) 塊間聯系的類型,按照耦合度由大到小分為: 內容型:直接引用另一模塊的內部信息; 公共型:兩個模塊引用共同的全程數據區; 控制型:模塊間傳送的信息用于控制模塊的內部邏輯

23、; 復合型:模塊間傳送復合的數據結構; 數據型:模塊間傳送單個數據項。 (2) 塊內聯系的類型,按照內聚性從小到大分為: 偶然型:模塊內部沒有必然聯系; 邏輯型:邏輯上相似的功能放進一個模塊; 瞬時型:將同時執行的語句放在一個模塊; 通信型:模塊中的各部分引用共同的數據; 順序型:模塊中一部分的輸出是另一部分的收入; 功能型: 模塊中剛好包含了完成一個基本任務所必需的成分。 2. 分析以下DFD圖,說明屬于哪種類型的DFD圖,并按照相應的變換將其轉換為初始的模塊 結構圖。 參考答案:(略) 3. 下圖是修改文件記錄的DFD圖,請確定其主加工。 解:主加工為:賬號、修改、寫記錄。 4. 按照“降

24、低塊間聯系,提高塊內聯系”的設計總則對模塊進行修改,具體從哪些方面進 行改進? 解: (1) 盡可能建立功能模塊; (2) 消除重復功能; (3) 模塊的作用范圍與控制范圍,即當作用范圍為控制范圍的子集時,才能獲得較低的塊間 聯系; (4) 模塊的大小適當; (5) 模塊的扇入扇出數不宜太多。 5. 根據模塊的作用范圍與控制范圍的原則,判定a、b兩圖的正確性。 解:顯然,圖a不滿足作用范圍應與控制范圍的原則,模塊F的作用范圍不在控制范圍之內。 圖b的模塊設計合理。 6. 圖a中,模塊G為判定,判斷涉及到模塊B、F、G,請指出設計中的錯誤,再根據改進模 塊圖的基本原則,畫出12個改進方案(不改變

25、模塊G的判斷關系),并說明是按照哪條基本 原則進行改進的。 解:圖b為一個改進方案,將模塊G的位置提高,使其作用范圍為控制范圍的子集,減少模塊 之間的聯系。 7. 編碼階段的主要任務是什,應交付的結果是什么? 答:編碼階段的主要任務是為每個模塊編寫程序。即是:將詳細設計的結果轉換為用某種計 算機語言寫的程序源程序代碼。編碼階段應交付的結果是帶有“程序內部文檔”的、不 再含有語法錯誤的程序。 8. SP法的自頂向下,逐步求精方法的優點有哪些? 答:此法符合人們解決復雜問題的普遍規律,可提高軟件開發的成功率和生產率;而且用先 全局后局部、先整體后細節、先抽象后具體的逐步求精過程,開發出來的程序具有

26、清晰的層 次結構,因此程序容易閱讀和理解。這樣,程序自頂向下,逐步細化,分解成一個樹型結構 。 因此,在同一層次的節點上做細化工作,相互之間沒有聯系,它們之間的細化工作相互獨立 ;在任何一步發生錯誤,一般只影響它下層的節點,同一層其他節點不受影響;在以后的測試中,也可以先獨立地一個節點一個節點地做,最后再集成。這樣,程序清晰和模塊化,使 得在修改和重新設計一個軟件時,可復用的代碼量最大。 9. 為了使程序具有良好的設計風格,應注意哪些方面的問題? 答:(1) 標識符應按意取名。 標識符即符號名,包括:模塊名、常量名、標號名、子程序名、數據區名、緩沖區名等。 這些名字應能反映它所代表的實際東西,

27、應有一定實際意義,使其能夠見名知意,有助于對 程序功能的理解。 (2) 程序應加注釋,它分為兩類:序言性注釋和功能性注釋。 序言性注釋應置于每個模塊的起始部分,主要內容有:說明每個模塊的用途,功能;說明模塊的接口即調用格式、參數描述及從屬模塊的清單;數據描述;開發歷史 。 功能性注釋是嵌在源程序體中的,用于說明其后的程序段或語句的功能以及數據的狀態;也就是解釋下面要“做什么”,或是執行下面的語句會發生什么情況;而不是解釋下面“怎么做”,因為怎么做常常是與程序重復的,且對讀者理解程序沒有什么幫助。 10. 樣評價程序的執行效率?它與程序清晰性的關系是怎樣的? 答:許多程序員往往片面追求效率,其實

28、程序系統的成本不僅包括運行所需的機時,同時還應把程序員及操作員所花費的人力考慮進去。在編程時為追求效率而損害可讀性或可靠性,會給以后的維護工作帶來困難,所以從整體上看來是不值得的。 此外,還應該認識到,提高程序效率的根本途徑在于:選擇良好的設計方法、良好的數據結構與算法,而不是靠編程時對程序語句進行調整。 (1) 追求建立在不損害程序可讀性或可靠性基礎上,要先使程序正確、清晰,再提高程序 效率。 (2) 不能因為貪圖效率上的小利,而破壞程序的清晰性。 (3) 讓編譯程序去作簡單的優化。 (4) 提高程序效率的根本途徑在于:選擇良好的設計方法和良好的數據結構與算法,而不是靠編程時對程序語句做調整

29、。 11. 假定:需要編一個求解一元二次方程根的子程序,加入到現有的子程序庫中,供其他程序員使用。要求: (1) 為該子程序寫一個序言性注釋; (2) 用PASCAL語言或其他語言寫出這個子程序(要把根的性質,如:實根、復根、降為一次方程等有區別地通知調用者),并加上描述性注釋。 答案:(略) 習題四答案 一、選擇題 1. 面向對象程序設計的基本機制(ABC)。 A) 繼承 B) 消息 C) 方法 D) 結構 2. 下列屬于面向對象的要素有(BCD)。 A) 分類性 B) 抽象 C) 共享D) 封裝 3. 下列選項中屬于面向對象開發方法的有(ACD)。 A) Booch B) CAD C) C

30、oad D) OMT 4. 下列屬于Coad方法中面向對象的分析模型的層次有(AB)。 A) 主題層 B) 對象層 C) 應用層 D) 接口層 5. 一個類屬性依其特征劃分,其類型有(ABCD)。 A) 描述型 B) 定義型 C) 派生型 D) 參考型 6. 在進行面向對象分析時,所采用的模型有(ABD)。 A) 對象模型 B) 動態模型 C) 靜態模型 D) 功能模型 7. 狀態是對象屬性的值的一種抽象,它的性質有(AB)。 A) 時間性 B) 持續性 C) 有序性 D) 有窮性 8. 數據流圖中的處理必須用對象中的操作來實現常見的操作有(ABCD)。 A) 查詢 B) 動作 C) 活動 D

31、) 訪問 9. 建立繼承關系時所采用的方式有(AC)。 A) 自頂向下 B) 從內到外 C) 自底向上 D) 從復雜到簡單 10. 對象是人們要研究的任何事物主要的對象類型有(ABCD)。 A) 有形實體 B) 作用 C) 事件 D) 性能說明 二、判斷題 1. 面向對象的的方法是以類作為最基本的元素,它是分析問題解決問題的核心。() 2. 類是指具有相同或相似性質對象的抽象,對象是抽象的類,類的具體化就是對象。() 3. 繼承性是父類和子類之間共享數據結構和消息的機制,這是類之間的一種關系()。 4. 多態性增強了軟件的靈活性和重用性,允許用更為明確、易懂的方式去建立通用軟件, 多態性和繼承

32、性相結合使軟件具有更廣泛的重用性和可擴充性。() 5. 面向對象分析,就是抽取和整理用戶需求并建立問題域精確模型的過程。() 6. 面向對象的設計的主要目標是提高生產效率,提高質量和提高可維護性。() 7. 對象模型表示了靜態的、結構化的系統數據性質,描述了系統的靜態結構,它是從客觀世界實體的對象關系角度來描述,表現了對象的相互關系。() 8. 面向對象的分析是用面向對象的方法對目標系統的問題空間進行理解、分析和反映。通過對象層次結構的組織確定解空間中應存在的對象和對象層次結構。() 9. 類的設計過程包括:確定類,確定關聯類,確定屬性,識別繼承關系。() 10. 復用也叫重用或再用,面向對象

33、技術中的“類”,是比較理想的可重用軟構件。有三種重用方式:實例重用、繼承重用、多態重用。() 11. 主題是一種關于模型的抽象機制,它是面向對象模型的概貌,也是關于某個模型要同時考慮和理解的內容,主題起一種控制作用。() 12. 面向對象的分析由對象、結構、繼承性和基于消息的通信構成。() 13. 支持繼承性是面向對象程序設計語言和傳統程序設計語言在語言機制方面的根本區別。() 14. 面向對象的分析過程主要包括三項內容:理解、表達和驗證。() 15. 面向對象的設計的主要目標是提高生產效率、提高質量和提高可維護性。() 三、 簡答題 1 與傳統程序設計模式中的過程調用相比,消息傳遞機制有何本

34、質區別? 答: (1) 消息傳遞必須給出信道的信息,通常要指出明顯的接受方。 (2) 由于接受方是一通信實體,具有保持狀態的能力,所以同一發送方在不同時刻向同一 接受方發送同樣的信息,可因接受方的當前狀態不同而得到不同的結果。 (3) 消息傳遞可以是異步的,發送方可以不必等待接受方返回信息就可以繼續執行后面的操作,因而支持程序的并發和分布執行,而過程調用只能是同步的,本質上是串行的。 2 闡述面向對象的特征,并做簡要的解釋。 答: (1) 對象惟一性。 每個對象都有自身惟一的標識,通過這種標識,可找到相應的對象。 (2) 分類性。 是指將具有一致的數據結構(屬性)和行為(操作)的對象抽象成類。

35、 (3) 繼承性。 是父類和子類之間共享數據結構和方法的機制,這是類之間的一種關系。 (4) 多態性。 是指相同的操作或函數,過程作用于多種類型的對象上,并獲得不同的結果。 3 Coad方法主要由面向對象分析OOA和面向對象設計OOD。OOA方法分析過程和構造OOA概念模型的順序由5個層次組成,請簡述這5個層次。 答: (1) 發現類及對象。描述如何發現類及對象。從應用領域開始識別類及對象,形成整 個應用的基礎,然后,據此分析系統的責任。 (2) 識別結構。該階段分為兩個步驟。第一,識別“一般特殊”結構,該結構捕獲了識別出的類的層次結構;第二,識別“整體部分”結構,該結構用來表示一個對象如何成

36、為另一個對象的一部分,以及多個對象如何組裝成更大的對象。 (3) 定義主題。主題由一組類及對象組成,用于將類及對象模型劃分為更大的單位,便于理解。 (4) 定義屬性。其中包括定義類的實例(對象)之間的實例連接。 (5) 定義服務。其中包括定義對象之間的消息連接。 4 面向對象程序設計有哪些優點? 解:開發時間短、效率高、可靠性高,所開發的程序更強壯。由于面向對象編程的可重用性 ,可以在應用程序中大量采用成熟的類庫,從而縮短開發時間,這樣程序更易于維護、 更新和升級。繼承和封裝使得應用程序的修改帶來的影響更加局部 化。 5比較面向對象方法與結構化方法的特點。 解:分析是問題抽象 (做什么),設計

37、是問題求解 (怎么做),實現是問題的解 (結果)。任 何方法學對客觀世界的抽象和求解過程都是如此。在問題抽象階段,結構化方法面向過程, 按照數據變換的過程尋找問題的結點,對問題進行分解。因此,與面向對象方法強調的對象 模型不同,描述數據變換的功能模型是結構化方法的重點。如果問題世界的功能比數據更復 雜或者更重要,那么結構化方法仍然應是首選的方法學。如果數據結構復雜且變換不多, 那么如果以過程主導分析和設計,一旦有系統變更就會給下游開發帶來極大混亂。 由于對過程的理解不同,面向過程的功能細分所分割出的功能模塊有時會因人而異。而面向 對象的對象細分,從同一問題領域的對象出發,不同人得出相同結論的比

38、率較高。 在設計上,結構化方法學產生自頂向下、結構清晰的系統結構。每個模塊有可能保持較強的獨立性,但它往往與數據庫結構相獨立,功能模塊與數據庫邏輯模式間沒有映射關系,程序與數據結構很難封裝在一起。如果數據結構復雜,則模塊獨立性很難保證。面向對象方法抽象的系統結構往往并不比結構化方法產生的系統結構簡單,但它能映射到數據庫結構中,很容易實現程序與數據結構的封裝。 在軟件工程基本原則中有一條“形式化原則”,即對問題世界的抽象結論應該以形式化語言 (圖形語言、偽碼語言等)表述出來。結構化方法可以用數據流圖、系統結構圖、數據辭典、狀態轉移圖、實體關系圖來進行系統邏輯模型的描述;而面向對象方法可以使用對象

39、模型圖、數據辭典、動態模型圖、功能模型圖。其中對象模型圖近似系統結構圖與實體關系圖的結合,動態模型圖類似狀態遷移圖,功能模型圖類似數據流圖。 6當重要的對象被發現后,通過一組互相關聯的模型詳細表示類之間的關系和對象的行為,這些模型從四個不同的側面表示了軟件的體系結構、靜態邏輯、動態邏輯、靜態物理和動態物理。試描述一下這四種特性。 解:靜態邏輯模型描述實例化(類成員關系)、關聯、聚集(整體/部分)、和一般化(繼承)等關系。這被稱為對象模型。一般化關系表示屬性和方法的繼承關系。定義對象模 型的圖形符號體系通常是從用于數據建模的實體關系圖導出的。對設計十分重要的約束,如 基數(一對一、一對多、多對多

40、),也在對象模型中表示。 動態邏輯模型描述對象之間的互相作用?;ハ嘧饔猛ㄟ^一組協同的對象,對象之間消 息的有序的序列,參與對象的可見性定義,來定義系統運行時的行為。 靜態物理模型通過模塊描述代碼的布局。動態物理模型描述軟件的進程和線程體系結 構。 習題五答案 一、選擇題 1. 下列不是模型元素的是(D)。 A) 關聯 B) 聚合 C) 依賴 D) 筆記 2. UML具有擴展性,常見的擴展機制有(BCD)。 A) 修飾 B) 版類 C) 加標簽值 D) 約束 3. UML語言支持的建模方式有(ABD)。 A) 靜態建模B) 動態建模 C) 模塊化建模 D) 功能建模 4. 下列各種圖可用于動態建

41、模的有(ACD)。 A) 狀態圖 B) 類圖 C) 序列圖 D) 活動圖 5. 下列屬于狀態的組成部分的有(AB)。 A) 名稱 B) 活動 C) 條件 D) 事件 6. UML中包括的事件有(ABCD)。 A) 條件為真B) 收到另一對象的信號C) 收到操作調用 D) 時間表達式 7. 屬性的可見性有(ABD)。 A) 公有的 B) 私有的 C) 私有保護的 D) 保護的 8. 用例之間的關系有(BCD)。 A) 友元 B) 擴展 C) 使用 D) 組合 9. 應用于通用化約束的方式有(ABCD)。 A) 完整 B) 不相交 C) 不完整 D) 覆蓋 10. 消息的類型有(ABC)。 A)

42、同步 B) 異步 C) 簡單 D) 復雜 二、 判斷題 1. UML建模語言是由視圖、圖、模型元素和通用機制構成的層次關系來描述的。 () 2. UML是一種建模語言,是一種標準的表示,是一種方法。 () 3. 泳道是一種分組機制,它描述了狀態圖中對象所執行的活動。 () 4. 同步消息和異步消息的主要區別是:同步消息的發送對象在消息發送后,不必等待消息處理,可立即繼續執行,而異步消息則發送對象必須等待接收對象完成消息處理后,才能繼續執行。 () 5. 類圖中的角色是用于描述該類在關聯中所扮演的角色和職責的。 () 6. 類圖用來表示系統中類和類與類之間的關系,它是對系統動態結構的描述。 ()

43、 7. 用例模型的基本組成部件是用例、角色和用例之間的聯系。 () 8. 用例之間有擴展、使用、組合等幾種關系。 () 9. 順序圖描述對象之間的交互關系,重點描述對象間消息傳遞的時間順序。 () 10. 活動圖顯示動作及其結果。著重描述操作實現中所完成的工作以及用例實例或類中的活動。() 三、 簡答題 1. 以圖1(一個在學校首次報名的 UML 活動圖)為例,說明如何繪制活動圖。圖1學校首次報名的UML活動圖答: 要創建一個UML活動圖,需要反復執行下列步驟。 (1) 定義活動圖的范圍。首先應該確定建模的范圍,是對整個系統建模?還是一個子系統?一旦定義了作圖的范圍,應該在其頂部,用一個注釋,

44、指明該圖的標題和惟一的標識符,還可 標注該圖的時間及作者姓名。本題的建模范圍是一個學校管理系統中的“報名”部分。 (2) 添加活動。活動是活動圖的核心,活動是完成系統任務所必須執行的處理步驟??蓮挠美P统霭l,對每個角色(actor)所驅動的主要用例引入一個活動,如果是對整個系統建模,應對每個主要流程引入一個活動。在“報名”的活動圖中確定了“Fill out enrollment ”(填寫報名表)、“Enroll in university”(登記入學)、“Obtain help to fill out fo rms”(幫助填寫報名表)、“Attend university overview

45、presentation”(參加介紹學校 會議)等6個活動。 (3) 添加起點和結束點。每個活動圖只能有一個起始點和多個結束點,結束點可以是所有活 動的結束,也可以是對執行過程的終止。 (4) 添加活動間的轉變。當一個活動結束時將進入下一個活動,稱為活動轉移??蓸嗣骰顒愚D移的條件,引起活動轉移的事件。如活動“填寫報名表”有兩個活動轉移,當填寫報名表不正確時,則轉移到活動“幫助填寫報名表”,當填寫正確時,則轉移到活動“登記入學 ”。 (5) 添加判斷點。當對建模的邏輯需要做出一個判斷時,需要添加判斷點。例如,在圖1中 , 在“Enroll in University”活動之后,還必須按照入學條件

46、進行判斷,滿足條件的繼續執行入學報到的活動,而不滿入學條件的則結束。 (6) 找出并行活動。當兩個活動間沒有直接的聯系,而且它們都必需在第三個活動開始前結束,那它們是可以并行運行的。在圖1中,用同步線描述系統任務中的并發活動,活動“Attend university overview presentation”(參加介紹學校會議)和“enroll in seminars” (注冊研討班)及“Make initial tuition payment”(交付初始的學費)可并行執行,使用同 步線表示它們都要在結束整個流程前完成。 2. 簡述擴展、使用和細化三種UML依賴關系的異同。 答:擴展關系是對

47、基本用例在對某些“擴展點”的功能的增加。 使用關系表示一個元素為了實現或完成其全部的功能需要用到已存在的另一個模型元素,例如類與類之間的多種方法調用關系。 細化關系是不同語義層(如分析和設計)之間模型元素的依賴關系,因此細化關系可描述的語義范圍較廣,包括模型的逐步細化、優化、變換、模板、模型合成、框架組成等等。 3. 為什么要使用UML? 答:軟件開發的過程猶如雕琢一件工藝品,由無形到有形,由粗到細。大家知道,隨著計算機應用的飛速發展,軟件的復雜程度不斷提高,源代碼的規模越來越大,項目失敗的可能性也相應增加。在長期的研究與實踐中,人們越來越深刻地認識到,建立簡明準確的表示模型是把握復雜系統的關

48、鍵。模型是對事物的一種抽象,人們常常在正式建造實物之前,首先建立一個簡化的模型,以便更透徹地了解它的本質,抓住問題的要害。在模型中,先要剔除那些與問題無關的、非本質的東西,從而使模型與真實的實體相比更加簡單明了、易于把握。總的來說,使用模型可以使人們從全局上把握系統的全貌及其相關部件之間的關系,可以防止過早地陷入各個模塊的細節。因此,面向對象的分析與設計應該從建模開始。 4. 簡述UML實際建模過程。 答:每次迭代都分為以下幾個階段: 分析階段。建模的目的是捕捉系統的功能需求,分析、提取所開發系統的“客觀世界”領域的類以及描述它們的合作關系。 設計階段。建模的目的是通過考慮實現環境,將分析階段的模型擴展和轉化為可行的技術實現方案。 實現階段。具體工作就是進行編碼,同時對已構造的模型作相應的修正。 配置階段。通過模型描述所開發系統的軟硬件配置情況。 測試階段。使用前幾個階段所構造的模型來指導和協助測試工作。 5. 在UML中的狀態圖、協作圖、活動圖、序列圖在系統分析中各起到了什么作用? 答: 狀態圖表示一個類的狀態變化,例如訂單的狀態變化等,在實時系統中用的較多,也可以用于輔助設計用戶界面;順序圖表示各個對象如何合作,一起完成一個use

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論