《實用軟件架構:從系統環境到軟件部署 》——2.4 架構視圖與架構視點

本節書摘來自華章出版社《實用軟件架構:從系統環境到軟件部署》一書中的第2章,第2.4節,作者[印]蒂拉克·米特拉(Tilak Mitra)著,愛飛翔 譯,更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。


2.4 架構視圖與架構視點

以軟件架構為論題的書籍、文章、研究項目及相關刊物,都會帶有各自的觀點。不同的流派對架構有不同的看法,他們會按照各自的看法來做架構,并會將各自的做法加以推廣。就本書的主題來說,筆者并不打算專門用一個章節把與軟件架構有關的各種觀點全都講解一遍,而是只想展示下面的這種觀點,因為筆者覺得它比較務實,而且運用起來較為流暢。

視圖和視點

Philippe Kruchten (1995.11)率先開始使用視圖(view)與視點(viewpoint)這兩個概念,來表達業界對軟件架構的各種關注。Kruchten是IEEE 1471標準的一位制定者,該標準明確規定了視圖的定義,也引入了視點的概念。Kruchten在論文(參見2.6節)中,是這樣來描述這兩個概念的:

視點—視點是“一份規范書,用來描述構建視圖和使用視圖時所應依循的約定。它是一種模式或一份模板,用來確立視圖的目標和受眾,以及創建視圖與分析視圖所用的技巧,使得我們可以據此創建出不同的視圖。”

視圖—視圖是“從某個角度對整個系統所做的一種表現,該角度是由一系列彼此相聯系的關注點所確立的。”

IBM (n.d.)定義了一套列架構視點,這就是IBM IT System Viewpoint Library(IBM IT系統視點庫)。筆者認為這套架構視點相當完備地涵蓋了系統架構的各個方面。如圖2-3所示,該視點庫中包含4個基本視點和6個正交(cross-cutting)視點。

?4b4f982cb3780a6abc07b46a5ccf1b8ac13dc215

IBM IT System Viewpoint Library中的四個基本視點分別是:

需求(Requirement)—與該視點有關的模型元素,用來捕捉系統中的各種需求,包括業務需求、技術需求、功能需求以及非功能型需求。對于該視點來說,最為常見的捕捉手段是用例與用例模型。

解決方案(Solution)—與該視點有關的模型元素,用來確定一套可以滿足相關需求及約束的解決方案。此視點可以細分為兩種:

功能視點(Functional)—此視點所關注的模型元素,從本質上來說,都是結構方面的元素,我們不僅要把元素本身實現出來,而且還要把元素之間的(靜態和動態)關系建立好,以便用這些元素來構建系統。一般來說,此視點的細節,是通過功能架構來捕捉的,本書第7章將會專門講解功能架構。

操作視點(Operational)—此視點關注的是怎樣用結構元素來構建目標系統,以及怎樣把功能視圖部署到(由網絡、硬件、計算資源、服務器等所構成的)IT環境中。我們通常使用操作模型來捕獲此視點的細節,本書第8章將會專門講解操作模型。

確認(Validation)—通過此視點所建立的模型元素,主要用來評估系統的能力,以確保該系統能夠體現出預定的功能,并且能夠提供質量合格的服務。我們通常會把功能和非功能方面的測試用例當作驗證標準,以判斷該系統是否具備預定的能力。

從圖2-3中可以看出,這4個基本視點是相互關聯的。功能視點與操作視點,可以合起來實現需求視點,并為其提供支持,而這兩個視點,又是通過確認視點得以驗收的。為了把這張圖畫得明確一些,筆者并沒有專門標出“解決方案”視點,而是直接把構成該視點的功能視點和操作視點畫在了圖中。

視點庫中還有6個正交視點。在圖2-3中,4個基本視點周圍的那6個同心正方形,就是用來表示這6個視點的。筆者之所以用這樣的方式來畫圖,是想表達這6個正交視點對一個或多個基本視點所造成的影響。

這6個正交視點分別是:

應用(Application)—該視點專注于滿足系統所宣稱的業務需求。對于該視點來說,應用架構師扮演著主要角色。

技術(Technical)—該視點關注的是硬件、軟件、中間件(其定義請參閱第5章)以及打包的應用程序,這些內容合起來可以實現應用程序的功能,并使得應用程序能夠運作。對于該視點來說,基礎設施架構師和集成架構師扮演著主要角色。

系統管理(Systems Management)—該視點關注部署之后的管理、維護,以及系統的運作。對于該視點來說,應用維護和管理團隊扮演著主要角色。

可用性(Availability)—該視點關注怎樣才能把系統構建起來,并令其保持可用(比如,怎樣才能使系統的正常運行時間達到總運行時間的99.5%),以便滿足預先達成的服務級別協議。對于該視點來說,基礎設施架構師扮演著主要角色,而應用架構師與中間件架構師,則會為前者的工作提供支持。

