11面向?qū)ο笤O(shè)計(jì)3_第1頁(yè)
11面向?qū)ο笤O(shè)計(jì)3_第2頁(yè)
11面向?qū)ο笤O(shè)計(jì)3_第3頁(yè)
11面向?qū)ο笤O(shè)計(jì)3_第4頁(yè)
11面向?qū)ο笤O(shè)計(jì)3_第5頁(yè)
已閱讀5頁(yè),還剩148頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、面向?qū)ο笤O(shè)計(jì)第十一章2022/8/111面向?qū)ο笤O(shè)計(jì)的含義分析是提取和整理用戶需求,并建立問題域精確模型的過程。設(shè)計(jì)是把分析階段得到的需求轉(zhuǎn)變成符合成本和質(zhì)量要求的、抽象的系統(tǒng)實(shí)現(xiàn)方案的過程。從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計(jì)(OOD),是一個(gè)逐漸擴(kuò)充模型的過程。面向?qū)ο笤O(shè)計(jì)就是用面向?qū)ο笥^點(diǎn)建立求解域模型的過程。2022/8/112分析與設(shè)計(jì)的關(guān)聯(lián)二者界限模糊,分析和設(shè)計(jì)活動(dòng)是一個(gè)多次反復(fù)迭代的過程:許多分析結(jié)果可以直接映射成設(shè)計(jì)結(jié)果設(shè)計(jì)過程中會(huì)加深、補(bǔ)充對(duì)系統(tǒng)需求的理解,從而進(jìn)一步完善分析結(jié)果。面向?qū)ο蠓椒▽W(xué):在概念和表示方法上的一致性,保證了在各項(xiàng)開發(fā)活動(dòng)之間的平滑(無(wú)縫)過渡。領(lǐng)域?qū)<液烷_發(fā)

2、人員能夠比較容易地跟蹤整個(gè)系統(tǒng)開發(fā)過程,這是面向?qū)ο蠓椒ㄅc傳統(tǒng)方法比較起來(lái)的一大優(yōu)勢(shì)。2022/8/113主要內(nèi)容面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則啟發(fā)規(guī)則軟件重用系統(tǒng)分解設(shè)計(jì)問題域子系統(tǒng)設(shè)計(jì)人機(jī)交互子系統(tǒng)設(shè)計(jì)任務(wù)管理子系統(tǒng)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)設(shè)計(jì)類中的服務(wù)設(shè)計(jì)關(guān)聯(lián)設(shè)計(jì)優(yōu)化2022/8/114優(yōu)秀設(shè)計(jì)的含義所謂優(yōu)秀設(shè)計(jì),是權(quán)衡了各種因素,從而使得系統(tǒng)在其整個(gè)生命周期中的總開銷最小的設(shè)計(jì)。優(yōu)秀軟件設(shè)計(jì)的一個(gè)主要特點(diǎn)就是容易維護(hù)。2022/8/115傳統(tǒng)軟件工程與OO的設(shè)計(jì)原理傳統(tǒng)軟件工程的總體設(shè)計(jì)中有以下基本原理與相關(guān)概念:模塊化抽象逐步求精信息隱藏和局部化模塊獨(dú)立面向?qū)ο笤O(shè)計(jì)準(zhǔn)則:模塊化抽象信息隱藏弱耦合強(qiáng)內(nèi)聚

3、可重用2022/8/116主要內(nèi)容面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則啟發(fā)規(guī)則軟件重用系統(tǒng)分解設(shè)計(jì)問題域子系統(tǒng)設(shè)計(jì)人機(jī)交互子系統(tǒng)設(shè)計(jì)任務(wù)管理子系統(tǒng)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)設(shè)計(jì)類中的服務(wù)設(shè)計(jì)關(guān)聯(lián)設(shè)計(jì)優(yōu)化2022/8/117面向?qū)ο蠓椒▽W(xué)的啟發(fā)規(guī)則面向?qū)ο蠓椒▽W(xué)的啟發(fā)式規(guī)則:設(shè)計(jì)結(jié)果應(yīng)該清晰易懂一般-特殊結(jié)構(gòu)的深度應(yīng)適當(dāng)設(shè)計(jì)簡(jiǎn)單的類使用簡(jiǎn)單的協(xié)議使用簡(jiǎn)單的服務(wù)把設(shè)計(jì)變動(dòng)減至最小2022/8/118面向?qū)ο蠓椒▽W(xué)的啟發(fā)規(guī)則比較:傳統(tǒng)軟件工程的總體設(shè)計(jì)(第5章)的啟發(fā)規(guī)則:改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性模塊規(guī)模應(yīng)該適中深度、寬度、扇出和扇入都應(yīng)適當(dāng)模塊的作用域應(yīng)在控制域內(nèi)力爭(zhēng)降低模塊接口的復(fù)雜程度設(shè)計(jì)單入口單出口的模塊模塊功能應(yīng)

4、該可以預(yù)測(cè)2022/8/119主要內(nèi)容面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則啟發(fā)規(guī)則軟件重用系統(tǒng)分解設(shè)計(jì)問題域子系統(tǒng)設(shè)計(jì)人機(jī)交互子系統(tǒng)設(shè)計(jì)任務(wù)管理子系統(tǒng)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)設(shè)計(jì)類中的服務(wù)設(shè)計(jì)關(guān)聯(lián)設(shè)計(jì)優(yōu)化2022/8/1110“軟件重用”主要內(nèi)容概述類構(gòu)件軟件重用的效益2022/8/1111重用的含義重用也叫再用或復(fù)用,是指同一事物不作修改或稍加改動(dòng)就多次重復(fù)使用。軟件重用可分為以下3個(gè)層次:知識(shí)重用(例如,軟件工程知識(shí)的重用)。方法和標(biāo)準(zhǔn)的重用(例如,面向?qū)ο蠓椒ɑ驀?guó)家制定的軟件開發(fā)規(guī)范的重用)。軟件成分的重用。前兩個(gè)重用層次屬于知識(shí)工程研究的范疇,本節(jié)僅討論軟件成分重用問題。2022/8/1112軟件成分的重用級(jí)

5、別軟件成分的重用可以進(jìn)一步劃分成以下3個(gè)級(jí)別:代碼重用。談?wù)撟疃嗟模?通常理解為調(diào)用庫(kù)中的模塊。設(shè)計(jì)結(jié)果重用。重用某個(gè)軟件系統(tǒng)的設(shè)計(jì)模型(即求解域模型)。這個(gè)級(jí)別的重用有助于把一個(gè)應(yīng)用系統(tǒng)移植到完全不同的軟硬件平臺(tái)上。分析結(jié)果重用。這是更高級(jí)別的重用,即重用某個(gè)系統(tǒng)的分析模型。它特別適用于用戶需求未改變,但系統(tǒng)體系結(jié)構(gòu)發(fā)生了根本變化的場(chǎng)合。2022/8/1113典型的可重用軟件成分 項(xiàng)目計(jì)劃。 成本估計(jì)。 體系結(jié)構(gòu)。 需求模型和規(guī)格說明。 設(shè)計(jì)。 源代碼。 用戶文檔和技術(shù)文檔。 用戶界面。 數(shù)據(jù)。測(cè)試用例。2022/8/1114“軟件重用”主要內(nèi)容概述類構(gòu)件軟件重用的效益2022/8/1115

6、類構(gòu)件利用面向?qū)ο蠹夹g(shù),可以更方便更有效地實(shí)現(xiàn)軟件重用。面向?qū)ο蠹夹g(shù)中的“類”,是比較理想的可重用軟構(gòu)件,不妨稱之為類構(gòu)件。2022/8/1116可重用軟構(gòu)件應(yīng)具備的特點(diǎn)可重用軟構(gòu)件應(yīng)具備的特點(diǎn):模塊獨(dú)立性強(qiáng)。具有高度可塑性。接口清晰、簡(jiǎn)明、可靠。精心設(shè)計(jì)的“類”基本上能滿足上述要求,可以認(rèn)為它是可重用軟構(gòu)件的雛形。2022/8/1117類構(gòu)件的重用方式實(shí)例重用繼承重用多態(tài)重用2022/8/1118實(shí)例重用的形式最基本的重用方式:由于類的封裝性,使用者無(wú)須了解實(shí)現(xiàn)細(xì)節(jié)就可以使用適當(dāng)?shù)臉?gòu)造函數(shù),按照需要?jiǎng)?chuàng)建類的實(shí)例。然后向所創(chuàng)建的實(shí)例發(fā)送適當(dāng)?shù)南?,啟?dòng)相應(yīng)的服務(wù),完成需要完成的工作。另一種形式

7、:用幾個(gè)簡(jiǎn)單的對(duì)象作為類的成員創(chuàng)建出一個(gè)更復(fù)雜的類,這是實(shí)例重用的2022/8/1119設(shè)計(jì)類構(gòu)件的困難雖然實(shí)例重用是最基本的重用方法,但設(shè)計(jì)出一個(gè)理想的類構(gòu)件并不是一件容易的事情。例如:決定一個(gè)類對(duì)外提供多少服務(wù)就是一種相當(dāng)困難的事。提供的服務(wù)過多,會(huì)增加接口復(fù)雜度,也會(huì)使類構(gòu)件變得難于理解。提供的服務(wù)過少,則會(huì)因?yàn)檫^分一般化而失去重用價(jià)值。每個(gè)類構(gòu)件的合理服務(wù)數(shù)都與具體應(yīng)用環(huán)境密切相關(guān),因此找到一個(gè)合理的折衷值是相當(dāng)困難的。2022/8/1120類構(gòu)件的重用方式實(shí)例重用繼承重用多態(tài)重用2022/8/1121繼承重用面向?qū)ο蠓椒ㄌ赜械睦^承性提供了一種對(duì)已有的類構(gòu)件進(jìn)行裁剪的機(jī)制。當(dāng)已有的類構(gòu)

