軟體體系結構 軟體體系結構複雜性

2021-10-21 21:23:35 字數 2766 閱讀 1896

複雜性具有不同的種類和形態,一種簡明的度量是類之間通訊路徑的數量,通訊路徑是類之間存在的持久或暫時連線。

複雜性存在四種維度的解釋:

從適應能力的角度,認知複雜性度量可以增強可理解性質量,結構複雜性可以增強可維護性和可伸縮性質量。這兩種度量是有關係的,對於低結構複雜性,認知複雜性的較小值雖然是必要不充分條件,這與修改**的需求是一致的,在修改之前首先要理解它。

計算機現代程式的可認知複雜性的最合適的度量就是空間複雜性度量,其目標是度量軟體工程師為了構造軟體的智力模型而必須在**中移動的距離,空間複雜性的度量體現出不同的特點。

空間複雜性的度量有面向過程的理論和物件導向的理論,物件導向的理論基礎很差且常常是錯誤的,而函式程式設計的空間複雜性公式則是存在的。

匯出複雜性的值應該這麼做:

計算程式中每個函式的複雜性:fc=

∑i=1

tota

l_ca

llsd

isti

fc=\sum\limits_^}

fc=i=1

∑tot

al_c

alls

​dis

ti​將這些值累加得到整個程式的複雜性:pc=

∑i=1

tota

l_fu

ncti

onsf

cipc=\sum\limits_^}

pc=i=1

∑tot

al_f

unct

ions

​fci

​上述公式的主要弱點是以**行計算距離。對於更現代的程式設計方法,**行缺少相關性,當進行分析時也缺少將程式**視覺化的方法。另外,在這種情況下,**行曲解了空間的含義。

認知複雜性關注邏輯流,結構複雜性關注程式物件間的依賴。

乙個依賴在模型元素之間定義了一種**者/客戶關係,對**者的修改可能會影響客戶模型的元素、依賴意味著沒有**者,客戶的語義是不完整的。

如果更改提供服務的物件,則有必要修改此服務的客戶物件,那麼這兩個系統物件之間就存在依賴。

如果系統中的所有依賴都被標識和理解,則說系統有適應性,即具有可理解性、可維護性、可伸縮性。適應性的乙個必要條件是依賴可追蹤,軟體工程師的任務是減少依賴。

在軟體系統中,可以根據不同粒度的物件(構件、包、類、方法)來識別依賴。位於低層次粒度上的較特殊物件的依賴會向上傳遞,在高層次粒度上產生依賴。依賴管理有必要更詳細地研究**,識別資料結構之間的所有關係以及軟體物件之間的**呼叫。

網路的每條通訊路徑一般都允許類之間進行雙向互動,其複雜性可以表示為net

我們以類的數量而不是以物件的數量來測量複雜性。程式中,是物件而不是類傳送訊息給相同類或不同類的其他物件,這對於負責移交應用程式邏輯和管理程式變數和其他資料結構的程式設計師來說又引入了另外的困難。然而,這種困難在這種情況下不重要,可以忽略。

只有兩個物件之間存在持久或瞬態連線,乙個物件才可以向另乙個物件傳送訊息。瞬態連線是在單個程式呼叫中解決的,在程式結構中直接可見,也可以不直接可見。只有在類模型中定義了連線,持久連線才存在。

複雜性控制結構的解決方案是通過將類組織成類的合併結構來減少網路結構。用這種方法,類可以很自然地形成層,強調類之間的層次體系分解,而層的內部允許類似網路的互動。

分等級的層次組織通過限制類之間潛在互動路徑的數量而降低複雜性,方法是:將類分到層中,只有同一層的內部及一層與層次體系中下面的相鄰層之間才允許直接的類互動。

令s iz

e(li

)size(l_)

size(l

i​)表示第lil_

li​層的物件數,lil_

li​為第lil_

li​層的雙親數,pj(

li)p_(l_)

pj​(li

​)為第l il_

li​層的第j

jj個雙親。

軟體體系結構 軟體體系結構概論

開學到現在我已經上了三節軟體體系結構的課程,現在我想把自己學到的整理歸納一下。此篇隨筆對應於教材軟體體系結構概論一章。首先談一談我剛接觸這門課程是的感受。那就是 我靠 軟體也會有體系結構?以前只學過資料結構 演算法 基本的程式語言,覺得程式設計無非就是使用者給我需求,我便按照需求來程式設計序就好,從...

軟體體系結構

軟體體系結構是具有一定形式的結構化元素,即構件的集合,包括處理構件 資料構建 連線構建。處理構建 負責對資料進行加工 資料構建 是被加工的資訊 連線構建 把體系結構的不同部分組合連線起來 1 作為通訊的手段 2 代表了早期的設計決策結果 3 高層次的設計復用手段 1 軟體體系結構是風險承擔者 又稱涉...

軟體體系結構風格

軟體體系結構 software architecture,sa 定義 元件 各種基本的軟體構造模組 函式 物件 模式等 連線件 將它們組合起來形成完整的軟體系統 物理分布 軟體系統拓撲結構 約束 限制條件 效能 軟體質量 元件 廣義上講,元件是具有某種功能的可復用的軟體結構單元,是為組裝服務的,是組...