GHawk

          UP & XP之爭,意義何在?

          不光是做軟件,凡是做產品,最后關注的總是產品的質量。

          舉個例子,比如你做一鍋湯:
          今天你狀態(tài)很好,做完后嘗了嘗,感覺很美味,你的家人嘗了以后也有同感,喝完后感覺心情舒暢、意猶未盡。
          隔了一個禮拜,你做同樣的湯給家里人喝。做完后你嘗了嘗,感覺依然美味,盼望著得到家人的賞識,然而他們卻說味道咸了點。你很奇怪,為什么同樣自己嘗過了,家里人卻感覺不一樣呢?是不是最近加班多了,休息不好,味覺不準了?
          一個月過后,你要去國外出差,給家里請了個臨時保姆。一天,他也做了這么個湯,做完后,他也嘗了嘗,感覺口味很不錯,可是端上桌,家里人說這湯太辣了。原來這保姆才從湖南老家出來不久……

          因此,只把焦點放在最后的產品上往往是不夠的。需要對“做湯的過程”加以控制。所以工程界會比較關注過程的管理,在軟件領域也稱作“軟件生命周期管理”。

          再來看看UP和XP。它們都屬于軟件過程,只不過各有特色。

          再拿剛才那個做湯的例子:
          大家都聽說過德國人的廚房像化學實驗室,天平、計時器、量杯……裝備齊全,再配上精確的菜譜,嚴謹的德國人能夠確保不用嘗那最后一口都做出口味基本一致的湯。
          換了中國人,大部分人都不會模仿德國人做菜的方式。解決方案很簡單,讓你的太太和孩子都嘗那最后一口,再根據反饋調整幾次,同樣能做出全家人滿意的湯。

          這個例子也許不太貼切,但是可以聯想一下:德國人做湯傾向于UP;中國人做湯傾向于XP。

          UP和XP最終目的都是為了保證產品的質量,不同的是,兩個過程所強調的方法不同。我想,沒有人會說“UP的目的在于變態(tài)地追求文檔的完美”、“UP是為了要程序員學會寫各種各樣文檔”……之類的話。同時,也沒人會說“XP就是不要文檔只要代碼”、“XP就是要變態(tài)地追求完美的代碼”……這樣的話。

          這些不正確的看法,只是人們對于這兩種過程的誤解?;蛟S是來自于開發(fā)人員和項目經理的那些“不堪回首的經歷”。

          “UP害慘了整個軟件行業(yè),讓開發(fā)人員沒完沒了地寫文檔而忽略了代碼,XP才是王道”這樣的話,我不敢茍同,仍然有很多企業(yè)使用著UP這樣的重型軟件工程,就好比德國人依然喜歡把廚房弄得像個實驗室。

          XP固然是個好東西。但是,不知道大多數人對于XP的熱衷是出于對XP文化的理解,還是國人慣有的“一窩蜂”似的行為。不曉得一個“能夠熟練閱讀代碼的Leader”是不是能夠真正運用好XP,確保他的團隊能夠盡可能少地出現"Over engineering"這種違背Agile精神的東西,或是能夠讓他的團隊保證“每周只工作40小時”這樣的基本實踐?

          對于不同的技術和過程,應該給予冷靜的分析和慎重的選擇。每個過程和技術都不能以“正確”或“不正確”來定性,只能以“合適”和“不合適”來定性。因為正確或不正確是要嚴格證明的,而合適不合適是來源于工程實踐的結果。所以,COBOL依然在金融領域起著舉足輕重的作用,科學家們仍不忘Fortran,匯編和C仍然健在……

          另外不得不提的是文化上的差異。為什么很多時候,我們學習國外的先進技術,購買了整套生產線,引進了全套圖紙,請國外專家做了詳細的全程化培訓,國人生產出的產品品質依然不如國外原產的?這是每個中國人都應該思考的問題……

          ?

          posted on 2006-04-23 18:28 GHawk 閱讀(1901) 評論(4)  編輯  收藏 所屬分類: 軟件過程

          評論

          # re: UP & XP之爭,意義何在? 2006-04-23 22:17 renyfox

          我覺得樓豬的闡述還有欠缺的地方。
          爭論UP和XP的孰優(yōu)孰劣,實在是……有點想在討論牛肉好還是羊肉好的感覺,呵呵。
          我也同意林德章老師的“UP是正楷,XP是草書”的說法。正楷在可看性的角度上,的確是跟草書相差甚遠。但是,無論是哪位書法家,一定都是先學正楷的。學過書法的人都會明白,正楷,它對于掌握字的結構,以及之后行書、草書的學習的重要性。所以真正懂得書法的人,是不會說出“草書比正楷好看”或者“正楷比草書好看”這種話的。它們只是兩種書寫形式,有各自適用的場合。
          軟件也是一樣。顯然,UP更適用于團隊實力比較弱、隊員層次比較低或者參差不齊的項目。即使它繁復的文檔能把人弄瘋,但是跟會使項目變得更糟的XP相比,UP的使用不失為一種妥協的方法。哪個作程序的不希望自己的項目過程簡單化、優(yōu)雅化,但是如果僅僅為了簡單和優(yōu)雅,而不顧自身實際條件就盲目地選擇XP,結果將是災難性的。
          UP與XP之于軟件,刀叉與筷子之于飲食,跑步與跳操之于運動,都只是個方式方法的問題,僅此而已。  回復  更多評論   

          # re: UP & XP之爭,意義何在? 2006-04-24 08:47 Harryson

          實踐中去體會,學習中,,,,  回復  更多評論   

          # re: UP & XP之爭,意義何在? 2006-04-24 22:53 讀書、思考、生活

          你這個比方,簡直就是......

          湯的味道,不需要什么過程控制,如果他味道不對,那是因為做湯的人,寫的測試用例不夠穩(wěn)定。

          如果能夠使用代碼化的測試用例,而不是僅僅依靠自己的舌頭,或者盲目的遵循所謂的菜譜文檔。

          這樣才能確保每一次做出來的湯,都是一種味道。

          老兄,聽說過TDD嗎?XP運用TDD,以保證代碼質量,而不是用量杯,也不是寫菜譜。

          再說一句,XP不僅僅是一種軟件開發(fā)過程,而是一種思想,如果你有機會,聽聽最近一次BEA上海User Group中的Charls的演講錄音就好了。  回復  更多評論   

          # re: UP & XP之爭,意義何在? 2006-04-26 16:32 jinfeng_wang

          德國人做湯傾向于UP;中國人做湯傾向于XP。

          //你確認中國人傾向于XP??
          也許中國人的性格上喜歡XP,但是如果中國人用XP,以中國人的性格,產品的質量能保證么?  回復  更多評論   

          主站蜘蛛池模板: 洛南县| 云浮市| 华阴市| 武清区| 京山县| 晋州市| 策勒县| 伊宁市| 尤溪县| 米泉市| 罗山县| 贵溪市| 汤原县| 保亭| 宣威市| 红原县| 宁津县| 卢龙县| 宕昌县| 黄石市| 建宁县| 独山县| 明溪县| 甘洛县| 射阳县| 会泽县| 东乌| 闵行区| 萨嘎县| 大港区| 福建省| 淮阳县| 博白县| 沅陵县| 都兰县| 龙里县| 桑日县| 同德县| 咸丰县| 达拉特旗| 曲阜市|