概要設(shè)計(jì)建模指南_第1頁(yè)
概要設(shè)計(jì)建模指南_第2頁(yè)
概要設(shè)計(jì)建模指南_第3頁(yè)
概要設(shè)計(jì)建模指南_第4頁(yè)
概要設(shè)計(jì)建模指南_第5頁(yè)
已閱讀5頁(yè),還剩123頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第三章系統(tǒng)概要設(shè)計(jì)中的架構(gòu)設(shè)計(jì)于千城yu_computer綱§3.1

概要設(shè)計(jì)§3.2軟件架構(gòu)設(shè)計(jì)§3.3系統(tǒng)架構(gòu)實(shí)踐21、什么是系統(tǒng)設(shè)計(jì) 所謂系統(tǒng)設(shè)計(jì)就是通過(guò)某種特定的平臺(tái),而達(dá)到完成項(xiàng)目的整體軟件的功能和性能。 從工程管理的角度來(lái)看,軟件設(shè)計(jì)分兩步完成。(1)概要設(shè)計(jì)(靜態(tài)結(jié)構(gòu)) 將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu)。劃分出組成系統(tǒng)的物理元素:程序、數(shù)據(jù)庫(kù)、過(guò)程、文件等。(2)詳細(xì)設(shè)計(jì)(動(dòng)態(tài)結(jié)構(gòu)) 通過(guò)對(duì)結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法、關(guān)鍵性問(wèn)題的解決等。

一、系統(tǒng)設(shè)計(jì)

3結(jié)構(gòu)4為什么要進(jìn)行系統(tǒng)設(shè)計(jì)

對(duì)于用例的分析我們可以產(chǎn)生一個(gè)分析模型,但是我們很少有直接根據(jù)這個(gè)分析模型去完成程序的實(shí)現(xiàn)。為什么?首先我們應(yīng)該了解用例得到的分析模型,只是表達(dá)了系統(tǒng)中的一些關(guān)鍵性的概念,而不能表達(dá)系統(tǒng)中的性能和系統(tǒng)的外觀。同時(shí)分析模型往往對(duì)于系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)來(lái)說(shuō)又往往過(guò)于簡(jiǎn)單,復(fù)用和調(diào)試等等都不能在這個(gè)模型中被考慮完成。 因此,我們有必要對(duì)前面的分析模型再進(jìn)一步地進(jìn)行設(shè)計(jì),以最終產(chǎn)生出我們系統(tǒng)的設(shè)計(jì)模型

我們不要幻想直接把分析類(lèi)圖畫(huà)好后,就直接按照其去編碼。5分析和設(shè)計(jì)應(yīng)該是合作的設(shè)計(jì)中所需要的各種信息,主要來(lái)自于分析。分析面向問(wèn)題,是明確動(dòng)力的過(guò)程,重在理解和翻譯,靈活性高。設(shè)計(jì)面向方案,是排除阻力的過(guò)程,重在精化和適應(yīng),受約束大。從整體上看,分析和設(shè)計(jì)的對(duì)立是保障問(wèn)題和方案趨于一致的基本動(dòng)力。就像兩個(gè)相反方向的張力,使軟件朝著正確的方向前進(jìn)。6軟件設(shè)計(jì)的“3W”原則Who

為誰(shuí)設(shè)計(jì),用戶是誰(shuí)What

要解決用戶的哪些問(wèn)題----功能方面、性能方面Why

為什么要解決這些問(wèn)題----為用戶帶來(lái)價(jià)值、降低開(kāi)發(fā)方的成本等7在什么時(shí)期進(jìn)行概要設(shè)計(jì)(結(jié)構(gòu)設(shè)計(jì))在需求“明確”并對(duì)需求進(jìn)行域建模之后,要做概要設(shè)計(jì)概要設(shè)計(jì)對(duì)后面的開(kāi)發(fā)、測(cè)試、實(shí)施、維護(hù)工作起到關(guān)鍵性的影響。概要設(shè)計(jì)的重要性主要體現(xiàn)在它是把需求轉(zhuǎn)化為軟件系統(tǒng)的最重要的環(huán)節(jié),并且系統(tǒng)設(shè)計(jì)的優(yōu)劣在根本上決定了軟件系統(tǒng)的質(zhì)量。8概要設(shè)計(jì)中所涉及的主要內(nèi)容(1)制定規(guī)范代碼體系、接口規(guī)約、命名個(gè)風(fēng)格等規(guī)則規(guī)定設(shè)計(jì)文檔的編制標(biāo)準(zhǔn)。規(guī)定與硬件、操作系統(tǒng)的接口規(guī)約,命名規(guī)則

因?yàn)?,這些是項(xiàng)目小組今后共同開(kāi)發(fā)的基礎(chǔ)。并且使整個(gè)軟件開(kāi)發(fā)工作可以協(xié)調(diào)有序地進(jìn)行。(2)體系結(jié)構(gòu)設(shè)計(jì)(架構(gòu)設(shè)計(jì)) 體系結(jié)構(gòu)是對(duì)復(fù)雜事物的一種抽象,如C/S和B/W/S結(jié)構(gòu)。(3)劃分系統(tǒng)中的各個(gè)模塊及組件類(lèi)的設(shè)計(jì)根據(jù)用戶的需求實(shí)現(xiàn)從功能上來(lái)劃分各個(gè)功能模塊,在模塊設(shè)計(jì)中保持“功能獨(dú)立---單一職責(zé)原則SRP”是模塊化設(shè)計(jì)的基本原則。因?yàn)?,“功能?dú)立”的模塊可以降低開(kāi)發(fā)、測(cè)試、維護(hù)等階段的代價(jià)。

9概要設(shè)計(jì)中所涉及的主要內(nèi)容(4)數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)設(shè)計(jì)高效率的程序是基于良好的數(shù)據(jù)結(jié)構(gòu)與算法,而不是基于編程小技巧的。一般說(shuō)來(lái),數(shù)據(jù)結(jié)構(gòu)與算法就是一類(lèi)數(shù)據(jù)的表示及其相關(guān)的操作。

確定軟件涉及的文件系統(tǒng)的結(jié)構(gòu)以及數(shù)據(jù)庫(kù)的模式、子模式,進(jìn)行數(shù)據(jù)完整性和安全性的設(shè)計(jì),并確定輸入,輸出文件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)

(5)數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)(6)其它----如可靠性、安全性設(shè)計(jì)等10概要設(shè)計(jì)中所涉及的系統(tǒng)設(shè)計(jì)的一些基本的原則(1)先進(jìn)性和實(shí)用性(2)可靠性和開(kāi)放性(3)可維護(hù)性和可伸縮性(4)可移植性11概要設(shè)計(jì)的重要輸出(1)概要設(shè)計(jì)說(shuō)明書(shū)編碼規(guī)范:信息形式、接口規(guī)約、命名規(guī)則;物理模型:組件圖、配置圖;不同角度的構(gòu)架視圖:用例視圖、邏輯視圖、進(jìn)程視圖、部署視圖、實(shí)施視圖、數(shù)據(jù)視圖(可選);系統(tǒng)總體布局:哪些部分組成、各部分在物理上、邏輯上的相互關(guān)系;(2)數(shù)據(jù)庫(kù)設(shè)計(jì)說(shuō)明書(shū)(3)用戶手冊(cè)(4)制定初步的測(cè)試計(jì)劃和方案

12概要設(shè)計(jì)說(shuō)明書(shū)參考格式13概要設(shè)計(jì)說(shuō)明書(shū)參考格式14概要設(shè)計(jì)說(shuō)明書(shū)參考格式15概要設(shè)計(jì)說(shuō)明書(shū)參考格式16概要設(shè)計(jì)說(shuō)明書(shū)參考格式17概要設(shè)計(jì)階段的工作重點(diǎn)(1)工作的重點(diǎn)內(nèi)容是設(shè)計(jì)軟件的體系結(jié)構(gòu)(2)核心問(wèn)題-----能否使用重復(fù)的體系結(jié)構(gòu)模式也就是能否達(dá)到結(jié)構(gòu)級(jí)的軟件重用---即能否在不同的軟件體系中,使用同一體系結(jié)構(gòu)。(3)

