色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是系統架構 為什么要做架構設計

OSC開源社區 ? 來源:系統工程實驗室 ? 作者:胖仔 ? 2022-11-10 10:19 ? 次閱讀

不論是開發人員還是架構師,我們都一直在跟軟件系統打交道,架構是在工作中出現最頻繁的術語之一。那么,到底什么是架構?你可能有自己的答案,也有可能沒有答案。對“架構”的理解需要我們不斷在實踐中思考、歸納、演繹,形成自己的認知。

1 到底什么是軟件架構 ?

定義 ”架構是什么“ 是件非常困難的事情,不同的組織對于軟件架構有不同的定義,每個人心中也有自身對于系統架構定義的認知。就好比我們無法百分之百表述模型而只能產出模型不同維度的視圖,對架構進行完備的定義是不可能的。

“道可道,非常道。名可名,非常名”,道是如此,架構亦是如此。

行業內不同的組織和個人從不同的視角對 “什么是架構” 進行了定義或闡述。

IEEE 關于架構的定義

將系統架構定義為:架構是系統組織結構+組件及聯系(組件間以及組件和環境之間)+原則的組合。通過圖形化的形式表述該架構定義如下圖所示,這是一個非常簡潔、概念清晰的定義,其言簡意賅的表達了架構的幾個核心要素:

系統的組織:表達系統的宏觀結構

組件及聯系:組件化的思維,同時突出了環境要素。組件表達了系統的模塊化,組件相互之間及組件與環境之間的關聯表達元素間的相互作用。

原則:用于指導設計和系統演進的原則

25529558-6037-11ed-8abf-dac502259ad0.png

大師Martin Fowler和Ralph Johnson對于架構的定義有著類似的、更加簡潔和抽象,Martin Fowler 認為軟件架構是:重要并且難以改變的決策。架構設計是關于權衡的藝術,架構設計過程中充滿了各種各樣的決策,這些決策也終將反應系統架構。

Software Architecture = Important and hard to change decisions --Martin Fowler

The software architecutre is the important stuff ! Whatever it is ! --Ralph Johnson

以上的定義從高層抽象視角對什么是架構給予了自己的回答,相比之下,Neil Ford 在《軟件架構基礎》一書中對架構給出了更具象的闡述,其從架構組成元素入手,從更偏向實踐的角度對架構進行了闡述。核心思想是軟件系統的架構包括以下組合元素:

結構:應用系統所選擇的架構風格,比如微服務架構、單體架構還是SOA等

架構屬性:系統的非功能性屬性,比如性能、可用性、可維護性等

架構決策:系統設計過程中重要的架構決策

設計原則:設計過程中的指導性原則

2582f018-6037-11ed-8abf-dac502259ad0.png

結構

結構是系統架構的重要組成部分,其從宏觀上表述了系統的結構組成。架構設計的核心任務之一是為系統選擇合適的架構風格。比如,架構師基于上下文的權衡,可以選擇模塊化單體架構風格,也可以選擇微服務架構風格。

25a08240-6037-11ed-8abf-dac502259ad0.png

架構屬性

架構屬性亦稱質量屬性,或非功能屬性,通常表示系統需要具備或滿足的某種 “能力”,比如高性能、可擴展性、彈性、伸縮性、容錯性、可測試性、可維護性等等。架構設計的目標需要關注系統需要滿足的架構屬性,架構最終要體現對架構屬性支持的相關架構決策。架構屬性眾多,系統需要關注的是這些架構屬性的子集,具體的某次特定的架構設計所需要關注的架構屬性需要依據問題域的上下文而具體分析。同時,不同的架構屬性間可能存在沖突,這種情況同樣需要架構師的權衡和決策。

25ba84e2-6037-11ed-8abf-dac502259ad0.png

架構決策

架構決策是系統架構設計過程中對解決方案的選擇,其描述了系統必須遵循的規則。架構決策隨著權衡分析而自然存在,其是系統架構設計的重要維度之一。并不是所有的決策都是架構決策,架構決策應該關注對系統有重要影響的部分。比如對架構風格的選擇對系統存在重要影響,其改變的成本較高,理當屬于架構決策的范疇。比較典型架構決策包括但不限于:

