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

2021-09-30 16:54:54 字數 1465 閱讀 9910

工業脫胎於手工業。

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

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

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

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

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

在軟體開發領域也同理。

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

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

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

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

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

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

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

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

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

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

工業化的軟體交付

根據ian thomas的研究 一次又一次,it技術始終未能交付預期價值。ian認為我們所有人 都需要承認這些趨勢,並從其他成熟行業的工業化程序中汲取教訓。在詳細闡述早期工作的基礎上,ian thomas討論了軟體交付工業化所需要解決的問題及其解決方法。ian首先定義了他對平台 平台即服務,簡稱pa...

嵌入式軟體工業化測試工具LOGISCOPE

摘要 本文論述了軟體的質量要求,在此基礎上,論述了 logiscope 對軟體開發的質量保證工作。如何在軟體開發的各個階段使用這些工具,以保證所開發的軟體的高可靠性和可維護性等。對 logiscope 的合理使用,將有助於開發隊伍通過 iso9001 認證,更便於提高開發隊伍的 cmm 等級。將 l...

錢納裡的工業化階段理論

克拉克 c.clark,1940 1 認為不同產業間存在相對的收入差異,而這種差異會促進勞動力向能夠獲得更高收入的部門移動。隨著人均國民收入水平的不斷提高,勞動力先由第一產業向第二產業轉移,由於產業間收入差異的存在,顯然這部分轉移人口會得到更高的收入,當人均收入水平進一步提高後,勞動力又會由第二產業...