|
Posted on 2007-12-08 02:58 canonical 閱讀(1514) 評論(0) 編輯 收藏 所屬分類: 軟件開發
現在講軟件工程的, 所談論的多半是項目工程,
即如何在有限的時間內配置使用有限的資源在單個項目中達到既定的目標. 傳統上, 在這一領域基于預測和計劃的瀑布方法曾經占據主流,
但是隨著項目的日益復雜化, 各種基于演化(evolution)思想的工程方法在實證中逐漸發展起來. 在時空跨度更大的軟件工程領域,
例如延展到軟件的不同版本以及多個相似項目的工程中, 演化更是逐漸取得了無可置疑的主導地位. 但是, 從另一個方面說,
目前所有這些軟件工程方法所推崇的演化實際上都是非常有限的, 它們通過迭代(iteration)所能夠描述的演化過程都只是片斷性的,
例如一個項目中的演化, 一個軟件產品的演化, 最大的莫過于一整條軟件產品線的演化. 所有這些演化過程都面臨著一個天然的屏障:
商業公司.在公司內部, 知識或代碼可以由開發人員攜帶到下一個項目, 或者從一個小組傳播到另外一個小組, 在新的基礎上繼續演化的進程.
但是核心的知識或者代碼一般只能通過商業交易傳達到其他公司, 這是一條非常受限制的途徑. 而一個單個公司所開發的軟件包, 即使是平臺級的產品,
如果只是內部使用, 受限于該公司所從事的業務領域, 其所面臨的使用檢驗也是非常有限的. 而且出于經濟上的原因,
單個公司往往無力支撐多個實現同樣功能的解決方案, 因而它傾向于消滅軟件中的多樣性, 這有可能會進一步限制演化的進程.
開源(OpenSource)軟件為軟件演化創造了新的可能性.商業友好的開源軟件可以被不同的公司自由的運用于不同的業務,
因而可以參與到不同的局部演化過程中. 在應用的過程中, 開源軟件面臨著巨大的重構壓力(這往往是超越了應用最廣泛的封閉源碼軟件包的),
有可能保持更快的演化速度. 而通過對開源軟件的回饋, 對開源軟件的改進可以傳播到時空范圍跨度巨大的軟件開發過程中. 而且基于源碼的開放性,
開發人員的知識交流也隨之開放起來. 類比于Darwin進化論, 我們可以說開源驅動了整個軟件業界的共同進化(co-evolution).
多年前, Eric Raymond在著名的文章"大教堂和市集"中 http://263.aka.org.cn/Docs/c&b.html,
提出了開源的工程價值, 但其所關注的重點仍然只是單個軟件如何在開源的模式下演化, 從今天的觀點看來, 這篇戰斗檄文已經顯得有些局促了.
開源所造就的巨大演化空間遠遠超越了軟件工程所能夠提供的. 開源軟件現在已經在商業開發領域站穩了腳跟,也漸漸超越了單個公司能夠控制的范圍.
可以說開源軟件的發展是無可逆轉的, 我們已經不會也不應該再回復到原先的封閉世界中.
|