第8章 系統(tǒng)架構(gòu)設(shè)計_第1頁
第8章 系統(tǒng)架構(gòu)設(shè)計_第2頁
第8章 系統(tǒng)架構(gòu)設(shè)計_第3頁
第8章 系統(tǒng)架構(gòu)設(shè)計_第4頁
第8章 系統(tǒng)架構(gòu)設(shè)計_第5頁
已閱讀5頁,還剩85頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

1、2022年6月23日星期四第1頁第8章 系統(tǒng)架構(gòu)設(shè)計o對于軟件系統(tǒng)來說,描述系統(tǒng)架構(gòu)一般涉及到兩個方面的內(nèi)容:業(yè)務(wù)架構(gòu)和軟件架構(gòu)。這兩方面內(nèi)容分別針對于人們對業(yè)務(wù)領(lǐng)域的理解和對系統(tǒng)領(lǐng)域的理解。這兩者是需要和諧統(tǒng)一的,前者從業(yè)務(wù)需求的角度出發(fā),理清物理結(jié)構(gòu)圖和邏輯結(jié)構(gòu)圖,劃分出每個子模塊。確定為什么要這么劃分,各個子模塊之間如何交互,每個子模塊具有哪些接口;后者從解決技術(shù)上討論,著重討論采用什么樣的技術(shù),如何分層,采用哪些好的技術(shù)特性,采用這些技術(shù)特性會為我們的工作帶來哪些好處,為什么要這么做等。2022年6月23日星期四第2頁第8章 系統(tǒng)架構(gòu)設(shè)計o8.1 業(yè)務(wù)架構(gòu)o8.2 業(yè)務(wù)架構(gòu)分析o8.3

2、 軟件架構(gòu)o8.4 軟件架構(gòu)設(shè)計o8.5 軟件架構(gòu)與框架o8.6 組件圖o8.7 部署圖o8.8 軟件架構(gòu)的“41”視圖模型o總結(jié)2022年6月23日星期四第3頁8.1 業(yè)務(wù)架構(gòu) o1. 問題引入問題引入n系統(tǒng)架構(gòu)一般涉及到兩個方面的內(nèi)容,其一是業(yè)務(wù)架構(gòu),其二是軟件架構(gòu)。人們常常會聽到軟件架構(gòu)這個詞,對軟件架構(gòu)的概念也有一些了解,但是,也許還有人對業(yè)務(wù)架構(gòu)這個詞比較陌生,那么,究竟什么是業(yè)務(wù)架構(gòu)呢? 2022年6月23日星期四第4頁8.1 業(yè)務(wù)架構(gòu)o2. 解答問題解答問題n業(yè)務(wù)架構(gòu)描述了業(yè)務(wù)領(lǐng)域主要的業(yè)務(wù)模塊及其組織結(jié)構(gòu)。業(yè)務(wù)架構(gòu)在先啟階段建立,在精化階段得以改進(jìn)。n業(yè)務(wù)架構(gòu)的目的是為業(yè)務(wù)領(lǐng)域

3、建立一個維護(hù)和擴(kuò)展的結(jié)構(gòu),描述業(yè)務(wù)的構(gòu)成。n業(yè)務(wù)架構(gòu)對我們理解客戶業(yè)務(wù),尤其是對軟件開發(fā)行業(yè)確定解決方案起著非常重要的作用。 2022年6月23日星期四第5頁8.1 業(yè)務(wù)架構(gòu)o3. 分析問題分析問題 n軟件開發(fā)一直在追求構(gòu)件化,就像建房子一樣來構(gòu)建系統(tǒng),用一塊一塊砌成不同形狀的磚頭來搭建自己想要的房子。在很多人看來,構(gòu)件化開發(fā)是技術(shù)問題。n技術(shù)架構(gòu)僅僅提供了您搭建房子的手段和方法,從可行性上給予您支持,您是否想過您砌成大大小小不同形狀的磚頭是什么呢?它們從何而來呢? 2022年6月23日星期四第6頁8.1 業(yè)務(wù)架構(gòu)nSAP是業(yè)界著名的ERP軟件產(chǎn)品,它之所以能夠做到通用,即使在不同行業(yè)間實施也

4、只需很小的開發(fā)工作量,絕大部分需求都是通過配置來完成的。不是因為SAP采用了多么先進(jìn)的技術(shù)架構(gòu),而是因為SAP把業(yè)務(wù)做到了極致,它已經(jīng)砌好了那些可以搭建不同業(yè)務(wù)平臺的各式各樣的磚塊。再復(fù)雜和迥異的需求,都可以用這些磚塊搭建出來。這些磚塊,就是業(yè)務(wù)架構(gòu)。 2022年6月23日星期四第7頁8.2 業(yè)務(wù)架構(gòu)分析o分析工作往往被模糊化,經(jīng)常的情況是需求弄清楚以后直接進(jìn)入設(shè)計階段,例如詳細(xì)的表結(jié)構(gòu)、類方法、屬性、頁面原型等,然后就進(jìn)入編碼階段了。那么分析與設(shè)計之間究竟存在什么樣的差別呢?n從工作任務(wù)上來說,分析做的是需求的計算機概念化;設(shè)計做的是計算機概念實例化。n從抽象層次上來說,分析高于實現(xiàn)語言、實

5、現(xiàn)方式;而設(shè)計則基于特定的語言和實現(xiàn)方式。因此分析的抽象層次高于設(shè)計的抽象層次。n從角色上來說,分析由系統(tǒng)分析師承擔(dān)的,而設(shè)計則由設(shè)計師來承擔(dān)。n從產(chǎn)出物上來說,分析的典型成果是分析模型和組件模型,設(shè)計的成果是設(shè)計類、程序包等。 2022年6月23日星期四第8頁8.2 業(yè)務(wù)架構(gòu)分析o8.2.1 客戶服務(wù)系統(tǒng)業(yè)務(wù)架構(gòu)分析o8.2.2 客戶服務(wù)系統(tǒng)子模塊劃分2022年6月23日星期四第9頁8.2.1 客戶服務(wù)系統(tǒng)業(yè)務(wù)架構(gòu)分析 o1. 問題引入問題引入n上面我們已經(jīng)了解了分析與設(shè)計的區(qū)別,接下來將討論客戶服務(wù)系統(tǒng)的業(yè)務(wù)架構(gòu)分析與實現(xiàn)。 2022年6月23日星期四第10頁8.2.1 客戶服務(wù)系統(tǒng)業(yè)務(wù)架

