自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

千萬別小看軟件架構(gòu)風格,很多大廠架構(gòu)師都在使用!

原創(chuàng) 精選
開發(fā) 架構(gòu)
所謂架構(gòu)風格就是經(jīng)過時間考驗的架構(gòu)分析的套路,針對不同的應用場景可以利用不同的架構(gòu)風格,說到底就是對軟件架構(gòu)的復用,讓前人設計的架構(gòu)能夠被反復使用。架構(gòu)風格分為:數(shù)據(jù)流、返回調(diào)用、獨立構(gòu)件、虛擬機、倉庫、控制環(huán)路等多種。

作者 | 崔皓

審校 | 孫淑娟

做過軟件架構(gòu)設計的同學都清楚,軟件架構(gòu)要解決的核心問題就是對不同的軟件應用使用重復的軟件架構(gòu)模式,說白了就是達到架構(gòu)級別的重用。也就是說,在不同的軟件系統(tǒng)中,使用不同類型的軟件架構(gòu),將軟件架構(gòu)的使用進行抽象,再對其分類,用這些歷經(jīng)時間打磨的軟件架構(gòu)套用不同的應用場景,也就是架構(gòu)師常說的架構(gòu)套路。這個套路就是今天我們要說的軟件架構(gòu)風格。

一、軟件架構(gòu)風格

軟件架構(gòu)風格是描述某一特定應用領域中系統(tǒng)組織方式的慣用模式( idiomatic paradigm)。

架構(gòu)風格包括四個要素:

  • 一個詞匯表。其中包含構(gòu)件和連接件類型。
  • 一套配置規(guī)則。描述了如何將構(gòu)件和連接件進行組合。
  • 一套語義解釋原則。用來解釋系統(tǒng)中的構(gòu)件和連接關系。
  • 定義對基于風格的系統(tǒng)的分析。針對不同類型軟件系統(tǒng),如何進行分析。

二、最終目的:軟件架構(gòu)的復用

對軟件架構(gòu)風格的研究和實踐促進了對設計的重用,一些經(jīng)過實踐證實的解決方案也可以可靠地用于解決新的問題。架構(gòu)風格不變的部分使不同的系統(tǒng)可以共享同一個實現(xiàn)代碼。

軟件架構(gòu)風格的分類

說完了軟件架構(gòu)風格的定義,接下來看看它的分類。由于軟件的應用場景眾多,對其軟件架構(gòu)的抽象也不在少數(shù)。我們需要對軟件架構(gòu)進行分類,甚至在分類的基礎上建立子類。

如下是對軟件架構(gòu)風格的基本分類:

  • 數(shù)據(jù)流風格:它是對數(shù)據(jù)流進行處理的軟件架構(gòu)風格,分為批處理序列和管道-過濾器兩類,前者側(cè)重大批量的數(shù)據(jù)處理,后者更關注數(shù)據(jù)處理過程。
  • 返回調(diào)用風格:應用程序會調(diào)用對應的模塊并且返回需要的值。它包括主程序/子程序風格、面向?qū)ο箫L格和層次結(jié)構(gòu)風格。
  • 獨立構(gòu)件風格:假設系統(tǒng)中的模塊或者服務都是獨立存在,通過事件和通信完成相互調(diào)用。包括進程通信和事件驅(qū)動兩種風格。
  • 虛擬機風格:包括解釋器風格和基于規(guī)則的系統(tǒng)風格。前者在虛擬機中應用廣泛,后者會在人工智能領域出現(xiàn)。
  • 倉庫風格:包括數(shù)據(jù)庫架構(gòu)、黑板系統(tǒng)和超文本系統(tǒng)三種風格。
  • 控制環(huán)路風格:讓組建之間形成反饋循環(huán),通過接受一定的輸入,確定一系列的輸出,最終使環(huán)境達到一個新的狀態(tài)。

雖然架構(gòu)風格多種多樣,在不同的應用場景我們會選擇不同的架構(gòu)風格與之對應,接下來我們會舉一個實際的例子,通過對例子的分析引出架構(gòu)風格的應用。

三、軟件架構(gòu)風格應用舉例