性能(Performance)—該視點關注的問題是,怎樣令系統的性能可以滿足預先達成的服務級別協議(比如,從用戶發出請求到系統給出應答,這之間的平均延遲時間要控制在400毫秒以內)。對于該視點來說,應用架構師扮演著主要角色,而中間件架構師和基礎設施架構師,則會為前者的工作提供支持。

安全(Security)—該視點關注的是安全方面的系統需求,例如單點登入(single sign-on)、數據傳輸協議的安全程度,以及防止入侵等。某些安全需求(例如單點登入)主要是由應用架構師來處理的,而確認數據協議(例如HTTPS協議、安全套接字協議)的安全程度以及防止網絡入侵等需求,則主要由基礎設施架構師來處理。

每一個基本視點和正交視點背后,都隱藏著很多細節。這些視點均各自對應于一套元素,這些元素合起來能夠描述出自身的特征及職責。如果理解了這些元素,那我們就能夠深入地觀察到每個視點的實現方式。盡管隱藏在每個基本視點和正交視點背后的細節有很多,然而筆者此處所要強調的內容,是大家應該意識到它們的存在,并且意識到我們必須從其中的每一個視點或絕大部分視點來對系統的架構進行觀察。這種意識很重要。

筆者曾經對很多視點框架做了研究,我感覺其中的絕大多數框架,在基本形式的層面都有著一些共性。之所以會有這種共性,其原因在于:每個框架都想要確立一套相互補充的視角,并且想通過這些視角來觀察系統的架構,以便全面地覆蓋架構中的各個方面。

我們需要在各種視點框架之間做出選擇,或者說,我們至少要從那些特別成熟、特別穩固而且特別持久的視點框架中進行選擇。在選擇時,大家應該根據自己的需求以及使用視點框架時的舒適程度來進行判斷。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282154.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282154.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282154.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TCP:當初取代NCP,如今害怕被取代

我叫TCP(Transmission Control Protocol)也叫傳輸控制協議。不覺回憶1983年,親手將NCP協議淘汰,取而代之的是我,成了火遍大江南北的網絡紅人之一。現如今,我感受到前所未有的恐懼,因為我一生的敵…

js截取字符串實例

// JS截取字符串可使用 substring()或者slice() // // 函數:substring() // 定義:substring(start,end)表示從start到end之間的字符串,包括start位置的字符但是不包括end位置的字符。 // 功能:字符串截取,…

PHP 使用 OSS 批量刪除圖片

1、控制器 OssImageController.php&#xff08;不必關注此層&#xff09; <?php declare(strict_types 1); namespace app\controllers; use app\services\OssImageService; class OssImageController extends BaseController {/*** oss 批量刪除圖片** throws null*/pub…

批處理中的IF詳解

在CMD使用IF /?打開IF的系統幫助會發現IF有3種基本的用法! 第一種用法&#xff1a;IF [NOT] ERRORLEVEL number command 這種用法現在很少用了&#xff0c;因為它需要使用到CHOICE命令&#xff0c;這個命令現在被set /p代替了&#xff0c;它是判斷CHOICE命令選擇的選項的&…

fullcalendar 顯示的時間間隔只有四十五分鐘_【體能新視點】——女子籃球運動員比賽期間的心率、血乳酸濃度和時間運動分析...

女子籃球運動員比賽期間的心率、血乳酸濃度和時間-運動分析—摘要—本研究的目的是檢驗女子籃球運動員在比賽規則改變后的生理需求和運動模式。在九場正式比賽中&#xff0c;對九名大學代表隊隊員進行了研究。每場比賽都被錄像以確定主要動作的頻率&#xff0c;連續記錄心率&am…

《JavaScript機器人編程指南》——1.2 NodeBot是什么,基本詞匯還有哪些

本節書摘來異步社區《JavaScript機器人編程指南》一書中的第1章&#xff0c;第1.2節&#xff0c;作者&#xff1a;【美】Kassandra Perch&#xff08;珀芝&#xff09;&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 1.2 NodeBot是什么&#xff0c;基本詞…

解決在Python中使用Win32api報錯的問題,No module named win32api

一、系統環境 操作系統: Win7 64位 Python&#xff1a;3.7.0 二、在使用import win32api時&#xff0c;報錯:No module named win32api 網上查到有下面解決辦法&#xff1a; 方法1&#xff1a;pip install pypiwin32或pip3 install pypiwin32 或 python -m pip install pypiwin…

web網頁調用本地cs客戶端程序exe

