【系統架構設計(15)】軟件架構設計一:軟件架構概念與基于架構的軟件開發

文章目錄

    • 一、核心思想
    • 二、軟件架構概念:系統設計的高級抽象
    • 三、軟件架構設計與生命周期:架構在開發流程中的演進
    • 四、架構描述語言ADL:架構的標準化表達
    • 五、4+1視圖:多角度的架構展現
    • 六、基于架構的軟件開發概念:架構驅動的開發理念:ABSD
    • 七、基于架構的軟件開發過程:從需求到實現的完整流程
      • ABSD開發過程的整體特征
      • 架構需求過程:從需求到構件的轉換
      • 架構設計過程:構建系統藍圖
      • 架構實現過程:從設計到可運行系統
      • 架構演化過程:適應變化的持續改進
      • ABSD方法的核心價值

一、核心思想

軟件架構是對復雜軟件系統的高級抽象,它通過結構化的方式定義系統的組件、關系和約束;而基于架構的軟件開發則是將這種抽象設計轉化為可執行軟件的系統化方法。

這就像建造一座摩天大樓:

  • 軟件架構是建筑設計圖紙,定義了樓層結構、功能分區和基礎設施布局;
  • 架構描述語言是繪制圖紙的標準規范;
  • 4+1視圖是從不同專業角度(結構工程師、電氣工程師、裝修設計師等)審視同一棟建筑;
  • 而基于架構的軟件開發則是按圖施工的完整流程,從地基挖掘到裝修交付的全過程管理。

為什么這個體系如此重要?

  1. 軟件系統的復雜性已經超出了人類直接理解和管理的能力。架構提供了必要的抽象層次,讓我們能夠在宏觀層面把握系統全貌,同時為不同角色提供了有效的溝通語言。
  2. 這個體系建立了從需求到實現的可追溯鏈條:需求分析確定"要做什么",軟件架構回答"怎樣組織",詳細設計解決"如何實現"。沒有這個中間層,復雜系統的開發將陷入混亂。

?

二、軟件架構概念:系統設計的高級抽象

軟件架構的概念包括架構的本質、作用和在軟件開發中的橋梁位置,是理解整個架構體系的基礎。
在這里插入圖片描述

概念要素定義與特點應用場景重要性說明
高級抽象對系統結構、行為、屬性的高層概括
不涉及具體實現細節
微服務架構抽象出服務邊界
分層架構定義層次職責
提供宏觀視角
降低理解復雜度
慣用模式與約束特定領域的常用架構風格
定義專業術語和協作規則
互聯網應用的微服務模式
企業應用的分層模式
提供設計指導
確保架構一致性
交流手段不同角色基于架構進行溝通
理解系統整體設計
開發、測試、業務團隊協作
技術方案評審
統一認知基礎
提高溝通效率
可傳遞復用模型架構可在項目間傳遞復用
支持質量預估和問題發現
電商平臺架構復用
金融系統架構模板
降低設計成本
提升系統質量
橋梁作用連接需求分析與軟件設計
實現需求到組件的分配
將用戶需求分配到具體組件
確定組件職責和協作關系
填補設計鴻溝
確保需求可追溯

在這里插入圖片描述

?

三、軟件架構設計與生命周期:架構在開發流程中的演進

軟件架構設計貫穿整個軟件生命周期,從需求分析到后開發階段都發揮著關鍵作用。
在這里插入圖片描述

生命周期階段核心任務關鍵方法與工具與架構的關系
需求分析階段需求模型到架構模型的轉換
確保轉換過程可追溯
需求建模技術
可追溯性矩陣
架構設計的輸入基礎
確保需求完整覆蓋
設計階段使用ADL和4+1視圖描述架構
從多視角展現架構設計
架構描述語言(ADL)
4+1視圖方法
架構研究的核心階段
產生正式架構文檔
實現階段依據架構進行代碼編寫
將設計轉化為可運行代碼
編程語言和框架
代碼生成工具
架構設計的具體落地
驗證架構可行性
構件組裝階段在高層次組裝已有構件
提高開發效率
構件庫管理
集成測試工具
體現架構組合特性
實現架構復用
部署階段架構提供部署指導
確定系統在硬件環境中的部署
容器化技術
自動化部署工具
架構的物理實現
保障系統穩定運行
后開發階段動態架構調整
架構恢復與重建
架構演化工具
重構技術
支持架構持續改進
適應需求變化

?

四、架構描述語言ADL:架構的標準化表達

架構描述語言為軟件架構提供形式化的描述方法,確保架構設計的精確性和一致性。
在這里插入圖片描述

