smart software development


在CSDN上看到孟岩這篇Jacobson的演講,激動不已。

明智软件开发——Ivar Jacobson博士上海英雄会演讲的主要思想

在我眾多projects中實驗了不少開發理論,3年來,一直認為,光一個開發論(RUP , XP , SCrum... )是很難完全實現的,必須因時因地因人而作流程取捨。
開發流程取捨如此,文件取捨亦是如此。
其中重要的就是架構,必須要專案開始不久,就要有中央堅定的骨幹。
大師畢竟是大師,PPT如此淺顯易懂,也消彌了我心中的搖動(偶而,總是會問問自己這樣是否是對的?)。
以下轉載孟岩的文章(不過圖片為我自行穿插):
在演講的一開始,Ivar首先革了舊思想的命。他回顧了軟件開發思想從過程化,到面向對象,再到組件化、UML、UP、RUP、XP的沿革,然後說這些思想都曾經自以為銀彈,但是都被證明並非銀彈。事實上,銀彈不存在,我們需要的僅僅是明智的軟件開發方法(smart software development)。那麼到底什麼是smart呢?Ivar認為要搞清楚這個問題,就必須想現在一些流行的unsmart觀念開火。比如,很多大型組織相信過程而不相信人,這就是unsmart。過程不能開發軟件,只有人才能開發軟件。所以軟件開發以人為本就是smart。有的人相信工具,但是工具本身只是放大器。如果落在了笨蛋手裡,「A fool with tools is still a fool, but a dangerous fool.」有些人以文檔為中心,但是文檔並不能執行,而且最重要的是,沒有人願意讀文檔。機器讀不懂文檔,人又不願意讀文檔,那麼製造大量的文檔有什麼意義呢?還有人使用瀑布模型,相信事前能夠產生完整的設計,甚至細節都能考慮清楚,但是隨著開發的推進,越來越多的paperware最終把開發工作壓垮。這些都是 unsmart的觀念。
01
而所謂smart,則是以人為本的,承認軟件需求變化的不可避免和不可預知。在這一認識的基礎之上,Ivar拋出了他的觀念,即軟件必須從一個小的可運行的skinny system開始,逐漸充實生長稱為full-fledge的成熟系統。在PPT上,Ivar 用一隻小羊骨架表示 skinny system,而這隻小羊最後將長成又大又肥毛又多的澳洲美利奴羊,這就是成熟系統,相信很多在場的朋友印象深刻。Ivar強調,skinny system必須是skinny,拋棄一切細節,但是又必須可執行。在成長為成熟系統的整個過程中,都必須確保系統是可執行的。隨著細節不斷地被認識,系統逐漸充實完整。
02
(Ivar 講到這裡,我在腦子裡問了一個問題:「這與我們熟知的非拋棄原型系統有何分別呢?後者不也是強調從一個原型出發,逐漸完善稱為產品嗎?而且就原型系統而言,實踐證明拋棄原型效果比非拋棄原型要好,難道大師的smart就是指這個?另外,這跟敏捷思想有什麼不同嗎?敏捷不也是強調盡早交付可執行代碼,並不斷重構嗎?」果然緊接著,Ivar就回答了這個問題。)
Ivar緊跟著提到了系統架構,他問在場聽眾,有多少人認為系統架構很重要,不少人舉了手,他滿意地說,不錯不錯,「China is fantastic!」,他在其他國家問這個問題,只有一小部分人認為架構很重要。他認為,對於架構的態度,人們容易走極端。要麼認為完全不必要,要麼就追求恢宏的企業架構,實際上都不是正確的態度。他認為基本而簡單的架構是非常重要的,這是區別smart方法與敏捷方法的關鍵。他認為,儘管smart方法與敏捷方法共享很多相似的部分,比如重構,增量式的前進,程序員測試,但是在對待skinny system的態度是截然不同的。Agile認為,應盡快產生可執行代碼,架構可以隨後重構出來,而他認為,skinny system就是架構,開發skinny system的過程也就是確定架構的過程。而架構是一個系統中最重要的部分,對質量要求不折不扣的部分,因此必須精心設計,絲毫馬虎不得,也別指望事後能夠通過重構產生好的架構。另外一方面,也不要執迷於那些通用的龐大的企業級架構。正如skinny system暗示的,好的架構都是小而簡單的。Ivar認為,軟件各部分對於質量的要求是不一樣的,與架構無關的部分,適當降低質量要求以求得開發效率的提升可以的,事後也完全可以通過重構等手段改善之。然而架構卻是必須從一開始就認真對待的,Ivar甚至說,「唯一重要的質量就是架構的質量」,茲事體大,不可不察。在這一點上,Ivar還是堅持他在UP中 「Elaboration」 的思想,也即是說,系統早期設計階段(skinny system)必須力求深思熟慮、精心設計,為後面的敏捷式開發提供良好的支撐。
由此可見,Smart方法,基本上可以看做是 UP 與 Agile 的一個有機組合。我沒有實踐經驗,但是從道理上講,這應該是一種好的方法。聽 Ivar 說,他的得力合作者黃邦偉博士已經在多個重大項目中實踐此方法,取得非常出色的成果。至於更進一步的細節,我也就不瞭解了。
(PPT請上CSDN去下載)

0 意見: