《軟件工程與開發(fā)技術(shù)》課件第11章_第1頁
《軟件工程與開發(fā)技術(shù)》課件第11章_第2頁
《軟件工程與開發(fā)技術(shù)》課件第11章_第3頁
《軟件工程與開發(fā)技術(shù)》課件第11章_第4頁
《軟件工程與開發(fā)技術(shù)》課件第11章_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第11章系統(tǒng)結(jié)構(gòu)與包模型11.1包的概念11.2包之間的依賴關(guān)系11.3包的版型11.4用包表示的系統(tǒng)高層結(jié)構(gòu)11.5設(shè)計(jì)包的原則11.6小結(jié) 11.1包的概念

在UML中,包(package)是一種分組機(jī)制或命名空間,也可以認(rèn)為是一種集合元素或者容器元素,其中可以包含不同類型的產(chǎn)品。類似于文件管理中的文件夾,包中還可以包含包,以形成包的層次結(jié)構(gòu)。包可以做為對(duì)包內(nèi)多個(gè)相關(guān)元素整體的抽象,從而形成系統(tǒng)的高層抽象結(jié)構(gòu)。

在程序設(shè)計(jì)語言中,包也被看作命名空間,在同一個(gè)包中不允許同名的元素存在,但在不同的包中允許同名元素存在。這就為命名的分配和靈活性提供了便利條件。在劃分包時(shí),一般將語義有聯(lián)系的或者松散耦合的元素放在同一個(gè)包內(nèi),包的層次不要太深,三層以上的包結(jié)構(gòu)會(huì)使系統(tǒng)變得相當(dāng)難理解。包的UML表示如圖11.1所示,類似于文件夾的符號(hào)。圖11.1包的UML表示 11.2包之間的依賴關(guān)系

包與包之間可以存在依賴關(guān)系。如果某個(gè)包中的元素和另外一個(gè)包中的元素存在著依賴關(guān)系,則這兩個(gè)包之間存在著依賴關(guān)系。圖11.2所示是一個(gè)系統(tǒng)的三層結(jié)構(gòu),GUI包中包含了所有的界面元素,使用到BusinessService包中提供的業(yè)務(wù)服務(wù)類,如訂單管理類;同時(shí)也使用了BusinessObject包中的業(yè)務(wù)對(duì)象,如訂單;業(yè)務(wù)服務(wù)類中,訂單管理類也使用到業(yè)務(wù)對(duì)象訂單類,此時(shí)這三個(gè)包就存在著依賴關(guān)系。元素和包之間也可以有依賴關(guān)系,如果某個(gè)元素(用例、類、組件等)和某個(gè)包內(nèi)的元素存在著關(guān)系(泛化、關(guān)聯(lián)、依賴等),則該元素和該包存在著依賴關(guān)系。如圖11.3所示,業(yè)務(wù)服務(wù)包中的類使用到了數(shù)據(jù)庫訪問對(duì)象DAO,DAO的實(shí)現(xiàn)又使用到了BusinessObject。圖11.2包依賴關(guān)系舉例圖11.3包依賴性舉例在包和接口之間也可以存在實(shí)現(xiàn)關(guān)系,如圖11.4所示。如果包中的類實(shí)現(xiàn)了該接口,在這種情況下也可以畫依賴關(guān)系,但語義更弱,實(shí)現(xiàn)關(guān)系則特指類實(shí)現(xiàn)接口。

包機(jī)制也是一種封裝或者隱藏機(jī)制,使用包名字來描述其中包含的所有元素的特性,這可以起到信息隱藏的作用,但也可以選擇包內(nèi)的元素(非子包元素),使其暴露出來,如圖11.5所示。圖11.4包和接口之間的實(shí)現(xiàn)關(guān)系圖11.5包中元素的隱藏與暴露 11.3包的版型