這個(gè)階段是系統(tǒng)架構(gòu)師發(fā)揮作用的主要階段。18提綱§3.1概要設(shè)計(jì)§3.2

軟件架構(gòu)設(shè)計(jì)

§3.3系統(tǒng)架構(gòu)實(shí)踐19軟件架構(gòu)的一般概念(1)什么是架構(gòu)-----在IT,架構(gòu)普遍指通過(guò)某種特定的平臺(tái),而達(dá)到完成整體軟件的功能的設(shè)計(jì)過(guò)程。(2)Architecture 其英文的本意是來(lái)源于建筑行業(yè)的建筑藝術(shù)、建筑(風(fēng)格)和結(jié)構(gòu)。 就像高樓大廈的鋼骨結(jié)構(gòu),將無(wú)數(shù)個(gè)“Part”

組合成為和諧的“Whole”20架構(gòu)是一組有關(guān)如下要素的重要決策(1)軟件系統(tǒng)的組織構(gòu)成系統(tǒng)的結(jié)構(gòu)化元素的選擇接口和它們相互協(xié)作的行為的選擇結(jié)構(gòu)化元素和行為元素組合成粒度更大的子系統(tǒng)的方式的選擇(2)指導(dǎo)這一組織(元素及其接口、協(xié)作和組合方式)的架構(gòu)風(fēng)格的選擇

21體系結(jié)構(gòu)關(guān)注的問(wèn)題體現(xiàn)在“不變”因素上體系結(jié)構(gòu)從更高的層面上考慮問(wèn)題-----關(guān)注的問(wèn)題就體現(xiàn)在“不變”因素上體系結(jié)構(gòu)一般關(guān)心應(yīng)用程序的模式,更加體現(xiàn)在通過(guò)技術(shù)去解決這些業(yè)務(wù)差異帶來(lái)的影響。比如,關(guān)心是否是分布式應(yīng)用程序,關(guān)心系統(tǒng)分層是如何設(shè)計(jì),也關(guān)心性能和安全----因此在這樣的情況之下,會(huì)考慮集群,負(fù)載平衡,故障遷移等等一系列技術(shù)的使用。22系統(tǒng)架構(gòu)是一個(gè)軟件系統(tǒng)從整體到部分的最高層次的劃分一個(gè)系統(tǒng)通常是由元件組成的,而這些元件如何形成、相互之間如何發(fā)生作用,則是關(guān)于這個(gè)系統(tǒng)本身結(jié)構(gòu)的重要信息。詳細(xì)地說(shuō),就是要包括:架構(gòu)元件(ArchitectureComponent)

架構(gòu)元件,也就是組成系統(tǒng)的核心"磚瓦"聯(lián)結(jié)器(Connector)

聯(lián)結(jié)器描述這些元件之間通訊的路徑、通訊的機(jī)制、通訊的預(yù)期結(jié)果任務(wù)流(Task-flow)。任務(wù)流描述系統(tǒng)如何使用這些元件和聯(lián)結(jié)器完成某一項(xiàng)需求。23在軟件開(kāi)發(fā)中,架構(gòu)既可以是名詞,也可以是動(dòng)詞(1)架構(gòu)作為名詞來(lái)理解 是指提供一個(gè)統(tǒng)一的共享的框架或者是Framework,這種架構(gòu)事實(shí)上是系統(tǒng)的一個(gè)層,這里的架構(gòu)是名詞。(2)架構(gòu)作為動(dòng)詞來(lái)理解 是指設(shè)計(jì)構(gòu)造系統(tǒng)或者是Archiecture,這里的架構(gòu)更多的是動(dòng)詞(此時(shí)的架構(gòu)一部分是調(diào)研工作,一部分是設(shè)計(jì)等工作)

24當(dāng)做名詞時(shí),也稱(chēng)軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)至少有十幾種思想流派。Zachman框架開(kāi)放分布式處理領(lǐng)域分析Rational4+1視圖模型軟件體系結(jié)構(gòu)風(fēng)格供應(yīng)商驅(qū)動(dòng)的方案SunEnterpriseJavaBeansMS.Net體系25軟件體系結(jié)構(gòu)風(fēng)格MVC風(fēng)格管道-過(guò)濾器風(fēng)格客戶-服務(wù)器風(fēng)格層次系統(tǒng)倉(cāng)儲(chǔ)(數(shù)據(jù)庫(kù)和黑板)風(fēng)格面向?qū)ο箫L(fēng)格基于消息廣播且面向圖形用戶界面的Chiron2風(fēng)格基于事件的隱式調(diào)用風(fēng)格26當(dāng)做動(dòng)詞時(shí),指進(jìn)行架構(gòu)設(shè)計(jì)27沒(méi)有進(jìn)行架構(gòu)設(shè)計(jì)的結(jié)果28軟件架構(gòu)在軟件系統(tǒng)開(kāi)發(fā)中的位置(1)一般的位置架構(gòu)設(shè)計(jì)往往發(fā)生在細(xì)節(jié)需求尚未完成的時(shí)候進(jìn)行的。因此,隨著項(xiàng)目的進(jìn)行,需求還可能細(xì)化,可能變更。原先的架構(gòu)肯定會(huì)有不足或錯(cuò)誤的地方。為了實(shí)現(xiàn)不斷的改進(jìn),我們將在開(kāi)發(fā)流程中引入迭代的概念。

(2)必要性---架構(gòu)是軟件設(shè)計(jì)中非常重要的一個(gè)環(huán)節(jié)

在軟件開(kāi)發(fā)的過(guò)程中,只要需求和架構(gòu)確定之后,我們認(rèn)為這個(gè)軟件也就基本上可以定型了-----這就好比骨骼確定了,這個(gè)人的體形就不會(huì)有很大的變化一樣!29軟件架構(gòu)設(shè)計(jì)的一些特點(diǎn)處于軟件系統(tǒng)建設(shè)的上游需要全面考慮多方面的因素對(duì)于同一個(gè)問(wèn)題,可以有多種設(shè)計(jì)結(jié)果是在各種制約條件下取得的較好折衷方案科學(xué)+經(jīng)驗(yàn)+藝術(shù)“系統(tǒng)架構(gòu)”往往被濫用需求分析架構(gòu)設(shè)計(jì)系統(tǒng)設(shè)計(jì)系統(tǒng)開(kāi)發(fā)測(cè)試上線30架構(gòu)設(shè)計(jì)的重要性建造一個(gè)系統(tǒng)所作出的最高層次的、以后難以更改的,商業(yè)的和技術(shù)的決定。在建造一個(gè)系統(tǒng)之前會(huì)有很多的重要決定需要事先作出,而一旦系統(tǒng)開(kāi)始進(jìn)行詳細(xì)設(shè)計(jì)甚至建造,這些決定就很難更改甚至無(wú)法更改。顯然,這樣的決定必定是有關(guān)系統(tǒng)設(shè)計(jì)成敗的最重要決定,必須經(jīng)過(guò)慎重的研究和考察。31軟件系統(tǒng)架構(gòu)的主要工作內(nèi)容(1)架構(gòu)調(diào)研----廣義上,是對(duì)系統(tǒng)的重大設(shè)計(jì)決策有特別影響的需求進(jìn)行分析是指識(shí)別對(duì)系統(tǒng)存在或可能存在重大影響的功能性或非功能性需求(特別是非功能性需求)。例如市場(chǎng)趨勢(shì)、性能、成本、維護(hù)和系統(tǒng)演進(jìn)等。(2)架構(gòu)設(shè)計(jì)----主要包括體系結(jié)構(gòu)設(shè)計(jì)和各個(gè)層模塊設(shè)計(jì)

