軟體架構設計 架構師筆記,軟體架構設計

2021-10-12 09:26:51 字數 2455 閱讀 8224

架構設計是分與合的藝術

通讀並總結了溫昱老師的《軟體架構設計》,並有幸聽過李哲珠博士對架構設計的講解。對其讀後的自我領悟並提煉出核心內容分享出來,希望從思想高度上能提公升你對軟體架構設計的認知。

架構設計

架構設計不等於框架設計,框架也可能有架構,所有的原子元件(被拆分的模組)都需要架構設計,所有元件可以組合成復合元件,組合而成的元件也有自己的架構。最簡單的架構模式就是介面卡模式,因為原子元件隨時可能被替換,或介面不統一。

兩檢視法

三個原則

架構新手和有經驗的架構師的區別之一,在於是否懂得、並能有效地進行概念架構的設計。作為架構新手,尤其害怕碰上自己沒做過的系統;系統較大時,一旦祭出「架構 = 模組 + 介面」的法寶卻不太奏效,架構新手就往往亂了陣腳。相反,有經驗的架構師不會一上來就關注如何定義「介面」,他們在大型系統架構設計的早期比較注重識別1)重大需求、2)特色需求、3)高風險需求,據此來決定如何劃分頂級子系統、採用什麼架構風格和開發技術、整合是否要支援、二次開發是否要支援。

六個成果

三大階段,分別遵守三個原則,六大步驟可以得到六個成果(每一階段兩個步驟)。

一定要全,必須涵蓋功能、質量、約束這三個方面

兩縱:第一,溝通功能需求。第二,確定非功能需求(效能需求、便利性需求、友好性需求)

三橫:第一,上下文圖(待開發系統作為黑盒在中心,周邊都關聯了哪些系統、環境和活動)

業務決定功能,功能決定模型

領域建模的目的:透過問題領域的重重現象,捕捉其背後最為穩固的領域概 念,以及這些概念之間的關係。在專案前期,所建立的領域模型將為所有團 隊成員之間、團隊成員和客戶之間的交流提供共同認可的語言核心。

領域建模的形式:可以用類圖或者狀態圖也可以用文字

類圖:描述靜態的關係(一對

一、一對多、多對多。繼承,關聯等)

狀態圖:描述動態的變化(從某乙個狀態變為另乙個狀態,能做哪些功能,在靜態完成後著重考慮)。此項分析能夠挖掘更多的需求,避免後期的變更(例如:公司-僱傭-雇員,因為雇員會有狀態的變化,所以產生僱傭)

文字:直接描述乙個具體的模型(位數、格式等規則)

關鍵需求決定架構,其餘需求驗證架構

對功能需求和非功能需求進行篩選,最終確定對軟體架構起關鍵做用的需求子集(佔總需求的20%左右)

確定關鍵質量:確定關鍵質量時考慮質量數型之間的矛盾關係:效能-安全性

確定關鍵功能:關鍵功能涉及(或串起)的模組最多、協作方式最有代表性

關鍵需求受專案級別影響(部門級應用、企業級應用、集團級應用),同乙個專案關鍵需求可能不同

是直指系統設計目標的設計思想合重**擇

是關乎任何複雜系統成敗的最關鍵的、指向性的設計

如何劃分頂級子系統(面向整合的整合模組、為效能把訪問資源隔離的各個子系統)

架構風格選型(b/s、c/s、b/s+c/s。。。是最簡單的風格)

開發技術選型

整合技術選型

二次開發技術選型

利用五檢視法進行設計

乙個真正可以執行的應用程式

五檢視法

複雜的專案,兩檢視法就不夠用了

模組劃分

水平分層

通用模組、通用機制

來自需求

介面定義:模組或子系統之間的通訊介面

領域模型

技術選型

開發語言

開發工具

技術框架、第三封類庫

檔案劃分

編譯關係

硬體分布

單板機微控制器專用機

pc伺服器

拓撲結構

網路型別

匯流排規範

軟體部署

桌面軟體安裝

燒寫嵌入式系統

部署web應用

方案優化

高效能(付出)

可用性【持續可用性/高可用性】(付出)

伸縮性(付出)

經濟性(節約)

可行性(節約)

易維護性(節約)

技術選型

程序執行緒中斷服務程式(嵌入式應用的併發機制)

控制流劃分

同步關係:資源爭搶時需要加鎖

技術選型

關聯式資料庫

非關聯式資料庫

flash

(分布式)檔案

儲存格式

資料分布

《軟體架構設計》是2023年電子工業出版社出版,溫昱編著的書籍。本書可作為計算機軟體專業本科生、研究生和軟體工程碩士的軟體架構設計教材,也可作為軟體開發高階培訓、軟體開發管理培訓的培訓教材,更是第一線高階開發人員和開發管理人員的必備參考書。學習架構知識首先要提公升看問題的高度,而且不能天馬行空或者拿來主義,一定要學習方**。思想和方法都已經告訴給大家了,附贈常用架構風格表:

架構漫談 軟體架構師

通過對架構漫談九篇部落格的閱讀,我了解到了軟體架構以及軟體架構師的工作狀況等內容 對於架構,我的理解是,在乙個系統中,存在乙個系統中多個角色共有的問題,為了更快更好地解決問題,將問題進行拆分,交由不同的角色來完成,並在各角色中建立溝通機制,進行有機的聯絡,總成乙個整體,完成目標系統的工作。了解到架構...

軟體架構師

軟體企業中有乙個角色叫做軟體架構師,不同公司或者不同的環境下,對該職位的定位可能不盡相同。微軟首席架構師ray ozzie 對自己職位的一些看法,倒是給人很多啟發 1.不管是設計一座橋梁還是一幢大廈,你是在特定的情況下應用各種設計模式 2.在做程式設計師的時候你要花時間讓自己理解各種不同的模式,並能...

軟體架構師

軟體企業中有乙個角色叫做軟體架構師,不同公司或者不同的環境下,對該職位的定位可能不盡相同。微軟首席架構師ray ozzie 對自己職位的一些看法,倒是給人很多啟發 1.不管是設計一座橋梁還是一幢大廈,你是在特定的情況下應用各種設計模式 2.在做程式設計師的時候你要花時間讓自己理解各種不同的模式,並能...