ADL類型核心特點適用場景基本元素
C2SADL基于組件和消息
聚焦消息傳遞交互
事件驅動系統
消息中間件架構
構件:計算或數據存儲單元
連接件:構件交互建模
Wright適用分布、并發系統
關注并發執行邏輯
分布式系統
高并發應用
架構配置:構件連接關系圖
ACME架構互換語言
強調轉換和互操作性
架構集成項目
多系統協作
支持架構復用和集成
UniCon基于組件和連接
注重連接關系建模
傳統企業應用
模塊化系統
清晰展現架構拓撲結構
Rapide基于事件驅動
關注事件觸發響應機制
實時系統
響應式應用
以事件為核心的架構描述

?

五、4+1視圖:多角度的架構展現

4+1視圖方法從不同涉眾的關注角度全面展現軟件架構,確保架構設計滿足各方需求。
在這里插入圖片描述

視圖類型關注者核心關注點描述內容
邏輯視圖最終用戶功能需求實現
系統邏輯結構
類與對象層面的系統結構
功能實現方式
實現/開發視圖程序員配置裝配
代碼組織結構
代碼組織和模塊劃分
編碼和集成依據
進程視圖系統集成人員性能、可伸縮性
并發處理能力
運行時進程交互
資源分配方案
部署/物理視圖系統工程人員發布安裝
物理拓撲結構
物理環境部署方式
系統部署實施指導
用例視圖/場景分析人員、測試人員用例場景
用戶交互方式
系統功能和交互場景
需求分析和測試依據

?

六、基于架構的軟件開發概念:架構驅動的開發理念:ABSD

基于架構的軟件開發(ABSD)強調架構在軟件開發中的核心驅動作用,建立了系統化的開發方法。

在這里插入圖片描述

核心概念定義與特點實施方法價值體現
架構驅動理念架構由業務、質量、功能需求共同驅動
兼顧多維度需求
需求分析時同時考慮
業務目標和質量屬性
確保架構滿足
全面的系統需求
三個基礎
功能分解運用模塊內聚和耦合技術
高內聚低耦合設計
模塊化設計原則
接口標準化
提高系統靈活性
和可擴展性
架構風格選擇根據需求選擇合適架構風格
滿足質量和業務需求
分層架構、微服務架構
等風格的合理選擇
架構與需求的
最佳匹配
軟件模板使用提供通用架構框架
保證架構一致性
開源框架模板
企業架構標準
提高開發效率
保障質量一致性
視角與視圖
多視角需求捕獲功能需求用用例捕獲
質量需求用場景捕獲
用例建模
質量場景設計
全面準確捕獲
各類系統需求

?

七、基于架構的軟件開發過程:從需求到實現的完整流程

ABSD開發過程的整體特征

自頂向下的遞歸細化方法:ABSD方法采用自頂向下、逐步細化的開發策略,從高層架構逐步深入到具體的軟件構件和類。這種方法能很好地支持軟件重用,通過架構模板和構件庫的使用,顯著提高開發效率和軟件質量。

迭代與反饋機制:整個開發過程具有強烈的迭代特征,每個階段都包含評審環節(0:N或0:M表示可能的多次迭代),確保質量控制和持續改進。

在這里插入圖片描述

開發階段核心活動關鍵輸出質量保障
架構需求需求獲取、類圖生成
構件打包、需求評審
構件化的需求模型
需求評審報告
多次需求評審(0:N)
確保需求完整性
架構設計提出架構模型、構件映射
分析構件交互、產生架構
完整軟件架構
構件交互模型
多次設計評審(0:M)
保證架構質量
架構文檔化記錄架構設計成果
形成多份文檔
架構設計文檔
構件規格說明
文檔標準化
便于團隊協作
架構實現構件實現、構件組裝
系統測試
可運行軟件系統
測試報告
全面系統測試
驗證架構設計
架構演化需求變化歸類、演化計劃
構件變動、技術評審
演化后的架構
更新的構件庫
多次技術評審(0:N)
適應需求變化

?

架構需求過程:從需求到構件的轉換

在這里插入圖片描述

需求分析的系統化方法:

  1. 需求獲取:從需求庫中收集各類需求,需求庫的存在體現了知識積累和復用的重要性
  2. 生成類圖:將需求轉化為面向對象的類圖表示,建立系統的靜態結構模型
  3. 對類進行分組:根據功能相關性將類進行邏輯分組,為后續構件化奠定基礎
  4. 把類打包成構件:將分組后的類封裝成可獨立部署和復用的構件
  5. 需求評審:通過0:N次評審確保需求的完整性和準確性

核心價值:這個過程實現了從抽象需求到具體構件的可追溯轉換,為后續的架構設計提供了結構化的輸入。

?

架構設計過程:構建系統藍圖

架構設計過程,體現了系統化的設計方法:

  1. 提出架構模型:基于需求分析結果,選擇合適的架構風格和基本框架
  2. 映射構件:將需求階段產生的構件映射到架構模型中,確定構件在系統中的位置
  3. 分析構件相互作用:研究構件間的交互方式、依賴關系和協作機制
  4. 產生架構:綜合以上步驟,形成完整的軟件架構設計
  5. 設計評審:通過0:M次評審保證架構的合理性和可行性