是指對(duì)軟件、硬件、網(wǎng)絡(luò)、運(yùn)營(yíng)、政策等軟件設(shè)計(jì)中的需求和要素進(jìn)行決策。

在統(tǒng)一過(guò)程(RUP)中,架構(gòu)調(diào)研和架構(gòu)設(shè)計(jì)統(tǒng)稱(chēng)為架構(gòu)分析。32架構(gòu)設(shè)計(jì)工作的基本流程33架構(gòu)的兩要素---元件劃分和設(shè)計(jì)決定邏輯元件:一個(gè)軟件系統(tǒng)中的元件首先是邏輯元件。這些邏輯元件如何放到硬件上,以及這些元件如何為整個(gè)系統(tǒng)的可擴(kuò)展性、可靠性、強(qiáng)壯性、靈活性、性能等做出貢獻(xiàn),是非常重要的信息。設(shè)計(jì)決定:進(jìn)行軟件設(shè)計(jì)需要做出的決定中,必然會(huì)包括邏輯結(jié)構(gòu)、物理結(jié)構(gòu),以及它們?nèi)绾斡绊懙较到y(tǒng)的所有非功能性特征。這些決定中會(huì)有很多是一旦作出,就很難更改的。34系統(tǒng)架構(gòu)設(shè)計(jì)時(shí)所應(yīng)考慮的問(wèn)題(1)何時(shí)開(kāi)展架構(gòu)----需求分析和建模完成后這需要項(xiàng)目經(jīng)理以具體的經(jīng)驗(yàn)判斷來(lái)評(píng)估此時(shí)是否足以能夠開(kāi)始構(gòu)建軟件架構(gòu)的工作。(2)架構(gòu)設(shè)計(jì)工作不僅要依據(jù)靜態(tài)的系統(tǒng)目標(biāo),也要考慮動(dòng)態(tài)的開(kāi)發(fā)過(guò)程靜態(tài)的系統(tǒng)目標(biāo)一般為:功能需求、非功能需求和變化的用例等動(dòng)態(tài)的開(kāi)發(fā)過(guò)程一般為:如人力資源的情況,進(jìn)度要求的情況,開(kāi)發(fā)環(huán)境的滿足情況。(3)針對(duì)不同需求進(jìn)行架構(gòu)設(shè)計(jì)軟件架構(gòu)師必須全面把握各種各樣的需求、權(quán)衡需求之間有可能的矛盾之處,分門(mén)別類(lèi)地將不同需求一一滿足。35軟件架構(gòu)的層次層次特征說(shuō)明Enterprise

關(guān)注整個(gè)機(jī)構(gòu)、企業(yè)所有IT系統(tǒng)的整體能力從整體著眼、與業(yè)務(wù)緊密相關(guān)、與IT規(guī)劃相關(guān)最高層,人數(shù)極少Application

負(fù)責(zé)應(yīng)用系統(tǒng)的架構(gòu),奠定系統(tǒng)建設(shè)的基礎(chǔ)關(guān)注系統(tǒng)內(nèi)部的構(gòu)成和子系統(tǒng)/模塊的分劃需要負(fù)責(zé)與外部相關(guān)系統(tǒng)的互聯(lián)互通系統(tǒng)架構(gòu)最高層,大型系統(tǒng)需要有一個(gè)架構(gòu)組System/Sub-System

根據(jù)應(yīng)用系統(tǒng)的邏輯架構(gòu)制定相應(yīng)的技術(shù)實(shí)現(xiàn)方式,設(shè)計(jì)系統(tǒng)的物理架構(gòu)一個(gè)系統(tǒng)建設(shè)項(xiàng)目中常常有多個(gè)Component負(fù)責(zé)系統(tǒng)模塊的實(shí)現(xiàn)機(jī)制和詳細(xì)結(jié)構(gòu)設(shè)計(jì)為系統(tǒng)開(kāi)發(fā)建設(shè)奠定基礎(chǔ)常常由系統(tǒng)工程是擔(dān)任Data/Information負(fù)責(zé)應(yīng)用系統(tǒng)的信息和數(shù)據(jù)模型和結(jié)構(gòu)通常包括數(shù)據(jù)庫(kù)模型和結(jié)構(gòu)設(shè)計(jì)常常由數(shù)據(jù)庫(kù)專(zhuān)家負(fù)責(zé)Security負(fù)責(zé)系統(tǒng)的安全架構(gòu)設(shè)計(jì)涉及系統(tǒng)所有層面的安全措施需要由安全專(zhuān)家負(fù)責(zé),極缺Network

系統(tǒng)內(nèi)部、外部的網(wǎng)絡(luò)拓?fù)湓O(shè)計(jì)常常由網(wǎng)絡(luò)集成商負(fù)責(zé)Others…不同建設(shè)項(xiàng)目常常有一些特殊需求36軟件架構(gòu)的分類(lèi)分類(lèi)特征說(shuō)明概念架構(gòu)

關(guān)注整個(gè)機(jī)構(gòu)、企業(yè)所有IT系統(tǒng)的整體能力從整體著眼、與業(yè)務(wù)緊密相關(guān)、與IT規(guī)劃相關(guān)邏輯架構(gòu)

系統(tǒng)子系統(tǒng)、模塊分劃功能邊界的確定分布式計(jì)算系統(tǒng)設(shè)計(jì)的特點(diǎn)物理架構(gòu)針對(duì)代碼開(kāi)發(fā)與采用的語(yǔ)言、技術(shù)平臺(tái)緊密相關(guān)數(shù)據(jù)架構(gòu)數(shù)據(jù)庫(kù)設(shè)計(jì)部署架構(gòu)針對(duì)系統(tǒng)硬件部署與邏輯架構(gòu)不同分布式系統(tǒng)有許多特別的性能和安全考慮37邏輯架構(gòu)軟件系統(tǒng)中元件之間的關(guān)系,比如用戶界面,數(shù)據(jù)庫(kù),外部系統(tǒng)接口,商業(yè)邏輯元件等等。38物理架構(gòu)軟件元件是怎樣放到硬件上的下圖描述了一個(gè)分布于北京和上海的分布式系統(tǒng)的物理架構(gòu),圖中所有的元件都是物理設(shè)備,包括網(wǎng)絡(luò)分流器、代理服務(wù)器、WEB服務(wù)器、應(yīng)用服務(wù)器、報(bào)表服務(wù)器、整合服務(wù)器、存儲(chǔ)服務(wù)器、主機(jī)等等。39系統(tǒng)架構(gòu)系統(tǒng)的非功能性特征,如可擴(kuò)展性、可靠性、強(qiáng)壯性、靈活性、性能等。系統(tǒng)架構(gòu)的設(shè)計(jì)要求架構(gòu)師具備軟件和硬件的功能和性能的過(guò)硬知識(shí),這一工作是架構(gòu)設(shè)計(jì)工作中最困難的工作。40提問(wèn)結(jié)合以下觀點(diǎn),談?wù)勀銓?duì)軟件架構(gòu)的認(rèn)識(shí)架構(gòu)既是一個(gè)動(dòng)詞也是一個(gè)名詞;架構(gòu)是做出一系列重大決策;架構(gòu)是找出相對(duì)穩(wěn)定的一些特質(zhì);架構(gòu)是站在較高層面對(duì)系統(tǒng)進(jìn)行劃分架構(gòu)研究元件、連接器以及它們的組合架構(gòu)是一門(mén)科學(xué)架構(gòu)是一門(mén)藝術(shù)架構(gòu)是有經(jīng)驗(yàn)可借鑒的41關(guān)于“什么是架構(gòu)”的笑話42ArchitectureView43通過(guò)這樣5種視圖可以完整地展示系統(tǒng)的架構(gòu),同時(shí)不同的視圖也是面對(duì)不同的人員的。RUP中將“4+1View”稱(chēng)為ArchitectureView44不同的視圖所代表的含義邏輯視圖:

