明智軟體開發——Ivar Jacobson博士上海英雄會演講的主要思想
9月5日在上海舉辦的CSDN英雄會上,Ivar Jacobson博士做了第一個主題演講,演講的題目是《明智軟體開發》,概括了Jacobson博士最近一兩年對於軟體開發的最新思考,而且是他第一次對公眾做這個演講。很可惜由於某些意外事件,大會開場時間拖延了15分鐘,本來可以給Jacobson博士的機動時間被拖沒了,他到最後只要擇其要者簡單說幾句,很多地方一帶而過。會下很多在場的朋友都跟我說,這個演講實際上是當天最好的演講。這樣一個精彩而重要的演講,因為時間緊張而未能充分展開,非常令人遺憾。
當天演講之前5分鐘,Jacobson博士突然邀請我給他做現場翻譯,並且說:“你只需要在你認為有必要的時候打斷我,不要逐句翻譯。”我當時壓力很大,因為這個演講我也沒聽過,一走上前臺,我腦子裡噌噌噌閃過無數雜念:這個題目到底講什麼?其中涉及的專業知識我不懂怎麼辦?Ivar博士帶北歐口音的英語聽不懂怎麼辦?我該站在他身邊還是離他遠點以保證大師的光輝形象?我該在什麼地方什麼情況下打斷他?用什麼方式通知他?這些問題如果在事前有準備,本來是可以從容應對的,但是事情發生得非常突然,我來不及思考就走到他身邊,而且一上來就開啟了錯誤的PPT。在後來將近40分鐘的演講裡,我多少有點緊張,表現得不太好,聽錯聽漏了一些地方,沒有很好地完成Ivar交給我的任務,對於演講效果的欠佳,我也負有不可推卸的責任。可能也是因為這個原因,當天我的狀態一直不太好,在後面的演講和主持環節,我始終興奮不起來。藉此機會向在場的朋友致歉。
會後很多朋友都向我索要這個演講的PPT,可以在這裡下載:http://download.csdn.net/source/613191 。
下面我憑記憶把這個Jacobson博士這個演講的主要思想扼要列舉出來。由於當時我比較緊張,而且人的記憶本身就有出錯的可能,因此很有可能不準確。請IJI公司的朋友和在場的聽眾指出我的錯誤。
在演講的一開始,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的觀念。
而所謂smart,則是以人為本的,承認軟體需求變化的不可避免和不可預知。在這一認識的基礎之上,Ivar丟擲了他的觀念,即軟體必須從一個小的可執行的skinny system開始,逐漸充實生長稱為full-fledge的成熟系統。在PPT上,Ivar 用一隻小羊骨架表示 skinny system,而這隻小羊最後將長成又大又肥毛又多的澳洲美利奴羊,這就是成熟系統,相信很多在場的朋友印象深刻。Ivar強調,skinny system必須是skinny,拋棄一切細節,但是又必須可執行。在成長為成熟系統的整個過程中,都必須確保系統是可執行的。隨著細節不斷地被認識,系統逐漸充實完整。
(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 說,他的得力合作者黃邦偉博士已經在多個重大專案中實踐此方法,取得非常出色的成果。至於更進一步的細節,我也就不瞭解了。
以上,供有興趣者參考,並請知情的朋友指出錯誤之處。
相關文章
- Ivar Jacobson:我們為什麼需要軟體工程理論軟體工程
- 如何管理軟體企業——林銳博士免費演講通知
- 精益思想和軟體開發
- 自由軟體,和Richard Stallman的演講
- [軟體人生]英雄會後的亂談
- 我做軟體開發的核心思想考量
- 一,現代軟體開發架構思想架構
- 美資上海招聘Java軟體開發人員Java
- 從開源軟體開發中體會到的心得
- 群碩軟體招聘JAVA開發工程師 上海Java工程師
- 電商新聞app軟體開發的主要功能-北京銳智互動軟體開發APP
- 演講稿 ---- 10年 測試開發
- 對軟體開發的一點心得體會 (轉)
- 用 React 開發小程式的探索之路 (演講內容整理)| 掘金開發者大會React
- 微信小遊戲開發技巧(大會演講內容整理)丨掘金開發者大會遊戲開發
- 團隊協作將取代軟體開發中的個人英雄主義
- 傻瓜式軟體開發過程講解
- 軟體開發的一些思考及心得體會
- 你會寫軟體開發文件嗎?
- 阻止 WannaCry 的英雄將豁免因開發惡意軟體引發的牢獄之災
- 這些年軟體開發生涯心得體會
- 自上而下的軟體開發和自下而上軟體開發
- 軟體工程博士講師:軟體工程是一個學習過程,程式碼只是學習的副產品軟體工程
- 李開復就中國移動開發者大會的演講總結移動開發
- WePY – 小程式敏捷開發實踐(演講內容整理)丨掘金開發者大會敏捷
- WePY - 小程式敏捷開發實踐(演講內容整理)丨掘金開發者大會敏捷
- 習近平在世界網際網路大會開幕式上發表主旨演講
- 軟體開發:app軟體開發,pc端軟體開發,微商城/小程式開發APP
- 軟體架構的核心思想架構
- 軟體思想的進化和相通
- 國家網際網路應急中心何世平博士主題演講
- 軟體開發與軟體研發
- 2011敏捷軟體開發大會敏捷
- 軟體開發的難
- 馬雲全球智慧物流峰會演講:發展無人機不如送人上火星無人機
- 嵌入式c++軟體開發筆記第三講C++筆記
- 嵌入式c++軟體開發第四講筆記C++筆記
- 讀《浮現式設計-專業軟體開發的演進本質》有感