1. 程式人生 > >關於軟體生產的工業化思考(一)

關於軟體生產的工業化思考(一)

工業脫胎於手工業。

在手工業時代,我們生產一個產品,比如刺繡,是用繡花針一針一針的縫出來的,可以按照手工業者的想法,繡出各種各樣的創意作品,相當靈活,只要時間、精力、財力允許,可以做出滿足所有客戶的所有要求的產品。但是,其效率不言而喻是最低的。

在生產過程中,優秀的手工業者也發明了各種針法,以達到不同的效果,比如什麼盤針、套針、搶針、變體繡等等。這些都是這些手工業者為了達到某種效果而總結的技術手段,逐步演變成固定的套路,要達到什麼效果,就用什麼針法。(這點是不是和設計模式很像?)

隨著科學技術的進步,機械裝置被大量引入到生產領域。這些冷冰冰的傢伙能不知疲倦地工作,而且做的東西誤差很小,能達到大批量生產同一款式商品的要求,在刺繡領域也一樣,1828年,Joshua Heilman 生產了第一臺手搖繡花機,1867年出現第一臺飛梭繡花機,以及到後來出現的電腦刺繡技術,使得刺繡能被工業化生產。

發明機械的過程,其實就是一個讓機械模仿人行為的過程,這裡面就有兩個問題比較重要:1、總結人的行為;2、如何讓機械模仿。

如果能解決了這兩個問題,就能基本實現工業化。

在軟體開發領域也同理。

在純手工編碼的方式下,軟體開發的過程可以劃分為兩種行為:1)、如何解決問題, 2)、按照設計編寫程式碼。

第一個部分需要人腦的創造性活動,在人工智慧還沒有發展到一定階段之前,這一部分不太可能離開人工的編寫;

第二個部分就可以偷懶了。既然第一個部分中,設計者已經想好了如何解決,甚至編寫了實現演算法,那麼,這一步好像只剩下體力活了。而讓計算機去做這些體力活肯定能比人做的更有效率。

如果每個問題都是不同的,解決問題的方式也都是完全不同的,那麼上述兩個階段的劃分好像也沒什麼太大的價值,反正每個問題都要設計,每個設計都要重新編寫實現。

但是在更多的場合中,上述兩個階段的劃分是很有意義的。在一些領域,比如ORM,只要你編寫了一個DAO,那麼其他的DAO和先前的這個基本上都是一樣的,開啟兩個DAO的程式碼,你會發現好像兩個類只有名稱是不同的。在這種情況下,如果你不用一些工具,完全手工編寫程式碼,你會發現:在比較有技術含量的階段1中,你只花了2個小時,但是完成沒有技術含量的階段2中,你卻不得不花上20個小時。

作為一個有智商、有品味、有追求的懶人,我們當然不能接受這麼無聊的工作。我們要讓計算機來幫我們完成。怎麼完成呢?

我們不妨先考慮一下寫文件,文件有很多種,簡歷、推薦信、證明、會議記錄、需求規格說明書、概要設計、詳細設計等等等等,不同型別的文件內容不同,但是相同型別的文件,其格式基本相同。因此,幾乎所有的Office軟體都會提供一個“模板”功能,你可以選擇一個對應的模板,根據這個模板建立你對應的檔案,然後把你的內容填寫進去即可。

與開發很相似吧,那為什麼我們不借鑑這個工作的很好的“模板”的概念呢?

其實,模板的思想在程式設計中有很多應用,比如類繼承,父類或者介面就可以看作是子類的一個模板,還有一個很有用的設計模式“模板方法”也能讓很多框架易於擴充套件。

回到我們懶人的問題中,要讓只認識0、1的計算機幫我們編寫程式碼,我們就要編寫一個模板,讓它遵照執行。然後在執行時,給這個模板中填充一些不同的變數就可以了。

這就是Liferay ServiceBuilder的方式,也是我認為可以實現軟體工業化生產的基礎。
--------------------- 
作者:smilingleo 
來源:CSDN 
原文:https://blog.csdn.net/smilingleo/article/details/3612555 
版權宣告:本文為博主原創文章,轉載請附上博文連結!