閱讀筆記7

架構設計究竟是什麼

在不少人眼中,架構就是分層,架構設計就是「三層架構」(或者四層、五層…反正分層越多就說明項目越複雜並且架構就越牛),或許是受到諸如PetShop之類的示例項目的影響,這裏暫時不去追究緣由了。設計模式

以前已經糾正過不少人的誤解-架構不僅是軟件架構。說一下通俗點的理解:安全

軟件架構就是實用並且優雅的設計,它不在於分多少層,或者應用了多少種設計模式/架構模式等。它應該是以知足實現用戶需求爲前提,以開發人員廣泛可接受爲根本的,並且要符合系統特性和業務發展須要的,從軟件設計的角度,可以達到層次清晰、可維護、可重用、可擴展…就很是優秀了,無需刻意去糾結分了多少層,是否使用了什麼模式,有多麼抽象等。以面向對象設計爲例,基本目標是「高內聚、低耦合」,爲此咱們可能會遵循一些常見的設計原則(例如經典的SOLID設計原則)。一般咱們所說的模式,其實又分爲不少種,並非僅僅指的是「設計模式」(設計模式也有千千萬,並非只有常見的GOF 23種設計模式)。一般包括:企業架構模式、設計模式、SOA模式、企業集成模式等等。網絡

架構要講求「實用」,並且開發人員廣泛可接受,要符合現狀的。不然,再「優雅」的設計,都會淪爲高成本的「花架子」,生搬硬套和過分設計只會讓項目「流產」。架構

因爲角色和分工不一樣,軟件架構是一個複雜的總體,軟件架構工程師不可能在一個視角、一會兒講清楚,而利用多重軟件架構視圖的方法,能夠一次只圍繞少數概念和技術展開,分別着重研究軟件架構的不一樣方面,使問題得以清晰公和簡化,利於軟件架構工程師完成架構設計工做。併發

所以軟件架構的每一個視圖分別關注不一樣的方面,針對不一樣的目標和用途。目前經常使用架構設計五視圖方法進行軟件架構描述。它們分別是邏輯架構、開發架構、運行架構、物理架構和數據架構。框架

邏輯架構的設計着重考慮功能需求,系統應當向用戶提供什麼樣的服務,關注點主要是行爲或職責的劃分。邏輯架構關注的功能,不只包括用戶可見的功能,還應當包括爲實現用戶功能而必須提供的輔助功能。邏輯架構的靜態方面是抽象職責的劃分,動態方面是承擔不一樣職責的邏輯單元之間的交互與協做。性能

開發架構的設計着重考慮開發期質量屬性,關注點是在軟件開發環境中軟件模塊(包)的實際組織方式,具體涉及源程序文件、配置文件、源程序包、編譯打包後的目標文件、直接使用的第三方SDK/框架/類庫、以及開發的系統將運行於其上的系統軟件或中間件。spa

運行架構的設計着重考慮運行期質量屬性,關注點是系統的併發、同步、通訊等問題,這勢必涉及到進程、線程、對象等運行時概念,以及相關的併發、同步、通訊等。運行架構的靜態方面關注軟件系統運行時的單元結構,動態方面關注運行時單元之間的交互機制。線程

物理架構的設計着重考慮安裝和部署需求,關注點是目標程序及其依賴的運行庫和系統軟件最終如何安裝或部署到物理機器,以及如何部署機器和網絡來配合軟件系統的可靠性、可伸縮性、持續可用性、性能和安全性等要求。架構設計

數據架構的設計着重考慮數據需求,關注點是持久化數據的存儲方案,不只包括實體及實體關係數據存儲格式,還可能包括數據傳遞、數據複製、數據同步等策略。

在運用五視圖方法進行架構設計時須要注意兩個方面的問題:一是多個架構視圖間的同步問題,也就是必須保證不一樣視圖之間是互相解釋而不是相互矛盾的;另外一個是架構視圖的數量問題,原則上是軟件系統不涉及某方面的要求時就不須要該方面的視圖,嚴格控制架構視圖的數量,但若是有須要,能夠引入新的架構視圖,從而更加突出和明確地制定和表達特定方面的架構決策,如安全性。

構成每一個架構設計視圖的元素不一樣,這些不一樣的元素撐起不一樣的思惟空間,從而使每一個架構視圖重點覆蓋不一樣種類的需求,最終全部架構設計視圖所表達的語義綜合左右一塊兒,就構成了軟件架構設計方案。

相關文章
相關標籤/搜索