系統架構設計師案例分析題——軟件架構設計篇

重中之重,本題爭取拿下25滿分~

目錄

一.核心知識

1.什么是架構風格

2.RUP的9個核心工作流

3.企業應用集成方式

4.軟件質量屬性

5.SySML系統建模語言9種圖

6.云計算架構

7.中間件

8.構件、連接件、軟件重用

9.層次型架構的缺點

10.架構開發方法ADM

11.微服務架構的優缺點

11.云原生架構

12.SOA面向服務架構

13.DSSA特定領域軟件架構

二.案例考察擴展

1.應用網關的作用(和微服務架構息息相關)

2.ABSD

3.風險點、敏感點、權衡點

4.質量屬性的設計策略

5.遺留系統處理

6.各種架構風格的優缺點、特點

三.真題

1.2024下半年

2.2024上半年


一.核心知識

1.什么是架構風格

類似于建筑風格,從相同類型的軟件系統中抽取其架構的共性,是一種慣用模式,反映了眾多系統共有的結構和語義。

  1. 軟件架構為軟件系統提供了一個機構、行為和屬性的高級抽象
  2. 軟件架構風格是特定應用領域的慣用模式,架構定義一個詞匯表和一組約數

2.RUP的9個核心工作流

  • 業務建模:為目標組織開發一個構想,基于這個構想在用例和對象模型中定義組織過程、角色和責任
  • 需求:描述系統應該做什么,與開發人員和用戶達成共識
  • 分析與設計:對需求進行需求分析,設計則是設計類、接口、包,諸如生成類圖,對類進行分組、構件打包
  • 實現:主要是進行軟件開發的過程,以組件形式實現類與對象,最后成為可執行的系統
  • 測試:對系統進行功能測試,主要分為功能測試和非功能測試,功能測試又分為白盒測試、黑盒測試等。非功能測試分為性能測試、可用性測試等。
  • 部署:對軟件進行打包,并部署在服務器上
  • 配置與變更管理:控制項目中的產物,追蹤軟件創建過程中的版本。
  • 項目管理:平衡沖突,管理風險,克服各種約束并確保成功交付。
  • 環境:提供軟件開發環境、包括過程和工具。

3.企業應用集成方式

EAI分為4個集成:

  • 界面集成:把各應用的界面集成起來,形成統一入口,有整體的感覺。
  • 數據集成:控制集成和過程集成的基礎,可以提供企業信息共享能力。
  • 控制集成:多個應用系統進行綁定,像一個系統一樣輸入和產生輸出數據,實現多個系統功能的疊加。
  • 過程集成:為實現整體的業務目標,定義、關聯管理不同的業務古城,實現信息交換、降低成本,包括過程管理、工程建模和工作流。

4.軟件質量屬性

  • 性能:系統的響應能力,即要經過多長時間才能對某個事件做出響應,火災在某段事件內系統所能處理的事件的個數。
  • 可靠性:軟件系統在應用或系統錯誤面前,在意外或錯誤使用的情況下維持軟件系統的功能特性的基本能力
  • 可用性:系統能夠正常運行的時間比例。
  • 安全性:是指系統在向合法用戶提供服務的同時能夠阻止非授權用戶使用的企圖或拒絕服務的能力。
  • 可修改性:指能夠快讀地以較高的性價比對系統進行變更的能力。
  • 易用性:應有十分友好的用戶界面,用戶易于使用。

5.SySML系統建模語言9種圖

  • 用例圖:用于表達系統執行的用例,以及引起用例的行為者和其中的參與者。
  • 活動圖:用于指定一種行為,主要關注控制流程,以及輸入通過一些了動作轉換為輸出的過程。
  • 狀態機圖:用于指定一種行為,主要關注模塊的一系列狀態,以及響應事件時,狀態之間的可能轉換
  • 序列圖:用于指定一種行為,主要關注模塊的組成部分如何通過操作調用和異步信號交互。
  • 時間圖:描述系統某個活動狀態或屬性隨時間的變化。
  • 模塊定義圖:用于表示模塊和值類型之間的元素,以及那些元素之間的關系。
  • 內部模塊圖:用于指定單個模塊的內部結構。
  • 參數圖:用于表述一種或多種約束。
  • 需求圖:用于表示基于文字的需求之間的7種關系(包含、跟蹤等,不重要的知識點)

6.云計算架構