6、構(gòu)分析o2. 解答問題解答問題n客戶服務(wù)系統(tǒng)的業(yè)務(wù)架構(gòu)如圖8-1所示。2022年6月23日星期四第11頁8.2.1 客戶服務(wù)系統(tǒng)業(yè)務(wù)架構(gòu)分析電話咨詢客戶客服人員維護(hù)人員部門領(lǐng)導(dǎo)管理員投訴處理維護(hù)處理回訪處理信息查詢系統(tǒng)管理圖8-1 客戶服務(wù)系統(tǒng)業(yè)務(wù)架構(gòu) 2022年6月23日星期四第12頁8.2.1 客戶服務(wù)系統(tǒng)業(yè)務(wù)架構(gòu)分析o3. 分析問題分析問題n對客戶服務(wù)系統(tǒng)業(yè)務(wù)架構(gòu)的分析立足于對需求足夠理解的基礎(chǔ)之上,我們知道軟件開發(fā)中最重要的就是抽象,也就是采用OO(面向?qū)ο螅┑乃枷?,這個思想應(yīng)貫穿于軟件開發(fā)過程的始終。需求作為分析過程的輸入,需求分析后,產(chǎn)生用例模型和領(lǐng)域模型。用例模型和領(lǐng)域模型是業(yè)務(wù)

7、架構(gòu)的基礎(chǔ)。如果只有用例模型和領(lǐng)域模型而沒有業(yè)務(wù)架構(gòu),我們將“只見樹木不見森林”。因為不論是用例模型還是領(lǐng)域模型,它們都只是業(yè)務(wù)領(lǐng)域的一部分。如果說用例模型代表了一個軟件項目對需求的定義和理解,那么架構(gòu)就代表了一個軟件項目對系統(tǒng)的定義和理解。架構(gòu)將系統(tǒng)規(guī)劃為一些獨立的邏輯組件,各負(fù)其責(zé),這些組件通過標(biāo)準(zhǔn)的通信接口傳遞信息。一個架構(gòu)就是一個系統(tǒng)的骨架。 2022年6月23日星期四第13頁8.2.1 客戶服務(wù)系統(tǒng)業(yè)務(wù)架構(gòu)分析o通過整理客戶服務(wù)系統(tǒng)的需求,我們摘錄出系統(tǒng)的核心業(yè)務(wù)如下:n(1) 公司客戶通過電話完成對軟件產(chǎn)品或項目提出使用中的BUG或疑難問題以及投訴建議等內(nèi)容。n(2) 客戶服務(wù)人員

8、代理公司客戶將咨詢內(nèi)容錄入到客戶服務(wù)系統(tǒng)中,以供備案查詢。n(3) 部門領(lǐng)導(dǎo)負(fù)責(zé)處理相關(guān)客戶的投訴建議及故障申報,并視具體情況安排維護(hù)人員上門維護(hù)及安排客戶服務(wù)人員進(jìn)行回訪。n(4) 維護(hù)人員通過查詢?nèi)蝿?wù)安排,接受相關(guān)派工任務(wù),并填寫維護(hù)報告。n(5) 客戶服務(wù)人員通過查詢?nèi)蝿?wù)安排,接受相關(guān)回訪任務(wù),并填寫相關(guān)回訪報告。n(6) 系統(tǒng)管理員對系統(tǒng)基礎(chǔ)資料進(jìn)行維護(hù)管理。n(7) 部門領(lǐng)導(dǎo)可以查詢客戶服務(wù)人員及維護(hù)人員的工作完成情況。o由此分析出客戶服務(wù)系統(tǒng)的核心業(yè)務(wù)架構(gòu),用業(yè)務(wù)活動圖表示如圖8-2所示。 2022年6月23日星期四第14頁8.2.1 客戶服務(wù)系統(tǒng)業(yè)務(wù)架構(gòu)分析圖8-2 客戶服務(wù)核心

9、業(yè)務(wù)活動圖 2022年6月23日星期四第15頁8.2.1 客戶服務(wù)系統(tǒng)業(yè)務(wù)架構(gòu)分析o業(yè)務(wù)架構(gòu)與核心模型的關(guān)系可用圖8-3來表示。用例模型、領(lǐng)域模型所描述的業(yè)務(wù)過程,通過抽象可得到業(yè)務(wù)架構(gòu)。反過來,業(yè)務(wù)架構(gòu)對用例模型和領(lǐng)域模型則有著重要的指導(dǎo)作用。尤其在業(yè)務(wù)架構(gòu)改進(jìn)的時候,某些用例可能需要重組,領(lǐng)域模型也可能重構(gòu)。 2022年6月23日星期四第16頁8.2.1 客戶服務(wù)系統(tǒng)業(yè)務(wù)架構(gòu)分析圖8-3 業(yè)務(wù)架構(gòu)與核心模型的關(guān)系 2022年6月23日星期四第17頁8.2.1 客戶服務(wù)系統(tǒng)業(yè)務(wù)架構(gòu)分析o從圖8-3可以看出,實際上建立業(yè)務(wù)架構(gòu)的活動是一個反復(fù)迭代的過程,且非常類似于面向過程的結(jié)構(gòu)化設(shè)計,不同的

