軟件架構(gòu)

架構(gòu)是系統(tǒng)的基本組織結(jié)構(gòu),涵蓋包含的組件與組件之間的關(guān)系,組件與環(huán)境的關(guān)系,以及指導(dǎo)架構(gòu)設(shè)計(jì)和演進(jìn)的原則等內(nèi)容。

  • 系統(tǒng):系統(tǒng)是以特定方式組織的組件集合,以實(shí)現(xiàn)特定的功能。軟件系統(tǒng)是其軟件組件的集合。一個(gè)系統(tǒng)通常可以劃分成若干個(gè)子系統(tǒng)。
  • 結(jié)構(gòu):結(jié)構(gòu)是根據(jù)某個(gè)指導(dǎo)規(guī)則或原則來組合或組織在一起的一組元素的集合。元素可以是軟件或硬件系統(tǒng)。軟件架構(gòu)可以根據(jù)觀察者的上下文展示各個(gè)層次的結(jié)構(gòu)。
  • 環(huán)境:軟件系統(tǒng)所在的上下文或環(huán)境對(duì)其軟件架構(gòu)有直接的影響。這樣的上下文因素可以是技術(shù)、商業(yè)、專業(yè)、操作等。
  • 利益相關(guān)者:任何對(duì)某個(gè)系統(tǒng)及其成功與否感興趣或關(guān)心的個(gè)體或團(tuán)體,都是利益相關(guān)者。例如,架構(gòu)師、開發(fā)團(tuán)隊(duì)、客戶、項(xiàng)目經(jīng)理和營(yíng)銷團(tuán)隊(duì)等。
方面 見解/影響 例子
根倨架構(gòu)來選抒能對(duì)系統(tǒng)進(jìn)行優(yōu)化的質(zhì)量屬性 系統(tǒng)的可擴(kuò)展性、可用性、可修改性、安仝性等方而取決于在選擇架構(gòu)時(shí)的早期決策和權(quán)衡。經(jīng)常會(huì)犧牲一個(gè)屬性來提升另—個(gè)屬性 必須使分散式架構(gòu)來開發(fā)針對(duì)可擴(kuò)展性進(jìn)行優(yōu)化的系統(tǒng),其中元素不緊密耦合。例如:微服務(wù)、代理
架構(gòu)促進(jìn)早期原型設(shè)計(jì) 定義架構(gòu)以允許開發(fā)組織嘗試構(gòu)建早期的原型,這為系統(tǒng)的行為提供了寶貴的洞察視角.而無需構(gòu)建完整的系統(tǒng) 許多組織會(huì)構(gòu)建服務(wù)的快速原型——通常只構(gòu)建這些服務(wù)的外部 API,而忽視其余的行為。這使得早期集成測(cè)試可以執(zhí)行,也能更早發(fā)現(xiàn)架構(gòu)中的交互問題
架構(gòu)允許系統(tǒng)以組件化方式構(gòu)建 具有明確定義的架構(gòu)允許重用和組合現(xiàn)有的易于使用的組件來實(shí)現(xiàn)功能,而無需從頭開始實(shí)現(xiàn)所有內(nèi)容 為服務(wù)提供可立即使用的構(gòu)建塊的庫(kù)或框架技術(shù)。
例如:像 Django/RoR 這樣的 Web 砬用程序框架.以及像 Celery 這樣的任務(wù)分發(fā)框架
架構(gòu)有助于管押系統(tǒng)變更 架構(gòu)師會(huì)根據(jù)架構(gòu)分離出在修改中受影響的組件和不受影響的組件。這有助于在實(shí)施新功能、性能修復(fù)等操作時(shí)將系統(tǒng)的變更保持在最低限度 如果正確地實(shí)現(xiàn)了架構(gòu),對(duì)于系統(tǒng)數(shù)據(jù)庫(kù)讀取的性能修改.只需要對(duì)數(shù)據(jù)庫(kù)和數(shù)裾訪問層(DataAccessLayer,DAL)進(jìn)行修改即可,根本不需要觸及應(yīng)用程序的代碼。這就足大多數(shù)現(xiàn)代 Web 框架的構(gòu)建方式

一個(gè)定義良好的架構(gòu)只會(huì)捕獲那些構(gòu)建系統(tǒng)核心功能所需的核心結(jié)構(gòu)元素,這些核心結(jié)構(gòu)元素一般會(huì)對(duì)系統(tǒng)有持久的影響,絕不是像流水賬似地記錄系統(tǒng)每個(gè)組件的所有細(xì)節(jié)。

系統(tǒng)的架構(gòu)最好以自頂向下的結(jié)構(gòu)描述,它也經(jīng)常作為任務(wù)分解結(jié)構(gòu)的基礎(chǔ)。

企業(yè)架構(gòu)師考慮一個(gè)組織或機(jī)構(gòu)的整體業(yè)務(wù)和組織策略,并應(yīng)用架構(gòu)原理和實(shí)踐來指導(dǎo)該組織或機(jī)構(gòu)通過業(yè)務(wù)、信息、流程和技術(shù)變更需求執(zhí)行策略。

技術(shù)架構(gòu)師:技術(shù)架構(gòu)師關(guān)注一個(gè)組織或機(jī)構(gòu)使用的核心技術(shù)(硬件、軟件、網(wǎng)絡(luò))。如安全架構(gòu)師、信息架構(gòu)師等。

系統(tǒng)架構(gòu)師:系統(tǒng)架構(gòu)師通常具有較高的技術(shù)關(guān)注度和較低的策略關(guān)注度。

解決方案架構(gòu)師:解決方案架構(gòu)師通常跨越策略與技術(shù)關(guān)注點(diǎn)、組織與項(xiàng)目范圍,處在中間位置。

架構(gòu)質(zhì)量,一般從以下幾個(gè)屬性考慮:

  • 可修改性(高內(nèi)聚、低耦合)
  • 可測(cè)試性
  • 可拓展性(水平擴(kuò)展節(jié)點(diǎn)、垂直單節(jié)點(diǎn)容量提升)
  • 性能(響應(yīng)時(shí)間、延遲、吞吐)
  • 可用性(單位時(shí)間影響的請(qǐng)求量最小,故障檢測(cè)與預(yù)防、恢復(fù))
  • 安全性(權(quán)限、網(wǎng)絡(luò)、社工等防控)
  • 可部署性(結(jié)構(gòu)模塊化、環(huán)境區(qū)分、工具支持、標(biāo)準(zhǔn)化配置、容器化)

總結(jié):
簡(jiǎn)介了軟件架構(gòu)和設(shè)計(jì)的區(qū)別,架構(gòu)的特點(diǎn)與架構(gòu)師的職能,以及架構(gòu)質(zhì)量屬性

參考文獻(xiàn):
《Software Architecture with Python》 2018. 軟件架構(gòu). 北京: 機(jī)械工業(yè)出版社.


如有錯(cuò)誤,請(qǐng)不吝指正。謝謝
本文為個(gè)人讀書筆記,轉(zhuǎn)載請(qǐng)注明出處:
https://xzing.github.io/
http://www.itdecent.cn/u/4915ed24d1e3

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容