直接影響高優先級的架構屬性

修改對外接口:對外提供的接口修改往往需要進行充分影響分析

引入或者移除依賴:依賴的加入和移除往往標示著組件能力的引進和廢棄

改變系統的通用結構:工程結構是應用架構的重要維度之一

迫使研發人員改變開發方式

接受戰略性技術債:重構影響較大的技術債往往對現有系統會有較大影響

注:架構決策建議以輕量級的文檔化形式進行記錄,參考文章 《輕量級的架構決策記錄機制》一文

設計原則

設計原則與架構決策不同,其本質區別是:設計原則是一種指導,而非強制的規則。架構決策需要遵守,設計原則提供參考性指引。

比如,設計原則可能是:在可能的情況下,跨系統間的通信盡可能使用異步消息機制以提高性能和降低耦合

2 架構設計的邊界

如果你是團隊的架構師,你是否有以下困惑:

系統的架構應該設計到什么粒度?

架構設計是否要足夠詳細以便能直接指導開發人員開展編碼工作?

如果你是團隊的核心開發人員,你是否 “抱怨” 過:

"架構設計" 太過詳細,涵蓋了實現的 “細枝末節”,自己除了CRUD沒有發揮的空間

"架構設計" 太過宏觀,基于設計方案根本無法指導開發,自己還得重新設計

25e3faf2-6037-11ed-8abf-dac502259ad0.png

很多架構師自身對架構和設計的邊界缺乏深入認知,相比于對架構邊界的縮小,更多時候會出現架構設計邊界放大的情況:

架構師把架構設計當作詳細的技術方案設計,牢牢把控系統實現的所有細節,產出大量的設計文檔,然后交由核心開發人員做代碼實現的執行工作。

這種現象會導致如下問題:

壓縮了團隊核心開發人員的設計發揮空間,不利于其技術水平及認知的提升

作為架構師你真的能講所有的細節都Cover住嗎?即使耗費巨大精力完成了 “完備” 的設計,來自一線開發所面臨的各種場景是否能夠提前預知和捕獲?

如果需求迭代持續如此,作為核心開發人員多半會有所 “怨言”

作為團隊的架構師精力有限,持續的細節輸出會耗費巨大精力,而無法關注更加宏觀的層面

.......

以上問題的根源是什么?不能明確架構設計的邊界!

架構設計與設計(實現相關)的邊界或粒度問題

團隊架構師與開發人員間的職責邊界

判斷架構邊界的前提之一是:明確架構和設計的關系!

所有的架構都是設計,但設計不一定是架構!

從架構的定義看架構設計的邊界,選取兩個視角:

架構是系統中重要的東西!無論它是什么(之所以重要,是因為改變的成本高)

架構設計涵蓋系統中重要的架構決策

所以,架構設計應該涵蓋系統中重要的東西,這些 “重要的東西” 可能是:

應用架構風格的選擇

子系統間信息通信的方式

工程采取的分層以及層間約束

工程應該遵循的開發規范

工程引入的三方類庫,或者三方框架

高優先級的架構屬性:比如某次需求建設非常關注系統的性能,或者擴展性等架構屬性

其它 "重要的東西"

架構設計涵蓋了系統所需的重要的架構決策,從宏觀層面對系統實現予以指引。而詳細的設計則為具體的開發實現提供指導,比如,詳細的E-R圖設計、具體的代碼級別的模式選擇、某個組件的具體實現等等。

架構不是一成不變,需要持續演進,而實現相關的設計也可能在項目進行中持續變化,因此,二者不能完全割裂,而是需要在實現過程中進行雙向反饋:

架構設計信息要高效的同步至開發人員

實現過程中的變更同樣也要回向反饋至架構,以便對架構設計進行調整

262863cc-6037-11ed-8abf-dac502259ad0.png

在進行架構邊界判定時要注意一個至關重要的因子:上下文!!!以上的判斷準則必須要給定的上下文中才有價值。

比如:實現過程中大家經常會適用一些設計模式,例如策略模式。那么,這種設計模式的選擇是屬于架構設計還是詳細的實現設計?答案就是:It depends!!! 具體情況,具體分析。