8、件不能通過實(shí)例重用完全滿足當(dāng)前系統(tǒng)需求時(shí),繼承重用提供了一種安全地修改已有類構(gòu)件,以便在當(dāng)前系統(tǒng)中重用的手段。2022/8/1122實(shí)現(xiàn)繼承重用的關(guān)鍵點(diǎn)為提高繼承重用的效果,關(guān)鍵是設(shè)計(jì)一個(gè)合理的、具有一定深度的類構(gòu)件繼承層次結(jié)構(gòu)。這樣做的好處是:每個(gè)子類在繼承父類的屬性和服務(wù)的基礎(chǔ)上,只加入少量新屬性和新服務(wù),這就不僅降低了每個(gè)類構(gòu)件的接口復(fù)雜度,表現(xiàn)出一個(gè)清晰的進(jìn)化過程,提高了每個(gè)子類的可理解性,而且為軟件開發(fā)人員提供了更多可重用的類構(gòu)件。必要時(shí)應(yīng)在領(lǐng)域?qū)<規(guī)椭拢⒎项I(lǐng)域知識(shí)的繼承層次。為多態(tài)重用奠定了良好基礎(chǔ)。2022/8/1123類構(gòu)件的重用方式實(shí)例重用繼承重用多態(tài)重用2022/8

9、/1124多態(tài)重用利用多態(tài)性不僅可以使對(duì)象的對(duì)外接口更加一般化(基類與派生類的許多對(duì)外接口是相同的),從而降低了消息連接的復(fù)雜程度,而且還提供了一種簡(jiǎn)便可靠的軟構(gòu)件組合機(jī)制。系統(tǒng)運(yùn)行時(shí),根據(jù)接收消息的對(duì)象類型,由多態(tài)性機(jī)制啟動(dòng)正確的方法,去響應(yīng)一個(gè)一般化的消息,從而簡(jiǎn)化了消息界面和軟構(gòu)件連接過程。2022/8/1125可能影響重用的操作為充分實(shí)現(xiàn)多態(tài)重用,在設(shè)計(jì)類構(gòu)件時(shí),應(yīng)該把注意力集中在下列一些可能影響重用性的操作上:與表示方法有關(guān)的操作。例如,不同實(shí)例的比較、顯示、擦除等。與數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)大小等有關(guān)的操作。與外部設(shè)備有關(guān)的操作。例如,設(shè)備控制。實(shí)現(xiàn)算法在將來(lái)可能會(huì)改進(jìn)(或改變)的核心操作2

10、022/8/1126利用適配接口實(shí)現(xiàn)類構(gòu)件的重用如果不預(yù)先采取適當(dāng)措施,前述操作會(huì)妨礙類構(gòu)件的重用。因此,必須把它們從類的操作中分離出來(lái),作為“適配接口”。例如,假設(shè)類C具有操作M1, M2, Mn,和操作A1, A2, Ak,其中:Aj是(1jk)是上面列出的可能影響類C重用的幾類操作,Mi是(1in)是其他操作。如果Mi通過調(diào)用適配接口Aj而實(shí)現(xiàn),則實(shí)際上M被A參數(shù)化了。在不同應(yīng)用環(huán)境下,用戶只需在派生類中重新定義Aj(1jk)就可以重用類C。2022/8/1127把適配接口細(xì)分為轉(zhuǎn)換接口和擴(kuò)充接口可把適配接口細(xì)分為轉(zhuǎn)換接口和擴(kuò)充接口。轉(zhuǎn)換接口是為了克服與表示方法、數(shù)據(jù)結(jié)構(gòu)或硬件特點(diǎn)相關(guān)的

11、操作給重用帶來(lái)的困難而設(shè)計(jì)的。這類接口是每個(gè)類構(gòu)件在重用時(shí)都必須重新定義的服務(wù)的集合。當(dāng)使用C+編程時(shí),應(yīng)該在根類(或適當(dāng)?shù)幕?中,把屬于轉(zhuǎn)換接口的服務(wù)定義為純虛函數(shù)。如果某個(gè)服務(wù)有多種可能的實(shí)現(xiàn)算法,則應(yīng)該把它當(dāng)作擴(kuò)充接口。擴(kuò)充接口與轉(zhuǎn)換接口不同,并不需要強(qiáng)迫用戶在派生類中重新定義它們,相反,如果在派生類中沒有給出擴(kuò)充接口的新算法,則將繼承父類中的算法。當(dāng)使用C+編程時(shí),在基類中把這類服務(wù)定義為普通的虛函數(shù)。2022/8/1128“軟件重用”主要內(nèi)容概述類構(gòu)件軟件重用的效益2022/8/1129軟件重用的效益近來(lái),軟件產(chǎn)業(yè)界的實(shí)例研究表明,通過積極的軟件重用能夠獲得可觀的商業(yè)效益,產(chǎn)品質(zhì)量

12、、開發(fā)生產(chǎn)率和整體成本都得到改善。軟件重用的效益可表現(xiàn)在以下幾個(gè)方面:質(zhì)量生產(chǎn)率成本2022/8/1130軟件重用的效益-1質(zhì)量理想狀態(tài)下,為了重用而開發(fā)的軟構(gòu)件已被證明是正確的,且沒有缺陷。事實(shí)上,由于不能定期進(jìn)行形式化驗(yàn)證,錯(cuò)誤可能而且也確實(shí)存在。但是,隨著每一次重用,都會(huì)有一些錯(cuò)誤被發(fā)現(xiàn)并被清除,構(gòu)件的質(zhì)量也會(huì)隨之改善。隨著時(shí)間的推移,構(gòu)件將變成實(shí)質(zhì)上無(wú)錯(cuò)誤的。HP公司經(jīng)研究發(fā)現(xiàn),被重用的代碼的錯(cuò)誤率是每千行代碼中有0.9個(gè)錯(cuò)誤,而新開發(fā)的軟件的錯(cuò)誤率是每千行代碼中有4.1個(gè)錯(cuò)誤。對(duì)于一個(gè)包含68%重用代碼的應(yīng)用系統(tǒng),錯(cuò)誤率大約是每千行2.0個(gè)錯(cuò)誤,與不使用重用的開發(fā)相比錯(cuò)誤率降低了51

13、%。Henry和Faller報(bào)告說,使用重用的開發(fā)可使軟件質(zhì)量改進(jìn)35%。雖然不同研究者報(bào)告的改善率并不完全相同,但偏差均合理。公正地說,重用確實(shí)能給軟件產(chǎn)品的質(zhì)量和可靠性帶來(lái)實(shí)質(zhì)性的提高。2022/8/1131軟件重用的效益-2生產(chǎn)率當(dāng)把可重用的軟件成分應(yīng)用于軟件開發(fā)的全過程時(shí),創(chuàng)建計(jì)劃、模型、文檔、代碼和數(shù)據(jù)所需花費(fèi)的時(shí)間將減少,從而將用較少的投入給客戶提供相同級(jí)別的產(chǎn)品,因此,生產(chǎn)率得到了提高。由于應(yīng)用領(lǐng)域、問題復(fù)雜程度、項(xiàng)目組的結(jié)構(gòu)和大小、項(xiàng)目期限、可應(yīng)用的技術(shù)等許多因素都對(duì)項(xiàng)目組的生產(chǎn)率有影響,因此,不同開發(fā)組織對(duì)軟件重用帶來(lái)生產(chǎn)率提高的數(shù)字的報(bào)告并不相同,但基本上30%50%的重用

14、大約可以導(dǎo)致生產(chǎn)率提高25%40%。2022/8/1132軟件重用的效益-3成本軟件重用能節(jié)省的凈成本節(jié)省可估算為:C=Cs-Cr-CdCs是項(xiàng)目從頭開發(fā)(沒有重用)時(shí)所需要的成本; Cr是與重用相關(guān)聯(lián)的成本;Cd是交付給客戶的軟件的實(shí)際成本。可使用一定的技術(shù)來(lái)估算Cs,而與重用相關(guān)聯(lián)的成本Cr主要包括:領(lǐng)域分析與建模的成本;設(shè)計(jì)領(lǐng)域體系結(jié)構(gòu)的成本;為便于重用而增加的文檔的成本;維護(hù)和完善可重用的軟件成分的成本;為從外部獲取構(gòu)件所付出的版稅和許可證費(fèi);創(chuàng)建(或購(gòu)買)及運(yùn)行重用庫(kù)的費(fèi)用;對(duì)設(shè)計(jì)和實(shí)現(xiàn)可重用構(gòu)件的人員的培訓(xùn)費(fèi)用。雖然和領(lǐng)域分析及運(yùn)行重用庫(kù)相關(guān)聯(lián)的成本可能相當(dāng)高,但是它們可以由許多項(xiàng)

15、目分?jǐn)?。上面列出的很多其他成本所解決的問題,實(shí)際上是良好軟件工程實(shí)踐的一部分,不管是否考慮重用,這些問題都應(yīng)該解決。2022/8/1133主要內(nèi)容面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則啟發(fā)規(guī)則軟件重用系統(tǒng)分解設(shè)計(jì)問題域子系統(tǒng)設(shè)計(jì)人機(jī)交互子系統(tǒng)設(shè)計(jì)任務(wù)管理子系統(tǒng)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)設(shè)計(jì)類中的服務(wù)設(shè)計(jì)關(guān)聯(lián)設(shè)計(jì)優(yōu)化2022/8/1134系統(tǒng)分解與子系統(tǒng)在設(shè)計(jì)比較復(fù)雜的應(yīng)用系統(tǒng)時(shí)普遍采用的策略,是首先把系統(tǒng)分解成若干個(gè)比較小的部分,然后再分別設(shè)計(jì)每個(gè)部分。系統(tǒng)的主要組成部分稱為子系統(tǒng):通常根據(jù)所提供的功能來(lái)劃分子系統(tǒng)。一般說來(lái),子系統(tǒng)的數(shù)目應(yīng)該與系統(tǒng)規(guī)?;酒ヅ洹8鱾€(gè)子系統(tǒng)之間應(yīng)該具有盡可能簡(jiǎn)單、明確的接口。接口確定了交互

