Posted on 2005-11-16 20:10
canonical 阅读(593)
评论(1) 编辑 收藏 所属分类:
设计理论
软件世界与真实的,物理的世界有着本质的不同,其中一点在于软件中的规则是根据需求制订的而不是先验的。我们在研究物理世界的时候,多少会有些唯物主义,
即纷繁芜杂的表象下蕴含着自恰的,不变的规律。物理学的建模是多方位的,多层次的。同一个规律,在不同的简化条件和不同的环境中我们会赋予它不同的名字。
在不同的抽象层面上,我们也可能会建立不同的模型。严格的说起来,这些模型之间可能存在着不一致性,但我们相信,存在着一个绝对精确的模型:无限的细节,
无限的关联,完美的,自恰的,而我们所建立的所有物理模型都只是对该终极模型在某个层次,某个角度上的近似抽象,而每一个模型都有着自己的适用范围。很多
时候物理学的建模是粗鲁的,抛弃了大量似乎必须的要素,只因为物理学家相信物理学的直觉能够将我们引导到正确的道路,不论我们做出什么样的简化和假设,只
要它是物理的,最终都会回归到真实的世界。
软件是人为构造出来的,其体现的运行规律由外部需求所决定,而无法形成自我的证明。领域模型(Domain
Model)隐喻式的期望能够建立稳定的逻辑层,可这注定是困难的。我们在软件设计中希望分层,职责单一,进行正交化设计。可是一个复杂系统的逻辑分解注
定是无法正交化的。非此即彼只存在于抽象的世界。多个复杂性层次上的结构交织在一起,使得我们难以建立稳定的根基。因为缺乏先验的支配规则,我们鼓吹需求
到实现的1:1映射,实际上只是希望通过贫乏的唯一性来维护演变中的自恰性。真正实现了1:1映射是不是在系统中引入了人为的刚性?
在一定的情景下,为了达到最适的模型,我们需要各种Facade,我们需要1:n映射,抑或是m:n映射。被割裂了的联系仍然需要通过各种service
在系统中重建出来。
在建筑学的隐喻中,建筑设计师与建筑工人之间还存在着一个角色:土木工程师。他在物理结构的层面上而不是应用意义上把握整体
工程。在结构层次上我们是能够进行有效的推理和判断的。在软件中也是一样,抛去对象的业务含义,我们可以把它理解为一个Map,那对它可以进行那些操作是
可以预知的。只是我们对于软件结构层面的了解还是太肤浅了。每个项目,大量的时间花费在编写那些低层的与业务无关的模块(或者说可以抽象出这些模块),这
就如同每次建筑,都从制造砖块开始一样。材料的准备不是一朝一夕之功。在结构层上我们必须对系统形成深刻的理解,这不仅仅是业务建模的问题。