當(dāng)采用面向?qū)ο蟮脑O(shè)計(jì)方法時(shí),邏輯視圖即對(duì)象模型并關(guān)注功能。實(shí)現(xiàn)視圖:

描述軟件在開(kāi)發(fā)環(huán)境下的靜態(tài)組織;關(guān)注程序包,不僅包括要編寫(xiě)的源程序,還包括可以直接使用的第三方SDK和現(xiàn)成框架、類(lèi)庫(kù),以及開(kāi)發(fā)的系統(tǒng)將運(yùn)行于其上的系統(tǒng)軟件或中間件進(jìn)程視圖:

描述系統(tǒng)的并發(fā)和同步方面的設(shè)計(jì)。部署視圖:

描述軟件如何映射到硬件,反映系統(tǒng)在分布方面的設(shè)計(jì)。45為什么對(duì)架構(gòu)要采用多視圖架構(gòu)要涵蓋的內(nèi)容和決策太多了,并且涉及不同方面的內(nèi)容,不能采用某一種形式的圖來(lái)描述,因此采用“分而治之”的辦法從不同視角分別設(shè)計(jì);同時(shí),由于也涉及不同方面的人員理解、交流和歸檔提供了方便。46經(jīng)典“4+1View”47其他多視圖方法48溫昱–ADMEMS方法中的5視圖49溫昱–ADMEMS方法中的5視圖50溫昱–ADMEMS方法中的5視圖51成為軟件架構(gòu)師的途徑軟件架構(gòu)—巨大的知識(shí)海洋門(mén)檻相對(duì)較高、職業(yè)生涯非常長(zhǎng)相對(duì)獨(dú)立于技術(shù)的新陳代謝適合于喜歡學(xué)習(xí)的人不斷學(xué)習(xí)、增加積累、注重經(jīng)驗(yàn)注意學(xué)習(xí)方法論、框架不斷增加各種系統(tǒng)架構(gòu)的知識(shí)經(jīng)驗(yàn)積累非常重要在與高手和同行合作中提高水平與高手的合作是最佳途徑同行之間的交流也非常有效在每一個(gè)項(xiàng)目中進(jìn)行創(chuàng)新52

架構(gòu)師一定要有高超的需求思維53

架構(gòu)師一定要有高超的需求思維54

架構(gòu)師一定要有高超的需求思維55第1步:需求結(jié)構(gòu)化業(yè)務(wù)目標(biāo)、及業(yè)務(wù)愿景:網(wǎng)站定位:B2C零售當(dāng)前經(jīng)營(yíng):圖書(shū)未來(lái)經(jīng)營(yíng):圖書(shū)、軟件、音樂(lè)制品、電子產(chǎn)品、玩具、嬰兒用品、化妝品、寵物、藝術(shù)品、雜貨。商業(yè)質(zhì)量:新功能上線快,隨需應(yīng)變商業(yè)約束:投資2000萬(wàn)用于初期開(kāi)發(fā)、運(yùn)營(yíng)、市場(chǎng),之前須取得一定成功并融資成功集成約束:物流、銀行、海關(guān)、實(shí)體店、各類(lèi)提供商(包括工廠等生產(chǎn)企業(yè)、以及代理商等經(jīng)銷(xiāo)企業(yè))用戶開(kāi)發(fā)組織功能質(zhì)量約束56第1步:需求結(jié)構(gòu)化用戶:終端用戶各種員工角色運(yùn)行期質(zhì)量:易用性:最便捷的選擇方式用戶級(jí)約束:便捷的購(gòu)物流程客戶群大:多國(guó)語(yǔ)言客戶群大:關(guān)注范圍差異,須個(gè)性化消費(fèi)心理:營(yíng)造集市效應(yīng),“別人也買(mǎi)了”、“別人還買(mǎi)了”開(kāi)發(fā)方約束:新組建的團(tuán)隊(duì)用戶開(kāi)發(fā)組織功能質(zhì)量約束57第2步:分析約束影響業(yè)務(wù)目標(biāo)、及業(yè)務(wù)愿景:網(wǎng)站定位:B2C零售當(dāng)前經(jīng)營(yíng):圖書(shū)未來(lái)經(jīng)營(yíng):圖書(shū)、軟件、音樂(lè)制品、電子產(chǎn)品、玩具、嬰兒用品、化妝品、寵物、藝術(shù)品、雜貨。商業(yè)質(zhì)量:新功能上線快,隨需應(yīng)變商業(yè)約束:投資2000萬(wàn)用于初期開(kāi)發(fā)、運(yùn)營(yíng)、市場(chǎng),之前須取得一定成功并融資成功集成約束:物流、銀行、海關(guān)、實(shí)體店、各類(lèi)提供商(包括工廠等生產(chǎn)企業(yè)、以及代理商等經(jīng)銷(xiāo)企業(yè))開(kāi)發(fā)方約束:網(wǎng)站發(fā)展路線圖用戶開(kāi)發(fā)組織功能質(zhì)量約束58第2步:分析約束影響業(yè)務(wù)目標(biāo)、及業(yè)務(wù)愿景:網(wǎng)站定位:B2C零售當(dāng)前經(jīng)營(yíng):圖書(shū)未來(lái)經(jīng)營(yíng):圖書(shū)、軟件、音樂(lè)制品、電子產(chǎn)品、玩具、嬰兒用品、化妝品、寵物、藝術(shù)品、雜貨。商業(yè)質(zhì)量:新功能上線快,隨需應(yīng)變商業(yè)約束:投資2000萬(wàn)用于初期開(kāi)發(fā)、運(yùn)營(yíng)、市場(chǎng),之前須取得一定成功并融資成功集成約束:物流、銀行、海關(guān)、實(shí)體店、各類(lèi)提供商(包括工廠等生產(chǎn)企業(yè)、以及代理商等經(jīng)銷(xiāo)企業(yè))用戶:終端用戶各種員工角色管理員功能:靈活的打折設(shè)置頻率極高的新貨上架開(kāi)發(fā)期質(zhì)量:可擴(kuò)展性用戶開(kāi)發(fā)組織功能質(zhì)量約束59第2步:分析約束影響用戶:終端用戶各種員工角色終端用戶功能:最快的全庫(kù)搜索評(píng)價(jià)功能(Web2.0)多角度關(guān)聯(lián)信息管理員功能:靈活的打折設(shè)置頻率極高的新貨上架用戶級(jí)約束:便捷的購(gòu)物流程客戶群大:多國(guó)語(yǔ)言客戶群大:關(guān)注范圍差異,須個(gè)性化消費(fèi)心理:營(yíng)造集市效應(yīng),“別人也買(mǎi)了”、“別人還買(mǎi)了”用戶開(kāi)發(fā)組織功能質(zhì)量約束60第2步:分析約束影響業(yè)務(wù)目標(biāo)、愿景:網(wǎng)站定位:B2C零售當(dāng)前經(jīng)營(yíng):圖書(shū)未來(lái)經(jīng)營(yíng):……商業(yè)質(zhì)量:新功能上線快,隨需應(yīng)變商業(yè)約束:投資2000萬(wàn)……集成約束:物流、銀行、海關(guān)、實(shí)體店、各類(lèi)提供商(包括工廠等生產(chǎn)企業(yè)、以及代理商等經(jīng)銷(xiāo)企業(yè))運(yùn)行期質(zhì)量:可伸縮性:幾乎沒(méi)有上限性能:即強(qiáng)調(diào)速度,又強(qiáng)調(diào)吞吐量安全性:數(shù)據(jù)安全持續(xù)可用性:不停機(jī)互操作性:含公司各系統(tǒng)間互操作開(kāi)發(fā)期質(zhì)量:可擴(kuò)展性用戶開(kāi)發(fā)組織功能質(zhì)量約束61架構(gòu)設(shè)計(jì)的目標(biāo)之一

