Posted on 2005-11-14 15:37
canonical 閱讀(465)
評論(1) 編輯 收藏 所屬分類:
設計理論
在軟件開發中,很重要的概念就是解耦(decouple),其更加數學化的表述是正交分解。但是按照級列設計理論,元素完全獨立的一階系統只是復雜性最低的模型,或者說,當我們在信息不足的情況下識別出系統中最主要的幾個實體之后,對它們的最自然的假設就是互相獨立。隨著認識的深入,需要逐步補充元素之間的相互作用方式。這就如同Taylor級數展開,任何解析函數都可以展開為Taylor級數,而在物理世界中,一般前幾項近似就足夠了,因而才造就了如此多的線性定理。在軟件開發中,演化(evolution)逐漸成為一個重要的概念,我們也開始關心起系統設計長期的適應性,特別是隨著系統的發展,我們認識的深入,如何才能逐步引入新的結構而不破壞原先的整體架構。即我們需要能夠控制微擾(perturbation)下原有系統結構的穩定性。但是在目前的軟件世界中,連構造基本的結構都困難重重,更別說對結構穩定性的研究了。不過這是一個循序漸進的過程,遲早它會被提上議事日程。
在分解過程中,一個基本的問題是對象之間確實存在著相互作用,并不是無關的。此時常用的手法是抽提出公共接口,即對象不再兩兩依賴而是共同依賴于某種公共知識。
objectA <--> objectB ==> objectA <--> commonInterface <--> objectB
這就如同物理中場方程的處理方式,粒子不再是兩兩發生作用而是獨立的與外部平均場發生作用,而粒子之間認為是獨立的。