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