---希望能夠最大化地重用如何能達(dá)到最大化的重用?答:在系統(tǒng)架構(gòu)設(shè)計(jì)中靈活地使用各種共享的,特別是開(kāi)源的框架技術(shù)為什么要在系統(tǒng)架構(gòu)設(shè)計(jì)中應(yīng)用成熟的框架?答:軟件系統(tǒng)已經(jīng)發(fā)展的很復(fù)雜,一些基礎(chǔ)性的工作沒(méi)有必要重復(fù)去做;框架一般是成熟、穩(wěn)健的;框架本身的結(jié)構(gòu)比較好,使用框架會(huì)使軟件系統(tǒng)的可擴(kuò)展性很好采用SSH框架技術(shù)架構(gòu)J2EE的輕量級(jí)系統(tǒng)62架構(gòu)設(shè)計(jì)的目標(biāo)之二

---使軟件系統(tǒng)實(shí)現(xiàn)可擴(kuò)展性軟件系統(tǒng)開(kāi)發(fā)必須要考慮的一個(gè)問(wèn)題---如何盡可能延長(zhǎng)軟件系統(tǒng)的生命期,降低投資成本?如何使軟件系統(tǒng)具有最靈活的擴(kuò)展性?答:靈活應(yīng)用各種架構(gòu)模式和代碼的設(shè)計(jì)模式63不同層次的模式區(qū)別:在于三種不同的模式存在于它們各自的抽象層次和具體層次。架構(gòu)模式是一個(gè)系統(tǒng)的高層次策略,涉及到大尺度的組件以及整體性質(zhì)。架構(gòu)模式的好壞可以影響到總體布局和框架性結(jié)構(gòu)。設(shè)計(jì)模式是中等尺度的結(jié)構(gòu)策略。這些中等尺度的結(jié)構(gòu)實(shí)現(xiàn)了一些大尺度組件的行為和它們之間的關(guān)系。模式的好壞不會(huì)影響到系統(tǒng)的總體布局和總體框架。設(shè)計(jì)模式定義出子系統(tǒng)或組件的微觀結(jié)構(gòu)。代碼模式是特定的范例和與特定語(yǔ)言有關(guān)的編程技巧。代碼模式的好壞會(huì)影響到一個(gè)中等尺度組件的內(nèi)部、外部的結(jié)構(gòu)或行為的底層細(xì)節(jié),但不會(huì)影響到一個(gè)部件或子系統(tǒng)的中等尺度的結(jié)構(gòu),更不會(huì)影響到系統(tǒng)的總體布局和大尺度框架。64架構(gòu)模式(ArchitecturalPattern)軟件體系結(jié)構(gòu)通常被稱(chēng)為架構(gòu),指可以預(yù)制和可重構(gòu)的軟件框架結(jié)構(gòu)。架構(gòu)尚處在發(fā)展期,對(duì)于其定義,學(xué)術(shù)界尚未形成一個(gè)統(tǒng)一的意見(jiàn),而不同角度的視點(diǎn)也會(huì)造成軟件體系結(jié)構(gòu)的不同理解。眾多軟件架構(gòu)概念都是圍繞“組成”和“決策”兩個(gè)視角展開(kāi)的。65架構(gòu)設(shè)計(jì)的目標(biāo)之三

---設(shè)計(jì)出“高內(nèi)聚低耦合”的應(yīng)用系統(tǒng)內(nèi)聚度:是指程序中的操作之間聯(lián)系緊密的程度。描述了一個(gè)子程序的內(nèi)部成分之間相互聯(lián)系的強(qiáng)度。耦合度:是指兩個(gè)子程序聯(lián)系的強(qiáng)度。描述了一個(gè)子程序與其他子程序之間的聯(lián)系強(qiáng)度。耦合度與內(nèi)聚度成反比。目標(biāo):具有內(nèi)部完整性(強(qiáng)內(nèi)聚)的子程序,以及小的、直接的、可見(jiàn)的、靈活的與其他子程序之間的聯(lián)系(松耦合)66內(nèi)聚類(lèi)型內(nèi)聚類(lèi)型描述功能內(nèi)聚完成一個(gè)單一功能,各個(gè)部分協(xié)同工作,缺一不可順序內(nèi)聚處理元素相關(guān),而且必須順序執(zhí)行通信內(nèi)聚所有處理元素集中在一個(gè)數(shù)據(jù)結(jié)構(gòu)的區(qū)域上過(guò)程內(nèi)聚處理元素相關(guān),而且必須按特定的次序執(zhí)行瞬時(shí)內(nèi)聚所包含的任務(wù)必須在同一時(shí)間間隔內(nèi)執(zhí)行(如初始化模塊)邏輯內(nèi)聚完成邏輯上相關(guān)的一組任務(wù)偶然內(nèi)聚完成一組沒(méi)有關(guān)系或松散關(guān)系的任務(wù)低67耦合類(lèi)型高耦合類(lèi)型描述非直接耦合沒(méi)有直接聯(lián)系,互相不依賴(lài)對(duì)方數(shù)據(jù)耦合借助參數(shù)表傳遞簡(jiǎn)單數(shù)據(jù)標(biāo)記耦合一個(gè)數(shù)據(jù)結(jié)構(gòu)的一部分借助于模塊接口被傳遞控制耦合模塊間傳遞的信息中包含用于控制模塊內(nèi)部邏輯的信息外部耦合與軟件以外的環(huán)境有關(guān)公共耦合多個(gè)模塊引用同一個(gè)全局?jǐn)?shù)據(jù)區(qū)內(nèi)容耦合一個(gè)模塊訪問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù)一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一模塊的內(nèi)部?jī)蓚€(gè)模塊有一部分程序代碼重疊一個(gè)模塊有多個(gè)入口68架構(gòu)的目標(biāo)可靠性(Reliable):軟件系統(tǒng)對(duì)于用戶的商業(yè)經(jīng)營(yíng)和管理來(lái)說(shuō)極為重要,因此軟件系統(tǒng)必須非常可靠。安全性(Secure):軟件系統(tǒng)所承擔(dān)的交易的商業(yè)價(jià)值極高,系統(tǒng)的安全性非常重要??缮炜s性(Scalable):軟件必須能夠在用戶的使用率、用戶的數(shù)目增加很快的情況下,保持合理的性能。只有這樣,才能適應(yīng)用戶的市場(chǎng)擴(kuò)展得可能性。69架構(gòu)的目標(biāo)可定制化(Customizable):同樣的一套軟件,可以根據(jù)客戶群的不同和市場(chǎng)需求的變化進(jìn)行調(diào)整。可擴(kuò)展性(Extensible):在新技術(shù)出現(xiàn)的時(shí)候,一個(gè)軟件系統(tǒng)應(yīng)當(dāng)允許導(dǎo)入新技術(shù),從而對(duì)現(xiàn)有系統(tǒng)進(jìn)行功能和性能的擴(kuò)展可維護(hù)性(Maintainable):軟件系統(tǒng)的維護(hù)包括兩方面,一是排除現(xiàn)有的錯(cuò)誤,二是將新的軟件需求反映到現(xiàn)有系統(tǒng)中去。一個(gè)易于維護(hù)的系統(tǒng)可以有效地降低技術(shù)支持的花費(fèi)。70架構(gòu)的目標(biāo)客戶體驗(yàn)(CustomerExperience):軟件系統(tǒng)必須易于使用。