包是對(duì)多個(gè)元素的封裝,利用UML的擴(kuò)充機(jī)制之一,即版型可以對(duì)該概念進(jìn)行擴(kuò)充,Rose中常用的包版型見表11.1。表11.1ROSE部分常用包的版型符號(hào) 11.4用包表示的系統(tǒng)高層結(jié)構(gòu)

用包及其關(guān)系可以表示業(yè)務(wù)系統(tǒng)或者信息系統(tǒng)的高層模型,例如系統(tǒng)體系結(jié)構(gòu)。例如,圖11.6表示了業(yè)務(wù)子系統(tǒng)之間的依賴關(guān)系,圖11.7則表示了系統(tǒng)的多層結(jié)構(gòu)。其中,Presentation是表示層,包中放置界面元素,如頁面或者界面類;Application是應(yīng)用層,其間放置應(yīng)用邏輯,如訂單管理;Domain是領(lǐng)域包,其中主要存放業(yè)務(wù)對(duì)象,如訂單等;Persistence是持久層,其間存放操作實(shí)體對(duì)象的數(shù)據(jù)庫操作實(shí)用類,如OrderDAO;Services是服務(wù)層,存放一些公共服務(wù)類,如單位轉(zhuǎn)換類等。圖11.6業(yè)務(wù)體系結(jié)構(gòu)圖11.7系統(tǒng)體系結(jié)構(gòu) 11.5設(shè)計(jì)包的原則

11.5.1重用等價(jià)原則(REP)

重用等價(jià)原則指的是當(dāng)把類放入某個(gè)包時(shí),應(yīng)當(dāng)考慮把整個(gè)包作為可重用的單元,即重用的粒度是包,包也是發(fā)布的粒度。為了方便使用者重用,要提高抽象級(jí)別,盡量將接口和實(shí)現(xiàn)類分離,使用依賴倒置和里氏替換原則來設(shè)計(jì)系統(tǒng)。這樣當(dāng)實(shí)現(xiàn)包內(nèi)容修改時(shí),用戶能夠盡量不修改代碼或者少修改代碼,也無需重新參考、引用或者依賴新的包。例如有些系統(tǒng)開發(fā)者喜歡把所有的公用類放在一個(gè)包中,該包中的類被使用的頻度高、范圍廣,版本更新的頻度也會(huì)比較高,一般都會(huì)統(tǒng)一地進(jìn)行發(fā)布。

11.5.2共同閉包原則(CCP)

共同閉包原則指的是把那些需要同時(shí)改變的類放在一個(gè)包中。若一個(gè)類的修改會(huì)引起另外的類的修改,則盡量將這兩個(gè)類放在一個(gè)包中。該原則實(shí)際上是說,如果兩個(gè)類耦合比較強(qiáng)時(shí),應(yīng)該將其放在同一個(gè)包下,也就是提高包的內(nèi)聚性,降低包與包之間的耦合性。這樣,一個(gè)包內(nèi)的元素修改之后就不會(huì)影響到另一個(gè)包。劃分包的另一個(gè)主要原則是概念或者語義的相近性,而非單純考慮耦合性。例如習(xí)慣上將所有的界面類放在一個(gè)包內(nèi),而將實(shí)體類放在另一個(gè)包內(nèi),界面類依賴于實(shí)體類,因此界面包依賴于實(shí)體包。當(dāng)實(shí)體包修改時(shí),肯定會(huì)影響到界面包,但是一般并不把界面類和實(shí)體類放在同一個(gè)包中,而是建立其間的依賴關(guān)系。

包中的所有類對(duì)于同一類性質(zhì)的變化應(yīng)該是共同封閉的。即系統(tǒng)的某些變化若對(duì)一個(gè)包有影響,則將對(duì)包中的所有類產(chǎn)生影響,而對(duì)其他的包不造成任何影響。例如系統(tǒng)界面風(fēng)格需要變化,則會(huì)對(duì)界面包中的所有類進(jìn)行變化。11.5.3共同重用原則(CRP)