16、形式和通過子系統(tǒng)邊界的信息流,但是無(wú)須規(guī)定子系統(tǒng)內(nèi)部的實(shí)現(xiàn)算法。因此,可以相對(duì)獨(dú)立地設(shè)計(jì)各個(gè)子系統(tǒng)。在劃分和設(shè)計(jì)子系統(tǒng)時(shí),應(yīng)該盡量減少子系統(tǒng)彼此間的依賴性。2022/8/1135面向?qū)ο笤O(shè)計(jì)模型5個(gè)層次:與面向?qū)ο蠓治瞿P?即問題域的對(duì)象模型)一樣,面向?qū)ο笤O(shè)計(jì)模型(即求解域的對(duì)象模型),也由5個(gè)層次組成:主題、類與對(duì)象、結(jié)構(gòu)、屬性、服務(wù)這5個(gè)層次一層比一層表示的細(xì)節(jié)更多,可以把這5個(gè)層次想象為整個(gè)模型的水平切片。2022/8/1136面向?qū)ο笤O(shè)計(jì)模型大多數(shù)系統(tǒng)的面向?qū)ο笤O(shè)計(jì)模型:在邏輯上由4部分組成:人機(jī)交互部分、問題域部分、任務(wù)管理部分、數(shù)據(jù)管理部分這4部分對(duì)應(yīng)于組成目標(biāo)系統(tǒng)的4個(gè)子系統(tǒng):

17、問題域子系統(tǒng)、人機(jī)交互子系統(tǒng)、任務(wù)管理子系統(tǒng)、數(shù)據(jù)管理子系統(tǒng)不同的軟件系統(tǒng)中,這4個(gè)子系統(tǒng)的重要程度和規(guī)??赡芟嗖詈艽螅阂?guī)模過大的在設(shè)計(jì)過程中應(yīng)該進(jìn)一步劃分成更小的子系統(tǒng)。規(guī)模過小的可合并在其他子系統(tǒng)中,某些領(lǐng)域的應(yīng)用系統(tǒng)在邏輯上可能僅由3個(gè)(甚至少于3個(gè))子系統(tǒng)組成。2022/8/11375個(gè)層次與4大組成部分的關(guān)系可以把面向?qū)ο笤O(shè)計(jì)模型的4大組成部分想象成整個(gè)模型的4個(gè)垂直切片。典型的面向?qū)ο笤O(shè)計(jì)模型可以用下圖表示:2022/8/1138子系統(tǒng)之間的交互方式軟件系統(tǒng)中,子系統(tǒng)之間的交互有兩種可能方式:客戶-供應(yīng)商(Client-supplier)關(guān)系。平等伙伴(peer-to-peer)關(guān)

18、系??偟恼f來(lái),單向交互比雙向交互更容易理解,也更容易設(shè)計(jì)和修改,因此應(yīng)該盡量使用客戶-供應(yīng)商關(guān)系。2022/8/1139組織系統(tǒng)的方案把子系統(tǒng)組織成完整的系統(tǒng),有兩種方案:水平層次組織垂直塊狀組織2022/8/1140組織系統(tǒng)的方案-1水平層次組織把軟件系統(tǒng)組織成一個(gè)層次系統(tǒng),每層是一個(gè)子系統(tǒng)。上層在下層的基礎(chǔ)上建立,下層為實(shí)現(xiàn)上層功能而提供必要的服務(wù)。每一層內(nèi)所包含的對(duì)象,彼此間相互獨(dú)立,而處于不同層次上的對(duì)象,彼此間往往有關(guān)聯(lián)。實(shí)際上,在上、下層之間存在客戶-供應(yīng)商關(guān)系。2022/8/1141層次結(jié)構(gòu)可劃分為封閉式和開放式層次結(jié)構(gòu)又可進(jìn)一步劃分成兩種模式:封閉式:每層子系統(tǒng)僅僅使用其直接下

19、層提供的服務(wù)。降低了各層次之間的相互依賴性,更容易理解和修改。開放模式:某層子系統(tǒng)可以使用處于其下面的任何一層子系統(tǒng)所提供的服務(wù)。優(yōu)點(diǎn),是減少了需要在每層重新定義的服務(wù)數(shù)目。開放模式的系統(tǒng)不適合信息隱藏原則。設(shè)計(jì)軟件系統(tǒng)時(shí)到底采用哪種結(jié)構(gòu)模式,需要權(quán)衡效率和模塊獨(dú)立性等多種因素,通盤考慮后再做決定。2022/8/1142系統(tǒng)頂層和底層的關(guān)系通常,在需求陳述中只描述了對(duì)系統(tǒng)頂層和底層的需求:頂層就是用戶看到的目標(biāo)系統(tǒng);底層則是可以使用的資源。頂層和底層往往差異很大,設(shè)計(jì)者必須設(shè)計(jì)一些中間層次,以減少不同層次之間的概念差異。2022/8/1143組織系統(tǒng)的方案-2塊狀組織這種組織方案把軟件系統(tǒng)垂直

20、地分解成若干個(gè)相對(duì)獨(dú)立的、弱耦合的子系統(tǒng),一個(gè)子系統(tǒng)相當(dāng)于一塊,每塊提供一種類型的服務(wù)。2022/8/1144層次和塊的混合結(jié)構(gòu)利用層次和塊的各種可能的組合,可以成功地由多個(gè)子系統(tǒng)組成一個(gè)完整的軟件系統(tǒng)。當(dāng)混合使用層次結(jié)構(gòu)和塊狀結(jié)構(gòu)時(shí),同一層次可以由若干塊組成,而同一塊也可以分為若干層。如圖表示一個(gè)典型的應(yīng)用系統(tǒng)的組織結(jié)構(gòu),這個(gè)應(yīng)用系統(tǒng)采用了層次與塊狀的混合結(jié)構(gòu)。2022/8/1145NET Framework與VS.NET最上面是語(yǔ)言層。CLS:支持多種語(yǔ)言,只要支持通用語(yǔ)言規(guī)范的語(yǔ)言它都支持。ASP .NET是基于Web開發(fā)技術(shù)的核心,Windows Forms類似一個(gè)弱化的MFC(企業(yè)及

21、網(wǎng)絡(luò)應(yīng)用中,Rich Client UI不再是重要組成部分,基于Web的方式將成為主流)Operating SystemCommon Language RuntimeADO.NET: Data and XMLASP.NET: Web Services & Web FormsWindowsFormsCommon Language SpecificationVisual Studio.NETVBC+C#JScriptADO.NET提供全面的數(shù)據(jù)及XML訪問技術(shù),微軟的UDA(統(tǒng)一數(shù)據(jù)訪問)思想在這里充分得到體現(xiàn)。Database、XML在這里得到充分集成,隨著SQL Server下一版本的推出,X

22、ML與數(shù)據(jù)庫(kù)將充分融合成為XML DB。CLR為所有的語(yǔ)言支持垃圾收集,線程管理等功能OS。VS .NET在一個(gè)整合的IDE中為.NET Framework提供了一個(gè)簡(jiǎn)單易用、整合企業(yè)建模工具的綜合開發(fā)工具,當(dāng)Linux還在追求User Friendly的時(shí)候,微軟早已經(jīng)進(jìn)入了Developer Friendly的時(shí)代。好處:降低總擁有成本。2022/8/1146設(shè)計(jì)系統(tǒng)的拓?fù)浣Y(jié)構(gòu)由子系統(tǒng)組成完整的系統(tǒng)時(shí),典型的拓?fù)浣Y(jié)構(gòu)有:管道形樹形星形設(shè)計(jì)者應(yīng)該采用與問題結(jié)構(gòu)相適應(yīng)的、盡可能簡(jiǎn)單的拓?fù)浣Y(jié)構(gòu),以減少子系統(tǒng)之間的交互數(shù)量。2022/8/1147主要內(nèi)容面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則啟發(fā)規(guī)則軟件重用系統(tǒng)分解設(shè)

23、計(jì)問題域子系統(tǒng)設(shè)計(jì)人機(jī)交互子系統(tǒng)設(shè)計(jì)任務(wù)管理子系統(tǒng)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)設(shè)計(jì)類中的服務(wù)設(shè)計(jì)關(guān)聯(lián)設(shè)計(jì)優(yōu)化2022/8/1148分析與設(shè)計(jì)使用OO方法開發(fā)軟件時(shí),分析與設(shè)計(jì)之間并沒有明確的分界線,對(duì)于問題域子系統(tǒng)來(lái)說,情況更是如此。分析與設(shè)計(jì)畢竟是性質(zhì)不同的兩類開發(fā)工作:分析工作可以而且應(yīng)該與具體實(shí)現(xiàn)無(wú)關(guān);設(shè)計(jì)工作則在很大程度上受具體實(shí)現(xiàn)環(huán)境的約束。在開始進(jìn)行設(shè)計(jì)工作之前(至少在完成設(shè)計(jì)之前),設(shè)計(jì)者應(yīng)該了解:本項(xiàng)目預(yù)計(jì)要使用的編程語(yǔ)言可用的軟構(gòu)件庫(kù)(主要是類庫(kù))程序員的編程經(jīng)驗(yàn)2022/8/1149問題域模型在OO設(shè)計(jì)中的作用通過面向?qū)ο蠓治鏊贸龅膯栴}域精確模型,為設(shè)計(jì)問題域子系統(tǒng)奠定了良好的基礎(chǔ)