5個層次:

  • 管理層:提供對所有層次云計算服務的管理功能
  • 用戶訪問層:方便用戶使用云計算服務,提供相應的訪問接口
  • 應用層:提供軟件服務,如商業智能,saas
  • 平臺層:paas,平臺即服務,提供各種中間件和數據庫系統
  • 資源層:提供虛擬化的資源,隱藏物理資源的復雜型,如iaas

7.中間件

中間件是一種獨立的系統軟件或服務程序,可以幫助分布式應用在不同的技術之間共享資源。

作用:

  • 負責客戶機與服務器之間的連接和通信
  • 提供應用層不同服務之間的互操作機制
  • 提供多層架構的應用開發和運行的平臺
  • 屏蔽硬件、操作系統、網絡和數據庫的差異
  • 提供應用的負載均衡和高可靠性、安全機制與管理功能
  • 提供一種通用的服務去執行不同的功能,避免重復的工作和使應用之間高效協作

8.構件、連接件、軟件重用

  • 構件即組件,是一個功能相對獨立的、具有可重用價值的軟件單元。
  • 連接件事一種架構元素,通過對構件之間交互規則的建模來實現構件之間的連接。
  • 軟件重用師使用已有的軟件產品來開發新軟件系統的過程。

構件的三個特性:獨立部署單元、沒有外部可見狀態、作為第三方那的組裝單元。

系統構件組裝分為三個不同的層次:定址、集成、擴展。

9.層次型架構的缺點

  • 層與層之間可能難以抽象和劃分
  • 分層增加了系統的復雜性,使得系統變得龐大
  • 不同層次之間的耦合度高的系統難以實現

10.架構開發方法ADM

ADM生命周期:準備、需求管理、架構愿景、業務架構、信息系統架構、技術架構、機會和解決方案、遷移規劃、實施治理、架構變更管理。

11.微服務架構的優缺點

優點:

  • 職責單一、獨立性強
  • 容錯能力強
  • 松耦合,易拓展
  • 技術異構

缺點:

  • 測試和運維均復雜
  • 分布式環境下的數據一致性更為復雜

11.云原生架構

設計原則:

  • 服務化原則:使用微服務架構進行系統開發
  • 彈性原則:可以根據業務自動伸縮或者擴容
  • 韌性原則:面對異常的抵抗能力
  • 自動化原則:通過自動化運維工具進行部署
  • 可觀測原則:通過日志、鏈路追蹤和度量
  • 零信任原則:默認不信任內部或者外部的任何人、系統、設備
  • 架構持續演進原則:業務高速迭代的情況下架構與業務的平衡

12.SOA面向服務架構

面向服務架構(SOA)是一種軟件設計范式,旨在通過將應用程序功能分解為可重用的獨立服務,提升系統的靈活性和可維護性。

  • 服務為核心:功能單元以“服務”形式封裝,每個服務具備明確的業務目標(如用戶管理、訂單處理),并通過標準化接口(如REST、SOAP)暴露功能。
  • 松耦合:服務間依賴最小化,通過接口契約交互,內部實現細節對調用者透明。例如,支付服務升級無需修改調用它的訂單服務。
  • 標準化通信:使用通用協議(HTTP、消息隊列)和數據格式(XML、JSON),確保跨平臺互操作性。如Java服務可通過RESTful API與.NET服務通信。
  • 服務自治:服務獨立部署、管理和擴展。例如,高并發的身份驗證服務可單獨集群部署,無需牽連庫存服務。
  • 可組合性:通過編排服務構建復雜流程。例如,電商下單流程可組合庫存檢查、支付、物流服務實現。

關鍵優勢

  • 復用性:單點登錄服務可被多個系統復用,減少重復開發。

  • 敏捷性:業務規則變更時,僅需修改對應服務(如稅率計算服務)。

  • 異構集成:將遺留系統(如COBOL主機)封裝為服務,融入現代架構。

  • 可擴展性:熱門服務(如推薦引擎)可獨立橫向擴展。

13.DSSA特定領域軟件架構

特性:

  • 嚴格定義的問題域和解決域,不可越界
  • 具有普適性
  • 對整個領域進行適度的抽象
  • 架構在該領域中需要具備可重用的元素

創建步驟:

  • 定義領域范圍
  • 定于領域數據字典
  • 定義設計和需求約束
  • 產生特定領域架構
  • 產生、搜集可重用的構件

