自從計(jì)算機(jī)出現(xiàn)以來,計(jì)算機(jī)硬件和軟件的發(fā)展軌跡完全不同,計(jì)算機(jī)硬件的發(fā)展可以用波瀾壯闊來形容,從電子管、晶體管發(fā)展到集成電路、大規(guī)模集成電路,CPU從單核發(fā)展到多核,顯示器從電子屏發(fā)展到液晶屏,硬件技術(shù)和產(chǎn)品不斷更新?lián)Q代,硬件生產(chǎn)力不斷出現(xiàn)飛躍式發(fā)展;而計(jì)算機(jī)軟件卻一直以一種緩慢的速度發(fā)展,雖然編程語言從二機(jī)制、匯編語言發(fā)展到了高級語言,各種軟件技術(shù)和框架不斷涌現(xiàn),但軟件產(chǎn)品生產(chǎn)力的提升非常緩慢?;仡^看近二十年計(jì)算機(jī)硬件生產(chǎn)力和軟件生產(chǎn)力的發(fā)展速度,我們會(huì)發(fā)現(xiàn),軟件生產(chǎn)力的發(fā)展速度,遠(yuǎn)遠(yuǎn)低于硬件生產(chǎn)力的發(fā)展速度。
分析這種巨大反差的根本原因,可以發(fā)現(xiàn),計(jì)算機(jī)硬件的發(fā)展是站著工業(yè)化生產(chǎn)這個(gè)巨人的肩膀上的,而計(jì)算機(jī)軟件仍然處于低水平的手工業(yè)生產(chǎn)階段。不是嗎?一個(gè)軟件產(chǎn)品需求出來,需要建立一個(gè)團(tuán)隊(duì)負(fù)責(zé)軟件需求、設(shè)計(jì)、開發(fā)、測試、安裝部署等軟件產(chǎn)品生產(chǎn)周期的各個(gè)階段,需要程序員一行行手工編寫代碼去實(shí)現(xiàn)軟件產(chǎn)品功能,下一個(gè)軟件產(chǎn)品的開發(fā),重復(fù)上述過程,無一例外,社會(huì)化的分工與協(xié)作、標(biāo)準(zhǔn)化、模塊化、快速迭代與大規(guī)模生產(chǎn)等工業(yè)化概念,在軟件產(chǎn)品的生產(chǎn)過程中很難見到,現(xiàn)在的開發(fā)團(tuán)隊(duì)、組織、公司,恰如古代的手工作坊。所以,目前的軟件開發(fā)還處于手工業(yè)生產(chǎn)階段。
軟件的未來和發(fā)展趨勢就在于軟件生產(chǎn)的工業(yè)化。有人說軟件太復(fù)雜了,各種依賴包、版本控制、協(xié)議和編程語言不同等一系列問題,導(dǎo)致想要實(shí)現(xiàn)類似硬件的工業(yè)化生產(chǎn)幾乎不可能。但是,這種軟件的復(fù)雜性又來自哪里呢?對于全世界的軟件開發(fā)人員來說,從來沒有一個(gè)統(tǒng)一的規(guī)范來約束其開發(fā)過程,文件名稱、方法名稱、參數(shù)變量等等隨便定義,數(shù)據(jù)存儲(chǔ)與返回值沒有約束,這樣開發(fā)出來的軟件很難重用和互聯(lián)互通。各種編程語言有各自的編碼規(guī)范,而這些編碼規(guī)范在哪個(gè)軟件產(chǎn)品中起作用,要看開發(fā)團(tuán)隊(duì)或開發(fā)人員的自覺。所以,軟件的復(fù)雜性在于沒有一個(gè)工業(yè)化規(guī)范來約束軟件產(chǎn)品的開發(fā)和生產(chǎn)。
那么,軟件工業(yè)化實(shí)現(xiàn)起來真的很難嗎?我們摒棄軟件復(fù)雜性的說法,看看如何用功件和面向功件編程,實(shí)現(xiàn)軟件工業(yè)化生產(chǎn)。
在闡述功件之前,我們先澄清一下功件和目前軟件開發(fā)中的組件(構(gòu)件)的區(qū)別。
首先看一個(gè)軟件產(chǎn)品中的組件,如下圖:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26