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