OMG,到底在尋找什么..................
          (構(gòu)造一個(gè)完美的J2EE系統(tǒng)所需要的完整知識(shí)體系)
          posts - 198,  comments - 37,  trackbacks - 0
          原貼地址:http://blog.csdn.net/mfowler/archive/2006/06/04/772384.aspx

          熊節(jié):我記得大概是在2001年的時(shí)候,我們?cè)凇冻绦騿T》雜志上做了一次技術(shù)專(zhuān)題叫做重構(gòu)。重構(gòu)這個(gè)思想名詞誰(shuí)提出來(lái),就是今天坐在這里的 Martin Fowler先生。從01年到05年,我們?cè)谥袊?guó)宣傳敏捷的思想已經(jīng)有好幾年,現(xiàn)在我們終于有機(jī)會(huì)可以面對(duì)面的聽(tīng)到Martin Fowler原汁原味的講"敏捷的思想",現(xiàn)在請(qǐng)掌聲歡迎Martin Fowler先生

          Martin Fowler:謝謝!我喜歡在臺(tái)上走來(lái)走去,不喜歡站在一個(gè)地方。我現(xiàn)在感覺(jué)舒服多了,因?yàn)镾idney Penney已經(jīng)把我在ThoughtWorks的地位建立起來(lái),我不用擔(dān)心以后失業(yè)。今天主要是想和大家探討敏捷式軟件開(kāi)發(fā)。

          首先我稍微介紹一下這方面的背景。正如我們大家都知道,我們今天所生活的環(huán)境越來(lái)越依賴(lài)于軟件這些東西。在整個(gè)世界范圍,各種業(yè)務(wù)越來(lái)越依賴(lài)于軟件 進(jìn)行它日常的運(yùn)營(yíng)工作。很多這些工作平常你并不一定能夠看得見(jiàn),但是,如果這里面出現(xiàn)問(wèn)題的時(shí)候是非常明顯的一件事情。比如說(shuō),最近美國(guó)有一家航空公司的 訂票系統(tǒng)出現(xiàn)了故障,有一天不能工作,結(jié)果自然造成了極大的混亂和很大的財(cái)產(chǎn)方面的損失。
          現(xiàn)在我們不是說(shuō)要找出這個(gè)軟件遇到了什么問(wèn)題,而是把這 個(gè)問(wèn)題看成軟件成功的一個(gè)現(xiàn)象,就是它對(duì)業(yè)務(wù)的支持已經(jīng)到了不可缺少的地步。在更加容易看到的一方面就是國(guó)際互聯(lián)網(wǎng)的這些技術(shù)。這種技術(shù)使得信息能夠在網(wǎng) 絡(luò)上不斷的進(jìn)行流動(dòng),對(duì)世界本身造成了很多有益的影響。至少在美國(guó),普通的人即使在本地的商店里買(mǎi)一些什么東西,也要先到網(wǎng)上察看一下有關(guān)商品的價(jià)格以及 其他的信息。實(shí)際上在過(guò)去三、四十年里,軟件行業(yè)是非常成功的一個(gè)行業(yè)。但同時(shí)業(yè)務(wù)部門(mén)對(duì)軟件也有很多不滿(mǎn)的地方,至少我自己一次又一次聽(tīng)到很多的公司談 到他們非常昂貴的軟件失敗的案例。所以,我的意見(jiàn)就是軟件既是非常成功的,也是失敗的一個(gè)行業(yè)。
          對(duì)于很多業(yè)務(wù)方面的人員來(lái)說(shuō)也不是非常清楚,將來(lái) 軟件到底是走向成功還是走向失敗?這個(gè)問(wèn)題并不是一個(gè)新的問(wèn)題。比如說(shuō)在六十年代末北約組織了一次軟件工程學(xué)的大會(huì),他們?cè)跁?huì)議上提出了"軟件危機(jī)"這個(gè) 概念。當(dāng)時(shí)大家的印象,軟件已經(jīng)變得如此的復(fù)雜,以至于不能以十分有效的方式來(lái)管理。這次會(huì)議的后來(lái)產(chǎn)生的結(jié)果就提出了一種更加有紀(jì)律性的軟件開(kāi)發(fā)的方 法。這個(gè)會(huì)議的提出,名詞就叫"軟件工程學(xué)"。這個(gè)概念背后的核心就是從傳統(tǒng)的工程學(xué)里面借鑒一些概念,把它應(yīng)用到軟件開(kāi)發(fā)過(guò)程當(dāng)中來(lái)。這個(gè)概念背后隨之 而來(lái)的很多軟件開(kāi)發(fā)方面的方法和過(guò)程。


          這些方法至少在七十年代、八十年代、九十年代變成了大家全部使用的軟件開(kāi)發(fā)方法。但是,也是在這段時(shí)間,很多的軟件從業(yè)人員開(kāi)始懷疑工程學(xué) 為基礎(chǔ)的方法到底適不適合軟件開(kāi)發(fā)。有很多非常成功的軟件項(xiàng)目,并沒(méi)有完全真正的按照軟件工程學(xué)的方法來(lái)進(jìn)行開(kāi)發(fā)的。與此同時(shí),很多非常失敗的軟件項(xiàng)目確 實(shí)是按照這種方法來(lái)進(jìn)行的。大概在九十年代開(kāi)始,我們看到很多人開(kāi)始使用其他一些不同的方法來(lái)開(kāi)發(fā)軟件,比較有名的方法包括極限編程、SCRUM、 Crystal、FDD等等。雖然這些方法由不同的人、不同的項(xiàng)目來(lái)開(kāi)始開(kāi)發(fā)實(shí)施,但是他們之間有很多非常相似的地方。敏捷開(kāi)發(fā)這個(gè)概念就是用來(lái)描述這一 系列比較新的軟件開(kāi)發(fā)方法的。這個(gè)詞就在2001年在猶它的會(huì)議上被選擇出來(lái)成為描述的詞匯。


          現(xiàn)在想和大家討論敏捷開(kāi)發(fā)和軟件工程學(xué)開(kāi)發(fā)方法的兩點(diǎn)最主要不同。第一個(gè)最大的不同是,敏捷開(kāi)發(fā)方法以適應(yīng)性為基礎(chǔ),以計(jì)劃傳統(tǒng)的開(kāi)發(fā)方法 是以預(yù)測(cè)性為基礎(chǔ)。第二個(gè)最主要的不同的地方,敏捷開(kāi)發(fā)是以人為基礎(chǔ),以人為核心,計(jì)劃開(kāi)發(fā)方法是以過(guò)程為核心的。我下面仔細(xì)的介紹一下這兩個(gè)不同的方 法。
          正像我剛才說(shuō)過(guò)的,以計(jì)劃驅(qū)動(dòng)的這些方法是以過(guò)去的很多傳統(tǒng)工程學(xué)理面的理念所引導(dǎo)出來(lái)的。所有這些傳統(tǒng)的工程學(xué),這些分支里面都有一個(gè)共同 的特點(diǎn),就是非常清晰的區(qū)別設(shè)計(jì)和構(gòu)建這兩個(gè)不同的過(guò)程。以計(jì)劃驅(qū)動(dòng)的軟件開(kāi)發(fā)這些人員通常也喜歡用這種方法來(lái)設(shè)計(jì)驅(qū)動(dòng)軟件開(kāi)發(fā)的過(guò)程,他們想到的第一個(gè) 問(wèn)題,傳統(tǒng)的工程設(shè)計(jì)圖紙?jiān)谲浖袠I(yè)里是什么樣的東西呢?他們認(rèn)為在軟件行業(yè)當(dāng)中,與工程學(xué)對(duì)應(yīng)的構(gòu)建的階段就是編程。所以,在軟件行業(yè)就應(yīng)該先用圖象的 方式把整個(gè)設(shè)計(jì)的方案表達(dá)出來(lái),然后交給真正編程的人。
          我經(jīng)常喜歡用一個(gè)建筑學(xué)的例子說(shuō)這件事情,因?yàn)槲业姆蛉司褪亲鲞@項(xiàng)工作的。比如說(shuō)如果你想 造一座橋,你開(kāi)始會(huì)把所有造橋的事情都想情況,想到會(huì)出現(xiàn)什么問(wèn)題。這項(xiàng)工作由專(zhuān)門(mén)的一系列專(zhuān)門(mén)的設(shè)計(jì)人員來(lái)完成的,他們所做的工作,交付的東西是一系列 圖紙,以圖象為基礎(chǔ)描述橋到底怎么建,既包括建好以后橋是什么樣子,也包括他們是怎么一步一步把橋建起來(lái)的,這些圖紙通常會(huì)交給另外一個(gè)完全不同的公司來(lái) 具體的建造這座橋梁。這個(gè)設(shè)計(jì)通常是有足夠的細(xì)節(jié)在里面,這樣你可以完全制定一套計(jì)劃,怎么樣一步一步搭建這個(gè)橋梁,花多少時(shí)間、多少成本、需要什么材料 等等。
          現(xiàn)在大家都知道,有很多非常流行的用來(lái)圖象性的語(yǔ)言來(lái)描述設(shè)計(jì)的,包括Data Flow、Event Driven、UML、事件驅(qū)動(dòng)等等建模語(yǔ)言。我自己在最初開(kāi)始進(jìn)行軟件開(kāi)發(fā)的時(shí)候,我也覺(jué)得這種方法非常的有效。而且對(duì)于如何構(gòu)建和改進(jìn)這些建模方法的 語(yǔ)言,在這方面有很多的心得。這就是為什么我參與了UML方面的工作。但即使我已經(jīng)對(duì)UML語(yǔ)言變得非常熟練的時(shí)候,我會(huì)發(fā)現(xiàn)以計(jì)劃驅(qū)動(dòng)的軟件開(kāi)發(fā)方法還 是有很多的問(wèn)題。
          我想集中討論有三個(gè)最主要的原因,為什么這種方法有點(diǎn)行不通。第一,是一個(gè)非常簡(jiǎn)單的現(xiàn)象。傳統(tǒng)的工程學(xué)里,設(shè)計(jì)這個(gè)階段通 常情況下占有整個(gè)項(xiàng)目的非常短的時(shí)間,比如說(shuō)只有10%的時(shí)間左右。如果你找到任何一本軟件工程學(xué)的課本,就會(huì)發(fā)現(xiàn)他們通常是整個(gè)設(shè)計(jì)的40%到50%的 時(shí)間,很明顯,有些事情在這里面是不對(duì)的。第二,在紙上描畫(huà)出的設(shè)計(jì)是非常容易的事情。即使在我自己非常擅長(zhǎng)在紙上畫(huà)圖形,但是真正的用編程來(lái)實(shí)現(xiàn)的時(shí)候 我發(fā)現(xiàn)很多的問(wèn)題。
          當(dāng)我真正編程實(shí)現(xiàn)這個(gè)工程的時(shí)候,我發(fā)現(xiàn)很多的問(wèn)題在畫(huà)圖設(shè)計(jì)的時(shí)候并沒(méi)有真正的想到。正是這種發(fā)現(xiàn),這種認(rèn)識(shí),使很多人開(kāi)始 來(lái)問(wèn)這樣的問(wèn)題,設(shè)計(jì)在軟件開(kāi)發(fā)過(guò)程中所處的時(shí)間點(diǎn)到底是對(duì)的還是不對(duì)的。最后得到的結(jié)論是,唯一一個(gè)能夠準(zhǔn)確描述方案的語(yǔ)言不是圖象,而是源代碼本身。 按照傳統(tǒng)工程學(xué)的比喻來(lái)說(shuō),設(shè)計(jì)的思想是蘊(yùn)涵在最后真正的建設(shè)和部署的階段。至少我慢慢的認(rèn)識(shí)到,把設(shè)計(jì)和編程完全分開(kāi)來(lái)是非常嚴(yán)重、非常根本的錯(cuò)誤,如 果光設(shè)計(jì)不編程或者光編程不設(shè)計(jì)都會(huì)產(chǎn)生各種各樣的問(wèn)題。
          對(duì)我來(lái)說(shuō),還有一個(gè)更主要的原因,按計(jì)劃驅(qū)動(dòng)的開(kāi)發(fā)方法不成功的原因就是需求本身的變 化。幾乎我經(jīng)歷過(guò)的項(xiàng)目或者訪(fǎng)問(wèn)過(guò)的項(xiàng)目都會(huì)有這樣一個(gè)問(wèn)題,就是在編程過(guò)程中需求還在變化。按計(jì)劃驅(qū)動(dòng)的開(kāi)發(fā)方法,它花了很多的時(shí)間和精力,在需求階段 盡量把所有的需求確定下來(lái),使他們?cè)陂_(kāi)發(fā)以后的階段不會(huì)發(fā)生變化。但是,在很多其他的軟件開(kāi)發(fā)的項(xiàng)目當(dāng)中,尤其是商業(yè)軟件,就是我一直從事的商業(yè)軟件開(kāi) 發(fā),這種方法幾乎是不現(xiàn)實(shí)的。在一個(gè)項(xiàng)目的早期,很難真正的想象出來(lái)到底軟件的需求會(huì)是什么樣的。
          即使你在項(xiàng)目的開(kāi)始階段能夠想象出來(lái)項(xiàng)目的需求 是什么樣,但是業(yè)務(wù)本身肯定會(huì)變的,在項(xiàng)目需求確定以后還會(huì)繼續(xù)變化,從而導(dǎo)致需求的變化。這種以計(jì)劃驅(qū)動(dòng)的軟件開(kāi)發(fā)方法是整個(gè)建立在需求不會(huì)更改的基礎(chǔ) 之上的。如果這種基礎(chǔ)、這種假設(shè)是不成立的,整個(gè)開(kāi)發(fā)方法都會(huì)出現(xiàn)問(wèn)題。他們的這種方法,我們應(yīng)該在開(kāi)始明明白白把軟件開(kāi)發(fā)的過(guò)程所有可能出現(xiàn)的問(wèn)題全部 想清楚,這樣我們可以完全準(zhǔn)確的預(yù)測(cè)開(kāi)發(fā)過(guò)程會(huì)有什么樣的問(wèn)題。
          敏捷開(kāi)發(fā)的從業(yè)人員覺(jué)得,如果我們不能夠完全避免變化,我們就應(yīng)該建立一種新的方 法,能夠使我們有效的處理將來(lái)出現(xiàn)的變化。我們?cè)谝粋€(gè)敏捷開(kāi)發(fā)的項(xiàng)目的全過(guò)程當(dāng)中能夠很清楚的看到這一點(diǎn)。以計(jì)劃驅(qū)動(dòng)的開(kāi)發(fā)方法核心就是在早期建立一個(gè)計(jì) 劃,如果一切都沒(méi)有出現(xiàn)任何問(wèn)題的話(huà),這個(gè)計(jì)劃就是實(shí)際項(xiàng)目當(dāng)中將會(huì)發(fā)生的事情。在這種方法里面,計(jì)劃是在項(xiàng)目開(kāi)發(fā)過(guò)程中非常早期建立起來(lái)的。在一個(gè)敏捷 開(kāi)發(fā)項(xiàng)目當(dāng)中,計(jì)劃這些活動(dòng)是在整個(gè)項(xiàng)目的過(guò)程從頭到尾一直不斷的進(jìn)行的。在敏捷開(kāi)發(fā)里面沒(méi)有這樣的計(jì)劃,會(huì)把將來(lái)軟件最后的所有的細(xì)節(jié)全部預(yù)測(cè)出來(lái),而 這個(gè)計(jì)劃的過(guò)程是一個(gè)對(duì)變化進(jìn)行反應(yīng)的過(guò)程,就是一個(gè)一個(gè)的變化會(huì)不斷的融入到這個(gè)計(jì)劃當(dāng)中,用來(lái)進(jìn)行真正實(shí)現(xiàn)這種方式的核心方法就是把整個(gè)項(xiàng)目分割成一 小塊一小塊的迭代。
          這兩種完全不同的開(kāi)發(fā)方法的第二個(gè)區(qū)別就是:以人為核心,還是以過(guò)程方法為核心。以計(jì)劃驅(qū)動(dòng)的核心方法,設(shè)計(jì)一套這樣的方法, 不管什么人,任何人都可以在這套方法中發(fā)揮最大的作用。有了這種非常有效的方法以后,這種方法會(huì)有很多的角色在里面,這樣可以把角色用任何的人放進(jìn)來(lái)拿出 去,只要有人做這個(gè)事情就可以保證整個(gè)軟件項(xiàng)目是成功的。敏捷開(kāi)發(fā)方法對(duì)這個(gè)問(wèn)題的看法最好用艾克·卡文的一個(gè)觀點(diǎn)來(lái)解釋?zhuān)克谲浖_(kāi)發(fā)的早期是幫助 IBM做關(guān)于OO方面的研究工作。他在做這些工作的時(shí)候,最主要的任務(wù)是訪(fǎng)問(wèn)不同的開(kāi)發(fā)項(xiàng)目,發(fā)現(xiàn)成功的項(xiàng)目到底是哪些因素使得這個(gè)項(xiàng)目成功。他發(fā)現(xiàn)最后 得到的結(jié)果非常奇怪,所有的成功的項(xiàng)目他們之間沒(méi)有一點(diǎn)在過(guò)程方面共通的地方。這些項(xiàng)目所共通的唯有一點(diǎn)共通:他們擁有能力非常強(qiáng)、交流非常好的開(kāi)發(fā)團(tuán) 隊(duì)。
          這個(gè)問(wèn)題的核心在于,以計(jì)劃驅(qū)動(dòng)的開(kāi)發(fā)方法是以過(guò)程驅(qū)動(dòng)整個(gè)軟件開(kāi)發(fā)的工作。在軟件開(kāi)發(fā)的過(guò)程當(dāng)中,其實(shí)最核心的部分應(yīng)該是開(kāi)發(fā)人員本身。但是,以計(jì)劃驅(qū)動(dòng)這些方法,在這個(gè)過(guò)程中喜歡把編程人員本身當(dāng)成計(jì)算機(jī)來(lái)對(duì)待,有些人甚至認(rèn)為軟件開(kāi)發(fā)方法也應(yīng)該像編程一樣來(lái)對(duì)待人。
          計(jì) 算機(jī)和人的區(qū)別主要在于,計(jì)算機(jī)是非常有一致性的,總是不斷的以準(zhǔn)確的方式來(lái)重復(fù)同樣的工作。但是,人在這個(gè)過(guò)程中沒(méi)有持續(xù)性,人總是有各種各樣的變化, 有時(shí)候快,有時(shí)候慢,有時(shí)候做的好,有時(shí)候做的不好。人的優(yōu)勢(shì)和計(jì)算機(jī)的優(yōu)勢(shì)是不一樣的。這使我們要重新考慮開(kāi)發(fā)方法和編程這兩件事情。在敏捷開(kāi)發(fā)社團(tuán) 里,大家都會(huì)覺(jué)得,在這個(gè)過(guò)程中人應(yīng)該是第一位的,所有的東西都應(yīng)該圍繞著人來(lái)做的。一個(gè)項(xiàng)目的開(kāi)發(fā)過(guò)程的有效性,主要決定于項(xiàng)目的人的能力以及這些人互 相進(jìn)行合作的有效性。他們使用的開(kāi)發(fā)方法以及他們使用的各種不同的工具,和人比起來(lái)是次要一級(jí)的因素。
          在我們當(dāng)年寫(xiě)《敏捷開(kāi)發(fā)宣言》的時(shí)候,我們 把"人比過(guò)程重要"這一點(diǎn)放在第一行上面。我們認(rèn)為,人和人之間的交互要比方法和工具要重要得多。這其實(shí)非常具有諷刺意味,因?yàn)槲覀兪且蝗簩?zhuān)門(mén)做方法和工 具的一群人。這造成了很重要的一些結(jié)果,特別重要的一點(diǎn),就是說(shuō)方法是用來(lái)適應(yīng)人的,而不是人來(lái)適應(yīng)方法。作為開(kāi)發(fā)一個(gè)團(tuán)隊(duì)上面的人本身,他們自己應(yīng)該來(lái) 選擇所適合的開(kāi)發(fā)方法。從而就是說(shuō),如果真正想建立一個(gè)有效的開(kāi)發(fā)團(tuán)隊(duì),最主要不是選擇什么方法,而是找到真正合適的、有能力的開(kāi)發(fā)人員,并且使他們能夠 有效的相互之間一起合作。以這種方式來(lái)選擇團(tuán)隊(duì),你所應(yīng)該注意的開(kāi)發(fā)人員的素質(zhì)和傳統(tǒng)上的以方法為核心的這些人所注重的素質(zhì)通常是不一樣的。
          另外 一個(gè)結(jié)果就是:方法本身并不是固定不變的。一個(gè)敏捷開(kāi)發(fā)團(tuán)隊(duì)的非常重要的特點(diǎn)就是他們一直在不斷的改進(jìn)他們所使用的方法,直到這個(gè)方法非常適合他們自己的 團(tuán)隊(duì)為止。一種非常有效的方法,就是在每一次迭代開(kāi)發(fā)完畢以后做一個(gè)回顧式的會(huì)議,專(zhuān)門(mén)討論在過(guò)去迭代過(guò)程中開(kāi)發(fā)方法哪些需要改變,哪些需要變化來(lái)適應(yīng)開(kāi) 發(fā)團(tuán)隊(duì)本身。這就意味著不光每個(gè)開(kāi)發(fā)團(tuán)隊(duì)要選擇自己的方法,而且它所選擇的方法會(huì)隨著時(shí)間的變化不斷的改進(jìn)。
          所以,我覺(jué)得大家已經(jīng)看到,在這兩種 敏捷開(kāi)發(fā)和計(jì)劃驅(qū)動(dòng)開(kāi)發(fā)方法之間,他們背后建立的假設(shè)和基礎(chǔ)完全是不一樣的。我并不想說(shuō),敏捷開(kāi)發(fā)是對(duì)所有的項(xiàng)目來(lái)說(shuō)都是最適合的一種方法。我想我們現(xiàn)在 還是在處于一個(gè)探索階段,弄清楚到底哪些開(kāi)發(fā)方法適于哪些項(xiàng)目。而且應(yīng)該說(shuō)敏捷式的開(kāi)發(fā)方法在西方還是屬于少數(shù)的開(kāi)發(fā)方法。但是,這種方法也是在《敏捷開(kāi) 發(fā)宣言》提出來(lái)以后,在最近幾年越來(lái)越得到很多方面重視的一種方法。比如說(shuō)在ThoughtWorks我們用敏捷開(kāi)發(fā)方法在項(xiàng)目當(dāng)中獲得了很多的成功。有 效的使用敏捷方法的項(xiàng)目,有些是上百人的大項(xiàng)目,而且項(xiàng)目的團(tuán)隊(duì)分布在不的國(guó)家和不同的大洲之間。至少對(duì)我來(lái)說(shuō),這是我最喜歡的一種工作方式。
          對(duì) 我個(gè)人來(lái)說(shuō),我非常有興趣看到越來(lái)越多的對(duì)敏捷開(kāi)發(fā)方法的使用,以及它在開(kāi)發(fā)過(guò)程中所帶來(lái)的新的挑戰(zhàn),尤其是敏捷式開(kāi)發(fā)方法對(duì)軟件開(kāi)發(fā)當(dāng)中對(duì)設(shè)計(jì)的理解帶 來(lái)很大的沖擊。 在敏捷開(kāi)發(fā)的過(guò)程中,一個(gè)應(yīng)用的設(shè)計(jì)在整個(gè)開(kāi)發(fā)過(guò)程中是一個(gè)不斷演變的過(guò)程。這也是我們非常有興趣的幫助設(shè)計(jì)演變的程序,比如說(shuō)重構(gòu)和設(shè)計(jì)開(kāi)發(fā)。軟件開(kāi)發(fā) 當(dāng)中一個(gè)非常有趣的現(xiàn)象是,沒(méi)有辦法絕對(duì)的客觀來(lái)衡量開(kāi)發(fā)方法的有效性。我們唯一能做的就是非常誠(chéng)懇、非常準(zhǔn)確的描述我們自己的經(jīng)驗(yàn),使得其他有興趣的人 做類(lèi)似的事情。整個(gè)敏捷開(kāi)發(fā)社區(qū)所做的很多工作,就是在不斷的探索敏捷開(kāi)發(fā)的極限在哪里,限度在哪里。我自己非常很高興能處在整個(gè)發(fā)現(xiàn)的過(guò)程中。 我準(zhǔn)備講的就這些。謝謝!

          熊節(jié):我們現(xiàn)在先來(lái)向Martin Fowler先生提一點(diǎn)問(wèn)題,我相信大家也會(huì)有很多的問(wèn)題想要馬上請(qǐng)教。不過(guò)在大家開(kāi)始請(qǐng)教之前,我希望把這個(gè)機(jī)會(huì)讓給我們CSDN聊天網(wǎng)上的200多的在線(xiàn)用戶(hù),看看他們有什么問(wèn)題。

          網(wǎng)友:希望Martin Fowler先生能夠解釋一下XP、Scrum、Crystal、FDD等等這些敏捷方法之間有什么區(qū)別和聯(lián)系?

          Martin Fowler:所有的這些都是在敏捷開(kāi)發(fā)里,大家經(jīng)常會(huì)使用各種不同的方法,在很短的時(shí)間里真的沒(méi)有辦法把所有的都介紹一遍,如果你去我的網(wǎng)頁(yè)叫 Martin Fowler.COM有一篇文章叫《新方法》。在那篇文章里,基本上把我剛才講的已經(jīng)總結(jié)一遍,而且有很多剛才提到的不同的具體方法當(dāng)中。


          現(xiàn)場(chǎng)提問(wèn):很榮幸聆聽(tīng)您的教誨。您剛才說(shuō),人在整個(gè)軟件開(kāi)發(fā)過(guò)程中起著決定性的作用。我以前做過(guò)開(kāi)發(fā),現(xiàn)在也做開(kāi)發(fā),也參加過(guò)設(shè)計(jì)。設(shè)計(jì)和 開(kāi)發(fā)很容易脫節(jié),Martin Fowler先生說(shuō)過(guò),設(shè)計(jì)和開(kāi)發(fā)之間的結(jié)合是通過(guò)迭代,我想問(wèn)一個(gè)問(wèn)題,迭代的過(guò)程怎樣做才更合適一些?

          Martin Fowler:首先在你頭腦中想象軟件是一種什么樣的方式。你可以用各種不同的方法來(lái)嘗試或者描述這種設(shè)計(jì)本身。比如說(shuō)你可以用UML的方式在白板上和把 它描述出來(lái),和你的同事討論這個(gè)設(shè)計(jì)到底是怎么樣的。你可以用不同的方法來(lái)嘗試各種不同的編程,你也可以采用測(cè)試的方法來(lái)開(kāi)發(fā)這個(gè)程序。設(shè)計(jì)并不只是簡(jiǎn)單 的畫(huà)圖的過(guò)程,要在腦子中想象,怎么樣把這個(gè)軟件做出來(lái),做決定的過(guò)程就是設(shè)計(jì)的過(guò)程。只有你真正的嘗試的時(shí)候,才能夠真正的做到你剛才做的決定到底是正 確的還是不正確的,應(yīng)該做什么樣的決定。

          posted on 2006-06-06 21:36 OMG 閱讀(253) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): <項(xiàng)目>系統(tǒng)構(gòu)架

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          <2006年6月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          常用鏈接

          留言簿(1)

          隨筆分類(lèi)

          隨筆檔案

          IT風(fēng)云人物

          文檔

          朋友

          相冊(cè)

          經(jīng)典網(wǎng)站

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 明光市| 水城县| 侯马市| 墨江| 普洱| 武鸣县| 观塘区| 抚顺县| 紫金县| 宁陕县| 平泉县| 惠东县| 文水县| 闻喜县| 高青县| 佳木斯市| 秦皇岛市| 客服| 同仁县| 金沙县| 县级市| 阳新县| 普安县| 石首市| 石家庄市| 察雅县| 汨罗市| 江山市| 出国| 元谋县| 静乐县| 长葛市| 广宗县| 茶陵县| 湟源县| 民县| 随州市| 清涧县| 临西县| 当涂县| 樟树市|