【軟體體系結構】軟體體系結構概述
軟體體系結構概述
文章目錄
軟體體系結構學習第一篇,軟體體系結構概述。
1.軟體體系結構的意義
架構的意義在於充當需求和實現之間的橋樑。更準確來說,整個架構設計在軟體生命週期的體現在於概要設計和部分詳細設計,上承需求分析,下接程式碼實現。所以一個軟體架構師不僅需要懂得需求分析,而且還需要有經年累積的開發經驗。
2.軟體體系結構的定義
軟體體系結構沒有一個公認的定義,簡單來說,**軟體體系結構就是充當需求(Requirements)和實現(Implements)之間的橋樑。**正如David Garlan & Dewane Perry 提出的
… bridging the gap between requirements and implementations…
除此外,還需要掌握的是軟體體系結構概念的提出者Mary Shaw和David Garlan所闡述的定義:軟體體系結構包括構成系統的設計元素的描述,設計元素的互動,設計元素組合的模式,以及在這些模式中的約束。
總的來說,綜合其他的定義,可以得出如下公式,軟體體系結構 = 構件(Component)+連線件(Connector)+約束(Constraint).
-
構件
構件是可預製和可重用的軟體部件,是組成體系結構的基本計算單元或資料儲存單元.它可大可小,即可小到一個函式,又可大到一個子系統。構件應當滿足SRP原則,即單一職責原則。
-
連線件
構件是可預製和可重用的軟體部件,是組成體系結構的基本計算單元或資料儲存單元.它可大可小,比如共享變數的訪問中共享變數就是一個連線件。而在現實世界的網路中,通訊協議就充當了連線件。
-
約束
約束闡明瞭構件和連線件之間的關係。
舉例說明:
e.g1
e.g2
資料庫表可當做是構件,表的外來鍵可當做是表與表之間的連線件,而表的約束條件就充當約束。
3.軟體體系結構的發展
太早以前的略過,本節瞭解即可。2000年至今的新架構風格:C/S架構,B/S架構,基於代理的架構,SOA(面向服務的架構)。
開發架構的很重要的兩個點是可維護性和可複用性,很多面向物件設計原則都是為了這兩個點服務。
4.軟體體系結構的優勢
軟體體系結構的優勢如下:
-
容易理解
高層抽象,遮蔽細節,以圖展示,直觀易懂。
-
重用
比如構件的重用,避免重複造輪子。
-
控制成本
根據功能點,或是功能難度(比如登入註冊和資料探勘的區別)來預估成本。
-
可分析性
從不同角度去看待系統,比如銀行系統更注重安全性,社交軟體更注重及時性等等。
5.總結
這篇其實主要記住如下幾點:
- 軟體體系結構是需求與實現的橋樑,主要由3C構成(Component,Connector,Constraint),並用兩個案例Java單繼承,資料庫表的約束來輔助理解和記憶。
- 軟體體系架構現在的New Wave是 C/S,B/S,基於代理的架構,SOA。不管怎麼發展,軟體架構都會注意兩個點,可複用性和可維護性。
- 軟體架構的優勢說白了就是好理解,好賺錢。好理解就是使得系統更容易理解,更容易從不同角度去分析。好賺錢就是重用和控制成本,重用可以縮短開發時間,控制成本可以節省開支預算。