前面描述了軟件架構(gòu)風格的分類,多是定義略顯枯燥,這里會應用一個車輛定速巡航的例子看看如何應用軟件架構(gòu)的風格。

如下圖所示,如果要開發(fā)一套定速巡航系統(tǒng),從而確保車輛能夠隨時調(diào)整其行進的速度。

圖片

如上圖所示,巡航控制系統(tǒng)有多個輸入和一個輸出,系統(tǒng)想要達到的目的就是通過這些輸入?yún)?shù)去調(diào)整油門這個輸出參數(shù),也就是控制油門,最終達到保持車速的目的。說白了,就是不過輸入?yún)?shù)如何改變,車輛都保持一定的速度,因此油門就要隨之調(diào)整。

一起來看看這些輸入/輸出要素的定義:

  • 系統(tǒng)開關:開啟/關閉巡航控制系統(tǒng)
  • 引擎開關:開啟/關閉汽車引擎(引擎開啟時,巡航控制系統(tǒng)處于就緒狀態(tài))
  • 車輪脈沖:車輪每轉(zhuǎn)一次,相應地發(fā)出一次脈沖
  • 剎車:當剎車被踩下時,定速巡航控制系統(tǒng)會臨時恢復到人工控制
  • 增/減速:增加或減慢當前車速(僅在定速巡航控制系統(tǒng)處于開啟的狀態(tài)下可用)
  • 恢復速度:恢復原來保持的車速(僅在定速巡航控制系統(tǒng)處于開啟的狀態(tài)下可用)
  • 時鐘:每毫秒定時脈沖

1.架構(gòu)風格場景分析

既然有了具體的案例,就需要通過具體的使用場景來分析使用哪種架構(gòu)風格?

適合面向?qū)ο蠹軜?gòu)風格的應用場景:

  • 首先需要設置一個汽車行駛的預期速度,然后保持這個速度行駛。司機需要調(diào)整計速器來達到預期的速度,此時會觸發(fā)事件把增加或者減少速度的消息發(fā)送給計速器。計速器也會將車子的速度消息傳送給油門,告訴車子加速還是減速。
  • 同時遇到障礙物需要剎車,也會發(fā)送消息給剎車系統(tǒng),并退出巡航控制系統(tǒng)。

上面描述的正是一個典型的事件驅(qū)動場景,適合于面向?qū)ο箫L格。面向?qū)ο蠹軜?gòu)風格的特征是將數(shù)據(jù)標識和基本操作封裝在對象中。這種模式的構(gòu)件是對象,對象維護自身表示的完整性,對象之間通過消息機制進行通信,對象交互時需要知道彼此的標識,通過對象之間的協(xié)作完成計算過程。

再換一個角度,適合面向控制環(huán)路架構(gòu)風格的應用場景:

司機通過調(diào)整計速器達到了預期速度之后,系統(tǒng)維持恒定速度行駛,但是在行駛過程中會遇到路面顛簸、拐彎等情況,車輛速度不可能一直保持恒定,在上述情況下車輛速度會降低。降低的車速實際是整個系統(tǒng)的輸出,這個輸出會作為輸入再次返回到系統(tǒng)中,系統(tǒng)會將這個速度與預期的速度進行比較,如果低于預期的速度,會進行加速的操作。同理,如果超過了預期的速度就會執(zhí)行減速的操作。

這是一個典型的閉環(huán)控制的情景,系統(tǒng)需要在外界情況不斷發(fā)生變化的情況下進行調(diào)整,使得系統(tǒng)狀態(tài)盡可能接近期望狀態(tài)。

過程控制環(huán)路(閉環(huán)):是將過程輸出的指定屬性維護在一個特定的參考值(設定值),將事務處理看成輸入、加工、輸出、反饋、再輸入的一個持續(xù)的過程模型。

這里的輸入就是車輛的當前速度,加工就是求得預期速度與當前速度的差,反饋就是進行增速還是減速,再將得到數(shù)據(jù)給到輸入,不斷循環(huán)。

有了對應用場景的分析之后,再從面向?qū)ο蠛涂刂骗h(huán)路兩種風格如何,看如何設計架構(gòu)。

