連載12:軟件體系設計新方向:數學抽象、設計模式、系統架構與方案設計(簡化版)(袁曉河著)

信息熵觀點 

針對軟件設計來說,我們可以將所有的設計通過結構化來表達,於是我們的所有的設計信息都可以表達成結構熵的處理。那麼如果系統的結構熵越大,系統就越不穩定,系統的有序化就越小。

那麼是否結構化就表示了系統的有序狀態?我們可以通過熵的定義來論證此是否爲一個正確的事實。

香農用信息熵的概念來描述信源的不確定度。其表明任何信息都存在冗餘,冗餘大小與信息中每個符號(數字、字母或單詞)的出現概率或者說不確定性有關。

對於一個軟件設計的過程,我們將之看成是從需求開始到完成一個實現的過程。在這個過程中,系統將完成一個什麼樣的結構是不確定的,是按照一個出現概率來呈現的,就如同通信中信源發送出來後,我們無法確定此信號的確切值,只能將之看成爲一個隨機的過程。同樣軟件的設計過程也是一個隨機的過程,採用什麼樣的方式進行設計我們是無法預先確定的。

如果我們採用機器碼的方式來進行表達,那麼其需求和實現可能存在相應的對應關係。此時輸出的實現結果確定,其信息熵在這個過程中減少,轉化爲信息量,這種實現使需求從不穩定狀態躍遷到相對穩定的狀態,此表達的信息就是有價值的信息。

但是,此時雖然信息熵已經減少,但是依然還存在一些不確定性,也就是還存在可以進一步消除的信息熵,這樣的信息熵主要體現在機器碼的方式僅適應於某固定的硬件環境,而還不存在更加抽象的結構,於是我們就需要採用各種“置換”的方式,將系統進一步進行結構化(注意此處所描述的結構化是一個泛指,不是狹義上的類、數組、鏈表、樹、圖等),此時的結構化過程就需要使用更多的抽象化的過程,也就是我們這裏談到的“置換”過程。通過這樣的過程以後,其結構化的確定性增加,其在軟件體系中更加適宜不同的軟硬件環境,於是系統更加具有有序的特點,也就是一個負熵增加的過程。

概率矢量p = (p1,p2,,pn),各分量的次序任意改變,熵不變,

  H(p1,p2,,pn) = H(p2,p3,,pn, p1) = = H(pn,p1,,pn-1)

所以,這裏需要注意的是,信息熵是一個從平均意義上表徵總體特徵的一個量,所以信息熵不是指某部分微觀的確定量,所以熵僅與信源的總體特徵相關,而與隨機變量的取值無關,在軟件設計的過程中,局部的結構的最優化過程並不代表整體的熵的減少,例如在多線程設計過程中,針對一個數據我們可以設計爲在不同的線程競爭獲取,這個數據的抽象和獨立針對數據來說,是進行了封裝和獨立,在局部可能是最優的,但是如果涉及到多線程的互斥和同步,其實在整體上,反而沒有減少熵值,也可能增加了熵值,如果我們採用不同線程中進行數據的複製後使用的策略,此時數據量增加(熵值的大小和數據量並不是直接的單調遞增或遞減函數關係),那麼這些線程之間的耦合度可能就減少了,同時其線程之間的獨立性增加,其不確定可能降低,整體的熵值反而可能減少。

我們採用什麼樣的設計方法,都可能存在相對熵值,因爲我們需要通過一定的冗餘來表達一些可能存在傳遞錯誤的設計思路和算法。當然,如果能夠接近於客觀的標準熵值,那麼就表示我們的設計具有更少的不確定性。這對於進行更準確的設計帶來非常大的優勢。

當然軟件設計中p函數和q函數很難進行量化,同時也沒有必要進行量化,至少在軟件設計這樣的工程領域裏面,我們可以具有一個能夠比較的結果則就能夠合理的應用於工程之中。

我們可以將系統中的結構熵通過層次進行劃分,例如針對一個類結構其包含的熵,我們可以通過內部的成員進行組合。所以結構熵其實是存在層次劃分,但是我們可以使用某一個層次來進行相應的設計。

然而,目前針對“熵”和“信息熵”還存在很多的爭議,其主要是因爲這兩種定義存在更多模糊的,不太準確的實驗數據的支撐。對於熱力學中的“熵”表示的一個狀態的態函數,爲了描述其具有不斷增加熵值,最後達到最大熵值下的無序狀態。而對於信息熵來說,則表達傳送過程中的概率轉移,通過多大的概率來形成最終的結果,所以其實存在很大的差異,目前還沒有一個準確的認識。同時迄今爲止還沒有嚴格證明內能在不同能力級上的分佈概率和分子體系中區域分佈概率是等價的關係,同時我們針對信息熵中將概率傳遞和熵的狀態保存的態函數是否能夠有效的適應具有人來參與的軟件設計聯繫在一起,等等這些都需要我們更進一步的去僞存真。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章