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