2.面向?qū)ο蠹軜?gòu)風格分析

對于系統(tǒng)的增減速功能,采用面向?qū)ο箫L格的巡航控制系統(tǒng)首先會定義司機、油門、時鐘、速度計和車輪等構(gòu)件。

圖片

整個計算的主要過程如上圖所示:

  • 司機進行增/減速操作設置期望速度,該期望速度以消息的形式傳遞給速度計;
  • 速度計通過向車輪和時鐘發(fā)送消息獲取車輪轉(zhuǎn)速和時鐘值,得到當前速度;
  • 速度計計算當前速度和期望速度的速度差值;
  • 該差值以消息的形式發(fā)送給油門,油門通過速度差值調(diào)節(jié)自身狀態(tài)。

整個過程在時鐘的控制下定期向速度計發(fā)送消息,重復執(zhí)行2~4。

3.控制環(huán)路架構(gòu)風格分析

控制環(huán)路的架構(gòu)風格以控制器為核心,期望速度、車輪脈沖、時鐘和油門等作為構(gòu)件。

圖片

具體的計算過程如上圖所示:

  • 司機進行增/減速操作設置期望速度值
  • 將設定值置為期望速度值,并將其交給比較器
  • 比較器會采集車輪脈沖和時鐘值,計算出當前速度,連同預期速度都交給控制器;
  • 控制器比較期望速度和當前速度,計算速度差值,控制油門,執(zhí)行加速或者不加速的動作,并將速度這個被控對象反饋給比較器。

反復執(zhí)行3和4形成速度的反饋閉環(huán)。

四、總結(jié)

所謂架構(gòu)風格就是經(jīng)過時間考驗的架構(gòu)分析的套路,針對不同的應用場景可以利用不同的架構(gòu)風格,說到底就是對軟件架構(gòu)的復用,讓前人設計的架構(gòu)能夠被反復使用。架構(gòu)風格分為:數(shù)據(jù)流、返回調(diào)用、獨立構(gòu)件、虛擬機、倉庫、控制環(huán)路等多種。

文中我們通過汽車定速巡航的例子,引出了面向?qū)ο蠛涂刂骗h(huán)路的兩種架構(gòu)風格,告訴大家如何從應用場景的定義選擇適合的架構(gòu)風格。并且,針對兩種不同的架構(gòu)風格,給出了架構(gòu)分析的具體方法。

作者介紹

崔皓,51CTO社區(qū)編輯,資深架構(gòu)師,擁有18年的軟件開發(fā)和架構(gòu)經(jīng)驗,10年分布式架構(gòu)經(jīng)驗。曾任惠普技術專家。樂于分享,撰寫了很多熱門技術文章,閱讀量超過60萬?!斗植际郊軜?gòu)原理與實踐》作者。

責任編輯:武曉燕 來源: 51CTO
相關推薦

2021-01-07 08:23:02

日志

2023-12-01 07:24:40

軟件架構(gòu)

2024-11-07 10:04:48

2019-06-26 08:30:32

計算機互聯(lián)網(wǎng)iOS

2012-02-21 09:22:45

2011-02-22 09:24:30

諾基亞微軟

2009-07-03 16:21:58

IT系統(tǒng)數(shù)據(jù)中心運維管理

2012-12-13 09:47:15

軟件架構(gòu)師架構(gòu)師

2011-04-07 16:20:24

軟件架構(gòu)師架構(gòu)師架構(gòu)

2021-08-06 09:20:41

IT管理IT領導者CIO

2017-01-15 21:22:38

2021-12-31 08:00:00

軟件架構(gòu)師開發(fā)技術

2011-04-07 16:06:18

測試架構(gòu)師測試架構(gòu)

2012-08-28 13:34:28

架構(gòu)師軟件架構(gòu)架構(gòu)文檔

2022-03-08 09:00:00

Kubernetes容器技術

2011-07-08 13:34:16

2010-08-05 13:51:13

軟件架構(gòu)師

2018-03-27 10:15:58

微信紅包個人信息

2014-09-10 10:14:14

2020-12-18 15:08:17

微信詐騙移動應用
點贊
收藏

51CTO技術棧公眾號