市場(chǎng)時(shí)機(jī)(TimetoMarket):軟件用戶要面臨同業(yè)競(jìng)爭(zhēng),軟件提供商也要面臨同業(yè)競(jìng)爭(zhēng)。以最快的速度爭(zhēng)奪市場(chǎng)先機(jī)非常重要。71沒(méi)有一個(gè)統(tǒng)一的“萬(wàn)能(通用)”的系統(tǒng)架構(gòu)因?yàn)檐浖南到y(tǒng)架構(gòu)設(shè)計(jì)是和千差萬(wàn)別的具體軟件系統(tǒng)的要求、所應(yīng)用的技術(shù)和開(kāi)發(fā)平臺(tái)等因素是密切相關(guān)的,因此在此無(wú)法給出一個(gè)通用的“系統(tǒng)架構(gòu)設(shè)計(jì)”解決方案。盡管存在上面的原因,但我們認(rèn)為在“系統(tǒng)架構(gòu)設(shè)計(jì)”中還是會(huì)有一些共性的東西,以及能夠說(shuō)明哪些因素是需要考慮的。對(duì)于每個(gè)因素的設(shè)計(jì)策略和具體的解決方法還需要我們的軟件架構(gòu)設(shè)計(jì)師在具體開(kāi)發(fā)實(shí)踐中靈活把握-----不同因素之間有時(shí)是矛盾的,架構(gòu)設(shè)計(jì)時(shí)需要根據(jù)具體情況進(jìn)行平衡。72提綱§3.1概要設(shè)計(jì)§3.2軟件架構(gòu)設(shè)計(jì)§3.3

系統(tǒng)架構(gòu)實(shí)踐

73軟件框架什么是框架框架與架構(gòu)的區(qū)別常見(jiàn)的框架74框架什么是框架?框架,即framework。是某種應(yīng)用的半成品,就是一組組件,供選用完成自己的系統(tǒng)。簡(jiǎn)單說(shuō)就是使用別人搭好的舞臺(tái),你來(lái)做表演。而且,框架一般是成熟的,不斷升級(jí)的軟件??蚣芘c架構(gòu)的區(qū)別?并無(wú)明確的定義,但一般從層的觀點(diǎn)看,認(rèn)為框架是底層的,接近系統(tǒng)的。軟件開(kāi)發(fā)者在其上構(gòu)建自己的軟件架構(gòu),開(kāi)發(fā)自己的運(yùn)用程序。75為什么要用框架因?yàn)檐浖到y(tǒng)發(fā)展到今天已經(jīng)很復(fù)雜了,特別是服務(wù)器端軟件,設(shè)計(jì)到的知識(shí),內(nèi)容,問(wèn)題太多。在某些方面使用成熟的框架,可以避免重復(fù)做已有的基礎(chǔ)工作,而只需要集中精力完成系統(tǒng)的業(yè)務(wù)邏輯設(shè)計(jì)??蚣芤话闶浅墒欤€(wěn)健的,可以處理系統(tǒng)很多細(xì)節(jié)問(wèn)題,比如,事物理,安全性,數(shù)據(jù)流控制等問(wèn)題。框架一般都經(jīng)過(guò)很多人使用,所以結(jié)構(gòu)很好,所以擴(kuò)展性也很好,而且它是不斷升級(jí)的,使用框架的開(kāi)發(fā)者可以直接享受別人升級(jí)代碼帶來(lái)的好處。框架一般處在低層應(yīng)用平臺(tái)(如J2EE)和高層業(yè)務(wù)邏輯之間的中間層。76常見(jiàn)的框架常見(jiàn)的JAVA框架常見(jiàn)的.Net框架其它基于C++的框架77常見(jiàn)的JAVA框架EJBWAFStrutsTurbineCOCOONECHOJATOTCFSpringHibernateIBatisJSF78架構(gòu)模式不同層次的軟件模式架構(gòu)的主流的定義79不同層次的模式架構(gòu)模式(ArchitecturalPattern)設(shè)計(jì)模式(DesignPattern)代碼模式(CodingPattern)又稱(chēng)為成例(Idiom)80一些主流的架構(gòu)定義Booch、Rumbaugh和Jacobson的定義Woods的觀點(diǎn)Garlan和Shaw的定義Perry和Wolf的定義Boehm的定義IEEE的定義Bass的定義81Booch、Rumbaugh和Jacobson的定義架構(gòu)是一系列重要決策的集合,這些決策與以下內(nèi)容有關(guān):軟件的組織,構(gòu)成系統(tǒng)的結(jié)構(gòu)元素及其接口的選擇,這些元素在相互協(xié)作中明確表現(xiàn)出的行為,這些結(jié)構(gòu)元素和行為元素進(jìn)一步組合所構(gòu)成的更大規(guī)模的子系統(tǒng),以及指導(dǎo)這一組織——包括這些元素及其接口、它們的協(xié)作和它們的組合——架構(gòu)風(fēng)格。82Garlan和Shaw的定義架構(gòu)包括組件(Component)、連接件(Connector)和約束(Constrain)三大要素。組件可以是一組代碼(例如程序模塊),也可以是獨(dú)立的程序(例如數(shù)據(jù)庫(kù)服務(wù)器)。連接件可以是過(guò)程調(diào)用、管道和消息等,用于表示組件之間的相互關(guān)系?!凹s束”一般為對(duì)象連接時(shí)的規(guī)則,或指明構(gòu)件連接的形式和條件,例如,上層構(gòu)件可要求下層構(gòu)件的服務(wù),反之不行;兩對(duì)象不得遞規(guī)地發(fā)送消息;代碼復(fù)制遷移的一致性約束;什么條件下此種連接無(wú)效等。83IEEE的定義IEEE610.12-1990軟件工程標(biāo)準(zhǔn)詞匯中是這樣定義架構(gòu)的:架構(gòu)是以組件、組件之間的關(guān)系、組件與環(huán)境之間的關(guān)系為內(nèi)容的某一系統(tǒng)的基本組織結(jié)構(gòu),以及指導(dǎo)上述內(nèi)容設(shè)計(jì)與演化的原理(Principle)。84架構(gòu)=組件+交互Shaw的定義:“軟件系統(tǒng)的架構(gòu)將系統(tǒng)描述為計(jì)算組件及組件之間的交互”。85軟件架構(gòu)模式軟件架構(gòu)模式(Architecturalpattern)又稱(chēng)軟件體系結(jié)構(gòu)風(fēng)格(Architecturalstyle)一種體系結(jié)構(gòu)風(fēng)格以結(jié)構(gòu)組織模式定義了一個(gè)系統(tǒng)家族關(guān)于構(gòu)件和連接件類(lèi)型的術(shù)語(yǔ)一組約束它們組合方式的規(guī)定一個(gè)或多個(gè)語(yǔ)義模型,規(guī)定了如何從各成分的特性決定系統(tǒng)整體特性概括地說(shuō),一種軟件體系結(jié)構(gòu)風(fēng)格刻劃一個(gè)具有共享結(jié)構(gòu)和語(yǔ)義的系統(tǒng)家族。86幾種典型的架構(gòu)模式系統(tǒng)軟件分層(Layer)管道和過(guò)濾器(PipesandFilters)黑板(Blackboard)開(kāi)發(fā)分布式軟件經(jīng)紀(jì)人(Broker)客戶/服務(wù)器(Client/Server)點(diǎn)對(duì)點(diǎn)(PeertoPeer)交互軟件模型-視圖-控制器(Model-View-Controller)顯示-抽象-控制(Presentation-Abstraction-COntrol)87其它面向?qū)ο箫L(fēng)格(ADT)基于消息廣播且面向圖形用戶界面的Chiron2風(fēng)格基于事件的隱式調(diào)用風(fēng)格(Event-based,ImplicitInvocation)…88分層(Layer)從不同的層次來(lái)觀察系統(tǒng),處理不同層次問(wèn)題的對(duì)象被封裝到不同的層中。

