架構設計是門藝術。
一個優(yōu)秀的程序員要想成為一名優(yōu)秀的架構設計師,就改變編程的思維,學會使用架構設計的思維方式。
架構設計的思維方式有以下幾種:
1. 分而治之的思維方式
分而治之,是把一件籠統(tǒng)模糊的事項變得清晰,把復雜的事項變得簡單的思維方式。而這正是我們進行架構設計首要達成的目標。
架構設計師必須要學會架構分解,將軟件的功能和非功能需求在架構的多個層面進行分解。
架構分解的時機要恰當,不要過早分解、也不要過度分解,通常的分解時機就是架構構造和演變時。
架構分解應當遵循以下原則:
高內(nèi)聚、低耦合。
層次性。分解的順序一般是系統(tǒng)→子系統(tǒng)→模塊→組件→類。
正交原則。分解出的架構元素符合正交原則。
抽象原則。分解出的架構元素應當是架構設計師抽象的結果。
穩(wěn)定性原則。應當將穩(wěn)定架構元素和不穩(wěn)定的架構元素獨立。
復用性原則。架構設計應當和軟件一樣,要考慮復用和可復用的設計。
2. 聚而合之的思維方式
分而治之的目的是降低難度,但軟件的設計和實現(xiàn)最終還是要將分解的各個元素組合在一起。所以,不能為了分解而分解,在分解的過程中也要考慮將來的集成。畢竟如果分解后的內(nèi)容無法集成在一起,分解得再詳細,再清晰也沒有任何意義。
3. 動靜分離的思維方式
動靜分離的思維方式要求將系統(tǒng)中的靜態(tài)資源與動態(tài)資源分離,同時又要注意二者結合的架構設計。因為動態(tài)的流程和用例無法離開靜態(tài)的數(shù)據(jù)和類就能自行完成的。
4. 復用的思維方式
復用是最佳的軟件工程實踐,沒有之一。復用可以給我們帶來以下好處:
較高的生產(chǎn)率。
較高的系統(tǒng)質量。
改善系統(tǒng)的可維護性。
所以,我們在進行架構設計時也需要使用復用思維,將各個模塊需要用到的共性功能抽取為可復用的共性組件。
我們可以將復用分為常規(guī)復用和系統(tǒng)層復用。
其中常規(guī)復用又可分為代碼復用、算法復用、數(shù)據(jù)結構的復用;系統(tǒng)層復用又可分為設計復用、分析復用。
5. 分層的思維方式
分層是將各架構元素通過分層重新構建的過程,各層之間要保持獨立設計和松耦合。
分層的思維方式可以使軟件架構具有如下優(yōu)點:
開發(fā)人員可以只關注某一層。
可以很容易地用新的實現(xiàn)來替換原有層的實現(xiàn)。
可以降低層與層之間的依賴。
有利于標準化。
有利于各層邏輯的復用。
6. 模式的思維方式
架構模式是一套成熟的、通用的、可重用的解決方案,在進行架構設計時,架構設計師要能夠根據(jù)業(yè)務需求來挑選最適合的架構模式。
架構模式一般有分層模式、客戶端-服務器模式、主從設備模式、管道-過濾器模式、代理模式、P2P模式、事件總線模式、MVC模式、黑板模式和解釋器模式等。
7. 抽象的思維方式
抽象包括兩個層面的內(nèi)容:一個層面是將各種類似場景的實現(xiàn)歸納成一種規(guī)則或方法出來供以后的設計用;另一個層面是將非類似場景中的共性內(nèi)容總結出來,進一步抽象為類似的東西。
8. 結構化的思維方式
結構化是一種注重結構完整性的思維方式,它強調(diào)在分析問題的過程中,要考慮整體性,不要馬上陷入細節(jié)。結構化思維的核心在于對問題進行正確界定的基礎上(以終為始),對問題的構成要素進行合理分類,并對其中的重點環(huán)節(jié)進行分析(要事第一)。
結構化應遵循以下原則:
以終為始。
知道設計的目標,根據(jù)目標倒推需要完成的工作和任務。
不要先入為主,避免陷入細節(jié)。
各架構元素相互獨立。
各架構元素無遺漏。
迭代的思維方式
沒有最好,只有更好。架構設計也要隨著業(yè)務需求的變化不斷迭代和演化。
這正是:
架構設計不簡單,思維方式數(shù)半天
學習前人獲經(jīng)驗,優(yōu)秀架構不再難
責編AJX
-
軟件
+關注
關注
69文章
5332瀏覽量
91577 -
架構
+關注
關注
1文章
532瀏覽量
26589
發(fā)布評論請先 登錄
ARM總共有幾種架構?ARM各架構之間的區(qū)別在哪?
STM32軟件架構設計的意義
機甲大師機器人控制(三):軟件架構設計 精選資料推薦
嵌入式軟件架構設計常見的誤解
嵌入式軟件架構設計資料分享
使用Simulink實現(xiàn)軟件架構設計
如何升級架構設計思維
STM32軟件架構設計
架構與微架構設計
幾種軟件架構設計的思維方式
評論