軟體架構

軟體架構是有關軟體整體結構與元件的抽象描述,用於指導大型軟體系統各個方面的設計。


軟體開發
軟體開發步驟
需求分析 | 軟體架構 | 軟體設計 | 軟體編程 | 軟體測試 | 偵錯 | 軟體部署英語Software deployment | 軟體維護
軟體開發模式
敏捷開發 | 無塵室 | 疊代式開發 | RAD | 統一過程 | 螺旋模型 | 瀑布模型 | 極限編程 | Scrum | 看板 | DevOps
軟體開發輔助領域
配置管理 | 文件編寫 | 軟體品質管理英語Software quality assurance | 專案管理 | 使用者經驗設計 | 自動構建
軟體開發工具
編譯器 | 除錯器 | 效能分析 | 整合式開發環境 | 文字編輯器 | 版本控制系統

介紹

軟體體系結構是構建電腦軟體實踐的基礎。與建築師設定建築專案的設計原則和目標,作為繪圖員畫圖的基礎一樣,軟體架構師英語Software architect或者系統架構師陳述軟體架構以作為滿足不同客戶需求的實際系統設計方案的基礎。從和目的、主題、材料和結構的聯繫上來說,軟體架構可以和建築物的架構相比擬。一個軟體架構師需要有廣泛的軟體理論知識和相應的經驗來實施和管理軟體產品的高階設計。軟體架構師定義和設計軟體的模組化,模組之間的互動,使用者介面風格,對外介面方法,創新的設計特性,以及高層事物的物件操作、邏輯和流程。

軟體架構師與客戶商談概念上的事情,與經理商談廣泛的設計問題,與軟體工程師商談創新的結構特性,與程式設計師商談實現技巧,外觀和風格。

軟體架構是一個系統的草圖。軟體架構描述的物件是直接構成系統的抽象元件。各個元件之間的連線則明確和相對細緻地描述元件之間的通訊。在實現階段,這些抽象元件被細化為實際的元件,比如具體某個類或者物件。在物件導向領域中,元件之間的連線通常用介面來實現。

歷史

早在1960年代,諸如艾茲格·迪傑斯特拉就已經涉及軟體架構這個概念了。自1990年代以來,部分由於在Rational Software Corporation英語Rational Software和Microsoft內部的相關活動,軟體架構這個概念開始越來越流行起來。

卡內基梅隆大學和加州大學埃爾文分校在這個領域作了很多研究。卡內基·梅隆大學的Mary Shaw和David Garlan於1996年寫了一本叫做Software Architecture perspective on an emerging discipline的書,提出了軟體架構中的很多概念,例如軟體元件、連結器、風格等等。加州大學埃爾文分校的軟體研究院所做的工作則主要集中於架構風格、架構描述語言以及動態架構。

架構描述語言

架構描述語言(ADL)用於描述軟體的體系架構。現在已有多種架構描述語言,如Wright(由卡內基梅隆大學開發),Acme(由卡內基梅隆大學開發),C2(由UCI開發),Darwin(由倫敦帝國學院開發)。ADL的基本構成包括元件、連結器和配置。

視圖

軟體架構一般來說組織成視圖,如同在建築學中的不同種類的藍圖。一些可能的視圖有:

  • 功能/邏輯視圖
  • 代碼視圖
  • 開發/結構視圖
  • 並列/過程/執行緒視圖
  • 物理/部署視圖
  • 用戶動作/反饋視圖

有許多為描述軟體架構的語言被開發出來,但是關於應該採用什麼樣的符號集和視圖系統還沒有達成共識。一些人相信UML將建立一套軟體架構視圖的標準。

例子

設計軟體模組以及模組之間的通訊有很多常用手段,包括

  • 用戶端伺服器
  • 分散式計算
  • 對等系統
  • 黑板
  • 隱式呼叫
  • 外掛模組
  • 單層系統
  • 三層結構
  • 結構化(基於模組,但在模組內部是一體的)
  • 基於軟體構件(基於模組,在模組內部,通常採用物件導向程式設計方法,slightly less monolithic)
  • 面向服務的體系架構

相關的概念

在軟體架構中,使用了很多概念,包括:

  • 軟體設計模式
  • 反模式
  • 標準資料模型

參見

參考文獻

  • Len Bass, Paul Clements, Rick Kazman: Software Architecture in Practice. Addison Wesley, Reading 1998 ISBN 0-201-19930-0(gives a good overview of architectural concepts)
  • Philippe Kruchten: Architectural Blueprints - the 4+1 View Model of Software Architecture. In: IEEE Software. 12 (6) November 1995, pp. 42-50 (also available online at the Rational website(PDF))
  • James O. Coplien: Multi-Paradigm Design in C++. Addison Wesley, Reading 1998 ISBN 0-201-82467-1(outlines all reasonable design approaches possible in C++, which is a particularly rich language but difficult for beginners)

外部連結