閱讀筆記13

什麼是軟件架構

1、軟件架構的定義 

所謂軟件架構,指的是軟件系統的總體結構,包括軟件子元素,這些元素的外部屬性以及元素元素之間的關係安全

1.軟件架構是對系統的抽象

它不只規定了系統有哪些主要軟件元素或模塊,還定義了這些元素之間是如何交互的。它並不暴露每一個元素的內部屬性(也叫局部信息),也就是說每一個子模塊的私有信息是不劃歸到軟件架構的範疇的。須要注意的是,每一個元素的外部屬性依然是軟件架構的一部分。這裏所謂的外部屬性,指的是一個元素對其餘元素所承擔的責任實體,包括:提供的服務,所需的服務,性能特徵,錯誤處理以及資源的使用。架構

2.軟件元素(通常分爲組件,鏈接器和數據三種

組件:是軟件指令和內部狀態的一個抽象單元,經過其接口提供對於數據的轉換。框架

鏈接器:是對於組件之間的通信、協調或者合做進行仲裁的一種機制。性能

數據:是組件經過一個鏈接器接收或發送的信息元素。學習

數據的例子包括字節序列,消息,編碼的參數以及過序列化過的對象,但不包括那些永久駐留或組件的私有信息。鏈接器的例子包括RPC遠程過程調用、消息傳遞協議和數據流等。  編碼

3.每一個軟件系統都有一個架構

每一個系統都是由一個或多個元素組成,而且這些元素之間都存在必定的關係。只有一個元素的系統是最簡單的一種狀況。spa

4.系統可能有多個視圖。

從不一樣的角度,系統可能得到不一樣的結構表示圖。單單其中一個視圖沒法表明軟件架構。軟件架構是全部這些視圖的總和。在通常狀況下,你能夠選擇其中一個或幾個結構視圖用以對軟件系統進行分析,理解或團隊間溝通。插件

2、軟件架構的做用

1.做爲溝通媒介

軟件架構勾畫了一個公用的框圖,可供不一樣的人蔘閱,學習和理解。這使得咱們對軟件系統的理解和溝通更爲順暢,具體體現爲:設計

1)與用戶討論和協商軟件需求;對象

2)讓客戶及時瞭解咱們的軟件開發進展及大體成本;

3)對實施管理層的決定和人力調配起到必定幫助做用。

2.對代碼實現作出必定的限制

一方面,軟件架構對具體的軟件的實現是描述性的,但另外一方面,它對軟件實現也是有限制性做用的。描述性能夠幫助團隊更好的理解軟件系統,限制性能夠對軟件的設計和編碼作出必定的限制。系統性的資源分配決定對子元素的實現也起到必定的限制做用。軟件架構必須作出系統性的取捨和權衡(trade-off).

3.對項目的開發和進展起到綱領性做用

1)能夠幫助管理者在團隊內部如何劃分任務,確保每一個團隊成員明確本身的職責;

2)能夠幫助管理者作人力和其餘開發成本預算。

3)能夠幫助組織開發文檔。

4)能夠對軟件的集成起到幫助做用;

4.定義了軟件系統的質量屬性。

包括但不限於:安全性、可擴展性、可修改性、可重用性、性能等

5.管理和應對變化

軟件架構把變化歸爲三類:

1)局部性變化。如,修改單個子元素或組件;

2)大範圍變化。如,多個組件須要被修改;

3)架構性變化。如修改整個系統拓撲視圖,修改組件之間的通訊模式或變動元素間的協調機制。

一個好的軟件架構,必定是在改動最少的狀況下,可以很好的自適應各類變化。

6.做爲漸增和迭代開發的基礎

1)如建築領域同樣,軟件架構應充當一個框架的做用。咱們能夠往框架填充軟件組件。也就是說,軟件元素是能夠做爲插件集成到系統裏的;

2)經過把某些軟件功能劃分到某個或某幾個軟件元素,咱們能夠分而治之,各個擊破;

3)能夠提早經過架構分析出哪些軟件元素可能對項目的成功存在風險,進而對資源分配進行調整。

7.是一個可重用的模型

某個軟件產品線,通常只有一個軟件架構。但一個軟件架構不該該只能適用於某個系統,它應該是一個模型,能夠爲多個系統和多種系統服務。軟件設計者和開發者能夠重用這些模型,受益於該模型,並將它運用到其餘軟件產品線。

相關文章
相關標籤/搜索