《邏輯架構(gòu)與UML包圖詳解PPT課件》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《邏輯架構(gòu)與UML包圖詳解PPT課件(37頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,第13章 邏輯架構(gòu)和UML包圖,目標(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
2、),主要的輸入是補(bǔ)充性規(guī)格說(shuō)明中記錄的架構(gòu)方面的約束和要點(diǎn),LA定義了包,包中有關(guān)于軟件類(lèi)的定義,示例,邏輯架構(gòu)(logical architecture),邏輯架構(gòu),是軟件類(lèi)的宏觀(guān)組織結(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)行部署(后一種決定是部署架構(gòu)的一部分)。,層(Layer),層是對(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ū)ο?/p>
3、,技術(shù)服務(wù)(例如數(shù)據(jù)庫(kù)接口或錯(cuò)誤日志)獨(dú)立于應(yīng)用的,也可在多個(gè)系統(tǒng)中復(fù)用的服務(wù)。,架構(gòu)分層,在嚴(yán)格的分層架構(gòu)中,層只能調(diào)用與其相鄰的下層的服務(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í)別,但本課程對(duì)OOA/D的介紹著重于核心應(yīng)用邏輯(或,“,領(lǐng)域,”,)層,其次才是對(duì)其他層的討論。,軟件架構(gòu),軟件架構(gòu)(宏觀(guān)),架
4、構(gòu)是一種重要決策,其中涉及軟件系統(tǒng)的組織,對(duì)結(jié)構(gòu)元素及其組成系統(tǒng)所籍接口的選擇,這些元素特定于其相互協(xié)作的行為,這些結(jié)構(gòu)和行為元素到規(guī)模更大的子系統(tǒng)的組成,以及指導(dǎo)該組織結(jié)構(gòu)的架構(gòu)風(fēng)格,這些元素及其接口、協(xié)作、和組成,軟件架構(gòu)師是做什么的?,軟件架構(gòu)師的職責(zé),是把需求轉(zhuǎn)換為軟件世界的模型。4+1視圖中以u(píng)se case作為核心,其中功能性需求以及部分非功能性需求會(huì)被軟件架構(gòu)師通過(guò)分析和設(shè)計(jì),映射為各種軟件設(shè)計(jì)模型。從OOA/OOD角度說(shuō),use case 在這個(gè)過(guò)程中是要轉(zhuǎn)換為各種UML,其中類(lèi)圖,序列圖,狀態(tài)圖是最常用到的。這個(gè)轉(zhuǎn)換過(guò)程是需要智慧的,use case是目的,各種OO的原則是指
5、導(dǎo),設(shè)計(jì)模式是經(jīng)驗(yàn),靈活運(yùn)用是能力。里面蘊(yùn)涵了設(shè)計(jì)的美感,我覺(jué)得這個(gè)過(guò)程是衡量一個(gè)軟件架構(gòu)師的最重要的指標(biāo)。這個(gè)過(guò)程是需要?jiǎng)?chuàng)造力和想象力的。可能很多人認(rèn)為這個(gè)地方正是軟件架構(gòu)師體現(xiàn)能力的地方。,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)性(耦合),
6、以便開(kāi)發(fā)者能夠看到系統(tǒng)內(nèi)大型事物之間的耦合。,UML的依賴(lài)線(xiàn)即可用于此目的,依賴(lài)線(xiàn)是有箭頭的虛線(xiàn),箭頭指向被依賴(lài)的包,完全限定的名稱(chēng) 例如Java:util:Date,UML工具:從代碼逆向工程產(chǎn)生包圖,開(kāi)發(fā)早期,根據(jù)繪制的UML包圖的草圖來(lái)組織代碼;,隨著代碼庫(kù)的不斷增長(zhǎng),編程上花費(fèi)的時(shí)間更多,減少了建?;蚶L制UML圖的時(shí)間,可以利用UML CASE工具對(duì)源代碼進(jìn)行逆向工程,從而自動(dòng)生成包圖。,準(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é)作和耦合是
7、從較高層到較低層進(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)域之間的高度耦合。因此難以為不同開(kāi)發(fā)者清晰地界定和分配任務(wù),典型的層,信息系統(tǒng)邏輯架構(gòu)中常見(jiàn)的層,使用層的好處,關(guān)系分離、高級(jí)服務(wù)與低級(jí)服務(wù)分離、特定于應(yīng)用的服務(wù)與一般性服務(wù)分離。層可以減少耦合和依賴(lài)性、增加內(nèi)聚性、提高潛在的復(fù)用性并且使概念更加
8、清晰,封裝和分解了相關(guān)的復(fù)雜性,某些層能夠使用新的實(shí)現(xiàn)替換。對(duì)于較低級(jí)的技術(shù)服務(wù)層或基礎(chǔ)層來(lái)說(shuō)不大可能(例如java.util)但是對(duì)UI、應(yīng)用層和領(lǐng)域?qū)觼?lái)說(shuō)是可能的。,較低層包含可復(fù)用功能,某些層(主要是領(lǐng)域?qū)雍图夹g(shù)服務(wù)層)可以是分布式的。,通過(guò)邏輯劃分,有助于團(tuán)隊(duì)開(kāi)發(fā)。,準(zhǔn)則:內(nèi)聚職責(zé);使關(guān)系分離,同一層內(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)用邏輯!例如Java
9、 Swing Jframe(窗體)對(duì)象不應(yīng)該包含計(jì)算稅金或移動(dòng)棋子的邏輯。而應(yīng)用邏輯類(lèi)不應(yīng)該捕獲UI鼠標(biāo)或鍵盤(pán)事件。否則將違反關(guān)系分離和高內(nèi)聚原則(這是基本架構(gòu)原則),將代碼組織映射為層和UML包,/-UI包,/-領(lǐng)域?qū)?/-特定于NextGen項(xiàng)目的包,com.mycompany.nextgen.domain.payments,/-技術(shù)服務(wù)層,/-我們自己的持久(數(shù)據(jù)庫(kù))訪(fǎng)問(wèn)層,/第三方,/-基礎(chǔ)層,/-我們小組自己創(chuàng)建的基礎(chǔ)包,Java,中稱(chēng)為包,package,C#,和,C+,中稱(chēng)為命名空間,namespace,領(lǐng)域?qū)雍皖I(lǐng)域模型之間的關(guān)系,領(lǐng)域?qū)邮擒浖囊徊糠郑I(lǐng)域模型是概念角度分析的一
10、部分,它們是不同的。,利用來(lái)自領(lǐng)域模型的靈感創(chuàng)建領(lǐng)域?qū)樱梢垣@得在實(shí)現(xiàn)世界和軟件設(shè)計(jì)之間的,低表示差異,。,例如:領(lǐng)域模型中的Sale領(lǐng)域?qū)又袆?chuàng)建的Sale軟件類(lèi)。,層、層和分區(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ū)。,層和分區(qū),準(zhǔn)則:不要將外部資源表示為最底層,大部分系統(tǒng)依賴(lài)于外部資源或服務(wù),例如MySQL庫(kù)存數(shù)據(jù)庫(kù)和Novell LDAP命名和目錄服務(wù)。
11、物理實(shí)現(xiàn)構(gòu)件非邏輯架構(gòu)中的層。,將外部資源(如某個(gè)數(shù)據(jù)庫(kù))表示為“低于”(例如)基礎(chǔ)層(Foundation)的層,是對(duì)邏輯視圖和架構(gòu)部署視圖的混淆。,就邏輯架構(gòu)及其層而言,對(duì)某個(gè)持久數(shù)據(jù)集合(例如庫(kù)存數(shù)據(jù))的訪(fǎng)問(wèn)可以視為,領(lǐng)域?qū)又械淖宇I(lǐng)域庫(kù)存子領(lǐng)域,。而提供,數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)的一般性服務(wù),則可以視為,技術(shù)服務(wù)分區(qū)(Partition),持久性服務(wù)。,架構(gòu)的混合視圖,模型視圖分離原則,其他包應(yīng)該對(duì)UI層具有何種可見(jiàn)性?,非窗口類(lèi)應(yīng)該如何與窗口通信?,模型視圖分離原則,原則:,不要將非,UI對(duì)象直接與UI對(duì)象連接或耦合。,不要在UI,對(duì)象方法中加入應(yīng)用邏輯,模型領(lǐng)域?qū)訉?duì)象(如,Sale、Payment
12、),視圖UI對(duì)象(如:窗口、web頁(yè)、applet和reports報(bào)表),模型視圖分離原則,模型視圖分離原則規(guī)定,模型(領(lǐng)域)對(duì)象不應(yīng)該直接與視圖(UI)對(duì)象連接,對(duì)于視圖對(duì)象也是如此。,MVC:,M:Model模型指領(lǐng)域?qū)樱〝?shù)據(jù)對(duì)象),V:View視圖指UI層(GUI小部件,web頁(yè)),C:Control控制器指應(yīng)用層的工作流對(duì)象。(鼠標(biāo)、鍵盤(pán)事件控制器(句柄),模型視圖分離原則,動(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)求,一般是富客戶(hù)端GUI或Web頁(yè)面。,