關於程式碼即設計的隨想
我們先回顧一下軟體工程的兩個重要的模式,瀑布模式和敏捷模式。瀑布模式的慣用流程是由SE/DE分析設計並形成文件,然後把文件交給碼農編碼,最後碼農把最終的軟體交給測試人員進行測試(一般是黑盒測試)。這樣的機械分割的問題至少有兩個。首先,冷冰冰的文件言未盡意,再加上人的變化,導致資訊的丟失甚至誤解。其次,設計由於缺少驗證,而且需求的不斷變化,編碼時甚至測試時才發現設計必須要修改。編碼這種對設計的反作用直接的後果是設計文件往往跟程式碼風馬牛不相及。
於是各大門派的大牛們痛定思痛,放下門戶之見,集思苦修,終於練成敏捷,江湖為之一振,蝦米們競相轉投敏捷門下。敏捷一掃瀑布的文件化和流程化的僵硬死板,展現出擁抱變化的靈活快速。敏捷模糊了設計、開發和測試的界限。從敏捷背後的機制來看,程式碼即設計雖然“猶抱琵琶半遮面“,但好歹”千呼萬喚始出來“。
不同於傳統工業的設計和生產之間的關係,軟體設計和編碼之間的關係非常緊密。現在已經有越來越多的工具,雖然還不夠完美,但是可以實現UML圖和程式碼正向和逆向的轉換。從某種程度上看,設計文件和程式碼也許是等價的。從程式碼即設計的角度,設計和編碼是同一頭大象兩條不同的腿,而構造和測試則是另外兩條腿。也就是說,設計包含傳統的設計、編碼、構造和測試。傳統的設計在其中更多是頂層設計,程式碼則是完備的設計清單,構造和測試是為了驗證和優化設計。整個設計過程是一個螺旋上升的環,測試的結果會促使設計和程式碼的修改和優化。程式碼即設計,可以很好的解釋開頭提出的問題。編碼並不是工廠裡的製造環節,而是設計環節。設計中出現問題是很常見的情況,只要及時改正就不會出大簍子。
在剛接觸程式碼即設計的時候,經常出現一知半截就滿腔熱血開始踐行。很容易把程式碼絕對化。很瀟灑的拋開文件和設計,直接編碼,眼前是長髮飄飄的Richard Stallman坐在電腦旁不斷敲鍵盤的情景。走了各種彎路而疲憊煩躁時,回過頭來斷言,程式碼即設計不對。程式碼即設計不併是說不需要畫UML圖,而是說程式碼也是設計的一部分,好吧,是最重要的一部分。設計拼圖中還有另外三個部分。
程式碼限設計要求人員的融合,而人員的融合又促使組織結構的調整。就像程式碼架構的調整無異於涅槃一樣,組織結構的調整也是舉步維艱。除非嚴重的危機發生,調整很難執行。
相關文章
- 程式設計思維隨想程式設計
- KMP演算法(基於程式碼隨想錄)的隨筆KMP演算法
- 跑在路上的程式設計師隨想程式設計師
- 程式設計隨想:基於歷史狀態的演算法程式設計演算法
- 隨想錄(程式設計師和收入)程式設計師
- 《ios程式設計第四版》隨感,隨想iOS程式設計
- 讀《Java程式設計思維》的一點隨想Java程式設計
- 程式碼可讀性隨想
- Hadoop HDFS 設計隨想Hadoop
- 控制程式碼--而不是跟隨程式碼--脫殼隨想
- 程式碼隨想錄-day1
- 程式碼隨想錄-day2
- 程式碼隨想錄-day3
- 【程式碼隨想錄】完全揹包
- 程式碼即設計 | 掘金年度徵文
- 【程式碼隨想錄】零錢兌換
- 關於程式設計的基本練習程式設計
- 關於程式設計師的漫畫程式設計師
- 關於程式設計裡的那些ABC程式設計
- 關於詳細設計/程式碼的同步問題--請教
- 程式碼質量隨想錄(二)必也正名乎
- 【程式碼隨想錄】廣度優先搜尋
- 隨著低程式碼的發展,程式設計不再僅適用於開發人員。程式設計
- 雜想程式設計師程式設計師
- 陳太漢:軟體隨想之編寫出色的程式碼
- 技術掃盲:關於低程式碼程式設計的可持續性交付設計和分析程式設計
- 關於Python的面相物件程式設計Python物件程式設計
- 關於 Angular 程式設計中的 shim 概念Angular程式設計
- 關於程式設計師的漫畫(三)程式設計師
- 關於程式設計的一些反思程式設計
- 關於程式設計師的一點感想程式設計師
- 陳梓瀚:關於程式設計的胡扯程式設計
- 關於程式設計詞法分析的感想程式設計詞法分析
- 程式碼質量隨想錄(一)可讀是王道
- IT隨想
- 關於螢幕程式設計(轉)程式設計
- 關於ByteCode程式設計程式設計
- 關於 App 程式設計師泡沫APP程式設計師