架構模型



軟體架構涉及軟體系統抽象的高階結構,透過分解和組合,結合架構風格和質量屬性。軟體架構設計必須符合系統的主要功能和效能要求,並滿足可靠性、可擴充套件性、可移植性和可用性等非功能性要求。

軟體架構必須描述其元件組、元件之間的連線、互動以及所有元件的部署配置。

軟體架構可以有多種定義方式:

  • UML(統一建模語言)——UML是軟體建模和設計中使用的一種面向物件解決方案。

  • 架構檢視模型(4+1檢視模型)——架構檢視模型表示軟體應用程式的功能和非功能需求。

  • ADL(架構描述語言)——ADL正式且語義地定義軟體架構。

UML

UML代表統一建模語言。它是一種圖形語言,用於建立軟體藍圖。UML由物件管理組織(OMG)建立。UML 1.0規範草案於1997年1月提交給OMG。它是軟體需求分析和設計文件的標準,這些文件是開發軟體的基礎。

UML可以描述為一種通用的視覺化建模語言,用於視覺化、規範、構建和記錄軟體系統。雖然UML通常用於建模軟體系統,但它並不侷限於此。它也用於建模非軟體系統,例如製造單元中的流程。

這些元素就像可以以不同方式關聯的元件,以構成完整的UML圖片,稱為。因此,理解不同的圖表以在現實系統中實施知識非常重要。我們有兩大類圖表,它們進一步細分為子類別,即結構圖行為圖

結構圖

結構圖表示系統的靜態方面。這些靜態方面表示構成主要結構並因此穩定的圖表部分。

這些靜態部分由類、介面、物件、元件和節點表示。結構圖可以細分為:

  • 類圖
  • 物件圖
  • 元件圖
  • 部署圖
  • 包圖
  • 複合結構圖

下表簡要描述了這些圖:

序號 圖&描述
1

表示系統的面向物件特性。顯示類是如何靜態相關的。

2

物件

表示一組物件及其執行時關係,也表示系統的靜態檢視。

3

元件

描述所有元件、它們之間的相互關係、互動和系統的介面。

4

複合結構圖

描述元件的內部結構,包括所有類、元件的介面等。

5

描述包的結構和組織。涵蓋包中的類以及另一個包中的包。

6

部署

部署圖是一組節點及其關係。這些節點是部署元件的物理實體。

行為圖

行為圖基本上捕獲系統的動態方面。動態方面基本上是系統的變化/移動部分。UML具有以下型別的行為圖:

  • 用例圖
  • 序列圖
  • 通訊圖
  • 狀態圖
  • 活動圖
  • 互動概述圖
  • 時間序列圖

下表簡要描述了這些圖:

序號 圖&描述
1

用例

描述功能及其內部/外部控制器之間的關係。這些控制器稱為參與者。

2

活動

描述系統中的控制流。它由活動和連結組成。流程可以是順序的、併發的或分支的。

3

狀態機/狀態圖

表示系統的事件驅動狀態變化。它基本上描述了類、介面等的改變狀態。用於視覺化系統對內部/外部因素的反應。

4

序列

視覺化系統中執行特定功能的呼叫序列。

5

互動概述

結合活動圖和序列圖,提供系統的控制流概述和業務流程。

6

通訊

與序列圖相同,只是它關注物件的角色。每次通訊都與一個序列號相關聯,加上過去的郵件。

7

時間序列

描述狀態、條件和事件中訊息的變化。

架構檢視模型

模型是對軟體架構的完整、基本和簡化的描述,它由來自特定視角或觀點的多個檢視組成。

檢視是從相關的一組關注點的角度對整個系統的表示。它用於從不同利益相關者的角度描述系統,例如終端使用者、開發人員、專案經理和測試人員。

4+1檢視模型

4+1檢視模型由Philippe Kruchten設計,用於基於多個並行檢視的使用來描述軟體密集型系統的架構。它是一個多檢視模型,用於解決系統的不同特性和關注點。它標準化了軟體設計文件,使所有利益相關者都易於理解設計。

這是一種用於研究和記錄軟體架構設計並涵蓋所有利益相關者軟體架構各個方面的架構驗證方法。它提供了四個基本檢視:

  • 邏輯檢視或概念檢視——它描述了設計的物件模型。

  • 過程檢視——它描述了系統的活動,捕獲了設計的併發和同步方面。

  • 物理檢視——它描述了軟體到硬體的對映,並反映了其分散式方面。

  • 開發檢視——它描述了軟體在其開發環境中的靜態組織或結構。

透過新增另一個稱為場景檢視用例檢視的檢視來擴充套件此檢視模型,以供軟體系統的終端使用者或客戶使用。它與其他四個檢視一致,並用於說明作為“加一”檢視的架構,即(4+1)檢視模型。下圖使用五個併發檢視(4+1)模型描述了軟體架構。

4+1 View Model

為什麼叫4+1而不是5?

用例檢視具有特殊意義,因為它詳細說明了系統的最高級別需求,而其他檢視則詳細說明了如何實現這些需求。當完成所有其他四個檢視後,它實際上是冗餘的。但是,如果沒有它,所有其他檢視都是不可能的。下圖和表格詳細顯示了4+1檢視:

邏輯 過程 開發 物理 場景
描述 顯示系統的元件(物件)及其互動 顯示系統的流程/工作流規則以及這些流程如何通訊,重點關注系統的動態檢視 提供系統的構建塊檢視,並描述系統模組的靜態組織 顯示軟體應用程式的安裝、配置和部署 透過執行驗證和說明來顯示設計已完成
檢視者/利益相關者 終端使用者、分析師和設計師 整合商和開發人員 程式設計師和軟體專案經理 系統工程師、操作員、系統管理員和系統安裝人員 所有檢視的檢視者和評估者
考慮 功能需求 非功能需求 軟體模組組織(軟體管理重用,工具約束) 關於底層硬體的非功能性需求 系統一致性和有效性
UML – 圖表 類圖、狀態圖、物件圖、序列圖、通訊圖 活動圖 元件圖、包圖 部署圖 用例圖

架構描述語言 (ADL)

ADL是一種提供定義軟體架構的語法和語義的語言。它是一種符號規範,提供用於建模軟體系統的概念架構的特性,區別於系統的實現。

ADL必須支援架構元件、它們的連線、介面和配置,這些是架構描述的構建塊。它是用於架構描述的表達形式,並提供分解元件、組合元件和定義元件介面的能力。

架構描述語言是一種形式化規範語言,它描述軟體特性,例如程序、執行緒、資料和子程式,以及硬體元件,例如處理器、裝置、匯流排和記憶體。

很難對ADL與程式語言或建模語言進行分類或區分。但是,要將一種語言歸類為ADL,需要滿足以下要求:

  • 它應該適合於向所有相關方傳達架構。

  • 它應該適合於架構建立、細化和驗證的任務。

  • 它應該為進一步的實現提供基礎,因此必須能夠向ADL規範新增資訊,以便能夠從ADL推匯出最終的系統規範。

  • 它應該能夠表示大多數常見的架構風格。

  • 它應該支援分析能力或提供快速生成的原型實現。

廣告