關鍵特點:設計過程強調構件間關系的分析,這是ABSD方法區別于傳統開發方法的重要特征。

?

架構實現過程:從設計到可運行系統

在這里插入圖片描述

設計到實現的轉化:

  1. 分析與設計:基于復審后的架構文檔進行詳細分析,可以利用構件庫中的已有構件
  2. 構件實現:編寫代碼實現各個構件的具體功能
  3. 構件組裝:將實現的構件按照架構設計進行組裝,構件庫在此階段發揮重要作用
  4. 系統測試:對組裝后的系統進行全面測試,驗證架構設計的正確性

構件庫的作用:構件庫貫穿整個實現過程,體現了軟件重用的核心思想,提高了開發效率并保證了質量一致性。

?

架構演化過程:適應變化的持續改進

架構演化過程,體現了系統的可持續發展:

  1. 需求變化歸類:對變更需求進行分類分析,明確變化的性質和影響范圍
  2. 架構演化計劃:制定有序的演化策略,規劃演化步驟和資源配置
  3. 構件變動:從構件庫獲取或修改相關構件,實現架構調整
  4. 更新構件相互作用:調整構件變動后的交互關系,維護系統完整性
  5. 構件組裝與測試:重新組裝并測試,驗證演化效果
  6. 技術評審:通過0:N次技術評審確保演化質量

演化特點:演化過程形成閉環,演化后的架構可以繼續適應新的需求變化,體現了ABSD方法的可持續性。

?

ABSD方法的核心價值

通過這三個階段的有機結合,ABSD方法實現了:

  1. 系統化的開發流程:從需求到實現再到演化的完整鏈條
  2. 強大的復用能力:需求庫和構件庫支撐的多層次復用
  3. 質量保障機制:多次評審確保每個階段的質量
  4. 持續改進能力:演化過程支持系統的長期發展

這種方法特別適合大型、復雜的軟件系統開發,通過架構驅動的方式確保了開發過程的可控性和最終產品的高質量。

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

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

相關文章

文件系統-哈希結構文件

一、核心思想哈希文件的核心思想非常簡單直接:通過一個計算(哈希函數),將記錄的鍵(Key)直接轉換為該記錄在磁盤上的物理地址(通常是塊地址),從而實現對記錄的快速存取。它…

一文吃透 C#中異步編程Task

一文吃透 C#中異步編程Task 一、Task 是什么 二、推薦使用場景 三、Demo:Task 的核心用法 1. 最常用的啟動方式Task.Run 2. task完成狀態與結果獲取 3. 多個任務怎么等?Wait/WaitAll/WaitAny 4. 任務想中途停掉?取消與異常處理 四、必備 API 速查表 五、避坑指南、注意事項 …

TDengine TIMETRUNCATE 函數用戶使用手冊

TDengine TIMETRUNCATE 函數用戶使用手冊 函數概述 TIMETRUNCATE 是 TDengine 中的一個時間處理標量函數,用于將時間戳按照指定的時間單位進行截斷操作。該函數在時間數據聚合、分組和統計分析中非常有用,特別適用于智能電表等時序數據的分析場景。 語法…

KSZ8081寄存器介紹

一、寄存器概覽KSZ8081MNX/RNB 支持 IEEE 802.3 標準的 MII 管理接口(MDIO),寄存器地址范圍為 0x00 - 0x1F,其中寄存器 0x00 - 0x08 為 IEEE 標準寄存器,0x09 - 0x1F 為擴展功能寄存器。寄存器按功能可分為基本控制與狀…

力扣190:顛倒二進制位

力扣190:顛倒二進制位題目思路代碼題目 顛倒給定的 32 位無符號整數number的二進制位。 思路 思路很簡單,我們只需要得到number從低位到高位的每一個二進制位再把二進制位移到顛倒的res的對應二進制位即可,例如number的最低位為1那么res的最高位即1&a…

鴻蒙NEXT交互機制解析:從輸入設備到手勢響應的全面指南

深入探索鴻蒙NEXT的交互設計,掌握下一代人機交互核心技術在智能設備無處不在的今天,一個操作系統的交互設計質量直接影響著用戶體驗。鴻蒙NEXT作為華為推出的新一代操作系統,在交互設計上帶來了許多創新和突破。本文將全面解析鴻蒙NEXT的交互…

通過IDEA寫一個服務端和一個客戶端之間的交互

服務端代碼:WebSocketConfig代碼package org.example.hufamessagedemo;import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.*;Configuration EnableWebSocket public class WebSocketConfig i…

玩客云刷機Armbian + CasaOS,輕nas系統,以及擴展