266d0da6-6037-11ed-8abf-dac502259ad0.png

如果當前上下文,我們非常關注系統的擴展性,該架構屬性是我們高優先級的架構屬性,那么,核心模塊的策略模式的應用可以看作是架構設計的范疇。而如果上下文中擴展性不是我們關注的高優先級的架構屬性,相比我們更關注性能,那么,這種代碼級的設計模式選擇應該屬于架構設計的范疇之外了,而需要劃分到實現設計層面,交由核心開發自主決定。

3 架構模式(Patterns)與架構風格(Styles)

架構模式和架構風格是極容易混淆的兩個概念,很多開發人員將其理解為同一事物,而實際上二者有本質區別。

架構風格是系統設計的頂層抽象,從宏觀視角表述我們的系統組成。更進一步,架構風格聚焦于系統的分層、模塊以及交互形式。

架構模式聚焦于對重復出現問題提供解決方案

二者概念不同,并不存在沖突,其聯系如下圖所示:

架構模式可以應用于架構風格,在同一架構風格上下文內可以應用一或多中架構模式

架構風格可以組合以產生新的架構風格

26867e76-6037-11ed-8abf-dac502259ad0.png

比較典型的例子是CQRS:CQRS本身是一種模式,將命令和查詢的職責在不同維度進行分離。該模式我們可以在單體架構風格中使用,也可以在微服務架構風格中使用,當然也可以在SOA架構中使用。

26b0203c-6037-11ed-8abf-dac502259ad0.png

4 為什么要做架構設計 ?

至于 “為什么要做架構設計” 也是一個古老且頻繁出現的問題,有太多的文章闡述為社么要架構設計:有的宏觀,有的具體,有的“務實”,有的“務虛”。我把這個問題作為一個獨立章節闡述,并不是想進行大篇幅的論述,只是想突出它的重要性,這個問題值得耗費一些精力去深入理解其背后的原因。但,在此不做展開過多說明,通過一句話來進行概括:

之所以要進行架構設計,是因為:重要 !

做,收益高

不做,成本高

5 開發人員和架構師的知識模型

作為開發人員,更加關注知識的深度,以便有足夠的知識儲備滿足工作需要。開發人員在職業生涯的早期,應該關注于自身知識儲備的增長,并保持技術深度。

26d1c9c6-6037-11ed-8abf-dac502259ad0.png

作為架構師,之所以技術的廣度比深度更重要,是因為架構師的重要職責之一是進行架構決策。系統架構設計是關于權衡的藝術,在特定的問題域上下文下,架構師需要在諸多可行的解決方案間進行權衡和決策,這也對其技術廣度提出了要求。開發人員成長為架構師,應該更加關注知識的廣度,并在幾個特定領域深耕,以便有足夠的知識支撐架構決策。

28149b1a-6037-11ed-8abf-dac502259ad0.png

雖然開發人員和架構師在知識域的關注點上存在差異,但在認知層面都可以統一到Bloom認知層次模型。該模型將認知層次劃分為逐步遞進的六個層次:

識記:識別和回溯事實性知識

理解:理解事實的內涵

應用:將事實、規則、概念、思想加以應用

分析:將信息分解、關聯、區分、實驗、測試

評估:將信息或思想的價值進行評價

創造:整合不同的信息形成新的知識體系

285eddce-6037-11ed-8abf-dac502259ad0.png

不論是架構師還是開發人員,Bloom認知層次模型都適用。通過不斷的學習擴展自身的知識體系,在識記、理解和應用的同時,要持續的培養分析、評估和創造的能力,逐步向高層次的認知水平提升。

但需要注意的是:知識不等于認知,避免陷入知識學習的陷阱。知識是無限的,沒有人能夠以無限的精力去學習無限的知識。不論是開發人員還是架構師,又或者其他角色,不應該只將精力投入在知識邊界的擴充,而應該注重從知識到認知提升的轉變。

吾生也有涯,而知也無涯。以有涯隨無涯,殆矣!已而為知者,殆而已矣! ----《莊子》

格物以致知,對表象不斷的歸納、演繹直至事物的本象,探尋事物背后的規律,建立更高層的認知。這種認知層次由下及上的躍升有兩種方式:

