資源描述:
《邏輯架構(gòu)與uml包圖詳解》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第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)主要的輸入是補(bǔ)充性規(guī)格說(shuō)明中記錄的架構(gòu)方面的約束和要點(diǎn)LA定義了包,包中有關(guān)于軟件類(lèi)的定義示例邏輯架構(gòu)(logicalarchitecture)邏輯架構(gòu)是軟件類(lèi)的宏
2、觀組織結(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)主要方面加以內(nèi)聚的職責(zé)。層按照“較高”層(例如UI層)可以調(diào)用“較低”層的服務(wù)OO系統(tǒng)中通常包括的層有:用戶界面應(yīng)用邏輯和領(lǐng)域?qū)ο蠹夹g(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ò)
3、協(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)(宏觀)架構(gòu)是一種重要決策,其中涉及軟件系統(tǒng)的組織對(duì)結(jié)構(gòu)元素及其組成系統(tǒng)所籍接口的選擇這些元素特定于其相互協(xié)作的行為這些結(jié)構(gòu)和行
4、為元素到規(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)secase作為核心,其中功能性需求以及部分非功能性需求會(huì)被軟件架構(gòu)師通過(guò)分析和設(shè)計(jì),映射為各種軟件設(shè)計(jì)模型。從OOA/OOD角度說(shuō),usecase在這個(gè)過(guò)程中是要轉(zhuǎn)換為各種UML,其中類(lèi)圖,序列圖,狀態(tài)圖是最常用到的。這個(gè)轉(zhuǎn)換過(guò)程是需要智慧的,usecase是目的,各種OO的原則是指導(dǎo),設(shè)計(jì)模式是經(jīng)驗(yàn),靈活運(yùn)用是能力。里面蘊(yùn)涵了設(shè)計(jì)的美感,我覺(jué)得這個(gè)過(guò)程是衡量
5、一個(gè)軟件架構(gòu)師的最重要的指標(biāo)。這個(gè)過(guò)程是需要?jiǎng)?chuàng)造力和想象力的??赡芎芏嗳苏J(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)性(耦合),以便開(kāi)發(fā)者能夠看到系統(tǒng)內(nèi)大型事物之間的耦合。UM
6、L的依賴(lài)線即可用于此目的,依賴(lài)線是有箭頭的虛線,箭頭指向被依賴(lài)的包完全限定的名稱(chēng)例如Java::util::DateUML工具:從代碼逆向工程產(chǎn)生包圖開(kāi)發(fā)早期,根據(jù)繪制的UML包圖的草圖來(lái)組織代碼;隨著代碼庫(kù)的不斷增長(zhǎng),編程上花費(fèi)的時(shí)間更多,減少了建?;蚶L制UML圖的時(shí)間,可以利用UMLCASE工具對(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)用邏輯與用戶界面交織在一起,因此無(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)聚性
8、、提高潛在的復(fù)用性并且使概念更加清晰封裝和分解了相關(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)域