您的位置:首页 > 运维架构 > 网站架构

连载12:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)

2018-06-26 09:55 357 查看

信息熵观点 

针对软件设计来说,我们可以将所有的设计通过结构化来表达,于是我们的所有的设计信息都可以表达成结构熵的处理。那么如果系统的结构熵越大,系统就越不稳定,系统的有序化就越小。

那么是否结构化就表示了系统的有序状态?我们可以通过熵的定义来论证此是否为一个正确的事实。

香农用信息熵的概念来描述信源的不确定度。其表明任何信息都存在冗余,冗余大小与信息中每个符号(数字、字母或单词)的出现概率或者说不确定性有关。

对于一个软件设计的过程,我们将之看成是从需求开始到完成一个实现的过程。在这个过程中,系统将完成一个什么样的结构是不确定的,是按照一个出现概率来呈现的,就如同通信中信源发送出来后,我们无法确定此信号的确切值,只能将之看成为一个随机的过程。同样软件的设计过程也是一个随机的过程,采用什么样的方式进行设计我们是无法预先确定的。

如果我们采用机器码的方式来进行表达,那么其需求和实现可能存在相应的对应关系。此时输出的实现结果确定,其信息熵在这个过程中减少,转化为信息量,这种实现使需求从不稳定状态跃迁到相对稳定的状态,此表达的信息就是有价值的信息。

但是,此时虽然信息熵已经减少,但是依然还存在一些不确定性,也就是还存在可以进一步消除的信息熵,这样的信息熵主要体现在机器码的方式仅适应于某固定的硬件环境,而还不存在更加抽象的结构,于是我们就需要采用各种“置换”的方式,将系统进一步进行结构化(注意此处所描述的结构化是一个泛指,不是狭义上的类、数组、链表、树、图等),此时的结构化过程就需要使用更多的抽象化的过程,也就是我们这里谈到的“置换”过程。通过这样的过程以后,其结构化的确定性增加,其在软件体系中更加适宜不同的软硬件环境,于是系统更加具有有序的特点,也就是一个负熵增加的过程。

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

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

所以,这里需要注意的是,信息熵是一个从平均意义上表征总体特征的一个量,所以信息熵不是指某部分微观的确定量,所以熵仅与信源的总体特征相关,而与随机变量的取值无关,在软件设计的过程中,局部的结构的最优化过程并不代表整体的熵的减少,例如在多线程设计过程中,针对一个数据我们可以设计为在不同的线程竞争获取,这个数据的抽象和独立针对数据来说,是进行了封装和独立,在局部可能是最优的,但是如果涉及到多线程的互斥和同步,其实在整体上,反而没有减少熵值,也可能增加了熵值,如果我们采用不同线程中进行数据的复制后使用的策略,此时数据量增加(熵值的大小和数据量并不是直接的单调递增或递减函数关系),那么这些线程之间的耦合度可能就减少了,同时其线程之间的独立性增加,其不确定可能降低,整体的熵值反而可能减少。

我们采用什么样的设计方法,都可能存在相对熵值,因为我们需要通过一定的冗余来表达一些可能存在传递错误的设计思路和算法。当然,如果能够接近于客观的标准熵值,那么就表示我们的设计具有更少的不确定性。这对于进行更准确的设计带来非常大的优势。

当然软件设计中p函数和q函数很难进行量化,同时也没有必要进行量化,至少在软件设计这样的工程领域里面,我们可以具有一个能够比较的结果则就能够合理的应用于工程之中。

我们可以将系统中的结构熵通过层次进行划分,例如针对一个类结构其包含的熵,我们可以通过内部的成员进行组合。所以结构熵其实是存在层次划分,但是我们可以使用某一个层次来进行相应的设计。

然而,目前针对“熵”和“信息熵”还存在很多的争议,其主要是因为这两种定义存在更多模糊的,不太准确的实验数据的支撑。对于热力学中的“熵”表示的一个状态的态函数,为了描述其具有不断增加熵值,最后达到最大熵值下的无序状态。而对于信息熵来说,则表达传送过程中的概率转移,通过多大的概率来形成最终的结果,所以其实存在很大的差异,目前还没有一个准确的认识。同时迄今为止还没有严格证明内能在不同能力级上的分布概率和分子体系中区域分布概率是等价的关系,同时我们针对信息熵中将概率传递和熵的状态保存的态函数是否能够有效的适应具有人来参与的软件设计联系在一起,等等这些都需要我们更进一步的去伪存真。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