24、,建立了完整的框架。只要可能,就應(yīng)該保持面向?qū)ο蠓治鏊⒌膯栴}域結(jié)構(gòu)。通常,面向?qū)ο笤O(shè)計(jì)僅需從實(shí)現(xiàn)角度對(duì)問題域模型做一些補(bǔ)充或修改,主要是增添、合并或分解類與對(duì)象、屬性及服務(wù),調(diào)整繼承關(guān)系等等。當(dāng)問題域子系統(tǒng)過分復(fù)雜龐大時(shí),應(yīng)該把它進(jìn)一步分解成若干個(gè)更小的子系統(tǒng)。2022/8/1150OO可以保持問題域組織框架的穩(wěn)定性使用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件,能夠保持問題域組織框架的穩(wěn)定性,從而便于追蹤分析、設(shè)計(jì)和編程的結(jié)果。在設(shè)計(jì)與實(shí)現(xiàn)過程中所做的細(xì)節(jié)修改(例如,增加具體類,增加屬性或服務(wù)),并不影響開發(fā)結(jié)果的穩(wěn)定性,因?yàn)橄到y(tǒng)的總體框架是基于問題域的。對(duì)于需求可能隨時(shí)間變化的系統(tǒng)來(lái)說,穩(wěn)定性是至關(guān)重要的

25、。穩(wěn)定性能夠在類似系統(tǒng)中重用分析、設(shè)計(jì)和編程結(jié)果的關(guān)鍵因素。為更好地支持系統(tǒng)在其生命周期中的擴(kuò)充,也需要穩(wěn)定性。2022/8/1151對(duì)問題域模型需要做的補(bǔ)充或修改調(diào)整需求。有兩種情況:重用已有的類把問題域類組合在一起增添一般化類以建立協(xié)議調(diào)整繼承層次2022/8/1152補(bǔ)充或修改-1調(diào)整需求有兩種情況會(huì)導(dǎo)致修改通過面向?qū)ο蠓治鏊_定的系統(tǒng)需求:用戶需求或外部環(huán)境發(fā)生了變化;面向?qū)ο蠓治瞿P筒荒芡暾?、?zhǔn)確地反映用戶的真實(shí)需求。無(wú)論上述哪種情況,通常只需要:簡(jiǎn)單地修改面向?qū)ο蠓治鼋Y(jié)果;然后再把這些修改反映到問題域子系統(tǒng)中。2022/8/1153補(bǔ)充或修改-2重用已有的類代碼重用從設(shè)計(jì)階段開始,

26、在研究OOA結(jié)果時(shí)就應(yīng)該尋找使用已有類的方法。若因?yàn)闆]有合適的類可以重用而確實(shí)需要?jiǎng)?chuàng)建新的類,則在設(shè)計(jì)這些新類的協(xié)議時(shí),必須考慮到將來(lái)的可重用性。如果有可能重用已有的類,則重用已有類的典型過程如下:選擇有可能被重用的已有類,標(biāo)出這些候選類中對(duì)本問題無(wú)用的屬性和服務(wù),盡量重用那些能使無(wú)用的屬性和服務(wù)降到最低程度的類。在被重用的已有類和問題域之間添加泛化關(guān)系(即從被重用的已有類派生出問題域類)。標(biāo)出問題域類中從已有類繼承業(yè)的屬性和服務(wù),現(xiàn)在已經(jīng)無(wú)須在問題域類內(nèi)定義它們了。修改與問題域類相關(guān)的關(guān)聯(lián),必要時(shí)改為與被重用的已有類相關(guān)的關(guān)聯(lián)。2022/8/1154補(bǔ)充或修改-3把問題域類組合在一起在面向?qū)?/p>

27、象設(shè)計(jì)過程中,設(shè)計(jì)者往往通過引入一個(gè)根類而把問題域類組合在一起。事實(shí)上,這是在沒有更先進(jìn)的組合機(jī)制可用時(shí)才采用的一種組合方法。此外,這樣的根類還可以用來(lái)建立協(xié)議。2022/8/1155補(bǔ)充或修改-4增添一般化類以建立協(xié)議在設(shè)計(jì)過程中,常有一些具體類需要一個(gè)公共的協(xié)議,即需要定義一組類似的服務(wù)。在這種情況下可以引入一個(gè)附加類(例如,根類),以便建立這個(gè)協(xié)議(即命名公共服務(wù)集合,這些服務(wù)在具體類中仔細(xì)定義)。2022/8/1156補(bǔ)充或修改-5調(diào)整繼承層次如果OOA模型中包含了多重繼承關(guān)系,然而所使用的程序設(shè)計(jì)語(yǔ)言卻并不提供多重繼承機(jī)制,則必須修改OOA的結(jié)果。即使使用支持多重繼承的語(yǔ)言,有時(shí)也會(huì)

28、出于實(shí)現(xiàn)考慮而對(duì)OOA結(jié)果作一些調(diào)整。使用多重繼承機(jī)制。使用多重繼承機(jī)制時(shí),應(yīng)該避免出現(xiàn)屬性及服務(wù)的命名沖突。使用單繼承機(jī)制。如果打算使用僅提供單繼承機(jī)制的語(yǔ)言實(shí)現(xiàn)系統(tǒng),則必須把OOA模型中的多重繼承結(jié)構(gòu)轉(zhuǎn)換成單繼承結(jié)構(gòu)。2022/8/1157屬性及服務(wù)命名沖突右圖是稱為窄菱形模式的多重繼承模式。使用這種模式時(shí)出現(xiàn)屬性及服務(wù)命名沖突的可能性比較大。2022/8/1158避免出現(xiàn)屬性及服務(wù)命名沖突的方法右圖是稱為闊菱形模式的多重繼承模式,這種模式的屬性及服務(wù)的名字發(fā)生沖突的可能性比較小,但是,它需要用更多的類才能表示同一個(gè)設(shè)計(jì)。2022/8/1159多重繼承結(jié)構(gòu)轉(zhuǎn)換成單繼承結(jié)構(gòu)的方法如果打算使用

29、僅提供單繼承機(jī)制的語(yǔ)言實(shí)現(xiàn)系統(tǒng),則必須把OOA模型中的多重繼承結(jié)構(gòu)轉(zhuǎn)換成單繼承結(jié)構(gòu)。如圖所示把多重繼承結(jié)構(gòu)簡(jiǎn)化成單一的單繼承層次結(jié)構(gòu)。顯然,在多重繼承結(jié)構(gòu)中的某些繼承關(guān)系,經(jīng)簡(jiǎn)化后將不再存在,這表明需要在各個(gè)具體類中重復(fù)定義某些屬性和服務(wù)。2022/8/1160ATM系統(tǒng)實(shí)例如圖描繪了ATM系統(tǒng)的問題域子系統(tǒng)的結(jié)構(gòu):把ATM系統(tǒng)劃分成3個(gè)子系統(tǒng):ATM站、中央計(jì)算機(jī)、分行計(jì)算機(jī)。3個(gè)子系統(tǒng)的拓?fù)浣Y(jié)構(gòu)為星形,以中央計(jì)算機(jī)為中心向外幅射,同所有ATM站及分行計(jì)算機(jī)通信。物理聯(lián)結(jié)用專用電話線。根據(jù)ATM站號(hào)和分行代碼,區(qū)分由每個(gè)ATM站和每臺(tái)分行計(jì)算機(jī)聯(lián)向中央計(jì)算機(jī)的電話線。2022/8/1161A

30、TM系統(tǒng)實(shí)例的補(bǔ)充說明由于在OOA過程中已對(duì)ATM系統(tǒng)做了相當(dāng)仔細(xì)的分析而且假設(shè)所使用的實(shí)現(xiàn)環(huán)境完全支持OOA模型的實(shí)現(xiàn)因此,在面向?qū)ο笤O(shè)計(jì)階段無(wú)須對(duì)已有的問題域模型作實(shí)質(zhì)性的修改或擴(kuò)充。2022/8/1162主要內(nèi)容面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則啟發(fā)規(guī)則軟件重用系統(tǒng)分解設(shè)計(jì)問題域子系統(tǒng)設(shè)計(jì)人機(jī)交互子系統(tǒng)設(shè)計(jì)任務(wù)管理子系統(tǒng)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)設(shè)計(jì)類中的服務(wù)設(shè)計(jì)關(guān)聯(lián)設(shè)計(jì)優(yōu)化2022/8/1163設(shè)計(jì)人機(jī)交互子系統(tǒng)的內(nèi)容與步驟在OOA過程中,已對(duì)用戶界面需求做了初步分析。在OOD過程中,應(yīng)該對(duì)系統(tǒng)的人機(jī)交互子系統(tǒng)進(jìn)行詳細(xì)設(shè)計(jì),以確定人機(jī)交互的細(xì)節(jié),其中包括指定窗口和報(bào)表的形式、設(shè)計(jì)命令層等項(xiàng)內(nèi)容。利用OOD設(shè)計(jì)

31、人機(jī)交互子系統(tǒng)的步驟:分類用戶描述用戶設(shè)計(jì)命令層次設(shè)計(jì)人機(jī)交互類2022/8/1164人機(jī)交互子系統(tǒng)1分類用戶人機(jī)交互界面是給用戶用的,設(shè)計(jì)者應(yīng)該認(rèn)真研究這些用戶。在深入現(xiàn)場(chǎng)過程中,設(shè)計(jì)者應(yīng)該認(rèn)真思考下述問題:用戶必須完成哪些工作?設(shè)計(jì)者能夠提供什么工具來(lái)支持這些工作的完成?怎樣使得這些工具使用起來(lái)更方便更有效?通常從下列幾個(gè)不同角度對(duì)用戶進(jìn)行分類:按技能水平分類(新手、初級(jí)、中級(jí)、高級(jí))。按職務(wù)分類(總經(jīng)理、經(jīng)理、職員)。按所屬集團(tuán)分類(職員、顧客)。2022/8/1165人機(jī)交互子系統(tǒng)-2描述用戶描述用戶信息有:用戶類型。使用系統(tǒng)欲達(dá)到的目的。特征(年齡、性別、受教育程度、限制因素等)。關(guān)