網上太多的教程,綜合了一下,自己一邊參考一邊嘗試,昨天晚上做的,感覺今天快忘了,記錄一下,少走彎路。 隨著礦潮的退去,市場上涌現出了眾多所謂的“礦渣盒子”,這些設備往往因為價格低…

【Linux】環境變量與程序地址空間詳解

前言:歡迎各位光臨本博客,這里小編帶你直接手撕Linux程序地址空間,文章并不復雜,愿諸君耐其心性,忘卻雜塵,道有所長!!!! **🔥個人主頁&#xff1a…

機器學習 - Kaggle項目實踐(8)Spooky Author Identification 作者識別

Spooky Author Identification | Kaggle Approaching (Almost) Any NLP Problem on Kaggle (參考) Spooky Author Identification | Kaggle (My work) 根據三位的一些作品訓練集,三分類測試集是哪個作家寫的概率。 …

[frontend]WebGL是啥?

對于初學者來說,通常的建議是: 不要直接從原生 WebGL 開始,而是先使用一個基于 WebGL 的高級框架或庫,最著名的就是 Three.js。 webgl是啥 three.js是啥? Three.js 封裝了 WebGL 的復雜細節,提供了更簡單、…

[光學原理與應用-400]:設計 - 深紫外皮秒脈沖激光器 - 元件 - 聲光調制器AOM

聲光調制器(Acousto-Optic Modulator, AOM)是深紫外皮秒脈沖激光器中實現脈沖主動控制、頻率穩定及光束管理的核心元件。其通過聲波與光波的彈光相互作用,在皮秒時間尺度內實現激光強度、頻率或傳播方向的精準調制。以下從工作原理、關鍵性能…

25高教社杯數模國賽【D題頂流思路+問題分析】

注:本內容由”數模加油站“ 原創出品,雖無償分享,但創作不易。歡迎參考teach,但請勿抄襲、盜賣或商用。后續都在”數模加油站“......

利用 openssl api 實現 TLS 雙向認證

1. 環境 openssl1.1.1gwget https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1g/openssl-1.1.1g.tar.gz sha256 為: ddb04774f1e32f0c49751e21b67216ac87852ceb056b75209af2443400636d46Linux 環境 2. 靜態編譯 openssl tar -zxvf openssl-1.1.1…

低代碼開發平臺技術總結

一、 核心定義 低代碼開發平臺(Low-Code Development Platform, LCDP)是一種通過圖形化界面、可視化建模、拖拽組件和模型驅動邏輯來構建應用程序的開發環境。其核心目標是顯著減少傳統手寫代碼的數量,從而降低開發門檻,提升應用交…

Web與Nginx網站服務

文章目錄前言1、Web 概念1.1 Web 的特點1.2 B/S 架構模型1.3 Web 請求與響應過程1.4 靜態資源與動態資源1.5 Web 的發展階段1.6 小結2、HTTP 與 HTTPS 協議2.1 http與https區別2.2 HTTPS 握手流程2.3 HTTP狀態碼2.3.1 HTTP 狀態碼概覽2.3.2 常用狀態碼詳解3、Nginx 概念3.1 Ngi…

【算法--鏈表】25.K個一組翻轉鏈表--通俗講解

一、題目是啥?一句話說清 給你一個鏈表,每k個節點一組進行反轉,如果最后剩余的節點不足k個,則保持原狀。需要實際交換節點,而不僅僅是改變值。 示例: 輸入:head = [1,2,3,4,5], k = 2 輸出:[2,1,4,3,5](因為每2個一組反轉,最后剩余5不足2個,保持原狀) 二、解題核…

Git指令 | 個人學習筆記

主要包含git的日常核心操作。 1.創建新倉庫 創建新文件夾&#xff0c;打開&#xff0c;然后執行。 git init2.創建一個本地倉庫的克隆版本 先cd到指定的目錄下&#xff0c;再 git clone /path/to/respository # 指定遠程分支 git clone -b <分支名> <倉庫地址> …

Apache 的安裝及基本使用

1 Apache 簡介Apache HTTP Server&#xff08;通常簡稱 “Apache”&#xff09;是世界上最流行、歷史最悠久的開源 Web 服務器軟件之一&#xff0c;由 Apache 軟件基金會&#xff08;Apache Software Foundation&#xff09;維護。它的核心功能是接收客戶端&#xff08;如瀏覽器…

五大主流大語言模型(LLM)對比

文章目錄&#x1f916; 五大主流大型語言模型&#xff08;LLM&#xff09;對比1. ChatGPT (GPT-5) - OpenAI2. Claude 4 (Sonnet & Opus) - Anthropic3. Gemini 2.5 Pro - Google DeepMind4. Grok 4 - xAI5. DeepSeek R1 - 深度求索五款模型的綜合對比表&#x1f680; 該如…