IEEE對於軟件系統架構的定義:
Architecture is the fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution. [IEEE 1471]
organization 是組織的意思,這里理解為組織結構。
直譯:架構是一個系統在其組件層面的基本組織結構表現,包括系統內部組件之間的關系、組件與外部的關系以及決定其設計和演進的原則。
《系統架構-復雜系統的產品設計與開發》一書中用最簡單的話來描述架構:
“對系統中的實體及實體之間的關系所進行的抽象描述。”
(第九頁,出自Edward Crawley等人專著論文《The Influence of Architecture in Engeering Systems》)
以上兩種表述,第一種措辭嚴謹精確,可用於書面定義;第二種更直白容易理解,可用於日常表達。
-----------------------------------------------------------------------------
--------------延申-----如何畫軟件架構圖?--------------------------
-----------------------------------------------------------------------------
軟件架構圖的目的是將設計表達出來,而一套設計包含多個維度,一個圖基本上表達不完,那就需要多個圖,需要哪些圖?
畫架構圖目前有幾種選擇:
1、遵循一些標准體系,這些標准要求應該有哪些東西,我們就畫哪些東西,這里列兩個標准:
TOGAF: 企業架構領域的一個標准框架,定義了四種圖,從不同維度來表現一套架構設計,包括業務架構、技術架構、數據架構、應用架構,以下引用摘自WIKI
開放組體系結構框架(英語:The Open Group Architecture Framework,縮寫:TOGAF)是一個企業架構框架,它提供了一種設計,規划,實施和管理企業信息技術架構的方法[2]。TOGAF是一種高層設計方法。 它通常被建模為四個級別:業務,應用程序,數據,和技術。 它在很大程度上依賴於模塊化,標准化以及已有的,經過驗證的技術和產品。
RUP: 是由Rational Software公司開發的一套搞軟件工程方法,其中有一塊做軟件架構設計的方法使用的是一篇論文中的內容——4+1視圖,看了一圈,比較抽象,我也不太理解,就不說了,具體可以自行查詢
我個人更傾向於TOGAF的四種圖,因為容易理解:
軟件架構的定義基本上就是說有哪些組件,他們之間的關系。但是組件這個定義比較泛,在不同的維度組件上表現為不同的東西,TOGAF的四種圖就是從四個維度對軟件架構定義的套用:
從業務維度上來說,至少要描述清楚有哪些系統,有什么功能,他們之間的關系是怎么樣的等等
從技術整體維度上來說,由哪些 中間件/子系統/技術組件 組成,他們之間的關系是怎么樣的等等
從單個應用程序維度上來說,里用到了什么開發技術,做了什么分層,它又會把數據存到哪等等
從數據維度上來說,有哪些數據,存在哪,如何存,他們之間如何轉化、流轉的等等
2、自己畫,能說清意思就行
說實在的,我們畫圖的目的就是表達清楚自己設計的內容,對老板,對產品、對研發、對運維,只要能達到目的也沒必要非得糾結這些目前還沒達成統一的標准。自己畫就行
最后,畫圖的時候不要想着把所有細節都能弄進去。對於一個龐大的系統,不要妄想幾張圖就說清所有的事情;也不要畫幾張圖就撒手不管做起ppt架構師了,架構圖固然重要(錯誤的設計會導致項目組很難受,甚至導致項目失敗,試錯成本相當高),引導團隊進行架構的落地過程也相當重要,這是對你架構設計質量以及你個人技術能力的檢驗。