10、是,在結(jié)構(gòu)化設(shè)計方法中,得到的結(jié)果是子系統(tǒng)、模塊;而在面向?qū)ο蟮脑O(shè)計方法中,得到的結(jié)果則是業(yè)務(wù)組件。 2022年6月23日星期四第18頁8.2.2 客戶服務(wù)系統(tǒng)子模塊劃分客戶服務(wù)系統(tǒng)子模塊劃分o1. 問題引入問題引入n了解客戶服務(wù)系統(tǒng)的業(yè)務(wù)架構(gòu)圖之后,接下來我們應(yīng)該做的就是對客戶服務(wù)系統(tǒng)劃分模塊。 2022年6月23日星期四第19頁8.2.2 客戶服務(wù)系統(tǒng)子模塊劃分客戶服務(wù)系統(tǒng)子模塊劃分o2. 解答問題解答問題n客戶服務(wù)系統(tǒng)的子模塊如圖8-4所示。2022年6月23日星期四第20頁8.2.2 客戶服務(wù)系統(tǒng)子模塊劃分客戶服務(wù)系統(tǒng)子模塊劃分客服系統(tǒng)系統(tǒng)管理模塊客服業(yè)務(wù)處理模塊信息查詢統(tǒng)計模塊圖8-

11、4 客戶服務(wù)系統(tǒng)子模塊 2022年6月23日星期四第21頁8.2.2 客戶服務(wù)系統(tǒng)子模塊劃分客戶服務(wù)系統(tǒng)子模塊劃分o進(jìn)一步劃分模塊,系統(tǒng)管理模塊、客戶服務(wù)業(yè)務(wù)處理模塊、信息查詢統(tǒng)計模塊分別劃分為如圖8-5、圖8-6、圖8-7所示的子模塊。 2022年6月23日星期四第22頁8.2.2 客戶服務(wù)系統(tǒng)子模塊劃分客戶服務(wù)系統(tǒng)子模塊劃分系統(tǒng)管理模塊客戶資料管理系統(tǒng)用戶管理產(chǎn)品及項目管理經(jīng)驗庫管理系統(tǒng)維護(hù)管理圖8-5 系統(tǒng)管理模塊 2022年6月23日星期四第23頁8.2.2 客戶服務(wù)系統(tǒng)子模塊劃分客戶服務(wù)系統(tǒng)子模塊劃分客服業(yè)務(wù)處理模塊客戶咨詢管理咨詢投訴報障派工管理維護(hù)安排回訪安排圖8-6 客戶服務(wù)業(yè)

12、務(wù)處理模塊 2022年6月23日星期四第24頁8.2.2 客戶服務(wù)系統(tǒng)子模塊劃分客戶服務(wù)系統(tǒng)子模塊劃分信息查詢統(tǒng)計模塊基礎(chǔ)資料查詢統(tǒng)計客戶咨詢查詢統(tǒng)計派工單完成情況查詢統(tǒng)計報表查詢圖8-7 信息查詢統(tǒng)計模塊 2022年6月23日星期四第25頁8.2.2 客戶服務(wù)系統(tǒng)子模塊劃分客戶服務(wù)系統(tǒng)子模塊劃分o3. 分析問題分析問題n(1) 客戶服務(wù)系統(tǒng)子模塊n在得到業(yè)務(wù)架構(gòu)的基礎(chǔ)上,我們對客戶服務(wù)系統(tǒng)的業(yè)務(wù)進(jìn)行細(xì)分為以下三個子模塊:o 系統(tǒng)管理模塊。包括客戶基礎(chǔ)資料錄入修改,客戶服務(wù)系統(tǒng)用戶信息的添加、刪除和修改,軟件產(chǎn)品的基礎(chǔ)資料維護(hù),已上線項目的基礎(chǔ)資料維護(hù),F(xiàn)AQ經(jīng)驗庫的數(shù)據(jù)維護(hù)以及客戶服務(wù)系統(tǒng)本

13、身的維護(hù)管理等。o 客戶服務(wù)業(yè)務(wù)處理模塊。包括客戶咨詢服務(wù)處理、故障申報處理、投訴處理,部門領(lǐng)導(dǎo)派工處理,客戶服務(wù)人員回訪處理,維護(hù)人員上門處理等。o 信息查詢統(tǒng)計模塊。包括基礎(chǔ)資料查詢統(tǒng)計,客戶咨詢的查詢與統(tǒng)計,派工單完成情況,回訪報告,維護(hù)報告查詢統(tǒng)計以及相關(guān)報表的查詢等。 2022年6月23日星期四第26頁8.2.2 客戶服務(wù)系統(tǒng)子模塊劃分客戶服務(wù)系統(tǒng)子模塊劃分o(2) 各子模塊的功能n 系統(tǒng)管理模塊o客戶資料管理n客戶資料是客戶服務(wù)系統(tǒng)的根源,只有健全的客戶資料體系才能夠保證客戶服務(wù)有序地開展。主要包括錄入客戶資料、修改客戶資料、刪除客戶資料和查詢客戶資料等功能。o系統(tǒng)用戶管理n包括本

14、系統(tǒng)的所有使用者的信息資料管理及查詢。o產(chǎn)品管理n包括公司所有發(fā)布的軟件產(chǎn)品信息的管理及查詢。o項目管理n包括公司所承擔(dān)的各種軟件研發(fā)項目信息的管理及查詢。o經(jīng)驗庫管理n包括經(jīng)驗信息的管理及查詢。 2022年6月23日星期四第27頁8.2.2 客戶服務(wù)系統(tǒng)子模塊劃分客戶服務(wù)系統(tǒng)子模塊劃分n 客戶服務(wù)業(yè)務(wù)處理模塊。o客戶咨詢管理n包括客戶咨詢信息的管理及查詢。客戶咨詢服務(wù)活動如圖8-8所示。 2022年6月23日星期四第28頁 圖8-8 客戶咨詢服務(wù)活動圖 2022年6月23日星期四第29頁8.2.2 客戶服務(wù)系統(tǒng)子模塊劃分客戶服務(wù)系統(tǒng)子模塊劃分o派工管理n當(dāng)有客戶投訴及報障時,部門領(lǐng)導(dǎo)會立即對

