軟件開發是典型的知識密集型、復雜度高、開發周期長、可靠性保證難的活動。隨著軟件應用范圍的迅速擴大,以及軟件運行平臺從單機到網絡環境的轉變,軟件的規模越來越大,復雜性越來越高,這將導致軟件在反映對象、開發基礎、關注內容、運行方式、提交形式開銷比重等方面的重要發展。從個體計算過程到群體合作過程的發展;由電子服務延伸到現代服務;從以單個軟件開發為主向以集成開發為主的順延;從以產品為中心到以服務為中心,如應用服務提供商(ASP,Application Service provider)和Web Service等都體現了軟件向服務發展的趨勢。已經存在大量發展運行的軟件,如:金融、電信、航天等;軟件應用的范圍不斷擴大,商務、交通、家電,已經無處不在;軟件的規模與復雜性持續增加,越來越多的知識正在由軟件進行顯式表達;出現了大量與軟件相關的標準;軟件危機仍然存在;軟件應用范圍將繼續擴大,成為信息社會的物理設施;遺留的軟件仍繼續發揮作用;最近一段時間,延長軟件生命、維護、演化等問題同時受到了學術界和產業界的雙重關注,諸如:柔性結構技術、遠程維護技術、自適應技術等將受到重視。
軟件的不斷發展和演化,逐步的將中間件和構件分離出來,用于處理諸如:數據資源互操作的數據訪問中間件、遠程過程條用中間件、面向消息中間件、分布異構環境下的事務處理中間件,以及分布、異構的網絡環境下的將各種對象有機結合的對象中間件。
Booch于2001年曾經說過:“管理變化性與復雜性是基于構建軟件開發的動力”。在日趨復雜的網絡環境中,如何將軟件分布于不同的節點上。在現有的軟件體系結構中,如何協調構件與構件的關系,如何突出軟件復用這一思路。近十年來面向對象技術逐步成為主流的軟件開發技術,為軟件復用提供了基本的技術支持。軟件復用被視為解決軟件危機,提高軟件生產質量和效率的現實可行途徑。
那么如何更好的實現軟件復用,我們不妨可以從我們自身這個最精密的、有智能的“機器”來借鑒一下。
生命的基本單位——構件
細胞——生命體的基本構成單位。在某種角度來看,它就是構件,有機構成了形形色色的各種生命體,各自執行著自己在自然界獨特的功能。計算機作為人類進化的一個觸角和延伸,似乎還沒傳承生命體特有的有機和嚴謹,貌似一堆相對松散的機械和電子行為。
人類發明工具的過程看起來是使人類逐漸的從勞動不斷解脫出來的過程,而終極目標則是讓工具自主代替人本身進行勞動,這就要求機器要具有某種形式的思維,而軟件則是人類的思維的拓展,恰恰給了機器這種初級的思維形式。而這種機器的初級的思維形式還處在混沌狀態,在于軟件的開發思想和方式還未達到極致,如何達到這種極致,看來從解析生命界中最高等的動物,人類自身似乎能得到一些啟示。
原文轉自:http://www.anti-gravitydesign.com