軟件為什么要分層?

為了實(shí)現(xiàn)“高內(nèi)聚、低耦合”。把問(wèn)題劃分開(kāi)來(lái)各個(gè)解決,易于控制,易于延展,易于分配資源…面向?qū)ο蟮?、基于模塊化的組件設(shè)計(jì)需要能夠方便地修改應(yīng)用程序的各個(gè)部分。完成這一目標(biāo)的一種好方法就是在層上工作,將一個(gè)應(yīng)用程序的主要功能分離到不同的層或者級(jí)中。89分層模型從本質(zhì)上講,層代表了一個(gè)應(yīng)用程序主要的功能。一般地,我們將應(yīng)用程序功能分為三個(gè)方面,對(duì)應(yīng)3層架構(gòu)模式。它們是數(shù)據(jù)層(datalayer)、商務(wù)層(businesslayer)和表示層(presentationlayer)。數(shù)據(jù)層:包含數(shù)據(jù)存儲(chǔ)和與它交互的組件或服務(wù)。這些組件和服務(wù)在功能上和中間層相互獨(dú)立(盡管在物理上不必一定相互獨(dú)立--它們可以在同一臺(tái)服務(wù)器上)。中間層:包括一個(gè)或者多個(gè)組件服務(wù),它們應(yīng)用商務(wù)規(guī)則、實(shí)現(xiàn)應(yīng)用程序邏輯并完成應(yīng)用程序運(yùn)行所需要的數(shù)據(jù)處理。作為這個(gè)過(guò)程的一部分,中間層負(fù)責(zé)處理來(lái)自數(shù)據(jù)存儲(chǔ)或者發(fā)送給數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)。表示層:從中間層獲得信息并顯示給用戶。該層同時(shí)也負(fù)責(zé)和用戶進(jìn)行交互,比較返回的信息并將信息回送給中間層進(jìn)行處理。90數(shù)據(jù)層從數(shù)據(jù)庫(kù)中獲得較為原始的數(shù)據(jù),商務(wù)層把數(shù)據(jù)轉(zhuǎn)換成符合商務(wù)規(guī)則的有意義的信息,表示層把信息轉(zhuǎn)換成對(duì)于用戶有意義的內(nèi)容。這種分層設(shè)計(jì)方式很有用,因?yàn)槊恳粚佣伎梢元?dú)立地修改。我們可以修改商務(wù)層,不斷地從數(shù)據(jù)層接受相同的數(shù)據(jù),并把這些數(shù)據(jù)傳遞到表示層,而不用擔(dān)心出現(xiàn)歧義。我們也可以修改表示層,使得對(duì)于站點(diǎn)外觀的修改不必改動(dòng)下面的商務(wù)層邏輯。91管道和過(guò)濾器(PipesandFilters)管道和過(guò)濾器架構(gòu)模式是為處理數(shù)據(jù)流的系統(tǒng)提供的一種模式。它是由過(guò)濾器和管道組成的.每個(gè)處理步驟都被封裝在一個(gè)過(guò)濾器組件中,數(shù)據(jù)通過(guò)相鄰過(guò)濾器之間的管道進(jìn)行傳輸。每個(gè)過(guò)濾器可以單獨(dú)修改,功能單一,并且它們之間的順序可以進(jìn)行配置。92一個(gè)著名的例子是傳統(tǒng)的編譯器。傳統(tǒng)的編譯器一直被認(rèn)為是一種管道系統(tǒng),在該系統(tǒng)中,一個(gè)階段(包括詞法分析、語(yǔ)法分析、語(yǔ)義分析和代碼生成)的輸出是另一個(gè)階段的輸入。93問(wèn)題:一個(gè)必須處理或轉(zhuǎn)換輸入數(shù)據(jù)流的系統(tǒng)。把這樣的系統(tǒng)作為單個(gè)組件實(shí)現(xiàn)是不容易的:系統(tǒng)必須由幾個(gè)開(kāi)發(fā)人員同時(shí)進(jìn)行協(xié)作開(kāi)發(fā),整個(gè)系統(tǒng)任務(wù)自然就被分解為幾個(gè)處理階段,而且需求很容易變動(dòng)。因此你就要通過(guò)替換或重新排序處理步驟來(lái)為將來(lái)的靈活性作規(guī)劃。通過(guò)加入這樣的靈活性,采用現(xiàn)有處理組件構(gòu)建是可以辦到的。系統(tǒng)的設(shè)計(jì)尤其是處理步驟的內(nèi)部連接,必須考慮以下因素:未來(lái)系統(tǒng)的升級(jí)通過(guò)替換某些處理步驟,或重組步驟。不同的語(yǔ)境中小的處理步驟要比大的組件更易于重用。不相連的處理步驟不可共享信息。存在不同的輸入數(shù)據(jù)源,可以用多種方式輸出或存放最終結(jié)果。94解決方案與結(jié)構(gòu)管道和過(guò)濾器體系架構(gòu)模式把系統(tǒng)任務(wù)分成為幾個(gè)獨(dú)立的處理步驟。這些步驟采用通過(guò)系統(tǒng)的數(shù)據(jù)流連接。一個(gè)步驟的輸出是下一個(gè)步驟的輸入。每個(gè)處理步驟由一個(gè)過(guò)濾器組件實(shí)現(xiàn),它處理或者轉(zhuǎn)化數(shù)據(jù),并且系統(tǒng)的輸入可以是多種數(shù)據(jù)源。這種體系架構(gòu)模式具有許多特性:過(guò)濾器是獨(dú)立運(yùn)行的部件。也就是除了輸入和輸出外,每個(gè)過(guò)濾器不受任何其他過(guò)濾器運(yùn)行的影響。在設(shè)計(jì)上,過(guò)濾器之間不共享任何狀態(tài)信息。獨(dú)立性還表現(xiàn)在它對(duì)其處理的上游和下游連接的過(guò)濾器是"無(wú)知"的.它的設(shè)計(jì)和使用不對(duì)與其連接的任何過(guò)濾器施加限制,唯一關(guān)心的是其輸入數(shù)據(jù)的,然后進(jìn)行加工處理,最后產(chǎn)生數(shù)據(jù)輸出。95優(yōu)點(diǎn)與缺點(diǎn)優(yōu)點(diǎn):結(jié)構(gòu)簡(jiǎn)單:系統(tǒng)的行為是所有過(guò)濾器行為的簡(jiǎn)單復(fù)合。系統(tǒng)易于維護(hù)和增強(qiáng):增加新過(guò)濾器,替換舊過(guò)濾器。支持復(fù)用:過(guò)濾器只同其輸入、輸出端口的數(shù)據(jù)相關(guān)。各過(guò)濾器可以并發(fā)運(yùn)行。缺點(diǎn):容易導(dǎo)致批處理方式:每個(gè)過(guò)濾器從輸入數(shù)據(jù)到輸出數(shù)據(jù)的轉(zhuǎn)換是一個(gè)整體。轉(zhuǎn)換通常不適合交互式的應(yīng)用。有時(shí)必須維護(hù)兩個(gè)分離而又相關(guān)的流之間的對(duì)應(yīng)關(guān)系。同實(shí)現(xiàn)有關(guān),過(guò)濾器之間的數(shù)據(jù)傳輸率較低,而且每個(gè)過(guò)濾器都要作類(lèi)似的數(shù)據(jù)打包和解包的工作。96黑板(Blackboard)又稱(chēng)看板模式:在這種架構(gòu)中,有兩種不同的構(gòu)件:一種是表示當(dāng)前狀態(tài)中心數(shù)據(jù)結(jié)構(gòu);另一種是一種相互獨(dú)立的構(gòu)件,這些構(gòu)件對(duì)中心數(shù)據(jù)進(jìn)行操作。這種架構(gòu)主要用于數(shù)據(jù)庫(kù)和人工智能系統(tǒng)的開(kāi)發(fā)。模式識(shí)別、數(shù)據(jù)挖掘。97經(jīng)紀(jì)人(Broker)客戶和服務(wù)器通過(guò)一個(gè)經(jīng)紀(jì)人部件進(jìn)行通信,經(jīng)紀(jì)人負(fù)責(zé)協(xié)調(diào)客戶和服務(wù)器之間的操作,并且為客戶和服務(wù)器發(fā)送請(qǐng)求和結(jié)果信息。98客戶/服務(wù)器(Client/Server)系統(tǒng)分為客戶和服務(wù)器,服務(wù)器一直處于偵聽(tīng)的狀態(tài),客戶主動(dòng)連接服務(wù)器,每個(gè)服務(wù)器可以為多個(gè)客戶服務(wù)。99優(yōu)缺點(diǎn)優(yōu)點(diǎn):結(jié)構(gòu)簡(jiǎn)單,系統(tǒng)中不同類(lèi)型的任務(wù)分別由客戶和服務(wù)器承擔(dān),有利于發(fā)揮不同機(jī)器平臺(tái)的優(yōu)勢(shì);支持分布式、并發(fā)環(huán)境,特別是當(dāng)客戶和服務(wù)器之間的關(guān)系是多對(duì)多時(shí),可以有效地提高資源的利用率和共享程度;服務(wù)器集中管理資源,有利于權(quán)限控制和系統(tǒng)安全。缺點(diǎn):在大多數(shù)client-server風(fēng)格的系統(tǒng)中,構(gòu)件之間的連接通過(guò)(遠(yuǎn)程)過(guò)程調(diào)用,接近于代碼一級(jí),表達(dá)能力較弱。100點(diǎn)對(duì)點(diǎn)(PeertoPeer)系統(tǒng)中的節(jié)點(diǎn)都處于平等的地位,每個(gè)節(jié)點(diǎn)都可以連接其他節(jié)點(diǎn)。在這種架構(gòu)中,一般需要由一個(gè)中心服務(wù)器完成發(fā)現(xiàn)和管理節(jié)點(diǎn)的操作。ICQ以及WebService技術(shù)的大多數(shù)應(yīng)用,都是典型的點(diǎn)對(duì)點(diǎn)結(jié)構(gòu)。101模型-視圖-控制器(MVC)當(dāng)應(yīng)用程序的用戶界面非常復(fù)雜,且關(guān)于用戶界面的需求很容易變化時(shí),我們可以把交互類(lèi)型的軟件抽象成模型、視圖和控制器這三類(lèi)組件單元,這種抽象可以很好地分離用戶界面和業(yè)務(wù)邏輯,適應(yīng)變化的需求。大多數(shù)現(xiàn)代交互軟件都在一定程度上符合這一架構(gòu)模型的特點(diǎn)。MVC模式最吸引人之處在于它迫使用戶必須抽象自己的代碼,把項(xiàng)目分為表示、邏輯和控制三部分,每部分間的關(guān)聯(lián)較小。以MVC模式構(gòu)造軟件,可以使得軟件結(jié)構(gòu)靈活、重用性好、擴(kuò)展性佳。102模型—視圖—控制器交互的示意圖103模型:視圖:控制器:模型:模型表示應(yīng)用的數(shù)據(jù)及操作這些數(shù)據(jù)的邏輯方法。任何和整個(gè)應(yīng)用有關(guān)的持久性數(shù)據(jù)都應(yīng)該放在模型中。對(duì)于模型,它所提供的API不能只針對(duì)某一個(gè)專(zhuān)門(mén)的視圖或控制器,應(yīng)該更一般化以適應(yīng)不同客戶的需求。視圖:視圖將模型的當(dāng)前狀態(tài)展示給用戶,具體的顯示方法由視圖負(fù)責(zé),因此一個(gè)模型可以適用多個(gè)不同的視圖。在模型狀態(tài)改變后,通過(guò)模型和視圖之間的協(xié)議,視圖得知這種改變并修改自己的顯示。對(duì)于用戶的輸入,視圖將它們交給控制器處理??刂破?控制器負(fù)責(zé)交互和將用戶輸入的數(shù)據(jù)導(dǎo)入模型,它還利用用戶的輸入將應(yīng)用轉(zhuǎn)向其他視圖。一些非持久的臨時(shí)數(shù)據(jù)也應(yīng)該在視圖中存取。104采用MVC的好處顯示、邏輯和數(shù)據(jù)分開(kāi),這樣一方面的改變不會(huì)影響另一方面。更新視圖:如原來(lái)用的是CLI(CommandLineInterface)的,后來(lái)要改成GUI,只要了解原來(lái)的模型和控制器的接口,然后構(gòu)造GUI,把它按過(guò)去的協(xié)議和模型關(guān)聯(lián)起來(lái)就可以了,這樣做增加了組件的重用性和靈活性。復(fù)用視圖:假設(shè)針對(duì)某個(gè)模型數(shù)據(jù)開(kāi)發(fā)了一套View,那么在其他訪問(wèn)該模型數(shù)據(jù)的地方,完全可以再次使用該套件或?qū)F(xiàn)在的View組合成一個(gè)復(fù)合視圖。每個(gè)單視圖有自己和模型的連接協(xié)議和自己的響應(yīng)控制器,這樣開(kāi)發(fā)就僅僅變成了簡(jiǎn)單的組合。更新控制器:以在不更改視圖顯示的情況下,更改控制器,以達(dá)到更改視圖與用戶交互的響應(yīng)模式的目的。105顯示-抽象-控制(PAC)是MVC的一種變形。106Event-based風(fēng)格優(yōu)點(diǎn):支持復(fù)用,構(gòu)件通過(guò)登記它所感興趣的事件被引入系統(tǒng);便于系統(tǒng)演化,構(gòu)件可以容易地升級(jí)或更換。缺點(diǎn):系統(tǒng)行為難以控制,發(fā)出事件的構(gòu)件放棄了對(duì)系統(tǒng)的控制,因此不能確定系統(tǒng)中有無(wú)或有多少其它構(gòu)件對(duì)該事件感興趣,系統(tǒng)的行為不能依賴(lài)于特定的處理順序。同事件關(guān)聯(lián)的會(huì)有少量的數(shù)據(jù),但有些情況下需要通過(guò)共享區(qū)傳遞數(shù)據(jù),這時(shí)就涉及到全局效率和資源管理問(wèn)題。107SOA的架構(gòu)的特點(diǎn)服務(wù)(Service)定義良好的,自包含的,不依賴(lài)于上下文和其它服務(wù)的一組功能SOA(Service-OrientedArchitecture)本質(zhì)上是一組服務(wù)的集合服務(wù)之間相互溝通可以是簡(jiǎn)單的數(shù)據(jù)傳輸,或者是由兩個(gè)或多個(gè)服務(wù)共同參與的一些活動(dòng),SOA也包括Service之間的連通技術(shù)。108OOvs.SOA–OO的擴(kuò)展遇到了挑戰(zhàn)隨著時(shí)間的推移,接口繼承的復(fù)雜度在累積隨著系統(tǒng)間距離的延伸,調(diào)用成本在上升,類(lèi)型系統(tǒng)的不同步擴(kuò)展組件的功能成本高,不可確定未來(lái)需求,不可堆疊的擴(kuò)展方式重用與標(biāo)準(zhǔn)化,重用是OO的第一原則,難以維持和維護(hù)復(fù)雜的重用標(biāo)準(zhǔn)和機(jī)制109–OOvs.SOAOO仍然適用于服務(wù)的開(kāi)發(fā)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論