15、投訴及報障的客戶作出快速反應(yīng),及時安排派工任務(wù)。對投訴的客戶安排客戶服務(wù)人員及時回訪處理;對報障的客戶安排維護(hù)人員進(jìn)行上門維護(hù)處理。派工活動圖如圖8-9所示。 2022年6月23日星期四第30頁 圖8-9 部門領(lǐng)導(dǎo)派工活動圖 2022年6月23日星期四第31頁8.2.2 客戶服務(wù)系統(tǒng)子模塊劃分客戶服務(wù)系統(tǒng)子模塊劃分n 信息查詢統(tǒng)計模塊o包括查詢統(tǒng)計基礎(chǔ)資料、客戶咨詢信息、派工單完成情況等信息,并可打印報表。 2022年6月23日星期四第32頁8.3 軟件架構(gòu)o1. 問題引入問題引入n經(jīng)過業(yè)務(wù)架構(gòu)的分析與建模,我們得到了許多業(yè)務(wù)構(gòu)件,要將這些業(yè)務(wù)構(gòu)件搭建起來需要了解軟件架構(gòu)的知識。那么什么是軟件

16、架構(gòu)呢? 2022年6月23日星期四第33頁8.3 軟件架構(gòu)o2. 解答問題解答問題n軟件架構(gòu)是一種思想,一個系統(tǒng)藍(lán)圖,是對軟件結(jié)構(gòu)組成的規(guī)劃和職責(zé)設(shè)定。一個軟件里有處理數(shù)據(jù)存儲的、處理業(yè)務(wù)邏輯的、處理頁面交互的、處理安全的等許多可邏輯劃分出來的部分。傳統(tǒng)的軟件并不區(qū)分這些,將它們?nèi)炕旌显谝欢纬绦蚶?。軟件架?gòu)的意義就是要將這些可邏輯劃分的部分獨立出來,用約定的接口和協(xié)議將它們有機地結(jié)合在一起,形成職責(zé)清晰、結(jié)構(gòu)明朗的軟件結(jié)構(gòu)。 2022年6月23日星期四第34頁8.3 軟件架構(gòu)o3. 分析問題分析問題n一個典型的軟件架構(gòu)包括兩個視角:廣度視角和深度視角。這兩個視角構(gòu)成對軟件架構(gòu)的“立體”描述

17、。廣度視角即是我們常說的軟件層次結(jié)構(gòu),它關(guān)注軟件的分層,規(guī)定每一層的職責(zé)以及層與層之間的通訊標(biāo)準(zhǔn)。一般使用包元素來描述。圖8-10展示了一個典型的多層架構(gòu)的層次模型。2022年6月23日星期四第35頁8.3 軟件架構(gòu)圖8-10 軟件層次的廣度視角架構(gòu)圖 2022年6月23日星期四第36頁8.3 軟件架構(gòu)n另一方面,軟件架構(gòu)還需要描述深度視角。所謂深度視角,是指廣度視角中每一層的詳細(xì)說明,它關(guān)注每一層以及每個部分的具體實現(xiàn)架構(gòu)。例如可以針對業(yè)務(wù)實體層進(jìn)行架構(gòu)描述,也可以針對XMLBean進(jìn)行架構(gòu)描述。圖8-11展示了業(yè)務(wù)實體層的深度視角視圖。 2022年6月23日星期四第37頁8.3 軟件架構(gòu)圖

18、8-11 軟件層次深度視角架構(gòu)圖 2022年6月23日星期四第38頁8.3 軟件架構(gòu)n廣度視角和深度視角將軟件架構(gòu)立體化了。層次構(gòu)成了廣度視角維度,而每一個層次的包、類的結(jié)構(gòu)構(gòu)成了深度視角維度。2022年6月23日星期四第39頁8.4 軟件架構(gòu)設(shè)計o1. 問題引入問題引入n軟件架構(gòu)設(shè)計就是要將我們在業(yè)務(wù)架構(gòu)中設(shè)計出來的業(yè)務(wù)構(gòu)件有機地結(jié)合在一起協(xié)調(diào)工作。那么客戶服務(wù)系統(tǒng)的軟件架構(gòu)是怎樣的呢? 2022年6月23日星期四第40頁8.4 軟件架構(gòu)設(shè)計o2. 解答問題解答問題n客戶服務(wù)系統(tǒng)軟件架構(gòu)圖如圖8-12所示。2022年6月23日星期四第41頁DBWebServicesDaoDB Control

19、JDBCWeb層用Struts框架,負(fù)責(zé)展現(xiàn)業(yè)務(wù)數(shù)據(jù)和人機交互,包括FormBean(ActionForm)和Action負(fù)責(zé)處自Web的Request,負(fù)責(zé)業(yè)務(wù)邏輯處理。接收來自Web的Request,將業(yè)務(wù)邏輯處理轉(zhuǎn)化成針對Value Object的增、刪、改、查,然后將處理完成的VO由Web展示給用戶Value ObjectValue Object是由Hibernate PO復(fù)合而成的一個POJO對象。針對特定的業(yè)務(wù)需求而設(shè)計。一個VO由多個PO組成,并可通過VO的getter和setter方法訪問實際PO值。VO是dao,services和web層之間的標(biāo)準(zhǔn)傳輸格式負(fù)責(zé)業(yè)務(wù)數(shù)據(jù)邏輯處理

20、。將Value Object分解成Hibernate PO交由DB Control處理,或?qū)O組合成Value Object交由Services處理。HibernateHibernate是符合Hibernate框架規(guī)范的POJO,一個PO對應(yīng)一張數(shù)據(jù)表。PO在DB Control層生成,在Dao層組合成VO圖8-12 客戶服務(wù)系統(tǒng)軟件架構(gòu)圖 2022年6月23日星期四第42頁8.4 軟件架構(gòu)設(shè)計o3. 分析問題分析問題n根據(jù)需求,客戶服務(wù)系統(tǒng)要求是B/S架構(gòu)的,即瀏覽器/服務(wù)器架構(gòu)。該架構(gòu)有許多優(yōu)點:客戶端無需安裝任何軟件,只要有瀏覽器就可以使用系統(tǒng),方便客戶服務(wù)人員能即時處理客戶問題。當(dāng)業(yè)