1.reg注冊表文件注冊WST Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\WST]"URL Protocol""C:\\WSTStart.exe""WSTProtocol"[HKEY_CLASSES_ROOT\WST\DefaultIcon]"C:\\WSTStart.exe,1"[HKEY_CLASSES_ROOT\WST\shell][HKEY…

國慶快樂!

加油我的國&#xff01;繁榮強大我的國&#xff01;

《Python游戲編程入門》——1.2 初識Python

本節書摘來自異步社區《Python游戲編程入門》一書中的第1章&#xff0c;第1.2節&#xff0c;作者[美]Jonathan S. Harbour &#xff0c;李強 譯&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 1.2 初識Python Python既是一個軟件工具包&#xff0c;也是一種…

大數據:Parquet文件存儲格式

一、Parquet的組成 Parquet僅僅是一種存儲格式&#xff0c;它是語言、平臺無關的&#xff0c;并且不需要和任何一種數據處理框架綁定&#xff0c;目前能夠和Parquet適配的組件包括下面這些&#xff0c;可以看出基本上通常使用的查詢引擎和計算框架都已適配&#xff0c;并且可以…

“數據門”事件頻發 如何避免人為因素導致數據泄露?

前段時間&#xff0c;某酒店集團數據泄露引起軒然大波&#xff0c;泄露的數據中包含了用戶姓名、手機號、郵箱、號等多項信息。賣家對這個約5億條數據打包出售價格為8比特幣或520門羅幣。而關于此次信息泄露事件的原因&#xff0c;目前尚未定論。據悉&#xff0c;由于集團某程序…

lamda獲取參數集合去空_JAVA集合框架知識

1. Vector用法和ArrayList區別(1) Vector的特有方法有哪些&#xff1f;void addElement(E obj) 將指定的組件添加到此向量的末尾&#xff0c;將其大小增加1。(2) Vector與ArrayList的區別是什么&#xff1f;①Vector的add()方法是同步方法&#xff0c;ArrayList的add()方法是非…

阿里云ECS服務器多種實例規格如何選擇

一、什么是 ECS 云服務器ECS&#xff08;Elastic Compute Service&#xff09;是一種簡單高效、處理能力可彈性伸縮的計算服務。 二、常見的幾種實例規格 &#xff11;、個人類 &#xff08;1&#xff09;突發型&#xff08;t5、t6&#xff09; 特點&#xff1a;性能基線和積…

Blazor學習之旅(2)第一個Blazor應用

【Blazor】| 總結/Edison Zhou大家好&#xff0c;我是Edison。最近在學習Blazor做全棧開發&#xff0c;因此根據老習慣&#xff0c;我會將我的學習過程記錄下來&#xff0c;一來體系化整理&#xff0c;二來作為筆記供將來翻看。本篇我們來構建第一個Blazor Web應用&#xff0c;…

《深入理解Hadoop(原書第2版)》——2.6本章小結

本節書摘來自華章計算機《深入理解Hadoop&#xff08;原書第2版&#xff09;》一書中的第2章&#xff0c;第2.6節&#xff0c;作者 [美]薩米爾瓦德卡&#xff08;Sameer Wadkar&#xff09;&#xff0c;馬杜西德林埃&#xff08;Madhu Siddalingaiah&#xff09;&#xff0c;杰…

HTTP與服務器的四種交互方式

Http定義了與服務器交互的不同方法&#xff0c;最基本的方法有4種&#xff0c;分別是GET&#xff0c;POST&#xff0c;PUT&#xff0c;DELETE。URL全稱是資源描述符&#xff0c;我們可以這樣認為&#xff1a;一個URL地址&#xff0c;它用于描述一個網絡上的資源&#xff0c;而H…

ubuntu 以太網已連接但是無法聯網_工業以太網有多“牛X”?兩個案例告訴你

現代生活中&#xff0c;工業以太網發揮的作用愈來愈重要。為增進大家對工業以太網的認識&#xff0c;本文將基于3方面介紹工業以太網&#xff1a;何為工業以太網物理層&#xff1f;工業以太網具有哪些優勢&#xff1f;工業以太網兩大方案介紹。如果你對工業以太網具有興趣&…

高可用架構可行性方案

一、動靜分離 把靜態的&#xff0c;耗費大量帶寬資源、請求資源的數據獨立出來&#xff0c;緩存到cdn里去&#xff0c;包括產品詳情頁&#xff0c;圖片、視頻、js、css通通打包放到cdn里去&#xff0c;封住一部分流量&#xff0c;用cdn去承擔。 二、熱數據預熱緩存 將一些熱點數…

SublimeText 自帶格式化代碼功能

其實sublime自身就有格式化命令&#xff0c;就不再安裝插件&#xff0c;位置在[Preferences]->[Key Bindings]->[User]中, 中文版的位置在 [首選項]->[按鍵綁定-用戶]&#xff0c;彈出的頁面中 &#xff0c;添加如下代碼&#xff0c;為其設置快捷鍵&#xff1a;Ctr…