二.案例考察擴展

1.應用網關的作用(和微服務架構息息相關)

  • 提供統一的入口
  • 權限身份認證等安全管理
  • 流量限流、性能監控
  • 異常重試
  • 服務降級
  • 數據緩存

2.ABSD

ABSD(Architecture-Based Software Design,基于體系結構的軟件設計)是一種以軟件架構為核心的開發方法,強調通過體系結構驅動設計過程,確保系統滿足功能需求、質量屬性及業務目標。

核心思想:

體系結構驅動,分層與抽象、復用與模塊化

階段劃分:

體系結構需求、體系結構設計、文檔化、復審、實現、演化

關鍵特點:

  • 迭代性與遞歸性:各階段可反復迭代
  • 多視圖描述:增強設計全面性
  • 質量屬性導向:明確非功能性需求,確保架構的健壯性
  • 工具與模板支持

3.風險點、敏感點、權衡點

舉例:

  • 敏感點:對查詢請求處理時間的要求將影響系統的數據傳輸協議和處理過程的設計
  • 權衡點:更改系統加密的級別將會對安全性和性能產生影響
  • 風險點: 可能導致部分業務功能的重復,影響系統的可修改性

4.質量屬性的設計策略

  • 性能:優先級隊列、引入并發機制、異步處理、CDN加速
  • 可用性:心跳、Ping/echo、冗余設計
  • 可修改性:信息隱藏、松耦合通信
  • 安全性:加密傳輸、認證授權、審計日志
  • 可靠性:事務機制、冪等設計
  • 易用性:用戶反饋迭代、UI一致性設計

5.遺留系統處理

6.各種架構風格的優缺點、特點

過多,篇幅有限,這里不總結,各位自行搜索或者問Deepseek也行,重中之重,無論選擇、案例還是論文都有極大概率設計。

三.真題

1.2024下半年

1.給出諸多需求分析的條目,判斷屬于哪些質量屬性。

幾乎每次都考,要學會辨析。

2.針對質量屬性可以使用ping/echo和心跳模式實現,分別簡述ping/echo和心跳模式的實現原理,張工認為從資源利用率的角度來看采取心跳模式策略比較合適,簡述為什么。

實現原理:

  • ping/echo:通過 ICMP 協議發送一個“Echo Request”消息到目標主機,等待其回復“Echo Reply”。這是一種網絡層的連通性測試方法。echo:更廣泛地指任何類型的請求-響應模式,用于驗證遠程服務或組件是否可達和正常工作。這可以是基于HTTP、TCP等協議的簡單請求。
  • 心跳模式:客戶端定期向服務器發送心跳信號(如HTTP請求),服務器接收到后立即回應。如果連續幾次心跳未得到響應,則認為服務器可能出現故障。心跳信號通常包含少量數據,比如時間戳或簡單的健康檢查信息,以確保不僅網絡連接正常,而且應用程序本身也在正確運行。

采取心跳模式的原因:(實際上就是講述心跳的優點)

  • 針對性強,減少不必要的通信開銷;
  • 按需調整頻率和內容,優化資源使用,比較靈活;
  • 結合健康檢查,提高診斷精度;
  • 支持復雜環境下的高效運作。

2.2024上半年

1.簡述微服務架構,并分析優缺點

微服務是一種軟件架構風格,將應用程序拆分為多個小型、獨立部署的服務,每個服務負責特定功能,通過輕量級通信協議(如HTTP/REST)進行交互。這種架構允許各服務獨立開發、測試、部署和擴展,促進敏捷開發和持續交付。

優點:

  • 獨立部署:各服務可獨立部署,減少對其他模塊的影響,提升發布頻率和靈活性。
  • 技術多樣性:不同服務可以使用不同的技術棧,最適合解決各自的問題。
  • 可擴展性:根據需要單獨擴展某個服務,提高資源利用效率。

缺點:

  • 復雜性增加:系統拆分成多個服務后,增加了運維和管理復雜度。
  • 網絡通信開銷:服務之間的通信依賴網絡,可能帶來延遲和性能問題。
  • 數據一致性:分布式系統的數據一致性管理更加復雜,需要額外的機制保障數據同步。

2.質量效用樹填空

還是有關質量屬性的題目,必須拿下。

3.質量屬性場景中,使用六元素來描述題目中可用性的兩個場景。