21、務(wù)架構(gòu)確定后,至于是選用.NET來實現(xiàn)還是選用J2EE來實現(xiàn)并不重要,主要依據(jù)開發(fā)團(tuán)隊的技術(shù)素質(zhì)而定,以期達(dá)到最小項目風(fēng)險和減少開發(fā)成本的目的。本節(jié)選用J2EE來描述客戶服務(wù)系統(tǒng)的軟件架構(gòu)分層模型,采用了MVC架構(gòu)體系,結(jié)合當(dāng)前使用最成熟的Struts + Spring + Hibernate框架,如圖8-13所示。2022年6月23日星期四第43頁8.4 軟件架構(gòu)設(shè)計 表示層 Struts-MVC Action, ActionForm, JSP, Struts-config, XML 等 業(yè)務(wù)層 Spring Transactions Hibernate Session Management

22、 Business Service Classes 永久層 Hibernate DataSource /connection pool Query Language 等 提交服務(wù) Dao 類 領(lǐng)域模型業(yè)務(wù)對象 圖8-13 Struts+Spring+Hibernate框架圖 2022年6月23日星期四第44頁8.4 軟件架構(gòu)設(shè)計nStruts + Spring + Hiberante框架的WEB應(yīng)用常常被擴(kuò)展成4個各負(fù)其責(zé)的層次:表示層(Presentation)、業(yè)務(wù)層(Business)、持久層(Persistence)、領(lǐng)域模型層(Domain Model)。前三層分別對應(yīng)于Struts

23、、Spring、Hibernate,而領(lǐng)域模型層則是由那些現(xiàn)實世界中的業(yè)務(wù)對象組成,如客戶、咨詢、回訪、投訴等等,它們是在上面三個層之間傳遞的對象。每層職責(zé)明確,彼此獨立,通過專門編寫的接口傳遞消息。 2022年6月23日星期四第45頁8.4 軟件架構(gòu)設(shè)計n客戶服務(wù)系統(tǒng)分為四個層次,其中WEB層采用Struts框架,Service和Dao采用Spring框架封裝客戶服務(wù)業(yè)務(wù)邏輯處理,DB Control層采用Hibernate框架。nVO(Value Object,值對象)和PO(Persistant Object,持久對象)之間的關(guān)系及傳遞如圖8-14所示。 2022年6月23日星期四第46

24、頁8.4 軟件架構(gòu)設(shè)計ServiceControlPOVORelationShip圖8-14 PO與VO之間實現(xiàn)關(guān)系 2022年6月23日星期四第47頁8.4 軟件架構(gòu)設(shè)計nPO可以看成是與數(shù)據(jù)庫中的表相映射的Java對象。一張數(shù)據(jù)庫表對應(yīng)一個Java對象。由Hibernate自動反轉(zhuǎn)生成,簡化Java與數(shù)據(jù)庫之間的操作。VO是由Hibernate PO復(fù)合而成的一個業(yè)務(wù)對象,用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞。RelationShip維護(hù)組成VO與多個PO之間的對應(yīng)關(guān)系。Hibernate可維護(hù)PO之間的一對多,一對一,多對多等關(guān)系,但這些關(guān)系是指數(shù)據(jù)庫之間的關(guān)系。Relationship管理的是非數(shù)

25、據(jù)庫的、業(yè)務(wù)邏輯要求的關(guān)系。ServiceControl是Service層訪問Dao層的接口。負(fù)責(zé)將PO組合成VO或?qū)O分解成PO。Service層通過ServiceControl來存取VO,同時將分解出的PO傳遞給DBControl。 2022年6月23日星期四第48頁8.4 軟件架構(gòu)設(shè)計n圖8-15以客戶服務(wù)系統(tǒng)查詢客戶來電咨詢記錄,同時顯示客戶資料信息為例,說明客戶服務(wù)系統(tǒng)架構(gòu)層次的動態(tài)實現(xiàn)。2022年6月23日星期四第49頁ServicesServiceControlDBControlRelationShipPOVO1: 查詢客戶咨詢記錄2: 查詢客戶咨詢記錄表3: 返回結(jié)果4: 組

26、成VO5: get方法6: set方法7: 返回來電記錄VO8: 根據(jù)來電記錄,查找客戶信息9: 查詢客戶資料10: 根據(jù)客戶ID外鍵11: 返回客戶資料ID12: 查詢客戶資料13: 組成VO14: set方法15: 返回客戶咨詢記錄及客戶信息圖8-15 客戶服務(wù)系統(tǒng)查詢客戶來電咨詢的動態(tài)實現(xiàn) 2022年6月23日星期四第50頁8.4 軟件架構(gòu)設(shè)計o簡要說明:n客戶服務(wù)人員首先發(fā)出“查詢客戶咨詢記錄”命令,系統(tǒng)查找到客戶咨詢記錄相關(guān)信息,并返回給ServiceControl,同時根據(jù)記錄在該表中的客戶資料ID的外鍵信息,到客戶資料信息表中查找相關(guān)客戶資料的詳細(xì)信息,最后將客戶資料信息和客戶來

27、電記錄信息組合成VO返回到Service層,展示給客戶服務(wù)人員。 2022年6月23日星期四第51頁8.4 軟件架構(gòu)設(shè)計o下面分別對Struts、Spring和Hibernate作簡要介紹。2022年6月23日星期四第52頁8.4 軟件架構(gòu)設(shè)計o(1) StrutsnStruts由一組相互協(xié)作的類、Servlet以及豐富的標(biāo)記庫(jsp tag lib)和獨立于該框架工作的實用程序類(Validator)組成。nStruts有其自己的控制器(Controller),同時整合了其它的一些技術(shù)去實現(xiàn)模型層(Model)和視圖層(View)。在模型層,Struts可以很容易地與數(shù)據(jù)訪問技術(shù)相結(jié)合,包

