Posted on 2005-11-22 17:59
canonical 閱讀(662)
評論(2) 編輯 收藏 所屬分類:
設計理論
經濟學的核心概念是合同(contract),多個利益主體(具有不同的價值目標)在交互中達成一致協議。這本質上是個多目標優化的問題。這與物理學的精
神是有著本質區別的。物理學傳統上認為世界是完美的,存在著唯一的真理。根據Lagrange原理,最低能量原理等,物理世界總是在眾多可比的備選結構中
選擇那唯一最優的結果。在經濟學中不存在唯一的價值取向,并不是所有的事物之間都是能夠進行比較并排出座次的。比如,我們大多數人會認為10個老婆餅比一
個老婆餅好,10個蔥油餅比一個蔥油餅好,10個老婆餅加10個蔥油餅比一個老婆餅加一個蔥油餅好,但是10個老婆餅和10個蔥油餅之間如何比較,卻是沒
有確定的結果的。數學上,我們說可以建立偏序(partial
order)但無法建立全序。因為多個利益主體對同一事物的評價是不可比的(不同的),因而可以產生交換.交換是一個互惠互利的過程.
A交出了部分老婆餅換來了蔥油餅,因為A覺得自己的老婆餅很多,還是蔥油餅更有吸引力一些,而同樣B認為自己的蔥油餅很多,他寧肯再要一些老婆餅.
通過一番討價還價的交互過程,我們可以達到所謂的Pareto有效(optimal):
在最終的優化配置中,沒有人能夠在不使別人受損的情況下使自己得益. 即繼續交換下去,A或B中的一個就會覺得不值得了.
注意到經濟學的這種雙贏性質與軍事學和權謀術也是不同的,權謀講求爭鋒相對, 損人即利己, 進攻是最好的防守等等.
多目標優化,意味著我們在一族矢量中尋找最優的一個,盡管在每個維度上我們都能很容易的作出比較和判斷,但綜合起來卻需要反復的權衡。在凸分析
(Convex Analysis)中標量化(Scalarization)是尋找Pareto有效點的常用方法. 即定義一個價格矢量,
優化時考慮總體價格. 價格的存在意味著市場的存在,
意味著我們在考慮優化問題的時候,可以只考慮自身與市場的交互,而不用考慮眾多其它利益主體的存在(類似于物理中的場方程).
理論上可以證明,在均衡價格處可以實現Pareto最優。
說了這么多經濟學,它和軟件有什么關系呢。稍微留意一下就會發現,現在軟件中越來越強調合同和涉眾(stakeholder)利益了(參考use
case)。早期,面向過程編程時,系統的目標比較單一:滿足當前系統功能需求。基本上系統中的每一個函數在編寫的時候都服從于一個目標,即當前系統的運
行。在編制的時候多半都想著向著最終的目標邁進,系統的各個部分之間是精確(detailed)匹配的。(想想VB的代碼吧)。采用面向對象的思想方法之
后,系統中出現了多個利益的實體,它們定義并保護著自身的利益。系統的目標不再是完成功能,而是實現用戶價值,穩定運行,便于維護等多重價值目標。在面向
對象以后,我們經常會發現,最終我們實現的功能點會多于面向過程開發的時候。很多對象函數在當前系統中最終并沒有調用,但考慮到重用性和完備性等,我們還
是編寫了相應的代碼。很多商用組件對象的功能集更是大得驚人,我們永遠只是用到其中的一小部分。系統的架構便是由對象之間相互協作并相互競爭支撐起來的.
在面向對象設計中, 我們說對象對外暴露的接口是與外部世界達成的contract, 而接口函數則反映了一次交互過程.有時我們采用如下方法,
讓調用雙方都能平等的獲得處理機會.
class A{
void someFunc(B b){
b.someFunc();
}
}
XP敏捷編程強調快速迭代, 但絕不意味著不進行架構設計. 按照級列設計理論, 復雜性是分級的,
我們要采用滿足當前需求的最簡單的設計,而不是絕對意義上的最簡單的設計. 而且簡單與完備性還是兩回事,雖然簡單,但是功能仍然要是完備的.
這是個架構性問題. 迭代是個逐步精化的過程,而很少是格式塔式的革命. 在XP中我們應該更加強調architecture centric.
重構是不影響系統外部特征的情況下,對系統內部結構的修改.
但我們現在要從結構A走向結構B,重構的路徑到底在哪里。推翻了重新寫并不是重構。雖然XP強調當前,不要過多考慮未來,但這只是個重點問題,并不意味著
不考慮未來,我們需要為復雜性的方向性發展保留出一定的通道。實際上重構的過程中,架構本身對應的概念是基本不變的,只是結構在調整,在細化。如果你大腦
癡呆,先天遺傳不利,無論怎么重構知識結構大概也難以避免被淘汰的命運.
重構也會陷入Pareto最優點,因為一些對象作為即得利益者,讓它放棄自己的功能集并不是那么容易的事情。它會爭辯說,我和XX建立了關聯,基于我的
YY功能,ZZ已經作了大量開發而且已經發布出去。。。
目前軟件設計中沒有"市場"的概念, 在權衡系統功能歸屬的時候,我們只能兩兩進行: 這個功能放在對象A里好呢還是放在B里好呢. 是一個相當費力的過程.
最后,再為物理學說句話。表面上看起來,物理學是由最優化原理支配的,但它還要受到所謂對稱性的制約。很多時候當我們面臨兩難選擇的時候,對稱性會幫助我
們作出選擇。對稱性(根據Nother定理,守恒律也是對稱性的一種)維護了物理學內部的結構張力。