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