软件设计与体系结构(第二版)部分习题
第一章:軟件工程與軟件設計
1.敘述軟件工程中可修改性,有效性,可靠性,可理解性,可維護性,可重用性,可適應性,可移植性和可追蹤性等概念的含義,并指明這些概念的重要性
- 可修改性(modifiability):可修改性是指允許對系統進行修改而不增加原系統的復雜性.它支持軟件的調試與維護,但度量起來比較困難.
- 有效性(efficiency):有效性是指軟件系統能最有效地利用計算機的時間資源和空間資源,一般將系統的時/空開銷作為衡量軟件質量的一項重要技術指標.犧牲時間效率換取空間有效性或犧牲空間效率換取時間有效性時/空折中經常出現.
- 可靠性(reliability):可靠性是指軟件在給定環境和時間下不發生故障的概率. 對于實時嵌入式計算機系統,可靠性是非常重要的目標,如宇宙飛船的導航,核電站的運行等.
- 可理解性(understandability):可理解性是指系統具有清晰的結構,能直接反應問題的需求.有助于軟件系統的復雜性,支持軟件的維護,移植或復用.
- 可維護性(maintainability):可維護性是指交付軟件產品后能夠方便地對它進行修改,以改正潛在的錯誤以及改進性能和其他屬性,使軟件適應環境的變化等.可理解和可修改性有利于軟件的可維護性.
- 可重用性(reusability):概念或功能相對獨立的一個或一組相關模塊定義為一個軟部件.可重用性有助于提升軟件產品的質量和開發效率,有助于降低軟件的開發和維護費用.
- 可適應性(adaptability):可適應性是指軟件在不同的系統約束下,使用戶需求得到滿足的難易程度.軟件應采用廣為流傳的程序設計語言編碼,在廣為流行的操作系統環境中運行,采用標準的術語和格式書寫文檔.適應性強的軟件較容易推廣和使用
- 可移植性(portability):可移植性是指軟件從一個計算機系統或環境移植到另一個計算機系統或環境的難易程度.可移植性支持軟件的可復用性和可適應性.
- 可追蹤性(traceability):可追蹤性是指根據軟件需求對軟件設計,程序進行正向追蹤,或根據程序,軟件設計對軟件需求進行逆向追蹤的能力,降低系統的復雜性會提高軟件的可追蹤性.
2.軟件設計應該包含哪些要素?
軟件設計最終要提供一種解決方案,用于描述如何實現一個滿足需要的軟件,應包含以下組成要素:
(1)目標描述.設計方案需要清楚地描述它要解決的問題和將要達到的目標.
(2)設計約束.設計目標的獲得通常要在某些約束的限制范圍內,這些約束定義了要解決問題的解空間.
(3)產品描述.設計活動的結果必須以一種對被設計的產品進行描述的方式呈現出來.
(4)設計原理.工程化的設計活動必須以一定的科學原理和技術手段為基礎,它們將表明問題可以通過該設計得到合理的解決.
(5)開發規劃.工程化的設計活動不僅需要讓人知道該設計能解決問題,還需要讓人們了解該設計在實際開發中是可行的,以及如何實現該設計.
(6)使用描述.產品經常在某些特定條件下才能被可靠,高效地使用,并達到最初的設計目標.因此描述產品如何使用非常重要.
第二章:統一建模語言UML
(1)
1.假設要開發一個簡單的網絡購物平臺,可以實現基本的用戶登錄,瀏覽商品,購買商品,生成訂單,支付等功能.請給出該系統中存在的一些主要類的類圖.
(2)
2.試敘述UML用例圖在軟件需求建模中的用途.請給出上一題網絡購物平臺的用例圖.
3.UML交互圖包含哪些視圖?請針對第一題網絡購物平臺中的某個場景(如登錄,把商品加入購物車等)給出相應的順序圖.
4.UML活動圖和狀態圖之間有何不同?給出第一題網絡購物平臺中訂單類的狀態圖.
區別:狀態圖是描述某一對象的狀態轉化的,它主要是展示的是對象的狀態。描述的是一個對象的事情。從狀態圖中我們可以看出,對象在接受了事件刺激后,會做出什么樣的反應。
活動圖是描述系統在執行某一用例時的具體步驟的,它主要表現的是系統的動作,描述的是整個系統的事情。
第三章:軟件設計基礎
1.內聚度,耦合度分別指什么?為什么軟件設計要追求高內聚低耦合?
內聚度:指該模塊內各成分間彼此結合的緊密程度,內聚按其高低程度可分為不同等級,內聚度越高越好.從低到高:偶然性內聚–>邏輯性內聚–>時序內聚–>過程性內聚–>通信性內聚–>順序性內聚–>功能性內聚
耦合度:是對軟件結構中模塊間的關聯程度的一種度量.耦合的強弱取決于模塊間接口的復雜性,進入或調用模塊的位置以及通過接口傳送數據的多少等.在設計軟件時應追求盡可能松散耦合的系統,這類系統中模塊的設計測試和維護相互獨立.錯誤傳播的可能性和范圍會較低.
從低到高:非直接耦合–>數據耦合–>特征耦合–>控制耦合–>外部耦合–>公共耦合–>內容耦合
為什么要追求高內聚低耦合:高內聚,低耦合的好處體現在系統持續發展的過程中,高內聚,低耦合的系統具有更好的重用性,維護性,擴展性,可以更高效的完成系統的維護開發,持續的支持業務的發展,而不會成為業務發展的障礙。
2.軟件設計過程中包含哪些主要活動?分別介紹這些活動的主要目標.
(1)軟件設計計劃:明確設計過程的輸入制品并使其處于就緒狀態,定義設計過程的目標,輸出制品及其驗收準則,確定覆蓋設計過程中各個階段的全局性設計策略,分配設計過程相關人員職責,針對設計過程中的活動制定工作計劃.
(2)體系結構設計:建立軟件系統的體系結構,有時也稱“頂層架構”.
(3)界面設計:為用戶使用目標軟件系統以實現其所有業務需求而提供友好的人機交互界面.
(4)模塊/子系統設計:確定模塊的具體接口定義并設計模塊的內部結構,明確它們之間的協作關系.
(5)過程/算法設計:對模塊內部的工作和執行過程進行描述,給出有關處理的精確說明.
(6)數據模型設計:確定設計模型中需要持久保存的數據條目,基于關系數據模型設計這些數據條目的組織方式,必要時還需要設計特定于本軟件項目將采用的關系數據庫管理系統的優化機制,以提高持久數據操作的性能.
3.哪些要素可以用來評價軟件設計的質量?
- a.結構良好
- b.充分性
- c.可行性
- d.簡單性
- e.實用性
- f.靈活性
- g.健壯性
- h.可移植性
- i.可復用性
- j.標準化
4.試總結本章列舉的軟件體系結構設計方法各有何特點.結合自己的開發經驗,討論如何選擇合適的軟件體系結構設計方法
-
1.軟件體系結構的多視圖建模:適合處理大規模系統,復雜性較高(Rational公司4+1)
-
2.基于評估與轉換的軟件體系結構設計:針對功能特性
-
3.模型驅動的軟件體系結構設計:主要指如何以復用體系結構風格為基礎設計軟件體系結構
-
4.領域特定的軟件體系結構設計:領域工程分析應用領域的共同特征和可變特征,對刻畫這些特征的對象和操作進行選擇和抽象,形成領域模型,并進一步生成DSSA
-
5.軟件產品線方法:是軟件復用發展的一個更高階段,它并不僅僅局限于以前人們在軟件復用中考慮的對函數,模塊,類體系結構甚至子系統的重用
-
6.其他軟件體系結構設計方法:(1)基于目標圖推理的體系結構設計方法(2)基于屬性的體系結構設計方法
第四章:面向對象的軟件設計方法
1.什么是概念模型設計?為什么需要建立軟件概念模型?
定義:為了把現實世界中的具體事物抽象、組織為某一數據庫管理 系統支持的數據模型,人們常常首先將現實世界抽象為信息世界,然后將信息世界轉換為機器世界。也就是說,首先把現實世界中的客觀對象抽象為某一種信息結構,這種信息結構并不依賴于具體的計算機系統,不是某一個數據庫管理系統(DBMS)支持的數據模型,而是概念級的模型,稱為概念模型。
原因:由于概念模型用于信息世界的建模型,是現實世界到信息世界的第一層抽象,是用戶與數據庫設計人員之間進行交流的語言,因此概念模型一方面具有較強的語義表達能力,能夠方便、直接地表達應用中的各種語義知識,另一方面它還簡單、清晰、易于用戶理解。
2.闡述設計精化的作用和主要內容
設計精化主要內容:精化軟件結構、調整軟件構成類、精華交互模型、精華類之間的關系
設計精化作用:經過分析和設計,已建立起一-定程度的設計模型,其包含了較完整的靜態結構模型(頂層架構圖、分析類圖)和動態行為模型(交互圖),以及用戶界面設計和數據模型設計,但其設計模型的抽象層次與軟件實現之間還有一定差距,有必要對這些模型再進行分析,細化和優化,己生成高質量的設計模型,為后續的實現階段奠定堅實基礎
3.為什么要對類的行為進行設計?如何設計類的行為?
- 可以對類的對象實例在其生存周期中對外部消息的響應和狀態變化變化過程進行建模,對類中重要操作的實現過程或算法進行描述,幫助編程人員更好地理解類的使用.
1.針對整個類使用UML狀態圖描述其行為
2.針對類中某些重要的方法,用UML活動圖描述其執行過程或步驟
總結
以上是生活随笔為你收集整理的软件设计与体系结构(第二版)部分习题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 达梦数据库DCA培训学习
- 下一篇: WIN2000终端网络简介(转)