类似于自然界,熵的原理亦可应用于软件工程之中——所有实体都会随着时间的消逝而消失。一个软件项目最初可能源起于某个设计清晰、实现简单的小型原型系统。只包含基本功能的原型系统,要使它们满足上市需求,往往都要经历急速扩展的过程。这通常是为了满足客户对于新功能(有时是难解的)的突发性需求以及对原有瑕疵的改进需要。新功能的开发加上旧错误的修补会对原先清晰明了的设计造成重大破坏。随着时间的推移,设计和实现的清晰性也会随着代码维护及频繁的发布周期而不复存在。软件不可避免地变得紊乱不堪。区分软件好坏的唯~标准就是衰退率。
内存讹误(memory corruption)是紊乱软件面临的主要难题之一。已分配内存在系统内部的流通以指针传递的方式实现,因而指针会在各个模块以及线程之间来回传递。这在糟糕的软件系统中会造成两个主要问题:内存泄漏。如果一直不释放内存,这种情况就会发生。随着运行时间的推移,应用程序会因内存消耗失去控制而崩溃。过早的删除操作。当内存指针的所有权不明确时,就会发生内存释放后又被访问的情况,从而导致灾难性故障。
……