自從計算機出現(xiàn)以來,計算機硬件和軟件的發(fā)展軌跡完全不同,計算機硬件的發(fā)展可以用波瀾壯闊來形容,從電子管、晶體管發(fā)展到集成電路、大規(guī)模集成電路,CPU從單核發(fā)展到多核,顯示器從電子屏發(fā)展到液晶屏,硬件技術(shù)和產(chǎn)品不斷更新?lián)Q代,硬件生產(chǎn)力不斷出現(xiàn)飛躍式發(fā)展;而計算機軟件卻一直以一種緩慢的速度發(fā)展,雖然編程語言從二機制、匯編語言發(fā)展到了高級語言,各種軟件技術(shù)和框架不斷涌現(xiàn),但軟件產(chǎn)品生產(chǎn)力的提升非常緩慢。回頭看近二十年計算機硬件生產(chǎn)力和軟件生產(chǎn)力的發(fā)展速度,我們會發(fā)現(xiàn),軟件生產(chǎn)力的發(fā)展速度,遠遠低于硬件生產(chǎn)力的發(fā)展速度。

      分析這種巨大反差的根本原因,可以發(fā)現(xiàn),計算機硬件的發(fā)展是站著工業(yè)化生產(chǎn)這個巨人的肩膀上的,而計算機軟件仍然處于低水平的手工業(yè)生產(chǎn)階段。不是嗎?一個軟件產(chǎn)品需求出來,需要建立一個團隊負(fù)責(zé)軟件需求、設(shè)計、開發(fā)、測試、安裝部署等軟件產(chǎn)品生產(chǎn)周期的各個階段,需要程序員一行行手工編寫代碼去實現(xiàn)軟件產(chǎn)品功能,下一個軟件產(chǎn)品的開發(fā),重復(fù)上述過程,無一例外,社會化的分工與協(xié)作、標(biāo)準(zhǔn)化、模塊化、快速迭代與大規(guī)模生產(chǎn)等工業(yè)化概念,在軟件產(chǎn)品的生產(chǎn)過程中很難見到,現(xiàn)在的開發(fā)團隊、組織、公司,恰如古代的手工作坊。所以,目前的軟件開發(fā)還處于手工業(yè)生產(chǎn)階段。

      軟件的未來和發(fā)展趨勢就在于軟件生產(chǎn)的工業(yè)化。有人說軟件太復(fù)雜了,各種依賴包、版本控制、協(xié)議和編程語言不同等一系列問題,導(dǎo)致想要實現(xiàn)類似硬件的工業(yè)化生產(chǎn)幾乎不可能。但是,這種軟件的復(fù)雜性又來自哪里呢?對于全世界的軟件開發(fā)人員來說,從來沒有一個統(tǒng)一的規(guī)范來約束其開發(fā)過程,文件名稱、方法名稱、參數(shù)變量等等隨便定義,數(shù)據(jù)存儲與返回值沒有約束,這樣開發(fā)出來的軟件很難重用和互聯(lián)互通。各種編程語言有各自的編碼規(guī)范,而這些編碼規(guī)范在哪個軟件產(chǎn)品中起作用,要看開發(fā)團隊或開發(fā)人員的自覺。所以,軟件的復(fù)雜性在于沒有一個工業(yè)化規(guī)范來約束軟件產(chǎn)品的開發(fā)和生產(chǎn)。

      那么,軟件工業(yè)化實現(xiàn)起來真的很難嗎?我們摒棄軟件復(fù)雜性的說法,看看如何用功件和面向功件編程,實現(xiàn)軟件工業(yè)化生產(chǎn)。

      在闡述功件之前,我們先澄清一下功件和目前軟件開發(fā)中的組件(構(gòu)件)的區(qū)別。

      首先看一個軟件產(chǎn)品中的組件,如下圖:

萬碼學(xué)堂,電腦培訓(xùn),計算機培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

網(wǎng)友評論