32、鍵的成功因素(需求、愛好、習(xí)慣等)。技能水平。完成本職工作的腳本。2022/8/1166人機(jī)交互子系統(tǒng)-3設(shè)計(jì)命令層次設(shè)計(jì)命令層次的工作通常包含以下內(nèi)容:研究現(xiàn)有的人機(jī)交互含義和準(zhǔn)則確定初始的命令層次精化命令層次。應(yīng)該考慮下列一些因素:2022/8/1167人機(jī)交互子系統(tǒng)-3設(shè)計(jì)命令層次現(xiàn)在,Windows已經(jīng)成為微機(jī)圖形用戶界面事實(shí)上的工業(yè)標(biāo)準(zhǔn)。所有Windows應(yīng)用程序的基本外觀及給用戶的感受都是相同的。Windows程序通常還遵守廣大用戶習(xí)以為常的許多約定。設(shè)計(jì)圖形用戶界面時(shí),應(yīng)該保持與普通Windows應(yīng)用程序界面相一致,并遵守廣大用戶習(xí)慣的約定,這樣才會(huì)被用戶接受和喜愛。2022/8

33、/1168人機(jī)交互子系統(tǒng)-3設(shè)計(jì)命令層次所謂命令層次,實(shí)質(zhì)上是用過程抽象機(jī)制組織起來(lái)的、可供選用的服務(wù)的表示形式。設(shè)計(jì)命令層次時(shí),通常先從對(duì)服務(wù)的過程抽象著手,然后再進(jìn)一步修改它們,以適合具體應(yīng)用環(huán)境的需要。2022/8/1169人機(jī)交互子系統(tǒng)-3設(shè)計(jì)命令層次為進(jìn)一步修改完善初始的命令層次,應(yīng)該考慮下列一些因素:次序:仔細(xì)選擇每個(gè)服務(wù)的名字,并在命令層的每一部分內(nèi)把服務(wù)排好次序。整體-部分關(guān)系:尋找在這些服務(wù)中存在的整體-部分模式,這樣做有助于在命令層中分組組織服務(wù)。寬度和深度:命令層次的寬度和深度都不應(yīng)該過大。操作步驟:應(yīng)該用盡量少的單擊、拖動(dòng)和擊鍵組合來(lái)表達(dá)命令,而且應(yīng)該為高級(jí)用戶提供簡(jiǎn)捷

34、的操作方法。2022/8/1170人機(jī)交互子系統(tǒng)-4設(shè)計(jì)人機(jī)交互類人機(jī)交互類與所使用的操作系統(tǒng)及編程語(yǔ)言密切相關(guān)。例如,在Windows環(huán)境下運(yùn)行的Visual C+語(yǔ)言提供了MFC類庫(kù),設(shè)計(jì)人機(jī)交互類時(shí),往往僅需從MFC類庫(kù)中選出一些適用的類,然后從這些類派生出符合自己需要的類就可以了。2022/8/1171主要內(nèi)容面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則啟發(fā)規(guī)則軟件重用系統(tǒng)分解設(shè)計(jì)問題域子系統(tǒng)設(shè)計(jì)人機(jī)交互子系統(tǒng)設(shè)計(jì)任務(wù)管理子系統(tǒng)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)設(shè)計(jì)類中的服務(wù)設(shè)計(jì)關(guān)聯(lián)設(shè)計(jì)優(yōu)化2022/8/1172任務(wù)管理與對(duì)象任一“任務(wù)”都是由各個(gè)“對(duì)象”協(xié)同工作完成的,不同的任務(wù)標(biāo)識(shí)了必須同時(shí)發(fā)生的不同行為。所以任務(wù)管理時(shí)要

35、特別考慮對(duì)象之間的協(xié)調(diào),特別是那些需要并發(fā)工作的對(duì)象、存在相互依賴的對(duì)象:因此,設(shè)計(jì)“任務(wù)管理子系統(tǒng)”時(shí):一項(xiàng)重要內(nèi)容就是:確定哪些是必須同時(shí)動(dòng)作的對(duì)象,哪些是相互排斥的對(duì)象。然后進(jìn)一步設(shè)計(jì)任務(wù)管理子系統(tǒng)。即如教材中所敘述的,分為以下兩步:分析并發(fā)性設(shè)計(jì)任務(wù)管理子系統(tǒng)2022/8/1173并發(fā)的含義通過面向?qū)ο蠓治鼋⑵饋?lái)的動(dòng)態(tài)模型,是分析并發(fā)性的主要依據(jù)。如果兩個(gè)對(duì)象彼此間不存在交互,或者它們同時(shí)接受事件,則這兩個(gè)對(duì)象在本質(zhì)上是并發(fā)的。2022/8/1174控制線的含義通過檢查各個(gè)對(duì)象的狀態(tài)圖及它們之間交換的事件,能夠把若干個(gè)非并發(fā)的對(duì)象歸并到一條控制線中。所謂控制線,是一條遍及狀態(tài)圖集合的

36、路徑,在這條路徑上每次只有一個(gè)對(duì)象是活動(dòng)的。在計(jì)算機(jī)系統(tǒng)中用任務(wù)(task)實(shí)現(xiàn)控制線,一般認(rèn)為任務(wù)是進(jìn)程(process)的別名。通常把多個(gè)任務(wù)的并發(fā)執(zhí)行稱為多任務(wù)。2022/8/1175任務(wù)與并發(fā)的關(guān)系對(duì)于某些應(yīng)用系統(tǒng)來(lái)說,通過劃分任務(wù),可以簡(jiǎn)化系統(tǒng)的設(shè)計(jì)及編碼工作。不同的任務(wù)標(biāo)識(shí)了必須同時(shí)發(fā)生的不同行為。這種并發(fā)行為既可以在不同的處理器上實(shí)現(xiàn),也可以在單個(gè)處理器上利用多任務(wù)操作系統(tǒng)仿真實(shí)現(xiàn)(通常采用時(shí)間分片策略仿真多處理器環(huán)境)。2022/8/1176設(shè)計(jì)任務(wù)管理子系統(tǒng)常見的任務(wù)常見的任務(wù)有:事件驅(qū)動(dòng)型任務(wù)時(shí)鐘驅(qū)動(dòng)型任務(wù)優(yōu)先任務(wù)關(guān)鍵任務(wù)協(xié)調(diào)任務(wù)2022/8/1177設(shè)計(jì)任務(wù)管理子系統(tǒng)的工

37、作內(nèi)容設(shè)計(jì)任務(wù)管理子系統(tǒng),包括:確定各類任務(wù)把任務(wù)分配給適當(dāng)?shù)挠布蜍浖?zhí)行2022/8/1178事件驅(qū)動(dòng)型任務(wù)的意義某些任務(wù)是由事件驅(qū)動(dòng)的,這類任務(wù)可能主要完成通信工作。例如,與設(shè)備、屏幕窗口、其他任務(wù)、子系統(tǒng)、另一個(gè)處理器或其他系統(tǒng)通信。事件通常是表明某些數(shù)據(jù)到達(dá)的信號(hào)。2022/8/1179事件驅(qū)動(dòng)型任務(wù)的工作過程在系統(tǒng)運(yùn)行時(shí),事件驅(qū)動(dòng)型任務(wù)的工作過程如下:任務(wù)處于睡眠狀態(tài)(不消耗處理器時(shí)間),等待來(lái)自數(shù)據(jù)線或其他數(shù)據(jù)源的中斷;一旦接收到中斷就喚醒了該任務(wù):接收數(shù)據(jù)把數(shù)據(jù)放入內(nèi)存緩沖區(qū)或其他目的地通知需要知道這件事的對(duì)象該任務(wù)又回到睡眠狀態(tài)。2022/8/1180“時(shí)針驅(qū)動(dòng)”的含義某些

38、任務(wù)每隔一定時(shí)間間隔就被觸發(fā)以執(zhí)行某些處理。例如:某些設(shè)備需要周期性地獲得數(shù)據(jù)某些人機(jī)接口、子系統(tǒng)、任務(wù)、處理器或其他系統(tǒng)也可能需要周期性地通信在這些場(chǎng)合往往需要使用時(shí)鐘驅(qū)動(dòng)型任務(wù)。2022/8/1181時(shí)鐘驅(qū)動(dòng)型任務(wù)的工作過程時(shí)鐘驅(qū)動(dòng)型任務(wù)的工作過程如下:任務(wù)設(shè)置了喚醒時(shí)間;任務(wù)進(jìn)入睡眠狀態(tài);任務(wù)睡眠(不消耗處理器時(shí)間),等待來(lái)自系統(tǒng)的中斷;一旦接收到中斷,任務(wù)就被喚醒并做它的工作:通知有關(guān)對(duì)象;任務(wù)又回到睡眠狀態(tài)。2022/8/1182確定優(yōu)先任務(wù)優(yōu)先任務(wù)可以滿足高優(yōu)先級(jí)或低優(yōu)先級(jí)的處理需求:高優(yōu)先級(jí):某些服務(wù)具有很高的優(yōu)先級(jí)為了在嚴(yán)格限定的時(shí)間內(nèi)完成這種服務(wù),可能需要把這類服務(wù)分離成獨(dú)立