六元素:

  • 刺激源:某個生成該刺激的實體(人,計算機,其它任何刺激器)
  • 刺激:指當刺激達到系統時需要考慮的條件。
  • 環境:指該刺激在某些條件哪發生。
  • 制品:某個制品被激勵,可能是整個系統,也可能是系統的一部分。
  • 響應:指在激勵達到后所采取的行動。
  • 響應度量:當響應發生時,應當能夠以某種方式對其進行度量。

總的來說,本題相較于其他4者,和課本的結合度最高,爭取拿下25滿分~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80337.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80337.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80337.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

可變參數(Variadic Functions)- 《Go語言實戰指南》

Go 語言允許函數接受不定數量的參數,也稱“可變參數”。這為構建靈活的函數提供了便利,常用于求和、拼接等操作。 一、語法格式 func 函數名(參數名 ...類型) 返回值類型 {// 函數體 } 可變參數本質上是一個切片(slice)&#xf…

手機換IP真的有用嗎?可以干什么?

在當今數字化時代,網絡安全和個人隱私保護日益受到重視。手機作為我們日常生活中不可或缺的工具,其網絡活動痕跡往往通過IP地址被記錄和追蹤。那么,手機換IP真的有用嗎?它能為我們帶來哪些實際好處?本文將為你一一解答…

Linux517 rsync同步 rsync借xinetd托管 配置yum源回顧

計劃測試下定時服務 同步成功 是否為本地YUM源內容太少?考慮網絡YUM源 單詞拼錯了 計劃后面再看下 MX安裝 參考 計劃回顧配置YUM源 配置本地YUM源配置外網YUM源配置倉庫YUM源(不熟) 參考 參考阿里云 配置完畢 本地yum源配置 先備份 再…

第三部分:內容安全(第十六章:網絡型攻擊防范技術、第十七章:反病毒、第十八章:入侵檢測/防御系統(IDS/IPS))

文章目錄 第三部分:內容安全第十六章:網絡型攻擊防范技術網絡攻擊介紹流量型攻擊 --- Flood攻擊單包攻擊及防御原理掃描窺探攻擊畸形報文攻擊Smurf攻擊Land攻擊Fraggle攻擊IP欺騙攻擊 流量型攻擊防御原理DDoS通用攻擊防范技術 ---- 首包丟棄TCP類攻擊SYN…

c++成員函數返回類對象引用和直接返回類對象的區別

c成員函數返回類對象引用和直接返回類對象的區別 成員函數直接返回類對象&#xff08;返回臨時對象&#xff0c;對象拷貝&#xff09; #include <iostream> class MyInt { public:int value;//構造函數explicit MyInt(int v0) : value(v){}//加法操作,返回對象副本&…

阿里巴巴 1688 數據接口開發指南:構建自動化商品詳情采集系統

在電商行業數據驅動決策的趨勢下&#xff0c;高效獲取商品詳情數據成為企業洞察市場、優化運營的關鍵。通過阿里巴巴 1688 數據接口構建自動化商品詳情采集系統&#xff0c;能夠快速、精準地采集海量商品信息。本文將從開發準備、接口分析、代碼實現等方面&#xff0c;詳細介紹…

c語言 socket函數

c語言 socket函數 在 C 語言中,socket 函數是網絡編程的核心函數之一,用于創建一個網絡套接字(socket),它是網絡通信的端點。以下是關于 socket 函數的詳細介紹: 函數原型 #include <sys/socket.h>int socket(int domain, int type, int protocol);參數說明 domai…

Linux進程通訊和原子性

在Linux系統中&#xff0c;進程間通信&#xff08;IPC&#xff09;和原子性是并發編程中的核心問題。以下是對這些概念的詳細分步解釋&#xff1a; 一、進程間通信&#xff08;IPC&#xff09;方法 1. 管道&#xff08;Pipe&#xff09; 匿名管道&#xff1a;用于父子進程等有…

Java二叉樹題目練習

Java二叉題目練習 相同的樹對稱二叉樹平衡二叉樹二叉樹的最近公共祖先二叉樹的層序遍歷二叉樹層序遍歷 ||二叉樹遍歷 相同的樹 二叉樹的題目大多數時候就可以采用遞歸的方法寫 因為二叉樹是由根左子樹和右子樹組成&#xff0c;每一棵左子樹和右子樹又可以被看成一顆完整的樹&am…

【全網首發】解決coze工作流批量上傳excel數據文檔數據重復的問題

注意&#xff1a;目前方法將基于前一章批量數據庫導入的修改&#xff01;&#xff01;&#xff01;&#xff01;請先閱讀上篇文章的操作。抄襲注明來源 背景 上一節說的方法可以批量導入文件到數據庫&#xff0c;但是無法解決已經上傳的條目更新問題。簡單來說&#xff0c;不…

dockerdesktop 重新安裝

1、卸載 dockerdesktop 卸載時&#xff0c;最后一步刪除鏡像文件 會卡住 取消 2、在資源管理器中將鏡像文件路徑改名 如&#xff1a;e:\docker 修改 e:\docker1 3、重新安裝wsl wsl --shutdown 以管理員身份運行hy.bat pushd "%~dp0" dir /b %SystemRoot%\servic…

Linux docker常用命令

1、docker服務相關命令 啟動docker服務&#xff1a;systemctl start docker 停止docker服務&#xff1a;systemctl stop docker 重啟docker服務&#xff1a;systemctl restart docker 查看docker服務狀態&#xff1a;systemctl status docker 設置開機啟動docker服務&#xff1…

南京郵電大學金工實習答案

一、金工實習的定義 金工實習是機械類專業學生一項重要的實踐課程&#xff0c;它絕非僅僅只是理論知識在操作層面的簡單驗證&#xff0c;而是一個全方位培養學生綜合實踐能力與職業素養的系統工程。從本質上而言&#xff0c;金工實習是學生走出教室&#xff0c;親身踏入機械加…

Java EE初階——wait 和 notify

1. 線程饑餓 線程饑餓是指一個或多個線程因長期無法獲取所需資源&#xff08;如鎖&#xff0c;CPU時間等&#xff09;而持續處于等待狀態&#xff0c;導致其任務無法推進的現象。 典型場景 優先級搶占&#xff1a; 在支持線程優先級的系統中&#xff0c;高優先級線程可能持續…

MATLAB中heatmap函數

無論對表格還是對矩陣的可視化&#xff0c;都非常好用。 樣本特征 高斯核 https://ww2.mathworks.cn/help/matlab/creating_plots/create-heatmap-from-tabular-data.html

win11安裝Joplin Server私有化部署(docker)

摘要 本指南將幫助你在 Windows 11 系統 上通過 Docker Docker Compose 完成 Joplin Server 的本地搭建&#xff0c;并實現數據持久化、PostgreSQL 后端支持、用戶登錄與同步功能。 條件說明? 已安裝 Docker Desktop for Windows可從 Docker 官網 下載并安裝&#xff0c;建議…

嵌入式STM32學習——外部中斷EXTI與NVIC的基礎練習?

按鍵控制LED燈 按鍵控制LED的開發流程&#xff1a; 第一步&#xff1a;使能功能復用時鐘 第二布&#xff0c;配置復用寄存器 第三步&#xff0c;配置中斷屏蔽寄存器 固件庫按鍵控制LED燈 外部中斷EXTI結構體&#xff1a;typedef struct{uint32_t EXTI_Line; …

《Deepseek從入門到精通》清華大學中文pdf完整版

資源介紹&#xff1a; 《DeepSeek&#xff1a;從入門到精通》是由清華大學新聞與傳播學院新媒體研究中心元宇宙文化實驗室的精心撰寫的一份專業文檔。該文檔以通俗易懂的方 式&#xff0c;全面介紹了DeepSeek的使用方法&#xff0c;為用戶提供了極具價值的指導。 這份文檔內容豐…

Apache Pulsar 消息、流、存儲的融合

Apache Pulsar 消息、流、存儲的融合 消息隊列在大層面有兩種不同類型的應用&#xff0c;一種是在線系統的message queue&#xff0c;一種是流計算&#xff0c;data pipeline的streaming高throughout&#xff0c;一致性較低&#xff0c;延遲較差的過程。 存算分離 擴容和縮容快…

JavaScript vs Python 用于 Web Scraping(2025):終極對比指南

1. 引言 在不斷發展的 Web Scraping 領域&#xff0c;選擇合適的編程語言對于項目的成功至關重要。雖然 JavaScript 和 Python 在 2025 年仍然是 Web Scraping 領域的熱門選擇&#xff0c;但它們各自具備不同的優勢和挑戰。 本指南將深入分析 JavaScript 和 Python 的核心特性…