架構的定義
架構這個詞最早是跟隨着建築出現的,進入到軟件行業后,它的含義有了一些變化,但最基礎的含義還是沒有變的。本質上來說,架構是一個設計動作和實現動作;設計動作描述的是勾勒出滿足客戶戰略規划需求的產品;實現動作描述的是將構件組合成結構的過程。
架構的分類
依據架構的定義,可以將架構分類為產品架構和軟件架構兩個大類。
在這兩個大類下,還可以繼續划分子類,如下:
產品架構
-
-
應用架構
-
解決方案架構
軟件架構
-
數據架構
-
基礎結構架構
-
特定技術架構
上面只是列出了一部分架構子分類,理論上還可以繼續划分,但在大多數的實際生產中,通常不會有這么詳細的分類,常態是軟件架構與產品架構都由一個人負責實現。
架構的設計方法
軟件架構有很多設計方法,每一種都有自己的核心思想;實際生產中,一個產品的生存周期中通常就只會貫徹一個設計方法。
基於設計方法搭建的框架,清晰度會更高。下面簡單介紹一下ABSD軟件設計方法。
ABSD(Architecture-Based Software Design)基於架構的軟件設計方法
ABSD軟件設計方法是遞歸的,且迭代的每一個步驟都是清晰地定義的。因此,不管設計是否完成,體系結構總是清晰的,這有助於降低體系結構設計的隨意性。
-
架構
在ABSD中,架構被分為三個基礎元素,分解、風格、模板。
分解:基於一定的原則對模塊進行內聚和耦合技術。如:職者分離原則,通用專用原則,技能分離原則,工作量均衡原則。
風格:通過選擇架構風格來實現質量和業務需求。如數據流風格(TCP,UDP),調用返回風格(SOA,微服務),獨立構件風格(事件驅動),虛擬機風格(集群),倉庫風格(ERP)。
模板:一個特殊類型的軟件元素,它使用一些已有的軟件系統的結構,描述所有這種類型的元素在共享服務和底層構造的基礎上如何進行交互。
-
過程
在ABSD中,軟件過程划分為:架構需求、設計、文檔化、復審、實現、演化;如下圖:
1,需求:
需求是指用戶對目標軟件系統在功能、行為、性能、設計約束等方面的期望。如果以前有類似的系統的需求,我們可以從中提取,加以利用和修改,以節省需求形成的時間,減少重復勞動,提高開發效率。
2,設計:
貫徹一種設計方法,對項目結構進行搭建,並且對關鍵功能進行一些決策(需求是決策的基礎)。設計其實也是一個迭代過程,需要不停的進化,可以使用舊有的設計元素進行組合搭建,進而減少重復勞動。
3,文檔化:
通常架構是抽象的,並且擁有大量約定與配置。所以,為了讓程序員更好的理解架構,不去破壞框架,還必須得把架構進行文檔化。架構文檔要保持較新,但不要隨時保證文檔最新,要保持文檔的穩定性。
4,復審:
架構設計、文檔化和復審是一個迭代過程。是階段性的總結,目的是發現潛在的風險,及架構設計中的缺陷和錯誤。從現實方面來說,我們很難在一個主版本的發布之后,安排一次外部人員,用戶代表,領域專家集體參加的復審。所以通常復審需要由架構師主動在某一個階段主動進行。
5,實現:
所謂實現就是構建出一個軟件架構,即要符合設計(決策),也要便於程序員開發。
6,演化:
架構的實現
架構的實現有很多種方法,同樣的方法,步驟也可以不同,所以,實現是多種多樣的。
理想化的環境下,設計與實現是順序進行的;但在實際生產中,設計與實現通常是同步進行,我們常見的架構順序是這樣的。
一,分解子系統和功能模塊;
二,設計框架模型;
三,分析功能模塊;
四,設計框架詳細。
當然,在更糟糕的實際生產環境中,這四步也相互穿插,同步進行情況也是有的。
架構重點關注問題
架構一個項目時通常要思考三個W——Who:為誰設計?What:要解決用戶的什么問題?Why:為什么要解決這些用戶問題?
此外還要重點關注以下問題。
-
理解系統要解決的問題。
-
認識系統特性與要解決的問題間的關系。
-
識別系統的核心行為。
-
整理系統的非功能性需求。
-
確定架構需求。
-
管理需求。
-
規划系統的高層組織。
-
確定架構機制。
-
分析用例場景。
-
演進系統的高層組織並形成組件模型。
-
規划系統的運行時架構和部署模型。
-
規划系統的實現模型。
-
編寫核心代碼。
-
驗證架構設計。
-
整理架構文檔。
-
高內聚,低耦合。
結語
關於架構
架構是細節的集合,不是文檔組合,不論文檔編寫的多么棒,沒有代碼細節,都不能稱之為架構。
關於架構師
架構與架構師是不一樣的,學滿了架構知識,也不一定能成為架構師的;而不了解架構的內容,也不一定無法成為架構師。很多時候,架構師是與架構相反的存在,比如,文檔高手往往是高級架構師。
----------------------------------------------------------------------------------------------------
注:此文章為原創,任何形式的轉載都請聯系作者獲得授權並注明出處!
若您覺得這篇文章還不錯,請點擊下方的【推薦】,非常感謝!
https://www.cnblogs.com/kiba/p/14097006.html