《实用软件架构:从系统环境到软件部署 》——2.4 架构视图与架构视点
本節(jié)書摘來自華章出版社《實(shí)用軟件架構(gòu):從系統(tǒng)環(huán)境到軟件部署》一書中的第2章,第2.4節(jié),作者:[印]蒂拉克·米特拉(Tilak Mitra)著,愛飛翔 譯,更多章節(jié)內(nèi)容可以訪問云棲社區(qū)“華章計(jì)算機(jī)”公眾號(hào)查看。
2.4 架構(gòu)視圖與架構(gòu)視點(diǎn)
以軟件架構(gòu)為論題的書籍、文章、研究項(xiàng)目及相關(guān)刊物,都會(huì)帶有各自的觀點(diǎn)。不同的流派對(duì)架構(gòu)有不同的看法,他們會(huì)按照各自的看法來做架構(gòu),并會(huì)將各自的做法加以推廣。就本書的主題來說,筆者并不打算專門用一個(gè)章節(jié)把與軟件架構(gòu)有關(guān)的各種觀點(diǎn)全都講解一遍,而是只想展示下面的這種觀點(diǎn),因?yàn)楣P者覺得它比較務(wù)實(shí),而且運(yùn)用起來較為流暢。
視圖和視點(diǎn)
Philippe Kruchten (1995.11)率先開始使用視圖(view)與視點(diǎn)(viewpoint)這兩個(gè)概念,來表達(dá)業(yè)界對(duì)軟件架構(gòu)的各種關(guān)注。Kruchten是IEEE 1471標(biāo)準(zhǔn)的一位制定者,該標(biāo)準(zhǔn)明確規(guī)定了視圖的定義,也引入了視點(diǎn)的概念。Kruchten在論文(參見2.6節(jié))中,是這樣來描述這兩個(gè)概念的:
視點(diǎn)—視點(diǎn)是“一份規(guī)范書,用來描述構(gòu)建視圖和使用視圖時(shí)所應(yīng)依循的約定。它是一種模式或一份模板,用來確立視圖的目標(biāo)和受眾,以及創(chuàng)建視圖與分析視圖所用的技巧,使得我們可以據(jù)此創(chuàng)建出不同的視圖。”
視圖—視圖是“從某個(gè)角度對(duì)整個(gè)系統(tǒng)所做的一種表現(xiàn),該角度是由一系列彼此相聯(lián)系的關(guān)注點(diǎn)所確立的。”
IBM (n.d.)定義了一套列架構(gòu)視點(diǎn),這就是IBM IT System Viewpoint Library(IBM IT系統(tǒng)視點(diǎn)庫)。筆者認(rèn)為這套架構(gòu)視點(diǎn)相當(dāng)完備地涵蓋了系統(tǒng)架構(gòu)的各個(gè)方面。如圖2-3所示,該視點(diǎn)庫中包含4個(gè)基本視點(diǎn)和6個(gè)正交(cross-cutting)視點(diǎn)。
?
IBM IT System Viewpoint Library中的四個(gè)基本視點(diǎn)分別是:
需求(Requirement)—與該視點(diǎn)有關(guān)的模型元素,用來捕捉系統(tǒng)中的各種需求,包括業(yè)務(wù)需求、技術(shù)需求、功能需求以及非功能型需求。對(duì)于該視點(diǎn)來說,最為常見的捕捉手段是用例與用例模型。
解決方案(Solution)—與該視點(diǎn)有關(guān)的模型元素,用來確定一套可以滿足相關(guān)需求及約束的解決方案。此視點(diǎn)可以細(xì)分為兩種:
功能視點(diǎn)(Functional)—此視點(diǎn)所關(guān)注的模型元素,從本質(zhì)上來說,都是結(jié)構(gòu)方面的元素,我們不僅要把元素本身實(shí)現(xiàn)出來,而且還要把元素之間的(靜態(tài)和動(dòng)態(tài))關(guān)系建立好,以便用這些元素來構(gòu)建系統(tǒng)。一般來說,此視點(diǎn)的細(xì)節(jié),是通過功能架構(gòu)來捕捉的,本書第7章將會(huì)專門講解功能架構(gòu)。
操作視點(diǎn)(Operational)—此視點(diǎn)關(guān)注的是怎樣用結(jié)構(gòu)元素來構(gòu)建目標(biāo)系統(tǒng),以及怎樣把功能視圖部署到(由網(wǎng)絡(luò)、硬件、計(jì)算資源、服務(wù)器等所構(gòu)成的)IT環(huán)境中。我們通常使用操作模型來捕獲此視點(diǎn)的細(xì)節(jié),本書第8章將會(huì)專門講解操作模型。
確認(rèn)(Validation)—通過此視點(diǎn)所建立的模型元素,主要用來評(píng)估系統(tǒng)的能力,以確保該系統(tǒng)能夠體現(xiàn)出預(yù)定的功能,并且能夠提供質(zhì)量合格的服務(wù)。我們通常會(huì)把功能和非功能方面的測(cè)試用例當(dāng)作驗(yàn)證標(biāo)準(zhǔn),以判斷該系統(tǒng)是否具備預(yù)定的能力。
從圖2-3中可以看出,這4個(gè)基本視點(diǎn)是相互關(guān)聯(lián)的。功能視點(diǎn)與操作視點(diǎn),可以合起來實(shí)現(xiàn)需求視點(diǎn),并為其提供支持,而這兩個(gè)視點(diǎn),又是通過確認(rèn)視點(diǎn)得以驗(yàn)收的。為了把這張圖畫得明確一些,筆者并沒有專門標(biāo)出“解決方案”視點(diǎn),而是直接把構(gòu)成該視點(diǎn)的功能視點(diǎn)和操作視點(diǎn)畫在了圖中。
視點(diǎn)庫中還有6個(gè)正交視點(diǎn)。在圖2-3中,4個(gè)基本視點(diǎn)周圍的那6個(gè)同心正方形,就是用來表示這6個(gè)視點(diǎn)的。筆者之所以用這樣的方式來畫圖,是想表達(dá)這6個(gè)正交視點(diǎn)對(duì)一個(gè)或多個(gè)基本視點(diǎn)所造成的影響。
這6個(gè)正交視點(diǎn)分別是:
應(yīng)用(Application)—該視點(diǎn)專注于滿足系統(tǒng)所宣稱的業(yè)務(wù)需求。對(duì)于該視點(diǎn)來說,應(yīng)用架構(gòu)師扮演著主要角色。
技術(shù)(Technical)—該視點(diǎn)關(guān)注的是硬件、軟件、中間件(其定義請(qǐng)參閱第5章)以及打包的應(yīng)用程序,這些內(nèi)容合起來可以實(shí)現(xiàn)應(yīng)用程序的功能,并使得應(yīng)用程序能夠運(yùn)作。對(duì)于該視點(diǎn)來說,基礎(chǔ)設(shè)施架構(gòu)師和集成架構(gòu)師扮演著主要角色。
系統(tǒng)管理(Systems Management)—該視點(diǎn)關(guān)注部署之后的管理、維護(hù),以及系統(tǒng)的運(yùn)作。對(duì)于該視點(diǎn)來說,應(yīng)用維護(hù)和管理團(tuán)隊(duì)扮演著主要角色。
可用性(Availability)—該視點(diǎn)關(guān)注怎樣才能把系統(tǒng)構(gòu)建起來,并令其保持可用(比如,怎樣才能使系統(tǒng)的正常運(yùn)行時(shí)間達(dá)到總運(yùn)行時(shí)間的99.5%),以便滿足預(yù)先達(dá)成的服務(wù)級(jí)別協(xié)議。對(duì)于該視點(diǎn)來說,基礎(chǔ)設(shè)施架構(gòu)師扮演著主要角色,而應(yīng)用架構(gòu)師與中間件架構(gòu)師,則會(huì)為前者的工作提供支持。
性能(Performance)—該視點(diǎn)關(guān)注的問題是,怎樣令系統(tǒng)的性能可以滿足預(yù)先達(dá)成的服務(wù)級(jí)別協(xié)議(比如,從用戶發(fā)出請(qǐng)求到系統(tǒng)給出應(yīng)答,這之間的平均延遲時(shí)間要控制在400毫秒以內(nèi))。對(duì)于該視點(diǎn)來說,應(yīng)用架構(gòu)師扮演著主要角色,而中間件架構(gòu)師和基礎(chǔ)設(shè)施架構(gòu)師,則會(huì)為前者的工作提供支持。
安全(Security)—該視點(diǎn)關(guān)注的是安全方面的系統(tǒng)需求,例如單點(diǎn)登入(single sign-on)、數(shù)據(jù)傳輸協(xié)議的安全程度,以及防止入侵等。某些安全需求(例如單點(diǎn)登入)主要是由應(yīng)用架構(gòu)師來處理的,而確認(rèn)數(shù)據(jù)協(xié)議(例如HTTPS協(xié)議、安全套接字協(xié)議)的安全程度以及防止網(wǎng)絡(luò)入侵等需求,則主要由基礎(chǔ)設(shè)施架構(gòu)師來處理。
每一個(gè)基本視點(diǎn)和正交視點(diǎn)背后,都隱藏著很多細(xì)節(jié)。這些視點(diǎn)均各自對(duì)應(yīng)于一套元素,這些元素合起來能夠描述出自身的特征及職責(zé)。如果理解了這些元素,那我們就能夠深入地觀察到每個(gè)視點(diǎn)的實(shí)現(xiàn)方式。盡管隱藏在每個(gè)基本視點(diǎn)和正交視點(diǎn)背后的細(xì)節(jié)有很多,然而筆者此處所要強(qiáng)調(diào)的內(nèi)容,是大家應(yīng)該意識(shí)到它們的存在,并且意識(shí)到我們必須從其中的每一個(gè)視點(diǎn)或絕大部分視點(diǎn)來對(duì)系統(tǒng)的架構(gòu)進(jìn)行觀察。這種意識(shí)很重要。
筆者曾經(jīng)對(duì)很多視點(diǎn)框架做了研究,我感覺其中的絕大多數(shù)框架,在基本形式的層面都有著一些共性。之所以會(huì)有這種共性,其原因在于:每個(gè)框架都想要確立一套相互補(bǔ)充的視角,并且想通過這些視角來觀察系統(tǒng)的架構(gòu),以便全面地覆蓋架構(gòu)中的各個(gè)方面。
我們需要在各種視點(diǎn)框架之間做出選擇,或者說,我們至少要從那些特別成熟、特別穩(wěn)固而且特別持久的視點(diǎn)框架中進(jìn)行選擇。在選擇時(shí),大家應(yīng)該根據(jù)自己的需求以及使用視點(diǎn)框架時(shí)的舒適程度來進(jìn)行判斷。
總結(jié)
以上是生活随笔為你收集整理的《实用软件架构:从系统环境到软件部署 》——2.4 架构视图与架构视点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python - jpg图片转pdf
- 下一篇: C++回调函数用法