軟件架構概念

做者:莫那魯道原文:http://thinkinjava.cn/2019/04/13/2019-04-13-architecture/


「你對架構這個詞怎麼理解?」javascript

emm …..java

實際上,軟件架構分紅 2 派。微信

1 軟件架構的派別

  1. 組成派
    組成派的定義很是簡潔。
    定義:軟件系統的架構將系統描述爲計算組件及組件之間的交互。架構

剖析定義:
a. 該架構關注架構實踐中的客體——軟件,以軟件自己爲描述對象。
b. 分析了軟件的組成,即軟件由承擔不一樣任務的組件組成,這些組件經過相關交互,完成更高層次的計算。性能

  1. 決策派
    決策派的定義相對於組成派的定義,要繁雜不少。但核心思想很是明確:軟件架構是在一些重要方面所作出的決策的集合spa

定義(軟件架構包含了關於如下問題的重要決策):.net

  • 軟件系統的組織架構設計

  • 選擇成爲系統的結構元素和他們之間的接口,以及當這些元素相互協做時所體現的行爲。設計

  • 如何組合這些元素,使他們逐漸合併成更大的子系統。code

  • 用於指導這個系統的架構風格:這些元素以及它們的接口、協做和組合。

  • 軟件架構並不單單注重軟件自己的結構和行爲,還注重其餘特性:使用、功能性、性能、彈性、重用、可理解性、經濟和技術的限制及權衡,以及美學等。

2 組成派、決策派 概念解析

組成派:

架構設計是分與合的藝術。

架構 = 組件 + 交互。

咱們舉例 MVC 架構:
V 建立 C,C 根據用戶交互調用 M 的相關服務,而 M 將自身的改變通知 V,V 經過交互讀取 M 的信息以更新自身。

決策派

架構屬於設計,但設計不必定屬於架構。架構設計的決策,將對總體質量、並行開發、適應變化等方面有着重大影響,例如:

  • 模塊如何劃分

  • 每一個模塊的職責如何

  • 每一個模塊的接口如何定義

  • 模塊間採用何種交互機制

  • 開發技術如何選型

  • 如何知足約束和質量屬性的需求

  • 如何適應可能發生的變化

這裏假設咱們設計一個 C/S 系統,會有一個決策樹:

  1. 決定採用 C/S 架構,包含 Client 和 Server

  2. 決定將 Server 分紅 3 層

  3. 決定將 Server 的引擎層劃分紅 N 個模塊

  4. 決定 …..

能夠看出,決策,就是一步步遞歸,將大任務,經過一個個合理的決策,劃分紅一個個小任務。是否是相似 fork join 呢?

另外,從上面也能夠看出,不是隻有大系統纔有架構,小的模塊,小的系統也有架構。所以,在平時編寫代碼時,即便本身負責的系統很小,也要關心,設計好他的架構。

總結

不管是組成派,仍是決策派,在架構設計中,咱們都會涉及,只是站的角度不一樣罷了,前者站在軟件的角度,後者站在決策人的角度。
例如:
當咱們決定對模塊如何進行劃分的時候,這個時候,是決策派。
當咱們設計模塊邊界的時候,是組成派。
當咱們對模塊之間的交互接口進行設計的時候,就是組成派。
當咱們考慮易用性,代碼美學,靈活性的時候,是決策派。
……

最後,管他什麼派,只是角度不一樣罷了,好的架構,我認爲是這樣的:模塊邊界清晰,依賴合理,彈性靈活,性能優越,易於理解。

參考

軟件架構設計——溫昱



本文分享自微信公衆號 - 碼農沉思錄(code-thinker)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索