连载12:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...
信息熵觀點?
針對軟件設計來說,我們可以將所有的設計通過結構化來表達,于是我們的所有的設計信息都可以表達成結構熵的處理。那么如果系統的結構熵越大,系統就越不穩定,系統的有序化就越小。
那么是否結構化就表示了系統的有序狀態?我們可以通過熵的定義來論證此是否為一個正確的事實。
香農用信息熵的概念來描述信源的不確定度。其表明任何信息都存在冗余,冗余大小與信息中每個符號(數字、字母或單詞)的出現概率或者說不確定性有關。
對于一個軟件設計的過程,我們將之看成是從需求開始到完成一個實現的過程。在這個過程中,系統將完成一個什么樣的結構是不確定的,是按照一個出現概率來呈現的,就如同通信中信源發送出來后,我們無法確定此信號的確切值,只能將之看成為一個隨機的過程。同樣軟件的設計過程也是一個隨機的過程,采用什么樣的方式進行設計我們是無法預先確定的。
如果我們采用機器碼的方式來進行表達,那么其需求和實現可能存在相應的對應關系。此時輸出的實現結果確定,其信息熵在這個過程中減少,轉化為信息量,這種實現使需求從不穩定狀態躍遷到相對穩定的狀態,此表達的信息就是有價值的信息。
但是,此時雖然信息熵已經減少,但是依然還存在一些不確定性,也就是還存在可以進一步消除的信息熵,這樣的信息熵主要體現在機器碼的方式僅適應于某固定的硬件環境,而還不存在更加抽象的結構,于是我們就需要采用各種“置換”的方式,將系統進一步進行結構化(注意此處所描述的結構化是一個泛指,不是狹義上的類、數組、鏈表、樹、圖等),此時的結構化過程就需要使用更多的抽象化的過程,也就是我們這里談到的“置換”過程。通過這樣的過程以后,其結構化的確定性增加,其在軟件體系中更加適宜不同的軟硬件環境,于是系統更加具有有序的特點,也就是一個負熵增加的過程。
概率矢量p?= (p1,p2,…,pn)中,各分量的次序任意改變,熵不變,
即???H(p1,p2,…,pn) =?H(p2,p3,…,pn,?p1) =?…?=?H(pn,p1,…,pn-1)
所以,這里需要注意的是,信息熵是一個從平均意義上表征總體特征的一個量,所以信息熵不是指某部分微觀的確定量,所以熵僅與信源的總體特征相關,而與隨機變量的取值無關,在軟件設計的過程中,局部的結構的最優化過程并不代表整體的熵的減少,例如在多線程設計過程中,針對一個數據我們可以設計為在不同的線程競爭獲取,這個數據的抽象和獨立針對數據來說,是進行了封裝和獨立,在局部可能是最優的,但是如果涉及到多線程的互斥和同步,其實在整體上,反而沒有減少熵值,也可能增加了熵值,如果我們采用不同線程中進行數據的復制后使用的策略,此時數據量增加(熵值的大小和數據量并不是直接的單調遞增或遞減函數關系),那么這些線程之間的耦合度可能就減少了,同時其線程之間的獨立性增加,其不確定可能降低,整體的熵值反而可能減少。
我們采用什么樣的設計方法,都可能存在相對熵值,因為我們需要通過一定的冗余來表達一些可能存在傳遞錯誤的設計思路和算法。當然,如果能夠接近于客觀的標準熵值,那么就表示我們的設計具有更少的不確定性。這對于進行更準確的設計帶來非常大的優勢。
當然軟件設計中p函數和q函數很難進行量化,同時也沒有必要進行量化,至少在軟件設計這樣的工程領域里面,我們可以具有一個能夠比較的結果則就能夠合理的應用于工程之中。
我們可以將系統中的結構熵通過層次進行劃分,例如針對一個類結構其包含的熵,我們可以通過內部的成員進行組合。所以結構熵其實是存在層次劃分,但是我們可以使用某一個層次來進行相應的設計。
然而,目前針對“熵”和“信息熵”還存在很多的爭議,其主要是因為這兩種定義存在更多模糊的,不太準確的實驗數據的支撐。對于熱力學中的“熵”表示的一個狀態的態函數,為了描述其具有不斷增加熵值,最后達到最大熵值下的無序狀態。而對于信息熵來說,則表達傳送過程中的概率轉移,通過多大的概率來形成最終的結果,所以其實存在很大的差異,目前還沒有一個準確的認識。同時迄今為止還沒有嚴格證明內能在不同能力級上的分布概率和分子體系中區域分布概率是等價的關系,同時我們針對信息熵中將概率傳遞和熵的狀態保存的態函數是否能夠有效的適應具有人來參與的軟件設計聯系在一起,等等這些都需要我們更進一步的去偽存真。
轉載于:https://blog.51cto.com/13832308/2132755
總結
以上是生活随笔為你收集整理的连载12:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eBay测试老兵的修炼之道:如何从测试“
- 下一篇: 2018“硅谷技划”随笔(一):再论中美