28、括EJB、JDBC和Object Relation Bridge。在視圖層,Struts能夠與JSP、Velocity Templates和XSL等等這些表示層組件想結(jié)合。nStruts Framework是MVC 模式的體現(xiàn),下面我們就分別從模型、視圖和控制來看看Struts的體系結(jié)構(gòu)(Architecture)。Struts Framework的體系結(jié)構(gòu)響應(yīng)客戶請求的時候,各個部分的工作原理如圖8-16所示。2022年6月23日星期四第53頁8.4 軟件架構(gòu)設(shè)計圖8-16 Struts工作原理圖 2022年6月23日星期四第54頁8.4 軟件架構(gòu)設(shè)計o(2) SpringnSpring 是

29、一個開源框架,是為了解決企業(yè)級應(yīng)用程序開發(fā)的復(fù)雜性問題而創(chuàng)建的??蚣艿闹饕獌?yōu)勢之一就是其分層架構(gòu),分層架構(gòu)允許您選擇使用哪一個組件,同時為 J2EE 應(yīng)用程序開發(fā)提供集成的框架。nSpring 框架是一個分層架構(gòu),由 7 個定義良好的模塊組成。Spring 模塊構(gòu)建在核心容器之上,核心容器定義了創(chuàng)建、配置和管理 Bean 的方式,如圖8-17所示。2022年6月23日星期四第55頁8.4 軟件架構(gòu)設(shè)計圖8-17 Spring框架分層架構(gòu)圖 2022年6月23日星期四第56頁8.4 軟件架構(gòu)設(shè)計o(3) HibernatenHibernate是一個免費的開源Java包,它使得與關(guān)系數(shù)據(jù)庫打交道變

30、得十分輕松,它是一個面向Java環(huán)境的對象/關(guān)系數(shù)據(jù)庫映射工具。對象/關(guān)系數(shù)據(jù)庫映射(object/relational mappin,ORM)這個術(shù)語表示一種技術(shù),用來把對象模型表示的對象映射到基于SQL的關(guān)系模型數(shù)據(jù)結(jié)構(gòu)中去。Hibernate不僅管理Java類到數(shù)據(jù)庫表的映射(包括Java數(shù)據(jù)類型到SQL數(shù)據(jù)類型的映射),還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,可以大幅度減少開發(fā)時人工使用SQL和JDBC處理數(shù)據(jù)的時間。 2022年6月23日星期四第57頁8.4 軟件架構(gòu)設(shè)計n事實上,在一個基于數(shù)據(jù)庫的Web系統(tǒng)中,建立數(shù)據(jù)庫連接的操作將是系統(tǒng)中代價最大的操作之一。很多時候,可能系統(tǒng)的速度瓶頸就

31、在于此。Hibernate的目標(biāo)是對于開發(fā)者通常的數(shù)據(jù)持久化相關(guān)的編程任務(wù),解放其中的95,對于那些在基于Java的中間層應(yīng)用中,它們實現(xiàn)面向?qū)ο蟮臉I(yè)務(wù)模型和商業(yè)邏輯的應(yīng)用,Hibernate是最有用的。不管怎樣,Hibernate一定可以幫助我們消除或者包裝那些針對特定廠商的SQL代碼,并且?guī)臀覀儼呀Y(jié)果集從表格式的表示形式轉(zhuǎn)換到一系列的對象中去。 2022年6月23日星期四第58頁8.5 軟件架構(gòu)與框架o1. 問題引入問題引入n現(xiàn)實中,很多人把架構(gòu)和框架搞混,有的人認(rèn)為架構(gòu)和框架就是同一個東西,那么究竟兩者是否相同,如果不同,又有什么區(qū)別呢? 2022年6月23日星期四第59頁8.5 軟件架

32、構(gòu)與框架o2. 解答問題解答問題n架構(gòu)的英文原文是Architecture,而框架則是Framework。顯然是兩個完全不同的詞。n從技術(shù)上講,IT有一個職業(yè)是架構(gòu)師,代表了軟件技術(shù)人員最高的職業(yè),卻從沒有聽說過有軟件框架師的,所以,軟件架構(gòu)和軟件框架是兩回事。n架構(gòu)是一種思想,一個系統(tǒng)藍(lán)圖,是對系統(tǒng)高層次的定義和描述??蚣苁轻槍δ硞€問題領(lǐng)域的通用解決方案,它通常集成了最佳實踐和可復(fù)用的基礎(chǔ)結(jié)構(gòu),對開發(fā)工作起到減少工作量、指導(dǎo)和規(guī)范作用。2022年6月23日星期四第60頁8.5 軟件架構(gòu)與框架o3. 分析問題分析問題nMVC是一種設(shè)計思想,它將應(yīng)用程序劃分為實體、控制和視圖三個邏輯部件,因此它

33、是一個軟件架構(gòu)。nStruts,JSF,WEBWork等開源項目則分別以自己的方式實現(xiàn)了這一架構(gòu),提供了一個半成品,幫助開發(fā)人員迅速地開發(fā)一個符合MVC架構(gòu)的應(yīng)用程序,因此可以說我們采用了Struts或JSF或WEBWork軟件框架,開發(fā)出了符合MVC架構(gòu)的應(yīng)用程序。 2022年6月23日星期四第61頁8.6 組件圖o1. 問題引入問題引入n在軟件建模過程中,使用用例圖可以推斷系統(tǒng)希望的行為;使用類圖可以描述系統(tǒng)中的詞匯;使用順序圖、組件圖、狀態(tài)圖和活動圖可以說明這些詞匯中的事物如何相互作用以完成某些行為。在完成系統(tǒng)的邏輯設(shè)計之后,下一步要定義設(shè)計的物理實現(xiàn),在面向?qū)ο笙到y(tǒng)的物理方面進(jìn)行建模時

