《UML邏輯架構(gòu)和包圖課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《UML邏輯架構(gòu)和包圖課件(24頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,*,*,第13章 邏輯架構(gòu)和UML包圖,暨南大學(xué)計(jì)算機(jī)系,黃戰(zhàn),目標(biāo),介紹使用層的邏輯架構(gòu),闡述使用UML包圖的邏輯架構(gòu),簡(jiǎn)介,現(xiàn)在,我們就從面向分析的工作過(guò)渡到軟件設(shè)計(jì),典型OO系統(tǒng)設(shè)計(jì)的基礎(chǔ)是若干架構(gòu)層,例如UI層、應(yīng)用邏輯(或“領(lǐng)域”)層等。,UP制品相互影響,業(yè)務(wù)建模,領(lǐng)域模型,需求,用例模型,設(shè)想,補(bǔ)充性規(guī)格說(shuō)明,詞匯表,設(shè)計(jì),邏輯架構(gòu)的包圖(靜態(tài)視圖),交互圖(動(dòng)態(tài)視圖),類(lèi)圖(靜態(tài)視圖),UP制品相互影響,強(qiáng)調(diào)的是邏輯架構(gòu)(LA),主要的輸入是補(bǔ)充性規(guī)格說(shuō)明中記錄的架構(gòu)方面的約束和要點(diǎn),LA定
2、義了包,包中有關(guān)于軟件類(lèi)的定義,示例,圖13.2所示為使用UML包圖表示法繪制的部分分層邏輯架構(gòu),邏輯架構(gòu),邏輯架構(gòu)是軟件類(lèi)的宏觀組織結(jié)構(gòu),它將軟件類(lèi)組織為包(或命名空間)、子系統(tǒng)和層等。,之所以稱(chēng)其為邏輯架構(gòu),是因?yàn)椴⑽礇Q定如何在不同的操作系統(tǒng)進(jìn)程或網(wǎng)絡(luò)中物理的計(jì)算機(jī)上對(duì)這些元素進(jìn)行部署(后一種決定是部署的一部分),層,層是對(duì)類(lèi)、包或子系統(tǒng)的甚為粗粒度的分組,具有對(duì)系統(tǒng)主要方面加以?xún)?nèi)聚的職責(zé)。,層按照“較高”層(例如UI層)可以調(diào)用“較低”層的服務(wù),OO系統(tǒng)中通常包括的層有:,用戶(hù)邏輯,應(yīng)用邏輯和領(lǐng)域?qū)ο?技術(shù)服務(wù)(例如數(shù)據(jù)庫(kù)接口或錯(cuò)誤日志),架構(gòu)分層,在嚴(yán)格的分層架構(gòu)中,層只能調(diào)用與其相鄰
3、的下層的服務(wù)。這種設(shè)計(jì)在網(wǎng)絡(luò)協(xié)議棧中比較常見(jiàn),而在信息系統(tǒng)中不太常見(jiàn)。在信息系統(tǒng)中通常使用寬松的分層架構(gòu),其中較高層可以調(diào)用其下任何層的服務(wù),例如,UI層可以調(diào)用與其相鄰的應(yīng)用邏輯層,也可以調(diào)用更下面的技術(shù)服務(wù)層中的元素,完成日志記錄等工作,邏輯架構(gòu)并非一定要組織為層。但這種方式極為常用,案例研究中應(yīng)該關(guān)注的層,盡管OO技術(shù)可以用于所有級(jí)別,但本書(shū)對(duì)OOA/D的介紹著重于核心應(yīng)用邏輯(或“領(lǐng)域”)層,其次才是對(duì)其他層的討論,軟件架構(gòu),軟件架構(gòu)(宏觀),架構(gòu)是一種重要決策,其中涉及軟件系統(tǒng)的組織,對(duì)結(jié)構(gòu)元素及其組成系統(tǒng)所籍接口的選擇,這些元素特定于其相互協(xié)作的行為,這些結(jié)構(gòu)和行為元素到規(guī)模更大的
4、子系統(tǒng)的組成,以及指導(dǎo)該組織結(jié)構(gòu)的架構(gòu)風(fēng)格,這些元素及其接口、協(xié)作、和組成,UML包圖,UML包圖通常用于描述系統(tǒng)的邏輯架構(gòu),層,子系統(tǒng),包(就Java)而言等,層可以建模為UML包。例如,UI層可以建模為名為UI的包,UML包圖,UML包圖提供了組織元素的方式(類(lèi),其他包,用例,),嵌套包十分常見(jiàn),UML包是比Java包和.NET命名空間更為通用的概念,如果包內(nèi)部顯示了其成員,則在標(biāo)簽上標(biāo)識(shí)包名;否則,可以在包體內(nèi)標(biāo)識(shí)包名稱(chēng),人們通常希望顯示包之間的依賴(lài)性(耦合),以便開(kāi)發(fā)者能夠看到系統(tǒng)內(nèi)大型事物之間的耦合。,UML的依賴(lài)線即可用于此目的,依賴(lài)線是有箭頭的虛線,箭頭指向被依賴(lài)的包,完全限定的
5、名稱(chēng) 例如Java:util:Date,準(zhǔn)則:使用層進(jìn)行設(shè)計(jì),使用層時(shí):,將系統(tǒng)的大型邏輯結(jié)構(gòu)組織為獨(dú)立的、職責(zé)相關(guān)的離散層,具有清晰、內(nèi)聚的關(guān)注分離。這樣,“較低”的層是低級(jí)別和一般性服務(wù),較高的層則是與應(yīng)用相關(guān)的。,協(xié)作和耦合是從較高層到較低層進(jìn)行的,要避免從較低層到較高層的耦合,設(shè)計(jì)問(wèn)題,使用層有助于解決如下問(wèn)題:,源碼的變更波及整個(gè)系統(tǒng)大部分系統(tǒng)是高度耦合的。,應(yīng)用邏輯與用戶(hù)界面交織在一起,因此無(wú)法復(fù)用于其他不同界面或分布到其他處理節(jié)點(diǎn)之上,潛在的一般性技術(shù)服務(wù)或業(yè)務(wù)邏輯與更特定于應(yīng)用的邏輯交織在一起,因此無(wú)法被復(fù)用、分布到其他節(jié)點(diǎn)或方便地使用不同實(shí)現(xiàn)替換,不同的關(guān)注領(lǐng)域之間的高度耦合
6、。因此難以為不同開(kāi)發(fā)者清晰地界定和分配任務(wù),典型的層,使用層的好處,關(guān)系分離、高級(jí)服務(wù)與低級(jí)服務(wù)分離、特定于應(yīng)用的服務(wù)與一般性服務(wù)分離。層可以減少耦合和依賴(lài)性、增加內(nèi)聚性、提高潛在的復(fù)用性并且使概念更加清晰,封裝和分解了相關(guān)的復(fù)雜性,某些層能夠使用新的實(shí)現(xiàn)替換。,內(nèi)聚,同一層內(nèi)的對(duì)象在職責(zé)上應(yīng)該具有緊密關(guān)聯(lián),不同層中對(duì)象的職責(zé)則不應(yīng)該混淆,例如,UI層中的對(duì)象應(yīng)該關(guān)注于UI工作,例如創(chuàng)建窗口和小部件、捕獲鼠標(biāo)和鍵盤(pán)事件等。應(yīng)用邏輯或“領(lǐng)域”層中的對(duì)象應(yīng)該關(guān)注應(yīng)用邏輯,例如計(jì)算銷(xiāo)售總額或稅金,或在棋盤(pán)上移動(dòng)棋子UI對(duì)象不應(yīng)該處理應(yīng)用邏輯!,否則將違反關(guān)系分離和高內(nèi)聚原則(這是基本架構(gòu)原則),層、
7、層和分區(qū),層在架構(gòu)中最初表示的是邏輯層,而不是物理節(jié)點(diǎn),但是現(xiàn)在,這個(gè)詞被廣泛用于表示物理進(jìn)程節(jié)點(diǎn)(或節(jié)點(diǎn)簇),例如“客戶(hù)層”(客戶(hù)計(jì)算機(jī)),架構(gòu)中的層表示對(duì)系統(tǒng)的垂直方向的劃分。,分區(qū)表示對(duì)層在水平方向進(jìn)行劃分,形成相對(duì)平行的子系統(tǒng)。例如,技術(shù)服務(wù)層可以劃分為安全和統(tǒng)計(jì)等分區(qū)。,模型視圖分離原則,其他包應(yīng)該對(duì)UI層具有何種可見(jiàn)性?,非窗口類(lèi)應(yīng)該如何與窗口通信?,模型視圖分離原則,原則:,不要將非UI對(duì)象直接與UI對(duì)象連接或耦合。,不要在UI對(duì)象方法中加入應(yīng)用邏輯,模型領(lǐng)域?qū)訉?duì)象,視圖UI對(duì)象,模型視圖分離原則,模型視圖分離原則規(guī)定,模型(領(lǐng)域)對(duì)象不應(yīng)該直接與視圖(UI)對(duì)象連接,對(duì)于視圖對(duì)象也是如此。,模型視圖分離原則,動(dòng)機(jī):,支持內(nèi)聚的模型定義,這些定義只關(guān)注領(lǐng)域過(guò)程,而不是用戶(hù)界面。,允許對(duì)模型和用戶(hù)界面層分別進(jìn)行開(kāi)發(fā)。,使界面的需求變更對(duì)領(lǐng)域?qū)拥挠绊懽钚』?允許新視圖能夠被方便地連接到現(xiàn)有的領(lǐng)域?qū)又希粫?huì)對(duì)領(lǐng)域?qū)赢a(chǎn)生影響。,允許對(duì)同一模型對(duì)象同時(shí)使用多個(gè)視圖,例如銷(xiāo)售信息同時(shí)具有表格和業(yè)務(wù)圖表視圖。,允許模型層的運(yùn)行不依賴(lài)于用戶(hù)界面層,例如,消息處理或批處理模式的系統(tǒng)。,允許模型層能夠簡(jiǎn)便地移植到另一個(gè)用戶(hù)接口框架下。,SSD、系統(tǒng)操作、層,SSD描述了系統(tǒng)操作,但使隱藏特定的UI對(duì)象,系統(tǒng)UI層對(duì)象捕獲系統(tǒng)操作請(qǐng)求,