39、的任務(wù)。低優(yōu)先級(jí):與高優(yōu)先級(jí)相反,有些服務(wù)是低優(yōu)先級(jí)的,屬于低優(yōu)先級(jí)處理(通常指那些背景處理)。設(shè)計(jì)時(shí)可能用額外的任務(wù)把這樣的處理分離出來(lái)。2022/8/1183確定關(guān)鍵任務(wù)關(guān)鍵任務(wù)是有關(guān)系統(tǒng)成功或失敗的關(guān)鍵處理,這類處理通常都有嚴(yán)格的可靠性要求。在設(shè)計(jì)過程中可能用額外的任務(wù)把這樣的關(guān)鍵處理分離出來(lái),以滿足高可靠性處理的要求。對(duì)高可靠性處理應(yīng)該精心設(shè)計(jì)和編碼,并且應(yīng)該嚴(yán)格測(cè)試。2022/8/1184確定協(xié)調(diào)任務(wù)當(dāng)系統(tǒng)中存在3個(gè)以上任務(wù)時(shí),就應(yīng)該增加一個(gè)任務(wù),用它作為協(xié)調(diào)任務(wù)。優(yōu)劣:引入?yún)f(xié)調(diào)任務(wù)會(huì)增加系統(tǒng)的總開銷(增加從一個(gè)任務(wù)到另一個(gè)任務(wù)的轉(zhuǎn)換時(shí)間)引入?yún)f(xié)調(diào)任務(wù)有助于把不同任務(wù)之間的協(xié)調(diào)控制封

40、裝起來(lái)。方法:使用狀態(tài)轉(zhuǎn)換矩陣可以比較方便地描述該任務(wù)的行為。注意:這類任務(wù)應(yīng)該僅做協(xié)調(diào)工作,不要讓它再承擔(dān)其他服務(wù)工作。2022/8/1185盡量減少任務(wù)數(shù)必須仔細(xì)分析和選擇每個(gè)確實(shí)需要的任務(wù)。應(yīng)該使系統(tǒng)中包含的任務(wù)數(shù)盡量少。設(shè)計(jì)多任務(wù)系統(tǒng)的主要問題是:設(shè)計(jì)者常常為了自己處理時(shí)的方便而輕率地定義過多的任務(wù)。這樣做加大了設(shè)計(jì)工作的技術(shù)復(fù)雜度,并使系統(tǒng)變得不易理解,從而加大了系統(tǒng)維護(hù)的難度。2022/8/1186估算CPU或其他固件的處理能力使用多處理器(即“多個(gè)處理器”)或固件,主要是為了滿足高性能的要求。設(shè)計(jì)者必須通過計(jì)算系統(tǒng)載荷(即每秒處理的業(yè)務(wù)數(shù)及處理一個(gè)業(yè)務(wù)所花費(fèi)的時(shí)間),來(lái)估算所需要

41、的CPU(或其他固件)的處理能力。2022/8/1187確定資源需求設(shè)計(jì)者應(yīng)該綜合考慮各種因素,以決定哪些子系統(tǒng)用硬件實(shí)現(xiàn),哪些子系統(tǒng)用軟件實(shí)現(xiàn)。下面兩個(gè)因素可能是使用硬件實(shí)現(xiàn)某些子系統(tǒng)的主要因素。現(xiàn)有的硬件完全能滿足某些方面的需求,例如,買一塊浮點(diǎn)運(yùn)算卡比用軟件實(shí)現(xiàn)浮點(diǎn)運(yùn)算要容易得多。專用硬件比通用的CPU性能更高。例如,目前在信號(hào)處理系統(tǒng)中廣泛使用固件實(shí)現(xiàn)快速傅里葉變換。設(shè)計(jì)者在決定到底采用軟件還是硬件的時(shí)候,必須綜合權(quán)衡一致性、成本、性能等多種因素,還要考慮未來(lái)的可擴(kuò)充性和可修改性。2022/8/1188主要內(nèi)容面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則啟發(fā)規(guī)則軟件重用系統(tǒng)分解設(shè)計(jì)問題域子系統(tǒng)設(shè)計(jì)人機(jī)交互子系統(tǒng)

42、設(shè)計(jì)任務(wù)管理子系統(tǒng)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)設(shè)計(jì)類中的服務(wù)設(shè)計(jì)關(guān)聯(lián)設(shè)計(jì)優(yōu)化2022/8/1189數(shù)據(jù)任務(wù)管理子系統(tǒng)的任務(wù)數(shù)據(jù)管理子系統(tǒng)是系統(tǒng)存儲(chǔ)或檢索對(duì)象的基本設(shè)施,它:建立在某種數(shù)據(jù)存儲(chǔ)管理系統(tǒng)之上隔離了數(shù)據(jù)存儲(chǔ)管理模式(文件、關(guān)系數(shù)據(jù)庫(kù)或面向?qū)ο髷?shù)據(jù)庫(kù))的影響2022/8/1190“設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)”主要內(nèi)容選擇數(shù)據(jù)存儲(chǔ)管理模式設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)2022/8/1191數(shù)據(jù)存儲(chǔ)管理模式不同的數(shù)據(jù)存儲(chǔ)管理模式有不同的特點(diǎn),適用范圍也不相同,設(shè)計(jì)者應(yīng)該根據(jù)應(yīng)用系統(tǒng)的特點(diǎn)選擇適用的模式:文件管理系統(tǒng)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)2022/8/1192文件管理系統(tǒng)文件管理系統(tǒng)是操作系統(tǒng)的一個(gè)組成

43、部分,使用它長(zhǎng)期保存數(shù)據(jù)具有成本低和簡(jiǎn)單等特點(diǎn)。但是,文件操作的級(jí)別低,為提供適當(dāng)?shù)某橄蠹?jí)別還必須編寫額外的代碼。此外,不同操作系統(tǒng)的文件管理系統(tǒng)往往有明顯差異。2022/8/1193關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的主要優(yōu)點(diǎn)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的理論基礎(chǔ)是關(guān)系代數(shù),它不僅理論基礎(chǔ)堅(jiān)實(shí)而且有下列一些主要優(yōu)點(diǎn):提供了各種最基本的數(shù)據(jù)管理功能(例如,中斷恢復(fù),多用戶共享,多應(yīng)用共享,完整性,事務(wù)支持等)。為多種應(yīng)用提供了一致的接口。標(biāo)準(zhǔn)化的語(yǔ)言(大多數(shù)商品化關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)都使用SQL語(yǔ)言)。2022/8/1194關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的缺點(diǎn)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)有下述一些具體缺點(diǎn):運(yùn)行開銷大:即使只完成簡(jiǎn)單的事務(wù)(例

44、如,只修改表中的一行),也需要較長(zhǎng)的時(shí)間。不能滿足高級(jí)應(yīng)用的需求:關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)很難用在數(shù)據(jù)類型豐富或操作不標(biāo)準(zhǔn)的應(yīng)用中。與程序設(shè)計(jì)語(yǔ)言的連接不自然:SQL語(yǔ)言支持面向集合的操作,是一種非過程性語(yǔ)言;然而大多數(shù)程序設(shè)計(jì)語(yǔ)言本質(zhì)上卻是過程性的,每次只能處理一個(gè)記錄。這些具體缺點(diǎn)限制了關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的普遍使用。2022/8/1195面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)是一種新技術(shù),主要有兩種設(shè)計(jì)途徑:擴(kuò)展的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)在關(guān)系數(shù)據(jù)庫(kù)基礎(chǔ)上,增加抽象數(shù)據(jù)類型和繼承機(jī)制;還增加了創(chuàng)建及管理類和對(duì)象的通用服務(wù)。擴(kuò)展的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言擴(kuò)充了面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的語(yǔ)法和功能,增加了在

45、數(shù)據(jù)庫(kù)中存儲(chǔ)和管理對(duì)象的機(jī)制。開發(fā)人員可以用統(tǒng)一的面向?qū)ο笥^點(diǎn)進(jìn)行設(shè)計(jì),不再需要區(qū)分存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)和程序數(shù)據(jù)結(jié)構(gòu)(即生命期短暫的數(shù)據(jù))。2022/8/1196“對(duì)象”數(shù)據(jù)管理模式的實(shí)現(xiàn)目前,大多數(shù)“對(duì)象”數(shù)據(jù)管理模式都采用“復(fù)制對(duì)象”的方法:先保留對(duì)象值,然后在需要時(shí)創(chuàng)建該對(duì)象的一個(gè)副本。擴(kuò)展的OO程序設(shè)計(jì)語(yǔ)言則擴(kuò)充了這種機(jī)制,它支持“永久對(duì)象”方法:準(zhǔn)確存儲(chǔ)對(duì)象(包括對(duì)象的內(nèi)部標(biāo)識(shí)在內(nèi)),而不是僅僅存儲(chǔ)對(duì)象值。使用這種方法,當(dāng)從存儲(chǔ)器中檢索出一個(gè)對(duì)象的時(shí)候,它就完全等同于原先存在的那個(gè)對(duì)象?!坝谰脤?duì)象”方法,為在多用戶環(huán)境中從對(duì)象服務(wù)器中共享對(duì)象奠定了基礎(chǔ)。2022/8/1197“設(shè)計(jì)數(shù)據(jù)管理

46、子系統(tǒng)”主要內(nèi)容選擇數(shù)據(jù)存儲(chǔ)管理模式設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)2022/8/1198設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)的任務(wù)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng),需要:設(shè)計(jì)數(shù)據(jù)格式設(shè)計(jì)相應(yīng)的服務(wù)。2022/8/1199設(shè)計(jì)數(shù)據(jù)格式設(shè)計(jì)數(shù)據(jù)格式的方法與使用的數(shù)據(jù)存儲(chǔ)管理模式密切相關(guān)。與前述數(shù)據(jù)存儲(chǔ)管理模式(文件管理系統(tǒng)、關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)、面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng))相對(duì)應(yīng)的設(shè)計(jì)方法有:文件系統(tǒng)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)2022/8/11100設(shè)計(jì)數(shù)據(jù)格式文件系統(tǒng)設(shè)計(jì)文件系統(tǒng)的方法:定義第一范式表:列出每個(gè)類的屬性表;把屬性表規(guī)范成第一范式,從而得到第一范式表的定義。為每個(gè)第一范式表定義一個(gè)文件。測(cè)量性能和需要的存儲(chǔ)容量。修改

