版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、本文基于多個并發(fā)視圖的使用情況來說明描述軟件密集型系統(tǒng)架構(gòu)的模型。使用多重視圖允許獨立地處理各"風(fēng)險承擔(dān)人":最終用戶、開發(fā)人員、系統(tǒng)工程師、項目經(jīng)理等所關(guān)注的問題,并且能夠獨立地處理功能性和非功能性需求。本文分別對五種視圖進行了描述,并同時給出了捕獲每種視圖的表示方法。這些視圖使用以架構(gòu)為中心的、場景驅(qū)動以及迭代開發(fā)過程來進行設(shè)計。引言我們已經(jīng)看到在許多文章和書籍中,作者欲使用單張視圖來捕捉所有的系統(tǒng)架構(gòu)要點。通過仔細地觀察這些圖例中的方框和箭頭,不難發(fā)現(xiàn)作者努力地在單一視圖中表達超過其表達限度的藍圖。方框是代表運行的程序嗎?或者是代表源代碼的程序塊嗎?或是物理計算機嗎?
2、或僅僅是邏輯功能的分組嗎?箭頭是表示編譯時的依賴關(guān)系嗎?或者是控制流嗎?或是數(shù)據(jù)流嗎?通常它代表了許多事物。是否架構(gòu)只需要單個的架構(gòu)樣式?有時軟件架構(gòu)的缺陷源于過早地劃分軟件或過分的強調(diào)軟件開發(fā)的單個方面:數(shù)據(jù)工程、運行效率、開發(fā)策略和團隊組織等。有時架構(gòu)并不能解決所有'客戶"(或者說"風(fēng)險承擔(dān)人",USC的命名)所關(guān)注的問題。許多作者都提及了這個問題:Garlan&Shawl、CMU的Abowd&Allen、SEI的Clements。作為補充,我們建議使用多個并發(fā)的視圖來組織軟件架構(gòu)的描述,每個視圖僅用來描述一個特定的所關(guān)注的方面的集合。
3、架構(gòu)模型軟件架構(gòu)用來處理軟件高層次結(jié)構(gòu)的設(shè)計和實施。它以精心選擇的形式將若干結(jié)構(gòu)元素進行裝配,從而滿足系統(tǒng)主要功能和性能需求,并滿足其他非功能性需求,如可靠性、可伸縮性、可移植性和可用性。Perry和Wolfe使用一個精確的公式來表達,該公式由Boehm做了進一步修改:軟件架構(gòu)=元素,形式,關(guān)系/約束軟件架構(gòu)涉及到抽象、分解和組合、風(fēng)格和美學(xué)。我們用由多個視圖或視角組成的模型來描述它。為了最終處理大型的、富有挑戰(zhàn)性的架構(gòu),該模型包含五個主要的視圖(請對照圖1): 邏輯視圖(LogicalView),設(shè)計的對象模型(使用面向?qū)ο蟮脑O(shè)計方法時)。 過程視圖(ProcessView),捕捉設(shè)計的并發(fā)
4、和同步特征。 物理視圖(PhysicalView),描述了軟件到硬件的映射,反映了分布式特性。 開發(fā)視圖(DevelopmentView),描述了在開發(fā)環(huán)境中軟件的靜態(tài)組織結(jié)構(gòu)。架構(gòu)的描述,即所做的各種決定,可以圍繞著這四個視圖來組織,然后由一些用例(usecases)或場景(seenarios)來說明,從而形成了第五個視圖。正如將看到的,實際上軟件架End-userPrograniEiiersFLinclEcinaSILySciTtvwmfeLogicalViewDevelopmentView1QScenariosJ)1ProcessViewPhysicalViewIntegratorsPe
5、rformanceScalabilHySystemTo卩ologyCL»iiirTiiinit;lieiris圖1"41"視圖模型構(gòu)部分從這些場景演進而來,將在下文中討論。我們在每個視圖上均獨立地應(yīng)用Perry&Wolf的公式,即定義一個所使用的元素集合(組件、容器、連接符),捕獲工作形式和模式,并且捕獲關(guān)系及約束,將架構(gòu)與某些需求連接起來。每種視圖使用自身所特有的表示法一藍圖(blueprint)來描述,并且架構(gòu)師可以對每種視圖選用特定的架構(gòu)風(fēng)格(architecturalstyle),從而允許系統(tǒng)中多種風(fēng)格并存。我們將輪流的觀察這五種視圖,展現(xiàn)各個視圖
6、的目標(biāo):即視圖的所關(guān)注的問題,相應(yīng)的架構(gòu)藍圖的標(biāo)記方式,描述和管理藍圖的工具。并以非常簡單的形式從PABX的設(shè)計中,從我們在Alcatel商業(yè)系統(tǒng)(AlcatelBusinessSystem)上所做的工作中,以及從航空運輸控制系統(tǒng)(AirTrafficControlsystem)中引出一些例子一旨在描述一下視圖的特定及其標(biāo)記的方式,而不是定義這些系統(tǒng)的架構(gòu)。"4+1"視圖模型具有相當(dāng)?shù)?quot;普遍性",因此可以使用其他的標(biāo)注方法和工具,也可以采用其他的設(shè)計方法,特別是對于邏輯和過程的分解。但文中指出的這些方法都已經(jīng)成功的在實踐中運用過。邏輯結(jié)構(gòu)面向?qū)ο蟮姆纸膺?/p>
7、輯架構(gòu)主要支持功能性需求一一即在為用戶提供服務(wù)方面系統(tǒng)所應(yīng)該提供的功能。系統(tǒng)分解為一系列的關(guān)鍵抽象,(大多數(shù))來自于問題域,表現(xiàn)為對象或?qū)ο箢惖男问健K鼈儾捎贸橄?、封裝和繼承的原理。分解并不僅僅是為了功能分析,而且用來識別遍布系統(tǒng)各個部分的通用機制和設(shè)計元素。我們使用Rational/Booch方法來表示邏輯架構(gòu),借助于類圖和類模板的手段4。類圖用來顯示一個類的集合和它們的邏輯關(guān)系:關(guān)聯(lián)、使用、組合、繼承等等。相似的類可以劃分成類集合。類模板關(guān)注于單個類,它們強調(diào)主要的類操作,并且識別關(guān)鍵的對象特征。如果需要定義對象的內(nèi)部行為,則使用狀態(tài)轉(zhuǎn)換圖或狀態(tài)圖來完成。公共機制或服務(wù)可以在類功能(cla
8、ssutilities)中定義。對于數(shù)據(jù)驅(qū)動程度高的應(yīng)用程序,可以使用其他形式的邏輯視圖,例如E-R圖,來代替面向?qū)ο蟮姆椒?00approach)o邏輯視圖的表示法邏輯視圖的標(biāo)記方法來自Booch標(biāo)記法4。當(dāng)僅考慮具有架構(gòu)意義的條目時,這種表示法相當(dāng)簡單。特別是在這種設(shè)計級別上,大量的修飾作用不大。我們使用RationalRose?來支持邏輯架構(gòu)的設(shè)計。ConneetcrsVJParamet亡H藍亡dClassAocEatlcnCorhtaIunigntAggrgtianOUsage"-IlaAlnslarh»ation圖2邏輯藍圖的表示法Co-rhpohnt邏輯視圖的風(fēng)
9、格邏輯視圖的風(fēng)格采用面向?qū)ο蟮娘L(fēng)格,其主要的設(shè)計準(zhǔn)則是試圖在整個系統(tǒng)中保持單一的、一致的對象模型,避免就每個場合或過程產(chǎn)生草率的類和機制的技術(shù)說明。邏輯結(jié)構(gòu)藍圖的樣例圖3顯示了TelicPABX架構(gòu)中主要的類。圖3a.TelicPABX的邏輯藍圖b空中交通系統(tǒng)的藍圖f5TI田/仙恤噸力j、宀PABX建立終端間的通信連接。終端可以是電話設(shè)備、中繼線(例如,連接到中央辦公室)、連接線(PABX專線到PABX線)、電話專線、數(shù)據(jù)線、ISDN等等。不同的線路由不同的接口卡提供支持。線路controller對象的職責(zé)是在接口卡上對所有的信號進行解碼和注入,在特定于接口卡的信號與一致性的小型事件集合之間進
10、行相互轉(zhuǎn)換:開始、停止、數(shù)字化等。controller對象同時承載所有的實時約束。該類派生出許多子類以滿足不同的接口類型。terminal對象的責(zé)任是維持終端的狀態(tài),代表線路協(xié)調(diào)各項服務(wù)。例如,它使用numberingplan服務(wù)來解釋撥號。conversation代表了會話中的一系列終端。conversation使用了TranslationService(目錄、邏輯物理映射、路由),以及建立終端之間語音路徑的ConnectionService。對于一個包含了大量的具有架構(gòu)重要意義的類的、更大的系統(tǒng)來說,圖3b描述了空中交通管理系統(tǒng)的頂層類圖,包含8個類的種類(例如,類的分組)。進程架構(gòu)過程分
11、解進程架構(gòu)考慮一些非功能性的需求,如性能和可用性。它解決并發(fā)性、分布性、系統(tǒng)完整性、容錯性的問題,以及邏輯視圖的主要抽象如何與進程結(jié)構(gòu)相配合在一起一即在哪個控制線程上,對象的操作被實際執(zhí)行。進程架構(gòu)可以在幾種層次的抽象上進行描述,每個層次針對不同的問題。在最高的層次上,進程架構(gòu)可以視為一組獨立執(zhí)行的通信程序(叫作"processes")的邏輯網(wǎng)絡(luò),它們分布在整個一組硬件資源上,這些資源通過LAN或者WAN連接起來。多個邏輯網(wǎng)絡(luò)可能同時并存,共享相同的物理資源。例如,獨立的邏輯網(wǎng)絡(luò)可能用于支持離線系統(tǒng)與在線系統(tǒng)的分離,或者支持軟件的模擬版本和測試版本的共存。進程是構(gòu)成可執(zhí)行單
12、元任務(wù)的分組。進程代表了可以進行策略控制過程架構(gòu)的層次(即:開始、恢復(fù)、重新配置及關(guān)閉)。另外,進程可以就處理負載的分布式增強或可用性的提高而不斷地被重復(fù)。軟件被劃分為一系列單獨的任務(wù)。任務(wù)是獨立的控制線程,可以在處理節(jié)點上單獨地被調(diào)度。接著,我們可以區(qū)別主要任務(wù)、次要任務(wù)。主要任務(wù)是可以唯一處理的架構(gòu)元素;次要任務(wù)是由于實施原因而引入的局部附加任務(wù)(周期性活動、緩沖、暫停等等)。它們可以作為AdaTask或輕量線程來實施。主要任務(wù)的通訊途徑是良好定義的交互任務(wù)通信機制:基于消息的同步或異步通信服務(wù)、遠程過程調(diào)用、事件廣播等。次要任務(wù)則以會見或共享內(nèi)存來通信。在同一過程或處理節(jié)點上,主要任務(wù)不
13、應(yīng)對它們的分配做出任何假定。消息流、過程負載可以基于過程藍圖來進行評估,同樣可以使用啞負載來實現(xiàn)中空"的進程架構(gòu),并測量在目標(biāo)系統(tǒng)上的性能。正如Filareyetal.在他的Eurocontrol實驗中描述的那樣。進程視圖的表示法我們所使用的進程視圖的表示方法是從Booch最初為Ada任務(wù)推薦的表示方法擴展而來。同樣,用來所使用的表示法關(guān)注在架構(gòu)上具有重要意義的元素。(圖4)圖4過程藍圖表示法ProcessProcess-PwMeproemadornmentComponentsCortnactorsUnspecified-MessageRemoteProc&dureGaflV
14、Message,bidlroctranal-+Evert!占亡詡曲flndicalesacyclicalprocess我們曾使用來自TRW的UniversalNetworkArchitechureServices(UNASO)產(chǎn)品來構(gòu)建并實施過程和任務(wù)集合(包擴它們的冗余),使它們?nèi)谌脒^程的網(wǎng)絡(luò)中。UNAS包含SoftwareArchitectLifecycleEnvironment(SALE)工具,它支持上述表示方法。SALE允許以圖形的形式來描述進程架構(gòu),包括對可能的交互任務(wù)通信路徑的規(guī)格說明,正是從這些路徑中自動生成對應(yīng)的Ada或C+源代碼。使用該方法來指定和實施進程架構(gòu)的優(yōu)點是易于進行
15、修改而不會對應(yīng)用軟件造成太多的影響。進程視圖的風(fēng)格許多風(fēng)格可以適用于進程視圖。例如采用Garlan和Shaw的分類法1,我們可以得到管道和過濾器(Pipesandfilters),或客戶端/服務(wù)器,以及各種多個客戶端單個服務(wù)器和多個客戶端/多個服務(wù)器的變體。對于更加復(fù)雜的系統(tǒng),可以采用類似于K.Birman所描述的ISIS系統(tǒng)中進程組方法以及其它的標(biāo)注方法和工具。進程藍圖的例子所有的終端由單個的Termalprocess處理,其中Termalprocess由輸入隊列中的消息進行驅(qū)動。Controller對象在組成控制過程三個任務(wù)之中的一項任務(wù)上執(zhí)行:Lowcycleratetask掃描所有的非
16、活動終端(200ms),將Highcycleratetask(10ms掃描清單中的終端激活,其中Highcycleratetask檢測任何重要的狀態(tài)變化,將它們傳遞給Maincontrollertask,由它來對狀態(tài)的變更進行解釋,并通過向?qū)?yīng)的終端發(fā)送消息來通信。這里Controller過程中的通信通過共享內(nèi)存來實現(xiàn)。開發(fā)架構(gòu)子系統(tǒng)分解開發(fā)架構(gòu)關(guān)注軟件開發(fā)環(huán)境下實際模塊的組織。軟件打包成小的程序塊(程序庫或子系統(tǒng)),它們可以由一位或幾位開發(fā)人員來開發(fā)。子系統(tǒng)可以組織成分層結(jié)構(gòu),每個層為上一層提供良好定義的接口。系統(tǒng)的開發(fā)架構(gòu)用模塊和子系統(tǒng)圖來表達,顯示了"輸出"和&quo
17、t;輸入"關(guān)系。完整的開發(fā)架構(gòu)只有當(dāng)所有軟件元素被識別后才能加以描述。但是,可以列出控制開發(fā)架構(gòu)的規(guī)則:分塊、分組和可見性。大部分情況下,開發(fā)架構(gòu)考慮的內(nèi)部需求與以下幾項因素有關(guān):開發(fā)難度、軟件管理、重用性和通用性及由工具集、編程語言所帶來的限制。開發(fā)架構(gòu)視圖是各種活動的基礎(chǔ),如:需求分配、團隊工作的分配(或團隊機構(gòu))、成本評估和計劃、項目進度的監(jiān)控、軟件重用性、移植性和安全性。它是建立產(chǎn)品線的基礎(chǔ)。開發(fā)藍圖的表示方法同樣,使用Booch方法的變形,僅考慮具有架構(gòu)意義的項。圖5-開發(fā)藍圖表示方法ComponentsCounectorsModuleReferenceCcrnipifat
18、ionTepehdency(include"with'1Layer來自Rational的Apex開發(fā)環(huán)境支持開發(fā)架構(gòu)的定義和實現(xiàn)、和前文描述的分層策略,以及設(shè)計規(guī)則的實施。RationalRose可以在模塊和子系統(tǒng)層次上繪制開發(fā)藍圖,并支持開發(fā)源代碼(Ada、C+)進程的正向和反向工程。開發(fā)視圖的風(fēng)格我們推薦使用分層(layered)的風(fēng)格,定義4到6個子系統(tǒng)層。每層均具有良好定義的職責(zé)。設(shè)計規(guī)則是某層子系統(tǒng)依賴同一層或低一層的子系統(tǒng),從而最大程度地減少了具有復(fù)雜模塊依賴關(guān)系的網(wǎng)絡(luò)的開發(fā)量,得到層次式的簡單策略。圖6-Hughes空中交通系統(tǒng)(HATS)的5個層GMTS.MA
19、ATS.efc.HATSComponantELfan-MachineFnlerfaceQFf-NrielooIsExte-malsystemsharnessesATCFucionn.tFliqlitm呂wsig-SupportM&e-hanismsCommunityion,Ttme.Sioraqe,Reiourceimcnitig&rnent.etc.BrsicdementsCommo-nutilitiesr'l'WJ4'蓉三SectorAte.HcirrilVcije.OS.COTS開發(fā)架構(gòu)的例子圖6代表了加拿大的HughesAircraft開發(fā)的空中
20、交通控制系統(tǒng)(AirTrafficControlsystem)產(chǎn)品線的5個分層開發(fā)組織結(jié)構(gòu)。這是和圖3b描述的邏輯架構(gòu)相對應(yīng)的開發(fā)架構(gòu)。第一層和第二層組成了獨立于域的覆蓋整個產(chǎn)品線的分布式基礎(chǔ)設(shè)施,并保護其免受不同硬件平臺、操作系統(tǒng)或市售產(chǎn)品(如數(shù)據(jù)庫管理系統(tǒng))的影響。第三層為該基礎(chǔ)設(shè)施增加了ATC框架,形成一個特定領(lǐng)域的軟件架構(gòu)(domain-specificsoftwarearchitecture)。使用該框架,可以在第四層上構(gòu)建一個功能選擇板。層次5則非常依賴于客戶和產(chǎn)品,包含了大多數(shù)用戶接口和外部系統(tǒng)接口。72個子系統(tǒng)分布于5個層次上,每層包含了10至50個模塊,并可以在其他藍圖上表示
21、。物理架構(gòu)軟件至硬件的映射物理架構(gòu)主要關(guān)注系統(tǒng)非功能性的需求,如可用性、可靠性(容錯性),性能(吞吐量)和可伸縮性。軟件在計算機網(wǎng)絡(luò)或處理節(jié)點上運行,被識別的各種元素(網(wǎng)絡(luò)、過程、任務(wù)和對象),需要被映射至不同的節(jié)點;我們希望使用不同的物理配置:一些用于開發(fā)和測試,另外一些則用于不同地點和不同客戶的部署。因此軟件至節(jié)點的映射需要高度的靈活性及對源代碼產(chǎn)生最小的影響。物理藍圖的表示法大型系統(tǒng)中的物理藍圖會變得非?;靵y,所以它們可以采用多種形式,有或者沒有來自進程視圖的映射均可。圖7物理藍圖的表示法ConnectorsConipanGTitIIOfchrde-flce- Cainmijnintio
22、nlines CommunicohonnanpriiuHnt)Uni-direclionilcoinmimic口tin Mighhnclidtlicommunicolion.BusTRW的UNAS提供了數(shù)據(jù)驅(qū)動方法將過程架構(gòu)映射至物理架構(gòu),該方法允許大量的映射的變更而無需修改源代碼。物理藍圖的示例圖8顯示了大型PABX可能的硬件配置,而圖9和圖10顯示了兩種不同物理架構(gòu)上的進程映射,分別對應(yīng)一個小型和一個大型PABXoC、F和K是三種不同容量的計算機,支持三種不同的運行要求。圖9帶有過程分配的小型PABX物理架構(gòu)/TrniiialFtmbk圖10顯示了過程分配的大型PABX物理藍圖FTermi
23、nalCentraProemsudoCiitrnprocessJTjConuoiiarProcessroOifil'QpM9SS/ilngtrtfe|呃card呂TenntolPrxe歸K耳/Comroii?r/Process/K/CwtTQlterifnnc-ards場景綜合所有的視圖四種視圖的元素通過數(shù)量比較少的一組重要場景(更常見的是用例)進行無縫協(xié)同工作,我們?yōu)閳鼍懊枋鱿鄳?yīng)的腳本(對象之間和過程之間的交互序列)。正如Rubin和Goldberg所描述的那樣6。在某種意義上場景是最重要的需求抽象,它們的設(shè)計使用對象場景圖和對象交互圖來表示4。該視圖是其他視圖的冗余(因此”+1”)
24、,但它起到了兩個作用:作為一項驅(qū)動因素來發(fā)現(xiàn)架構(gòu)設(shè)計過程中的架構(gòu)元素,這一點將在下文中討論。作為架構(gòu)設(shè)計結(jié)束后的一項驗證和說明功能,既以視圖的角度來說明又作為架構(gòu)原型測試的出發(fā)點。場景的表示法場景表示法與組件邏輯視圖非常相似(請對照圖2),但它使用過程視圖的連接符來表示對象之間的交互(請對照圖4),注意對象實例使用實線來表達。至于邏輯藍圖,我們使用RationalRose來捕獲并管理對象場景。場景的例子圖11顯示了小型PABX的場景片段。相應(yīng)的腳本是:1. Joe的電話控制器檢測和校驗摘機狀態(tài)的變換,并發(fā)送消息喚醒相應(yīng)的終端對象。2. 終端分配一些資源,并要求控制器發(fā)出撥號音。3. 控制器接受
25、撥號并傳遞給終端。4. 終端使用撥號方案來分析數(shù)字流。5. 有效的數(shù)字序列被鍵入,終端開始會話。視圖之間的對應(yīng)性各種視圖并不是完全是正交的或獨立的。視圖的元素根據(jù)某種設(shè)計規(guī)則和啟發(fā)式方法與其他視圖中的元素相關(guān)聯(lián)。從邏輯視圖到過程視圖我們發(fā)現(xiàn)邏輯視架構(gòu)有幾項重要特性:自主性:對象是主動的、被動的還是被保護的?o主動對象享有調(diào)用其他對象或其自身操作的主動權(quán),并且當(dāng)其他對象對其進行調(diào)用時,具有對其自身操作的完全控制權(quán)。o被動對象不能主動調(diào)用任何操作,對其他對象調(diào)用自身的操作沒有控制。o被保護對象不能主動調(diào)用任何操作。但對自身的操作有一定的控制功能。持久化:對象是暫時的還是持久化的?它們是否會導(dǎo)致過程
26、或處理器的終止?依賴性:對象的存在或持久化是否依賴于另一個對象?分布性:對象的狀態(tài)或操作是否能被物理架構(gòu)中的許多節(jié)點所訪問?或是被進程架構(gòu)中的幾個進程所訪問?在邏輯視圖中,我們認為每個對象均是主動的,具有潛在的'并發(fā)性”,即與其他對象具有"平行的"行為,我們并不考慮所要達到的確切并發(fā)程度。因此,邏輯結(jié)構(gòu)所考慮的僅是需求的功能性方面。然而,當(dāng)我們定義進程架構(gòu)時,由于巨大的開銷,為每個對象實施各自的控制線程(例如,Unix進程或Ada任務(wù)),在目前的技術(shù)狀況下是不現(xiàn)實的。此外,如果對象是并發(fā)的,那么必須以某種抽象形式來調(diào)用它們的操作。另一方面,由于以下幾種原因需要多個控
27、制線程。為了快速響應(yīng)某類外部觸發(fā),包括與時間相關(guān)的事件。為了在一個節(jié)點中利用多個CPU,或者在一個分布式系統(tǒng)中利用多個節(jié)點。為了提高CPU的利用率,在某些控制線程被掛起,等待其他活動結(jié)束的時候(例如,訪問外部對象其他活動對象時),為其他的活動分配CPU。為了劃分活動的優(yōu)先級(提高潛在的響應(yīng)能力)。為了支持系統(tǒng)的可伸縮性(借助于共享負載的其他過程)。為了在軟件的不同領(lǐng)域分離關(guān)注點。為了提高系統(tǒng)的可用性(通過Backup過程)。我們同時使用兩種策略來決定并發(fā)的程度和定義所需的過程集合??紤]一系列潛在的物理目標(biāo)架構(gòu)。以下兩種形式我們可以任選其一:從內(nèi)至外:由邏輯架構(gòu)開始:定義代理任務(wù),該任務(wù)將控制一
28、個類的多個活動對象的單個線程進行多元化處理;同一代理任務(wù)還執(zhí)行持久化處理那些依賴于一個主動對象的對象;需要相互進行操作的幾個類或僅需要少量處理的類共享單個代理。這種聚合會一直進行,直到我們將過程減少到合理的較少數(shù)量,而仍允許分布性和對物理資源的使用。由外至內(nèi):從物理結(jié)構(gòu)開始:識別系統(tǒng)的外部觸發(fā);定義處理觸發(fā)的客戶過程和僅提供服務(wù)(而非初始化它們)的服務(wù)器進程;使用數(shù)據(jù)完整性和問題的串行化(serialization)約束來定義正確的服務(wù)器設(shè)置,并且為客戶機與服務(wù)器代理分配對象;識別出必須分布哪些對象。其結(jié)果是將類(和它們的對象)映射至一個任務(wù)集合和進程架構(gòu)中的進程。通常,活動類具有代理任務(wù),也
29、存在一些變形:對于給定的類,使用多個代理以提高吞吐量,或者多個類映射至單個代理,因為它們的操作并不是頻繁地被調(diào)用,或者是為了保證執(zhí)行序列。注意這并不是產(chǎn)生最佳過程架構(gòu)的線性的、決定性的進程;它需要若干個迭代來得到可接受的折衷。還存在許多其他方法,例如Birman等人5或Witt等人7提出的方法。確切的實施映射的方法不在本文的討論范圍,但我們以一個小的例子來說明一下。圖12顯示了一個小的類集合如何從假想的空中交通控制系統(tǒng)映射至進程。flight類映射至一個flight代理集合:有許多航班等待處理,外部觸發(fā)的頻率很高,響應(yīng)時間很關(guān)鍵,負載必須分布于多個CPU。并且,航班處理的持久化和分布性方面都取
30、決于flightserver,為了滿足可用性,還是使用flightserver的一臺備份服務(wù)器。航班的profile和clearance總是從屬于某個航班,盡管它們是復(fù)雜的類,但它們共享flight類的進程。航班分布于若干其他進程,特別是對于顯示和外部接口。sectorization類,為controller的權(quán)限分配建立了空域劃分。由于完整性約束,僅能被一個代理處理,但可以與flight類共享服務(wù)器過程:更新得并不頻繁。location和arispace及其他的靜態(tài)航空信息是受到保護的對象,在幾個類中共享,很少被更新;它們被映射至各自的服務(wù)器,分布于其他過程。圖12從邏輯視圖到過程視圖的映射
31、flIghtmuvltlpleflightsectori-5、帑覘JSingle&DctDrizutioanagonfbatkiip口zi&ronaiiticnIinfos-e-rvei從邏輯視圖到開發(fā)視圖類通常作為一個模塊來實現(xiàn),例如Ada包中可視部分的一個類型。密切相關(guān)的類(類的種類)的集合組合到子系統(tǒng)中。子系統(tǒng)的定義必須考慮額外的約束,如團隊組織、期望的代碼規(guī)模(通常每個子系統(tǒng)為5K或20KSLOC)、可重用性和通用性的程度以及嚴(yán)格的分層依據(jù)(可視性問題),發(fā)布策略和配置管理。所以,通常最后得到的不是與邏輯視圖逐一對應(yīng)的視圖。邏輯視圖和開發(fā)視圖非常接近,但具有不同的關(guān)注點
32、。我們發(fā)現(xiàn)項目規(guī)模越大,視圖間的差距也越大。例如,如果比較圖3b和圖6,則會發(fā)現(xiàn)并不存在逐一對應(yīng)的類的不同種類到層的映射。而如果我們考慮類的種類的"外部接口"一網(wǎng)關(guān)種類時,它的實現(xiàn)遍布若干層:通訊協(xié)議在第1層或以下的層,通用網(wǎng)關(guān)機制在第2層,而特定的網(wǎng)關(guān)在第5層子系統(tǒng)。從進程視圖到物理視圖進程和進程組以不同的測試和部署配置映射至可用的物理硬件。Birman在ISIS項目中描述了詳細的映射模式5。場景主要以所使用類的形式與邏輯視圖相關(guān)聯(lián);而與進程視圖的關(guān)聯(lián)則是考慮了一個或多個控制線程的、對象間的交互形式。模型的剪裁并不是所有的軟件架構(gòu)都需要"4+1"視圖。
33、無用的視圖可以從架構(gòu)描述中省略,比如:只有一個處理器,則可以省略物理視圖;而如果僅有一個進程或程序,則可以省略過程視圖。對于非常小型的系統(tǒng),甚至可能邏輯視圖與開發(fā)視圖非常相似,而不需要分開的描述。場景對于所有的情況均適用。迭代過程Witt等人為設(shè)計和架構(gòu)指出了4個階段:勾畫草圖、組織、具體化和優(yōu)化,分成了12個步驟7。他們還指出需要某種程度的反向工程。而我們認為對于大型的項目,該方法太"線性化"了。在4個階段的末尾,可用于驗證架構(gòu)的內(nèi)容太少。我們提倡一種更具有迭代性質(zhì)的方法,即架構(gòu)先被原形化、測試、估量、分析,然后在一系列的迭代過程中被細化。該方法除了減少與架構(gòu)相關(guān)的風(fēng)險之
34、外,對于項目而言還有其他優(yōu)點:團隊合作、培訓(xùn),加深對架構(gòu)的理解,深入程序和工具等等(此處提及的是演進的原形,逐漸發(fā)展成為系統(tǒng),而不是一次性的試驗性的原形)。這種迭代方法還能夠使需求被細化、成熟化并能夠被更好地理解。場景驅(qū)動(seenario-driven)的方法系統(tǒng)大多數(shù)關(guān)鍵的功能以場景(或useeases)的形式被捕獲。關(guān)鍵意味著:最重要的功能,系統(tǒng)存在的理由,或使用頻率最高的功能,或體現(xiàn)了必須減輕的一些重要的技術(shù)風(fēng)險。開始階段: 基于風(fēng)險和重要性為某次迭代選擇一些場景。場景可能被歸納為對若干用戶需求的抽象。 形成"稻草人式的架構(gòu)"。然后對場景進行"描述&quo
35、t;,以識別主要的抽象(類、機制、過程、子系統(tǒng)),如Rubin與Goldberg6所指出的分解成為序列對(對象、操作)。 所發(fā)現(xiàn)的架構(gòu)元素被分布到4個藍圖中:邏輯藍圖、進程藍圖、開發(fā)藍圖和物理藍圖。 然后實施、測試、度量該架構(gòu),這項分析可能檢測到一些缺點或潛在的增強要求。 捕獲經(jīng)驗教訓(xùn)。循環(huán)階段:下一個迭代過程開始進行: 重新評估風(fēng)險, 擴展考慮的場景選擇板。 選擇能減輕風(fēng)險或提高結(jié)構(gòu)覆蓋的額外的少量場景,然后: 試著在原先的架構(gòu)中描述這些場景。 發(fā)現(xiàn)額外的架構(gòu)元素,或有時還需要找出適應(yīng)這些場景所需的重要架構(gòu)變更。 更新4個主要視圖:邏輯視圖、進程視圖、開發(fā)視圖和物理視圖。 根據(jù)變更修訂現(xiàn)有的
36、場景。 升級實現(xiàn)工具(架構(gòu)原型)來支持新的、擴展了的場景集合。 測試。如果可能的話,在實際的目標(biāo)環(huán)境和負載下進行測試。 然后評審這五個視圖來檢測簡潔性、可重用性和通用性的潛在問題。 更新設(shè)計準(zhǔn)則和基本原理。捕獲經(jīng)驗教訓(xùn)。終止循環(huán)為了實際的系統(tǒng),初始的架構(gòu)原型需要進行演進。較好的情況是在經(jīng)過2次或3次迭代之后,結(jié)構(gòu)變得穩(wěn)定:主要的抽象都已被找到。子系統(tǒng)和過程都已經(jīng)完成,以及所有的接口都已經(jīng)實現(xiàn)。接下來則是軟件設(shè)計的范疇,這個階段可能也會用到相似的方法和過程。這些迭代過程的持續(xù)時間參差不齊,原因在于:所實施項目的規(guī)模,參與項目人員的數(shù)量、他們對本領(lǐng)域和方法的熟悉程度,以及該系統(tǒng)和開發(fā)組織的熟悉程度
37、等等。因而較小的項目迭代過程可能持續(xù)2-3周(例如,10KSLOC),而大型的項目可能為6-9個月(例如,700KSLOC)。架構(gòu)的文檔化架構(gòu)設(shè)計中產(chǎn)生的文檔可以歸結(jié)為兩種:軟件架構(gòu)文檔,其結(jié)構(gòu)遵循”4+1”視圖(請對照圖13,個典型的提綱)軟件設(shè)計準(zhǔn)則,捕獲了最重要的設(shè)計決策。這些決策必須被遵守,以保持系統(tǒng)架構(gòu)的完整性。圖13-軟件架構(gòu)文檔提綱標(biāo)題變更歷史記錄目錄圖渚單1. 范圍2. 引用3. 軟件架構(gòu)4. 架構(gòu)目標(biāo)與約束5. 邏輯衆(zhòng)構(gòu)6-過程架構(gòu)7. 開發(fā)衆(zhòng)構(gòu)8. 物理架構(gòu)9-場景10.規(guī)模更性能11質(zhì)量附錄A姑百舊土結(jié)束語無論是否經(jīng)過一次本地定制的和技術(shù)上的調(diào)整,”4+1”視圖都能在許多
38、大型項目中成功運用。事實上,它允許不同的'風(fēng)險承擔(dān)人"找出他們就軟件架構(gòu)所關(guān)心的問題。系統(tǒng)工程師首先接觸物理視圖,然后轉(zhuǎn)向進程視圖;最終用戶、顧客、數(shù)據(jù)分析專家從邏輯視圖入手;項目經(jīng)理、軟件配置人員則從開發(fā)視圖來看待”4+1”視圖。在Rational和其他地方,提出并討論了其他系列視圖,例如Meszaros(BNR)、Hofmeister。Nord和Soni(Siemenms)、Emery和Hilliard(Mitre),但我們發(fā)現(xiàn)其他視圖通??梢詺w入我們所描述的4個視圖中的一個。例如Cost&Schedule視圖可以歸入開發(fā)視圖,將一個數(shù)據(jù)視圖歸入一個邏輯視圖,以及
39、將一個執(zhí)行視圖歸入進程視圖和物理視圖的組合。表1-"4+1"視圖模型一覽表視圈邏輯視圖過程視圈開發(fā)視圖物理視圈場景組件類任務(wù)模塊、子系統(tǒng)節(jié)點步驟、腳斗連接工具丟聯(lián)、繼承、約束會面、消息r廣播、RPC等編譯依頼性、"with"語句、LLinclude,5通信媒體、LAN-.WAN.總線等類的種類過程干至統(tǒng)庫物理子系統(tǒng)Web涉眾最終用戶系統(tǒng)設(shè)計人員、集成人員開發(fā)人員、經(jīng)理系統(tǒng)設(shè)計人員援終用戶、開發(fā)人員關(guān)注點功能性能、可用性、S/W容錯、整體性組織、可重用性、可移植性.產(chǎn)品線可伸縮性、性能、可用性可理解性工具支持RoseUNAS/SALEDADSApe-,SoDAUNAS.OpenviewDADSRos
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位管理制度呈現(xiàn)大全員工管理篇
- 七年級英語Writingatouristguide課件
- 《電潛泵管理》課件
- 3.10 建設(shè)中國特色社會主義 課時練習(xí)-2021-2022學(xué)年部編版八年級歷史下冊
- 讓CAR-T細胞治療更精準(zhǔn)為CAR-T開發(fā)提供綜合性方案
- 《全球化與管理》課件
- 三年級科學(xué)教學(xué)工作計劃(9篇)
- 化工銷售工作總結(jié)
- 能源行業(yè)員工福利體系構(gòu)建
- 2023年項目部安全培訓(xùn)考試題答案滿分必刷
- 檢驗檢測服務(wù)公司市場營銷計劃
- 醫(yī)務(wù)人員外出進修流程圖
- DB32∕T 2349-2013 楊樹一元立木材積表
- 昌樂二中271高效課堂培訓(xùn)與評價ppt課件
- 顫病(帕金森?。┲嗅t(yī)護理常規(guī)
- 豬場名詞及指標(biāo)講義
- 果膠項目商業(yè)計劃書(模板范本)
- 旋挖鉆成孔掏渣筒沉渣處理施工工藝
- T∕CHTS 10040-2021 公路無機結(jié)合料穩(wěn)定粒料基層振動法施工技術(shù)指南
- 集團后備人才培養(yǎng)方案
- 腦卒中偏癱患者早期康復(fù)護理現(xiàn)狀(一)
評論
0/150
提交評論