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