47、原設(shè)計(jì)的第一范式,以滿足性能和存儲(chǔ)需求。必要時(shí)把泛化結(jié)構(gòu)的屬性壓縮在單個(gè)文件中,以減少文件數(shù)量。必要時(shí)把某些屬性組合在一起,并用某種編碼值表示這些屬性,而不再分別使用獨(dú)立的域表示每個(gè)屬性。這樣做可以減少所需要的存儲(chǔ)空間,但是增加了處理時(shí)間。2022/8/11101設(shè)計(jì)數(shù)據(jù)格式關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)設(shè)計(jì)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)方法:定義第三范式表:列出每個(gè)類的屬性表;把屬性表規(guī)范成第三范式,從而得出第三范式表的定義。為每個(gè)第三范式表定義一個(gè)數(shù)據(jù)庫(kù)表。測(cè)量性能和需要的存儲(chǔ)容量。修改先前設(shè)計(jì)的第三范式,以滿足性能和存儲(chǔ)需求。2022/8/11102設(shè)計(jì)數(shù)據(jù)格式面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)設(shè)計(jì)面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)方

48、法:擴(kuò)展的關(guān)系數(shù)據(jù)庫(kù)途徑:使用與關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)相同的方法。擴(kuò)展的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言途徑:不需要規(guī)范化屬性的步驟,因?yàn)閿?shù)據(jù)庫(kù)管理系統(tǒng)本身具有把對(duì)象值映射成存儲(chǔ)值的功能。2022/8/11103設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)的任務(wù)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng),需要:設(shè)計(jì)數(shù)據(jù)格式設(shè)計(jì)相應(yīng)的服務(wù)2022/8/11104如何存儲(chǔ)對(duì)象在一個(gè)需要存儲(chǔ)的類中,增加一個(gè)特殊的屬性和服務(wù),用于完成存儲(chǔ)對(duì)象自身的工作。應(yīng)該把為此目的增加的屬性和服務(wù)作為“隱含”的屬性和服務(wù),即:無(wú)須在面向?qū)ο笤O(shè)計(jì)模型的屬性和服務(wù)層中顯式地表示它們;僅需在關(guān)于類與對(duì)象的文檔中描述它們。2022/8/11105上述“存儲(chǔ)對(duì)象”方法的好處這樣設(shè)計(jì)之后,對(duì)

49、象將知道怎樣存儲(chǔ)自己。用于“存儲(chǔ)自己”的屬性和服務(wù),在問題域子系統(tǒng)和數(shù)據(jù)管理子系統(tǒng)之間構(gòu)成一座必要的橋梁。利用多重繼承機(jī)制,可以在某個(gè)適當(dāng)?shù)幕愔卸x這樣的屬性和服務(wù),然后,如果某個(gè)類的對(duì)象需要長(zhǎng)期存儲(chǔ),該類就從基類中繼承這樣的屬性和服務(wù)。這樣可避免許多冗余。2022/8/11106例子ATM系統(tǒng)-1由圖可見:惟一的永久性數(shù)據(jù)存儲(chǔ)放在分行計(jì)算機(jī)中。因?yàn)楸仨毐3謹(jǐn)?shù)據(jù)的一致性和完整性,而且常常有多個(gè)并發(fā)事務(wù)同時(shí)訪問這些數(shù)據(jù),因此,采用成熟的商品化關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)存儲(chǔ)數(shù)據(jù)。應(yīng)該把每個(gè)事務(wù)作為一個(gè)不可分割的批操作來(lái)處理,由事務(wù)封鎖賬戶直到該事務(wù)結(jié)束為止。2022/8/11107例子ATM系統(tǒng)-2在這

50、個(gè)例子中,需要存儲(chǔ)的對(duì)象主要是賬戶類的對(duì)象。賬戶類對(duì)象存儲(chǔ)的兩種方法每個(gè)對(duì)象自己保存自己。帳戶類對(duì)象在接到“存儲(chǔ)自己”的通知后,知道怎樣把自己存儲(chǔ)起來(lái)(需要增加一個(gè)屬性和一個(gè)服務(wù)來(lái)定義上述行為)。由數(shù)據(jù)管理子系統(tǒng)負(fù)責(zé)存儲(chǔ)對(duì)象。帳戶類對(duì)象在接到“存儲(chǔ)自己”的通知后,知道怎樣向數(shù)據(jù)管理子系統(tǒng)發(fā)送什么消息,以便由數(shù)據(jù)管理子系統(tǒng)把它的狀態(tài)保存起來(lái),為此也需要增加屬性和服務(wù)來(lái)定義上述行為。使用這種方法的優(yōu)點(diǎn),是無(wú)須修改問題域子系統(tǒng)。應(yīng)該定義一個(gè)數(shù)據(jù)管理類ObjectServer,并聲明它的對(duì)象。這個(gè)類提供下列服務(wù):通知對(duì)象保存自身或保存需長(zhǎng)期存儲(chǔ)的對(duì)象的狀態(tài)。檢索已存儲(chǔ)的對(duì)象并使之“復(fù)活”。2022/8

51、/11108主要內(nèi)容面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則啟發(fā)規(guī)則軟件重用系統(tǒng)分解設(shè)計(jì)問題域子系統(tǒng)設(shè)計(jì)人機(jī)交互子系統(tǒng)設(shè)計(jì)任務(wù)管理子系統(tǒng)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)設(shè)計(jì)類中的服務(wù)設(shè)計(jì)關(guān)聯(lián)設(shè)計(jì)優(yōu)化2022/8/11109在什么時(shí)候設(shè)計(jì)類中的服務(wù)OOA得到的對(duì)象模型,通常并不詳細(xì)描述類中的服務(wù)。OOD則是擴(kuò)充、完善和細(xì)化面向?qū)ο蠓治瞿P偷倪^程,設(shè)計(jì)類中的服務(wù)是OOD的一項(xiàng)重要工作內(nèi)容。設(shè)計(jì)類中的服務(wù)包括以下活動(dòng):確定類中應(yīng)有的服務(wù)設(shè)計(jì)實(shí)現(xiàn)服務(wù)的方法2022/8/11110“設(shè)計(jì)類中的服務(wù)”主要內(nèi)容確定類中應(yīng)有的服務(wù)設(shè)計(jì)實(shí)現(xiàn)服務(wù)的方法2022/8/11111確定類中應(yīng)有的服務(wù)需要綜合考慮對(duì)象模型、動(dòng)態(tài)模型和功能模型,才能確定類中應(yīng)

52、有的服務(wù)。對(duì)象模型是進(jìn)行對(duì)象設(shè)計(jì)的基本框架。但是面向?qū)ο蠓治龅贸龅膶?duì)象模型,通常只在每個(gè)類中列出幾個(gè)最核心的服務(wù)。設(shè)計(jì)者必須把動(dòng)態(tài)模型中對(duì)象的行為以及功能模型中的數(shù)據(jù)處理轉(zhuǎn)換成由適當(dāng)?shù)念愃峁┑姆?wù)。2022/8/11112狀態(tài)圖(或動(dòng)態(tài)模型)的作用一張狀態(tài)圖描繪了一類對(duì)象的生命周期,圖中的狀態(tài)轉(zhuǎn)換是執(zhí)行對(duì)象服務(wù)的結(jié)果。對(duì)象的許多服務(wù)都與對(duì)象接收到的事件密切相關(guān)事實(shí)上,事件就表現(xiàn)為消息接收消息的對(duì)象必然有由消息選擇符指定的服務(wù),該服務(wù)改變對(duì)象狀態(tài)(修改相應(yīng)的屬性值),并完成對(duì)象應(yīng)做的動(dòng)作。對(duì)象的動(dòng)作既與事件有關(guān),也與對(duì)象的狀態(tài)有關(guān)。如果一個(gè)對(duì)象在不同狀態(tài)可以接受同樣事件,而且在不同狀態(tài)接收到同

53、樣事件時(shí)其行為不同,則實(shí)現(xiàn)服務(wù)的算法中需要有一個(gè)依賴于狀態(tài)的DO_CASE型控制結(jié)構(gòu)。2022/8/11113功能模型的作用功能模型中的數(shù)據(jù)處理,轉(zhuǎn)換成由適當(dāng)?shù)念愃峁┑姆?wù)。功能模型指明了系統(tǒng)必須提供的服務(wù)。狀態(tài)圖中狀態(tài)轉(zhuǎn)換所觸發(fā)的動(dòng)作,在功能模型中有時(shí)可能擴(kuò)展成一張數(shù)據(jù)流圖。2022/8/11114功能模型的作用數(shù)據(jù)流圖中的某些處理可能與對(duì)象提供的服務(wù)相對(duì)應(yīng),應(yīng)該在該對(duì)象所屬的類中定義這個(gè)服務(wù)下列規(guī)則有助于確定這種定義:如果某個(gè)處理的功能是從輸入流中抽取一個(gè)值,則該輸入流就是目標(biāo)對(duì)象。如果某個(gè)處理具有類型相同的輸入流和輸出流,而且輸出流實(shí)質(zhì)上是輸入流的另一個(gè)形式,則該輸入輸出流就是目標(biāo)對(duì)象

54、。如果某個(gè)處理從多個(gè)輸入流得出輸出值,則該處理是輸出類中定義的一個(gè)服務(wù)。如果某個(gè)處理把對(duì)輸入流處理的結(jié)果輸出給數(shù)據(jù)存儲(chǔ)或動(dòng)作對(duì)象,則該數(shù)據(jù)存儲(chǔ)或動(dòng)作對(duì)象就是目標(biāo)對(duì)象。2022/8/11115如何確定處理的歸屬當(dāng)一個(gè)處理涉及多個(gè)對(duì)象時(shí),為確定把它作為哪個(gè)對(duì)象的服務(wù),設(shè)計(jì)者必須判斷哪個(gè)對(duì)象在這個(gè)處理中起主要作用。通常在起主要作用的對(duì)象類中定義這個(gè)服務(wù)。下面兩條規(guī)則有助于確定處理的歸屬:如果處理影響或修改了一個(gè)對(duì)象,則最好把該處理與處理的目標(biāo)(而不是觸發(fā)者)聯(lián)系在一起??疾焯幚砩婕暗膶?duì)象類及這些類之間的關(guān)聯(lián),從中找出處于中心地位的類。如果其他類和關(guān)聯(lián)圍繞這個(gè)中心類構(gòu)成星型,則這個(gè)中心類就是處理的目標(biāo)

