Posted on 2005-11-14 15:37
canonical 阅读(463)
评论(1) 编辑 收藏 所属分类:
设计理论
在软件开发中,很重要的概念就是解耦(decouple),其更加数学化的表述是正交分解。但是按照级列设计理论,元素完全独立的一阶系统只是复杂性最低的模型,或者说,当我们在信息不足的情况下识别出系统中最主要的几个实体之后,对它们的最自然的假设就是互相独立。随着认识的深入,需要逐步补充元素之间的相互作用方式。这就如同Taylor级数展开,任何解析函数都可以展开为Taylor级数,而在物理世界中,一般前几项近似就足够了,因而才造就了如此多的线性定理。在软件开发中,演化(evolution)逐渐成为一个重要的概念,我们也开始关心起系统设计长期的适应性,特别是随着系统的发展,我们认识的深入,如何才能逐步引入新的结构而不破坏原先的整体架构。即我们需要能够控制微扰(perturbation)下原有系统结构的稳定性。但是在目前的软件世界中,连构造基本的结构都困难重重,更别说对结构稳定性的研究了。不过这是一个循序渐进的过程,迟早它会被提上议事日程。
在分解过程中,一个基本的问题是对象之间确实存在着相互作用,并不是无关的。此时常用的手法是抽提出公共接口,即对象不再两两依赖而是共同依赖于某种公共知识。
objectA <--> objectB ==> objectA <--> commonInterface <--> objectB
这就如同物理中场方程的处理方式,粒子不再是两两发生作用而是独立的与外部平均场发生作用,而粒子之间认为是独立的。