共同重用原則指的是不要把不會(huì)一起使用的類放在同一個(gè)包中。一個(gè)包中的所有類應(yīng)該是共同重用的。如果重用了包中的一個(gè)類,那么就要重用包中的其他類。相互之間沒有緊密聯(lián)系的類不應(yīng)該在同一個(gè)包中。例如每個(gè)子系統(tǒng)包都會(huì)使用公用包中幾乎所有類,界面設(shè)計(jì)會(huì)用到界面包中的所有類等。11.5.4非循環(huán)依賴原則(ADP)

非循環(huán)依賴原則指的是包之間不要形成循環(huán)依賴關(guān)系。比如說,A包依賴于B包,B包依賴于C包,C包又依賴于A包,形成了間接循環(huán)依賴關(guān)系。如果確實(shí)無法避免這種循環(huán)依賴,則可以考慮將A、B、C包組織成一個(gè)或者兩個(gè)大包,以消除循環(huán)依賴關(guān)系。11.5.5穩(wěn)定依賴原則(SDP)

穩(wěn)定依賴原則指的是包的設(shè)計(jì)應(yīng)該朝著穩(wěn)定的方向進(jìn)行依賴,即不穩(wěn)定的包總是依賴穩(wěn)定的包。應(yīng)該把封裝系統(tǒng)高層設(shè)計(jì)的軟件模塊(比如抽象類)放進(jìn)穩(wěn)定的包中,不穩(wěn)定的包中應(yīng)該只包含那些很可能會(huì)改變的軟件(比如具體類)。例如,業(yè)務(wù)規(guī)則和業(yè)務(wù)對(duì)象和界面相比較來說,是更穩(wěn)定的,因此設(shè)計(jì)時(shí)要讓界面依賴于業(yè)務(wù)規(guī)則和業(yè)務(wù)對(duì)象包,見圖11.8。

在實(shí)際問題中的諸多因素中,某些因素相對(duì)于其他因素的變化更容易些,應(yīng)將不穩(wěn)定的因素集中在一起,穩(wěn)定的因素集中在一起。例如,程序設(shè)計(jì)方法相對(duì)于程序設(shè)計(jì)語言來說,是更不容易變化的,是更穩(wěn)定的因素,而程序問題相對(duì)于程序設(shè)計(jì)語言和設(shè)計(jì)方法來說,是更容易變化的。程序問題、程序設(shè)計(jì)語言、程序設(shè)計(jì)方法之間的依賴關(guān)系見圖11.9。圖11.8穩(wěn)定依賴原則舉例一圖11.9穩(wěn)定依賴原則舉例二11.5.6穩(wěn)定抽象原則(SAP)

穩(wěn)定抽象原則是指包的抽象程度應(yīng)該和其穩(wěn)定程度一致。相比較來說,抽象的元素相對(duì)于具體的元素更為穩(wěn)定。因此一個(gè)穩(wěn)定的包相對(duì)于不穩(wěn)定的包應(yīng)當(dāng)更抽象。從本質(zhì)上來說,系統(tǒng)開發(fā)中的所有元素,包括模型元素和程序元素都是對(duì)現(xiàn)實(shí)世界的抽象,只不過抽象的程度不一樣。抽象的層次越高,則其適用面越廣,穩(wěn)定性也就越強(qiáng)。例如圓圖形是對(duì)所有具體的具有圓截面物體的抽象,圖形概念則是所有各種幾何形狀的抽象,顯然圖形更為抽象,因此圓依賴于圖形(圓繼承自圖形)。圖形類抽象出圖形的共性操作,如繪制、計(jì)算面積和周長、移動(dòng)、選取等。因?yàn)椴簧婕暗綄?shí)現(xiàn),圖形類相對(duì)于圓類更不容易變化,因此也就更穩(wěn)定。需要指出的是,以上設(shè)計(jì)原則有些是相互矛盾的,如重用等價(jià)原則、共同閉包原則等。內(nèi)聚和耦合本身

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論