構件神話

構件神話

2009.7( 道侖軟件 )

計算機自出現以來,軟件開發技術經歷了從彙編語言、面向過程、面向對象、到面向構件。

面向構件開發是九十年代提出的一種軟件開發新範型,它是在一定構件模型的支持下,複用構件庫中的一個或多個軟件構件,通過組合手段高效率、高質量地構造應用軟件系統的過程。由於以分佈式對象爲基礎的構件實現技術日趨成熟,它已經成爲現今軟件複用實踐的研究熱點,被認爲是最具潛力的軟件工程發展方向之一,是解決軟件問題的 銀彈

面向構件開發概念的提出雖然有一段時間了,但 一直沒有形成產業化 。認真思考一下,事情恐怕沒有想象的那麼樂觀。

首先,面向構件開發並不能解決軟件開發的根本困難:

1. 軟件系統的主要難度就在於概念和整體結構的合理性,先要有整體結構的設計,纔有構件,構件是由整體結構決定的,而不是反過來。構件絲毫沒有減少概念和整體設計的難度,反而可能會增加難度。

2. 由於企業的需求不斷變化,軟件的結構也需要跟着改變,由於變化的粒度有大有小,構件本身也很可能需要改變,一個構件的改變很可能導致其它與之相關的構件的改變,而構件的開發、組裝和調試都是需要時間的,所以很難跟上快速的變化。

3. 開發一個軟件系統時,在用戶需求與軟件實現(構件)之間存在着一個很大的鴻溝。用戶需求的準確表達和組織,以及如何正確地轉化成軟件構件,都存在很大的困難。構件開發並不能解決這個問題。

4. 用戶希望複用的是業務,而不是構件,這一點構件化的方法做不到。

其次,關於構件的產業化,我們認爲,作爲信息時代的軟件生產,自有其自身的特點,把它與工業時代的大規模生產方式簡單類比,認爲軟件產業也會複製工業時代的生產方式是不切實際的,理由是:

1. 標準化問題,現在軟件產業的標準基本都是底層技術級別的標準,如通信、組件、數據庫訪問等,高級應用層的構件標準能否制定出來,由誰來制定,是個很大的問題。 目前關於軟件構件的標準遠未出臺,如果各構件平臺廠商推出的構件互不兼容,不能夠實現複用,將又造成資源浪費。

2. 可靠性問題,機器(如汽車)的性能是由少數幾個主要零部件(如發動機)決定的,而軟件系統則要複雜得多,將很多符合“標準”的構件組裝起來,是否就能組成整體上滿足要求的軟件系統,實在是個問題。

3. 經濟問題,構件組裝的可靠性問題即使能找到解決辦法,其耗費的時間和成本必定是驚人的,很可能得不償失,完全有違當初構件產業化的初衷。

4. 應對變化的問題,一個構件的改變很可能導致其它與之相關的構件的改變,如果由於需求的變化而需要新的構件,是向構件的供應商求助,還是自己解決?時間來得及嗎?

5. 商業模式問題,對於構件的生產者來說,構件的開發成本基本是由第一個合格的版本決定的,後面的複製基本不需要成本,所以,最大的風險在於,花費巨大成本開發的構件能賣多少份拷貝?如果只能賣少數幾份拷貝,則肯定虧本,而這是事前很難預計的。對於構件的購買者來說,也存在着同樣的問題,即購買多少份同樣的構件合算?如果購買大量的拷貝,這比自己開發更合算嗎?所以,無論是構件的生產者,還是構件的消費者,都面臨很多不確定的問題,很難下決心走上這一條路。

在可以想象的將來,這些問題尚看不到解決的希望,構件的產業化不太可能成爲現實。

這種基於 標準化構件 開發軟件的思想,實際上是照般工業時代大規模工業化生產的思想,把軟件當作機器生產。然而一臺機器執行的是設計好的簡單任務,一旦出廠後不需要什麼變化,而現在企業管理軟件面對的是快速變化的環境,需要的是隨需應變。在當代企業面對高度不確定性的環境情況下,“標準化構件”開發已很難適用,我們必須尋找新的手段。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章