34、要用到兩種圖:組件圖和部署圖。其中,使用組件圖能夠可視化物理組件以及它們之間的關(guān)系,并描述其構(gòu)造細(xì)節(jié)。那么什么是組件圖?客戶服務(wù)系統(tǒng)的組件圖是怎樣的? 2022年6月23日星期四第62頁8.6 組件圖o2. 解答問題解答問題n組件圖(Component Diagram)描述了軟件的各種組件和它們之間的依賴關(guān)系。組件圖中通常包含3種元素:組件(Component)、接口(Interface)和依賴關(guān)系(Dependency)。每個組件實現(xiàn)一些接口,并使用另一些接口。如果組件間的依賴關(guān)系與接口有關(guān),那么可以被具有同樣接口的其他組件所替代。n(1) 客戶服務(wù)系統(tǒng)中的頁面級組件圖,如圖8-19所示。

35、2022年6月23日星期四第63頁DataServiceCustomerServiceSystemConsultationMaintainCustomerInfoMaintainSystemServiceLoginExperienceBaseMaintainUserInfoMaintainMissionMaintain圖8-19 客戶服務(wù)系統(tǒng)中的頁面級組件圖 2022年6月23日星期四第64頁8.6 組件圖n(2) 客戶服務(wù)系統(tǒng)的代碼級組件圖(部分組件),如圖8-20所示。2022年6月23日星期四第65頁8.6 組件圖CustomerCustomerTelCustomerTypeCustom

36、erVisitOperatorProductTelStatusTelTypeVisitStatusVisitType2022年6月23日星期四第66頁8.6 組件圖IBasedaoIBasedaoBaseDaoMenuDAOMenuPurviewDAOOperatorRoleDAOPurviewDAORoleDAORoleMenuDAOOperatorDAO圖8-20 客戶服務(wù)系統(tǒng)中的代碼級組件圖 2022年6月23日星期四第67頁8.6 組件圖o3. 分析問題分析問題n所謂業(yè)務(wù)架構(gòu),實際上就是在對需求細(xì)致分析和深刻理解的基礎(chǔ)上,抽象出若干相對獨立的業(yè)務(wù)模塊,形成自洽的業(yè)務(wù)組件。這些組件對內(nèi)可

37、以完成一個或一組特定的業(yè)務(wù)功能,對外則有著完善的接口,可以與其他組件共同組成更為復(fù)雜的業(yè)務(wù)功能,直至構(gòu)成整個系統(tǒng)。 2022年6月23日星期四第68頁8.6 組件圖n組件(Component)是定義了良好接口的物理實現(xiàn)單元,是系統(tǒng)中可替換的物理部件。一般情況下,組件表示將類、接口等邏輯元素打包而形成的物理模塊。它可以是軟件代碼(源代碼、二進(jìn)制代碼或可執(zhí)行代碼)或其等價物(如腳本或命令文件)。在UML中,組件用一個左側(cè)帶有兩個突出小矩形的矩形框來表示,如圖8-20中的標(biāo)有“Customer”的組件,其中Customer是組件名。組件之間的虛線箭頭表示組件間的依賴關(guān)系。將組件通過一條實線相連的圓圈

38、被稱為接口,如圖8-20中的“IBasedao”即為接口。 2022年6月23日星期四第69頁8.6 組件圖n建模過程中,我們通過組件這一元素對分析設(shè)計過程中的類、接口等進(jìn)行邏輯分類,一個組件表達(dá)軟件的一組功能。組件在很多方面與類相同:兩者都有名稱;都可以實現(xiàn)一組接口;都可以參與依賴關(guān)系;都可以被嵌套;都可以有實例;都可以參與交互。但是類和組件之間也存在著差別:類描述了軟件設(shè)計的邏輯組織和意圖,而組件則描述軟件設(shè)計的物理實現(xiàn),即每個組件體現(xiàn)了系統(tǒng)設(shè)計中特定類的實現(xiàn)。 2022年6月23日星期四第70頁8.6 組件圖n組件圖的一般建模步驟如下:o(1) 確定組件。首先要分解系統(tǒng),考慮有關(guān)系統(tǒng)的組

39、成管理、軟件的重用和物理節(jié)點的配置等因素,把關(guān)系密切的可執(zhí)行程序和對象庫分別歸入組件,找出相應(yīng)的對象類、接口等模型元素。o(2) 對組件加上必要的構(gòu)造型。可以使用UML的標(biāo)準(zhǔn)構(gòu)造型executable、library、table、file、document,或自定義新的構(gòu)造型,說明組件的性質(zhì)。o(3) 確定組件之間的關(guān)系。最常見的組件之間的關(guān)系是接口依賴。一個組件使用某個接口,另一個組件實現(xiàn)該接口。o(4) 必要時把組件組織成包。組件和對象類等模型元素一樣可以組織成包,如圖8-21所示的客戶服務(wù)系統(tǒng)組件包。o (5) 繪制組件圖。 2022年6月23日星期四第71頁圖8-21 客戶服務(wù)系統(tǒng)的組

40、件結(jié)構(gòu) 2022年6月23日星期四第72頁8.7 部署圖o1. 問題引入問題引入n上節(jié)提到對系統(tǒng)的物理方面進(jìn)行建模時要用到兩種圖:組件圖和部署圖,并且已經(jīng)對組件圖做了介紹,本節(jié)將介紹部署圖的概念及客戶服務(wù)系統(tǒng)的部署圖。 2022年6月23日星期四第73頁8.7 部署圖o2. 解答問題解答問題n部署圖(Deployment Diagram)描述了運行軟件的系統(tǒng)中硬件和軟件的物理結(jié)構(gòu),即系統(tǒng)執(zhí)行處理過程中系統(tǒng)資源的部署情況以及軟件到這些資源的映射。部署圖中通常包含兩種元素:節(jié)點(Node)和關(guān)聯(lián)(Association)??蛻舴?wù)系統(tǒng)的部署圖,如圖8-22所示。 2022年6月23日星期四第74頁

