l

2012年8月14日 星期二

這不是軟體設計

August 13 23:15~August 14 00:15

螢幕快照 2012-08-13 下午11.37.19

 

上禮拜六和Kay到中山創意基地看免錢的「實構築」展覽,很推薦鄉民們有空也可以去參觀一下。在這個展覽中,放了很多模型、建築過程照片、設計圖等等。

螢幕快照 2012-08-13 下午11.28.36

螢幕快照 2012-08-13 下午11.28.55

螢幕快照 2012-08-13 下午11.29.33

螢幕快照 2012-08-13 下午11.31.33

 

走著、走著來到某個地方,擺了一張桌子,桌上放了好幾本「設計圖」,全部都是某一棟建築物的設計圖。其中包含了:

  • 設計施工圖
  • 機電施工圖
  • 施工放樣圖(Teddy內心獨白:什麼是放樣啊?)
  • 模板施工圖
  • 生產製作圖
  • 細部整合圖

螢幕快照 2012-08-13 下午11.37.56

 

每一張圖都密密麻麻的,表示著不同perspective的設計結果。

螢幕快照 2012-08-13 下午11.41.56

 

看了這麼多設計圖,突然回想起年輕的時候聽了某位「物件導向設計大師」的演講,這位大師說(大意如下):

軟體設計要跟建築一樣,建築師只要把設計圖畫好,之後交給施工團隊,他就可以繼續去接下一個案子,這樣子才可以做大。所以,軟體設計就是要學建築一樣,畫出很多設計圖。建築界可能用AutoCAD畫設計圖,那軟體業要用什麼畫?當然是用畫UML的軟體啊。所以,modeling是很重要的,coding只是施工細節,只要UML設計圖畫得夠仔細,coding外包給大陸就可以了(當年大陸的工資還非常的便宜)。

看了以上這段話,鄉民們可能會有兩種不同的反應:

  1. 非常讚同
  2. 偷笑

如果您是屬於後者,那Teddy在此恭喜老爺、賀喜夫人。如果是前者的話,請立即到 藥房 書店購買一本「笑談軟體工程:敏捷開發法的逆襲」回家服用。

***

為什麼?為什麼軟體設計就不能學建築設計?Teddy你不是一再強調,軟體很多觀念都是偷學建築的嗎,像是design pattern就是學Alexander的pattern language。那為什麼軟體設計不學跟建築設計,用UML畫出詳細的設計圖,之後programmer只要依照這份設計圖,按圖施工,保證成功,這個軟體開發的工作就可以外包到工資比較便宜的國家去做就好了啊。這樣不是很美好嗎?

為什麼?看了這麼久的搞笑談軟工,到現在還在問為什麼…Orz。

答案很簡單,首先,軟體的需求經常改變,而建築物的需求相對來講則是穩定很多。

其次,請看下圖,一個建築物的完成,造價高,分工細。而軟體呢?普遍的現象是:造價低,人手少…Orz。

螢幕快照 2012-08-13 下午11.57.36

 

最後,建築這一類的「硬體」,設計完成之後,生產成本(建造成本)是很高的。但是軟體則不同,軟體的生產成本,就是把source code轉成binary的成本,其實是非常非常低的,可以說趨近於0。如果鄉民們有看過Teddy介紹過很多次,由Jack W. Reeves 所寫的《What is Software Design?》這篇文章的話,就能夠理解這個觀念。

***

大約在2-3年前,Teddy在某個因緣際會之下,和某位「UML老師」閒聊。在言談之前,該「UML老師」還是深信「軟體設計應該學習建築設計」那一套說法。軟體開發,很多老觀念要修正了。這些觀念就好像是一個專案或是產品的「需求」一樣,需求弄錯了(觀念不對),之後做得再怎麼努力也是白搭啊

***

友藏內心獨白:不是教你亂抄,要有所抄,有所不抄。

2 則留言:

  1. 我之前那間公司的老闆是土木出生的,他就是用這種理念在做軟體。那段時間我幹死了。

    他上了幾堂專案管理(CMMI)的課,自創了一套專案進行流程,瀑布式模型,裡面有從系統分析、系統設計…等九大階段。
    我曾經跟他說那是自取滅亡的做法,他不承認。我就把他的頭打到流血(?)叫他多用眼睛看眼前看得到的東西

    回覆刪除
  2. 狼.漠仇:

    只能說...恭喜你換公司了...XD

    另外,不鼓勵使用暴力啊...可以請他來上Teddy的Scrum課程改造一下 XD。

    回覆刪除