悟:由內向外,通過不斷積累、持續思考,由量變到質變,直至 “開悟”

破:自外向內,高層次或不同的思想輸入碰撞,加速認知層次的突破

299221c4-6037-11ed-8abf-dac502259ad0.png

6 結語

對架構定義的探討實際上是一種樸素的 “格物” 的過程,每個人都應該尋找自己的答案。跳脫對架構定義探討的視野,大家的工作和學習何嘗不是如此呢 ?!

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 架構
    +關注

    關注

    1

    文章

    519

    瀏覽量

    25515
  • 應用系統
    +關注

    關注

    0

    文章

    31

    瀏覽量

    10931
  • 系統
    +關注

    關注

    1

    文章

    1019

    瀏覽量

    21398
收藏 人收藏

    評論

    相關推薦

    面向服務的整車EE架構(SOA)設計開發咨詢服務

    經緯恒潤多年來一直致力于為客戶提供先進電子電氣架構解決方案,近年來,經緯恒潤在國內率先開展整車SOA架構的技術研發和業務布局,參與多款SOA架構下量產車型的研發,積累了豐富的SOA架構設
    的頭像 發表于 12-12 15:11 ?653次閱讀
    面向服務的整車EE<b class='flag-5'>架構</b>(SOA)設計開發咨詢服務

    架構性需求的基礎知識

    架構設計經驗增多,才領悟這句話的正確性。 什么是? 首先,什么是需求? 需求是一個多義詞,它的準確所指往往取決于你所處的位置。在汽車行業我們往往會利用ASPICE的V模型來找到自己需求的來源。比如做詳細設計,其需求來源
    的頭像 發表于 11-15 11:01 ?246次閱讀
    <b class='flag-5'>架構</b>性需求的基礎知識

    GPU服務器AI網絡架構設

    眾所周知,在大型模型訓練中,通常采用每臺服務器配備多個GPU的集群架構。在上一篇文章《高性能GPU服務器AI網絡架構(上篇)》中,我們對GPU網絡中的核心術語與概念進行了詳盡介紹。本文將進一步深入探討常見的GPU系統
    的頭像 發表于 11-05 16:20 ?578次閱讀
    GPU服務器AI網絡<b class='flag-5'>架構設</b>計

    深入理解 Llama 3 的架構設

    在人工智能領域,對話系統的發展一直是研究的熱點之一。隨著技術的進步,我們見證了從簡單的基于規則的系統到復雜的基于機器學習的模型的轉變。Llama 3,作為一個假設的先進對話系統,其架構設
    的頭像 發表于 10-27 14:41 ?612次閱讀

    邊緣計算架構設計最佳實踐

    邊緣計算架構設計最佳實踐涉及多個方面,以下是一些關鍵要素和最佳實踐建議: 一、核心組件與架構設計 邊緣設備與網關 邊緣設備 :包括各種嵌入式設備、傳感器、智能手機、智能攝像頭等,負責采集原始數據
    的頭像 發表于 10-24 14:17 ?523次閱讀

    架構與設計 常見微服務分層架構的區別和落地實踐

    架構風格越傾向于清晰的職責定位,且讓領域模型成為架構的核心。 基于這些架構風格,在軟件架構設計過程中又有非常多的架構分層模型。 傳統三層
    的頭像 發表于 10-22 15:34 ?292次閱讀
    <b class='flag-5'>架構</b>與設計 常見微服務分層<b class='flag-5'>架構</b>的區別和落地實踐

    龍芯CPU統一系統架構規范及參考設計下載

    *附件:LoongArch 系統調用(syscall)ABI.pdf *附件:龍芯 CPU 統一系統架構規范(適用于 LA 架構通用 PC、服務器系列)-v4.1.0.pdf *附件:
    發表于 06-20 14:42

    RISC--V架構的特點

    。RISC-V 指令集完全開源,設計簡單,易于移植Unix系統,模塊化設計,完整工具鏈,同時有大量的開源實現和流片案例,得到很多芯片公司的認可。RISC-V 架構的起步相對較晚,但發展很快。它可以根據具體場景
    發表于 05-24 08:01

    交換芯片架構設

    交換芯片的架構設計是網絡設備性能和功能的關鍵。一個高效的交換芯片架構能夠處理大量的數據流量,支持高速數據傳輸,并提供先進的網絡功能。
    的頭像 發表于 03-21 16:28 ?596次閱讀

    交換芯片架構設

    交換芯片架構設計是網絡通信中的關鍵環節,它決定了交換機的性能、功能和擴展性。
    的頭像 發表于 03-18 14:12 ?796次閱讀

    不能獨立開發,是因為你不懂軟件架構

    不想錯過,記得右上角-查看公眾號-設為星標,摘下星星送給我嵌入式軟件架構設計一般采用分層思想,稱為“分層架構”。part1一、什么是分層架構?分層架構(LayeredArchitect
    的頭像 發表于 03-15 08:09 ?1774次閱讀
    不能獨立開發,是因為你不懂軟件<b class='flag-5'>架構</b>

    【RISC-V開放架構設計之道|閱讀體驗】+ 閱讀深體驗

    本人沒有芯片設計,或者指令集方面較深的基礎知識,不過認真看這本書也令我學到了不少。 書中一開始便提到RISC-V的目標是稱為一款通用的指令集架構:需要適合設計各種規模的處理器,能兼容各種流行的軟件棧
    發表于 03-05 22:01

    【RISC-V開放架構設計之道|閱讀體驗】匯編語言和擴展指令集

    【RISC-V開放架構設計之道|閱讀體驗】匯編語言和擴展指令集 匯編語言 將C語言翻譯成可執行的機器語言的重要步驟包括編譯過程,匯編過程,鏈接過程。 函數調用約定過程分為六個階段: 1)將參數存放
    發表于 02-03 13:29

    華為企業架構設計方法及實例

    企業架構是一項非常復雜的系統性工程。公司在充分繼承原有架構方法基礎上,博采眾家之長,融合基于職能的業務能力分析與基于價值的端到端流程分析,將”傳統架構設計(TOGAF)”與“領域驅動(
    發表于 01-30 09:40 ?930次閱讀
    華為企業<b class='flag-5'>架構設</b>計方法及實例

    【RISC-V開放架構設計之道|閱讀體驗】+ 個人心得并祝福

    《RISC-V開放架構設計之道》給我留下深刻印象的幾點是: RISC-V的開放性和可擴展性。 RISC-V的簡潔性和高效性。 RISC-V的完整性和易用性。 我認為,這是非常值得一讀的書籍,提供了
    發表于 01-26 15:52
    主站蜘蛛池模板: 国产一卡在线观看完整版 | 乱h好大噗嗤噗嗤烂了 | 美国大臿蕉香蕉大视频 | 2021精品高清卡1卡2卡3麻豆 | 好男人好资源在线观看免费视频 | 日本高清免费在线观看 | 欧美日韩888在线观看 | 色狠狠xx | 国产精品高潮呻吟AV久久96 | 国产亚洲欧美在线中文BT天堂网 | 贤妻良母电影日本 | 这里只有精品网 | 免费国产久久啪久久爱 | 久久久精品久久久久特色影视 | 亚洲日韩乱码人人爽人人澡人 | 色老99九久精品偷偷鲁 | 久久永久视频 | 亚洲欧美综合中文 | 国产AV白丝爆浆在线播放 | 国产午夜高潮熟女精品AV | 国产精品麻豆a啊在线观看 国产精品麻豆AV | 欧美自拍亚洲综合图区 | 97超碰在线视频人人av | 国产精品久久久久久人妻精品流 | 亚洲久久少妇中文字幕 | 女人色极品影院 | 成年免费大片黄在线观看岛国 | 亚洲精品色播一区二区 | 欧洲馒头大肥p | 亚洲成av人影院 | 在线看片成人免费视频 | 蜜臀AV浪潮99国产麻豆 | 久久精品国产清白在天天线 | 久久99综合国产精品亚洲首页 | 婷婷色色狠狠爱 | 在线免费观看亚洲视频 | 一个人在线观看视频 | 99久久伊人一区二区yy5099 | 水蜜桃亚洲一二三四在线 | 免费可以看污动画软件 | 娇妻让壮男弄的流白浆 |