41、數(shù)據(jù)庫服務(wù)器應(yīng)用服務(wù)器系統(tǒng)為三層架構(gòu),應(yīng)用服務(wù)器負(fù)責(zé)整個系統(tǒng)的總體協(xié)調(diào)工作,數(shù)據(jù)庫服務(wù)器負(fù)責(zé)數(shù)據(jù)管理。管理員登錄維護(hù)人員登錄部門領(lǐng)導(dǎo)登錄客服人員登錄圖8-22 客戶服務(wù)系統(tǒng)部署圖 2022年6月23日星期四第75頁8.7 部署圖o3. 分析問題分析問題n部署圖考慮應(yīng)用程序的物理部署,如網(wǎng)絡(luò)布局和組件在網(wǎng)絡(luò)上的位置的問題。部署圖包含處理器、設(shè)備、進(jìn)程和處理器與設(shè)備之間的連接。這一切都顯示在部署圖上。每個系統(tǒng)只有一個部署圖,因此每個Rose模型也只有一個部署圖。 2022年6月23日星期四第76頁8.7 部署圖n節(jié)點(Node)是在運行時代表計算資源的物理元素。它通常擁有一些內(nèi)存,并具有處理能力。

42、節(jié)點的確定可以通過查看對實現(xiàn)系統(tǒng)有用的硬件資源來完成,這需要從能力(如計算能力,內(nèi)存大小等)和物理位置(要求在所有需要使用該系統(tǒng)的地理位置都可以訪問該系統(tǒng))兩方面來考慮。n 在UML中,節(jié)點用一個立方體來表示,如圖8-22所示。在實際的建模過程中,可以把節(jié)點分為兩種:處理器(Processor)和設(shè)備(Device)。處理器是能夠執(zhí)行軟件、具有計算能力的節(jié)點,服務(wù)器、工作站和其他具有處理能力的機器都是處理器。在UML中,處理器的符號如圖8-23所示。而設(shè)備是沒有計算能力的節(jié)點,通常情況下都是其接口為外部提供某種服務(wù),比如啞終端、打印機和掃描儀等都是屬于設(shè)備。在UML中,設(shè)備的符號如圖8-24所

43、示。 2022年6月23日星期四第77頁8.7 部署圖處理器設(shè)備圖8-23 處理器 圖8-24 設(shè)備 2022年6月23日星期四第78頁8.7 部署圖n部署圖中另一元素是關(guān)聯(lián)關(guān)系。關(guān)聯(lián)關(guān)系(Association)表示各節(jié)點之間通信路徑。在UML中,部署圖中的關(guān)聯(lián)關(guān)系的表示方法與類圖關(guān)系類似,都是一條實線。在連接硬件時通常關(guān)心節(jié)點之間是如何連接的(如以太網(wǎng)、令牌環(huán)、并行、TCP或USB等)。因此關(guān)聯(lián)關(guān)系一般不使用名稱,而是使用構(gòu)造型,如、等。圖8-25所示顯示的是PC機的部署圖。該部署圖包含了兩個處理器和四個設(shè)備,處理器包括Server(網(wǎng)絡(luò)服務(wù)器)和PC(主機)。設(shè)備包括Mouse(鼠標(biāo))、

44、Keyboard(鍵盤)、Monitor(顯示器)和Modem(調(diào)制解調(diào)器)。其中,Server和Modem之間通過Ethernet(以太網(wǎng))連接。 2022年6月23日星期四第79頁8.7 部署圖ServerModemPCMouseMonitorKeyboard圖8-25 關(guān)聯(lián)關(guān)系 2022年6月23日星期四第80頁8.7 部署圖o部署圖一般用于對系統(tǒng)的實現(xiàn)視圖建模,建模的時候要找出系統(tǒng)中的節(jié)點以及節(jié)點之間的關(guān)聯(lián)關(guān)系。一般的建模步驟如下:n(1) 確定節(jié)點。注意:標(biāo)示系統(tǒng)中的硬件設(shè)備,包括大型主機、服務(wù)器、前端機、網(wǎng)絡(luò)設(shè)備、輸入/輸出設(shè)備等。一個處理機是一個節(jié)點,它具有處理功能,能夠執(zhí)行一個

45、組件;一個設(shè)備也是一個節(jié)點,它沒有處理功能,但它是系統(tǒng)和現(xiàn)實世界的接口。n(2) 對節(jié)點加上必要的構(gòu)造型??梢允褂肬ML的標(biāo)準(zhǔn)構(gòu)造型或自定義新的構(gòu)造型,說明節(jié)點的性質(zhì)。2022年6月23日星期四第81頁8.7 部署圖n(3) 確定連接關(guān)系。這是關(guān)鍵步驟。部署圖中的連接關(guān)系包括節(jié)點與節(jié)點之間的連接,節(jié)點與組件之間的連接,組件與組件之間的連接,可以使用標(biāo)準(zhǔn)構(gòu)造型或自定義新的構(gòu)造型說明聯(lián)系的性質(zhì)。把系統(tǒng)的組件如可執(zhí)行程序,動態(tài)連接庫等分配到節(jié)點上,并確定節(jié)點與節(jié)點之間,節(jié)點與組件之間,組件與組件之間的連接關(guān)系,以及它們的性質(zhì)。n(4) 繪制部署圖。2022年6月23日星期四第82頁8.7 部署圖o在實際應(yīng)用中,并不是所有的軟件系統(tǒng)都需要繪制部署圖。如果要開發(fā)的軟件系統(tǒng)只需要運行在一臺計算機上,且只使用此計算機上已經(jīng)由操作系統(tǒng)管理的標(biāo)準(zhǔn)設(shè)備(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論