“4+1”視圖是對(duì)邏輯架構(gòu)進(jìn)行描述皆撩,最早由 Philippe Kruchten 提出,他在1995年的《IEEE Software》上發(fā)表了題為《The 4+1 View Model of Architecture》的論文吧恃,引起了業(yè)界的極大關(guān)注脸秽,并最終被 RUP 采納猩谊,現(xiàn)在已經(jīng)成為架構(gòu)設(shè)計(jì)的結(jié)構(gòu)標(biāo)準(zhǔn)揪罕。
該模型五個(gè)主要的視圖
邏輯視圖(Logical View),設(shè)計(jì)的對(duì)象模型(使用面向?qū)ο?/a>的設(shè)計(jì)方法時(shí))吆鹤。
過程視圖(Process View)厨疙,捕捉設(shè)計(jì)的并發(fā)和同步特征。
物理視圖(Physical View)疑务,描述了軟件到硬件的映射沾凄,反映了分布式特性。
開發(fā)視圖(Development View)知允,描述了在開發(fā)環(huán)境中軟件的靜態(tài)組織結(jié)構(gòu)撒蟀。
架構(gòu)的描述,即所做的各種決定温鸽,可以圍繞著這四個(gè)視圖來組織保屯,然后由一些用例 (use cases)或場(chǎng)景(scenarios)來說明,從而形成了第五個(gè)視圖涤垫。
邏輯架構(gòu)(邏輯試圖)
面向?qū)ο蟮姆纸?br>
邏輯架構(gòu)主要支持功能性需求――系統(tǒng)應(yīng)該為用戶提供哪些服務(wù)姑尺。系統(tǒng)分解為一系列的關(guān)鍵抽象,(大多數(shù))來自于問題域蝠猬,表現(xiàn)為對(duì)象或?qū)ο箢惖男问角畜K鼈儾捎贸橄蟆⒎庋b和繼承的原理吱雏。分解并不僅僅是為了功能分析敦姻,而且用來識(shí)別遍布系統(tǒng)各個(gè)部分的通用機(jī)制和設(shè)計(jì)元素。我們使用 Rational/Booch 方法來表示邏輯架構(gòu)歧杏,借助于類圖和類模板的手段 4。類圖用來顯示一個(gè)類的集合和它們的邏輯關(guān)系:關(guān)聯(lián)迷守、使用犬绒、組合、繼承等等兑凿。相似的類可以劃分成類集合凯力。類模板關(guān)注于單個(gè)類,它們強(qiáng)調(diào)主要的類操作礼华,并且識(shí)別關(guān)鍵的對(duì)象特征咐鹤。如果需要定義對(duì)象的內(nèi)部行為,則使用狀態(tài)轉(zhuǎn)換圖或狀態(tài)圖來完成圣絮。公共機(jī)制或服務(wù)可以在類功能 (class utilities)中定義祈惶。對(duì)于數(shù)據(jù)驅(qū)動(dòng)程度高的應(yīng)用程序,可以使用其他形式的邏輯視圖,例如 E-R 圖捧请,來代替面向?qū)ο蟮姆椒ǎ∣O approach)凡涩。
邏輯視圖的表示法
邏輯視圖的標(biāo)記方法來自 Booch 標(biāo)記法4。當(dāng)僅考慮具有架構(gòu)意義的條目時(shí)疹蛉,這種表示法相當(dāng)簡(jiǎn)單活箕。特別是在這種設(shè)計(jì)級(jí)別上,大量的修飾作用不大可款。我們使用 Rational Rose 來支持邏輯架構(gòu)的設(shè)計(jì)育韩。
過程架構(gòu)(過程試圖)
過程分解
過程架構(gòu)考慮一些非功能性的需求,如性能和可用性闺鲸。它解決并發(fā)性座慰、分布性、系統(tǒng)完整性翠拣、容錯(cuò)性的問題版仔,以及邏輯視圖的主要抽象如何與過程結(jié)構(gòu)相配合在一起-即在哪個(gè)控制線程上,對(duì)象的操作被實(shí)際執(zhí)行误墓。
過程架構(gòu)可以在幾種層次的抽象上進(jìn)行描述蛮粮,每個(gè)層次針對(duì)不同的問題。在最高的層次上谜慌,過程架構(gòu)可以視為一組獨(dú)立執(zhí)行的通信程序(叫作“processes”)的邏輯網(wǎng)絡(luò)然想,它們分布在整個(gè)一組硬件資源上,這些資源通過 LAN 或者 WAN 連接起來欣范。多個(gè)邏輯網(wǎng)絡(luò)可能同時(shí)并存变泄,共享相同的物理資源。例如恼琼,獨(dú)立的邏輯網(wǎng)絡(luò)可能用于支持離線系統(tǒng)與在線系統(tǒng)的分離妨蛹,或者支持軟件的模擬版本和測(cè)試版本的共存。
過程是構(gòu)成可執(zhí)行單元任務(wù)的分組晴竞。過程代表了可以進(jìn)行策略控制過程架構(gòu)的層次(即:開始蛙卤、恢復(fù)、重新配置及關(guān)閉)噩死。另外颤难,過程可以就處理負(fù)載的分布式增強(qiáng)或可用性的提高而不斷地被重復(fù)。
軟件被劃分為一系列單獨(dú)的任務(wù)已维。任務(wù)是獨(dú)立的控制線程行嗤,可以在處理節(jié)點(diǎn)上單獨(dú)地被調(diào)度。
接著垛耳,我們可以區(qū)別主要任務(wù)栅屏、次要任務(wù)飘千。主要任務(wù)是可以唯一處理的架構(gòu)元素;次要任務(wù)是由于實(shí)施原因而引入的局部附加任務(wù)(周期性活動(dòng)既琴、緩沖占婉、暫停等等)。它們可以作為 Ada Task 或輕量線程來實(shí)施甫恩。主要任務(wù)的通訊途徑是良好定義的交互任務(wù)通信機(jī)制:基于消息的同步或異步通信服務(wù)逆济、遠(yuǎn)程過程調(diào)用、事件廣播等磺箕。次要任務(wù)則以會(huì)見或共享內(nèi)存來通信奖慌。在同一過程或處理節(jié)點(diǎn)上,主要任務(wù)不應(yīng)對(duì)它們的分配做出任何假定松靡。
消息流简僧、過程負(fù)載可以基于過程視圖來進(jìn)行評(píng)估,同樣可以使用啞負(fù)載來實(shí)現(xiàn)“中空”的過程架構(gòu)雕欺,并測(cè)量在目標(biāo)系統(tǒng)上的性能岛马。正如 Filarey et al. 在他的 Eurocontrol 實(shí)驗(yàn)中描述的那樣。
過程視圖的表示法
我們所使用的過程視圖的表示方法是從Booch最初為 Ada 任務(wù)推薦的表示方法擴(kuò)展而來屠列。同樣啦逆,用來所使用的表示法關(guān)注在架構(gòu)上具有重要意義的元素。
物理架構(gòu)(物理試圖)
軟件至硬件的映射
物理視圖主要描述硬件配置笛洛。在UML中通常被稱為部署視圖夏志,它主要考慮如何把軟件映射到硬件上。通常需要考慮到解決系統(tǒng)拓?fù)浣Y(jié)構(gòu)苛让、系統(tǒng)安裝和通信等問題沟蔑。我們希望使用不同的物理配置:一些用于開發(fā)和測(cè)試,另外一些則用于不同地點(diǎn)和不同客戶的部署狱杰。因此軟件至節(jié)點(diǎn)的映射需要高度的靈活性及對(duì)源代碼產(chǎn)生最小的影響瘦材。
物理視圖的表示法
大型系統(tǒng)中的物理視圖會(huì)變得非常混亂浦旱,所以它們可以采用多種形式宇色,有或者沒有來自進(jìn)程視圖的映射均可。
開發(fā)架構(gòu)(開發(fā)試圖)
子系統(tǒng)分解
開發(fā)架構(gòu)關(guān)注軟件開發(fā)環(huán)境下實(shí)際模塊的組織颁湖。軟件打包成小的程序塊(程序庫或子系統(tǒng)),它們可以由一位或幾位開發(fā)人員來開發(fā)例隆。子系統(tǒng)可以組織成分層結(jié)構(gòu)甥捺,每個(gè)層為上一層提供良好定義的接口。
系統(tǒng)的開發(fā)架構(gòu)用模塊和子系統(tǒng)圖來表達(dá)镀层,顯示了“輸出”和“輸入”關(guān)系镰禾。完整的開發(fā)架構(gòu)只有當(dāng)所有軟件元素被識(shí)別后才能加以描述皿曲。但是,可以列出控制開發(fā)架構(gòu)的規(guī)則:分塊吴侦、分組和可見性屋休。
大部分情況下,開發(fā)架構(gòu)考慮的內(nèi)部需求與以下幾項(xiàng)因素有關(guān):開發(fā)難度备韧、軟件管理劫樟、重用性和通用性及由工具集、編程語言所帶來的限制织堂。開發(fā)架構(gòu)視圖是各種活動(dòng)的基礎(chǔ)叠艳,如:需求分配、團(tuán)隊(duì)工作的分配(或團(tuán)隊(duì)機(jī)構(gòu))易阳、成本評(píng)估和計(jì)劃附较、項(xiàng)目進(jìn)度的監(jiān)控、軟件重用性潦俺、移植性和安全性拒课。它是建立產(chǎn)品線的基礎(chǔ)。
開發(fā)視圖的表示方法
同樣事示,使用 Booch 方法的變形早像,僅考慮具有架構(gòu)意義的項(xiàng)。
場(chǎng)景(+1試圖)
綜合所有的視圖
四種視圖的元素通過數(shù)量比較少的一組重要場(chǎng)景(更常見的是用例)進(jìn)行無縫協(xié)同工作很魂,我們?yōu)閳?chǎng)景描述相應(yīng)的腳本(對(duì)象之間和過程之間的交互序列)扎酷。
在某種意義上場(chǎng)景是最重要的需求抽象,它們的設(shè)計(jì)使用對(duì)象場(chǎng)景圖和對(duì)象交互圖來表示遏匆。
該視圖是其他視圖的冗余(因此“+1§)法挨,但它起到了兩個(gè)作用:
作為一項(xiàng)驅(qū)動(dòng)因素來發(fā)現(xiàn)架構(gòu)設(shè)計(jì)過程中的架構(gòu)元素。
作為架構(gòu)設(shè)計(jì)結(jié)束后的一項(xiàng)驗(yàn)證和說明功能幅聘,既以視圖的角度來說明又作為架構(gòu)原型測(cè)試的出發(fā)點(diǎn)凡纳。
場(chǎng)景的表示法
場(chǎng)景表示法與組件邏輯視圖非常相似(請(qǐng)對(duì)照?qǐng)D 2),但它使用過程視圖的連接符來表示對(duì)象之間的交互(請(qǐng)對(duì)照?qǐng)D 3)帝蒿,注意對(duì)象實(shí)例使用實(shí)線來表達(dá)荐糜。至于邏輯視圖,我們使用 Rational Rose 來捕獲并管理對(duì)象場(chǎng)景葛超。