55、。2022/8/11116“設(shè)計(jì)類中的服務(wù)”主要內(nèi)容確定類中應(yīng)有的服務(wù)設(shè)計(jì)實(shí)現(xiàn)服務(wù)的方法2022/8/11117設(shè)計(jì)實(shí)現(xiàn)服務(wù)的方法1設(shè)計(jì)實(shí)現(xiàn)服務(wù)的算法時(shí),應(yīng)該考慮下列幾個(gè)因素:算法復(fù)雜度。 通常選用復(fù)雜度較低(即效率較高)的算法,但也不要過分追求高效率,應(yīng)以能滿足用戶需求為準(zhǔn)。容易理解與容易實(shí)現(xiàn)。容易理解與容易實(shí)現(xiàn)的要求往往與高效率有矛盾,設(shè)計(jì)者應(yīng)該對(duì)這兩個(gè)因素適當(dāng)折衷。易修改。應(yīng)該盡可能預(yù)測(cè)將來(lái)可能做的修改,并在設(shè)計(jì)時(shí)預(yù)先做些準(zhǔn)備。2022/8/11118設(shè)計(jì)實(shí)現(xiàn)服務(wù)的方法22. 選擇數(shù)據(jù)結(jié)構(gòu)在分析階段,僅需考慮系統(tǒng)中需要的信息的邏輯結(jié)構(gòu);在OOD過程中,需要選擇能夠方便、有效地實(shí)現(xiàn)算法的物

56、理數(shù)據(jù)結(jié)構(gòu)。3. 定義內(nèi)部類和內(nèi)部操作在OOD過程中,可能需要新增加一些在需求陳述中沒有提到的類,這些新類主要用來(lái)存放在執(zhí)行算法過程中所得出的某些中間結(jié)果。復(fù)雜操作往往可以用簡(jiǎn)單對(duì)象上的更低層操作來(lái)定義。因此,在分解高層操作時(shí)常常引入新的低層操作。在面向?qū)ο笤O(shè)計(jì)過程中應(yīng)該定義這些新增加的低層操作。2022/8/11119主要內(nèi)容面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則啟發(fā)規(guī)則軟件重用系統(tǒng)分解設(shè)計(jì)問題域子系統(tǒng)設(shè)計(jì)人機(jī)交互子系統(tǒng)設(shè)計(jì)任務(wù)管理子系統(tǒng)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)設(shè)計(jì)類中的服務(wù)設(shè)計(jì)關(guān)聯(lián)設(shè)計(jì)優(yōu)化2022/8/11120關(guān)聯(lián)的重要性在對(duì)象模型中,關(guān)聯(lián)是聯(lián)結(jié)不同對(duì)象的紐帶,它指定了對(duì)象相互間的訪問路徑。在OOD過程中,設(shè)計(jì)人

57、員必須確定實(shí)現(xiàn)關(guān)聯(lián)的具體策略。既可選定一個(gè)全局性的策略統(tǒng)一實(shí)現(xiàn)所有關(guān)聯(lián),也可以分別為每個(gè)關(guān)聯(lián)選擇具體的實(shí)現(xiàn)策略,以與它在應(yīng)用系統(tǒng)中的使用方式相適應(yīng)。為了更好地設(shè)計(jì)實(shí)現(xiàn)關(guān)聯(lián)的途徑,首先應(yīng)該分析使用關(guān)聯(lián)的方式。2022/8/11121設(shè)計(jì)關(guān)聯(lián)中要討論的內(nèi)容關(guān)聯(lián)的遍歷實(shí)現(xiàn)單向關(guān)聯(lián)實(shí)現(xiàn)雙向關(guān)聯(lián)關(guān)聯(lián)對(duì)象的實(shí)現(xiàn)2022/8/11122設(shè)計(jì)關(guān)聯(lián)之一:關(guān)聯(lián)的遍歷在應(yīng)用系統(tǒng)中,使用關(guān)聯(lián)有兩種可能的方式:?jiǎn)蜗虮闅v。某些關(guān)聯(lián)只需要單向遍歷,這種單向遍歷實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單。雙向遍歷。某些關(guān)聯(lián)可能需要雙向遍歷,雙向關(guān)聯(lián)實(shí)現(xiàn)起來(lái)稍微麻煩一些。在使用原型法開發(fā)軟件的時(shí)候,原型中所有關(guān)聯(lián)都應(yīng)該是雙向的,以便于增加新的行為,快速

58、地?cái)U(kuò)充和修改原型。2022/8/11123設(shè)計(jì)關(guān)聯(lián)之二:實(shí)現(xiàn)單向關(guān)聯(lián)用指針可以方便地實(shí)現(xiàn)單向關(guān)聯(lián)。如果關(guān)聯(lián)的重?cái)?shù)是一元的,則實(shí)現(xiàn)關(guān)聯(lián)的指針是一個(gè)簡(jiǎn)單指針;如果重?cái)?shù)是多元的,則需要用一個(gè)指針集合實(shí)現(xiàn)關(guān)聯(lián)。 2022/8/11124設(shè)計(jì)關(guān)聯(lián)之三:實(shí)現(xiàn)雙向關(guān)聯(lián)實(shí)現(xiàn)雙向關(guān)聯(lián)有下列3種方法:只用屬性實(shí)現(xiàn)一個(gè)方向的關(guān)聯(lián),當(dāng)需要反向遍歷時(shí)就執(zhí)行一次正向查找。如果兩個(gè)方向遍歷的頻度相差很大,而且需要盡量減少存儲(chǔ)開銷和修改時(shí)的開銷,則這是一種很有效的實(shí)現(xiàn)雙向關(guān)聯(lián)的方法。兩個(gè)方向的關(guān)聯(lián)都用屬性實(shí)現(xiàn)。這種方法能實(shí)現(xiàn)快速訪問,但是,如果修改了一個(gè)屬性,則相關(guān)的屬性也必須隨之修改,才能保持該關(guān)聯(lián)鏈的一致性。用獨(dú)立的關(guān)聯(lián)

59、對(duì)象實(shí)現(xiàn)雙向關(guān)聯(lián)。關(guān)聯(lián)對(duì)象不屬于相互關(guān)聯(lián)的任何一個(gè)類,它是獨(dú)立的關(guān)聯(lián)類的實(shí)例,如圖所示。2022/8/11125設(shè)計(jì)關(guān)聯(lián)之四:關(guān)聯(lián)對(duì)象的實(shí)現(xiàn)可以引入一個(gè)關(guān)聯(lián)類來(lái)保存描述關(guān)聯(lián)性質(zhì)的信息,關(guān)聯(lián)中的每個(gè)連接對(duì)應(yīng)著關(guān)聯(lián)類的一個(gè)對(duì)象。實(shí)現(xiàn)關(guān)聯(lián)對(duì)象的方法取決于關(guān)聯(lián)的重?cái)?shù)。對(duì)于一對(duì)一關(guān)聯(lián)來(lái)說,關(guān)聯(lián)對(duì)象可以與參與關(guān)聯(lián)的任一個(gè)對(duì)象合并。對(duì)于一對(duì)多關(guān)聯(lián)來(lái)說,關(guān)聯(lián)對(duì)象可以與“多”端對(duì)象合并。如果是多對(duì)多關(guān)聯(lián),則關(guān)聯(lián)鏈的性質(zhì)不可能只與一個(gè)參與關(guān)聯(lián)的對(duì)象有關(guān),通常用一個(gè)獨(dú)立的關(guān)聯(lián)類來(lái)保存描述關(guān)聯(lián)性質(zhì)的信息,這個(gè)類的每個(gè)實(shí)例表示一條具體的關(guān)聯(lián)鏈及該鏈的屬性。2022/8/11126主要內(nèi)容面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則啟發(fā)規(guī)則軟件重

60、用系統(tǒng)分解設(shè)計(jì)問題域子系統(tǒng)設(shè)計(jì)人機(jī)交互子系統(tǒng)設(shè)計(jì)任務(wù)管理子系統(tǒng)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)設(shè)計(jì)類中的服務(wù)設(shè)計(jì)關(guān)聯(lián)設(shè)計(jì)優(yōu)化2022/8/11127“設(shè)計(jì)優(yōu)化”主要內(nèi)容確定優(yōu)先級(jí)提高效率的幾項(xiàng)技術(shù)調(diào)整繼承關(guān)系2022/8/11128確定優(yōu)先級(jí)時(shí)要有折衷方案系統(tǒng)的各項(xiàng)質(zhì)量指標(biāo)并不是同等重要的,設(shè)計(jì)人員必須確定各項(xiàng)質(zhì)量指標(biāo)的相對(duì)重要性(即確定優(yōu)先級(jí)),以便在優(yōu)化設(shè)計(jì)時(shí)制定折衷方案。系統(tǒng)的整體質(zhì)量與設(shè)計(jì)人員所制定的折衷方案密切相關(guān)。最終產(chǎn)品成功與否,在很大程度上取決于是否選擇好了系統(tǒng)目標(biāo)。最糟糕的情況是,沒有站在全局高度正確確定各項(xiàng)質(zhì)量指標(biāo)的優(yōu)先級(jí),以致系統(tǒng)中各個(gè)子系統(tǒng)按照相互對(duì)立的目標(biāo)做了優(yōu)化,這將導(dǎo)致系統(tǒng)資源

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論