亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

探秘軟件開發(fā)的另一極(1)

 更新時間:2006年12月17日 00:00:00   作者:  
  有人形象地將“瀑布式”開發(fā)與“敏捷開發(fā)”描述成為軟件開發(fā)的兩極。瀑布式開發(fā)從開發(fā)伊始就定義出軟件架構(gòu),然后進(jìn)行模塊開發(fā)與組裝。敏捷開發(fā)則根據(jù)細(xì)化的需求直接開發(fā)軟件,并利用迭代方式逐漸組建出大的軟件系統(tǒng)。

  對于瀑布式開發(fā),人們耳熟能詳。但是對于敏捷開發(fā)這一極,可能所知甚少。日前,ThoughtWorks首席科學(xué)家Martin Fowler、ThoughtWorks中國公司總經(jīng)理Sidney G.Pinney與中國計(jì)算機(jī)報(bào)高級副總編郭旭的一番對話將幫助你了解敏捷開發(fā)的奇妙世界。

  敏捷開發(fā)與人

  面對軟件成敗的關(guān)鍵因素是什么這一問題,在軟件架構(gòu)、開發(fā)方法與人三個因素中,Martin Fowler毫不猶豫地選擇了人。那么敏捷開發(fā)與人是一個什么樣的相互依存關(guān)系呢?

  郭旭:您曾提到軟件開發(fā)過程中人最重要。那么,相對于傳統(tǒng)的開發(fā)方法而言,敏捷開發(fā)對于開發(fā)團(tuán)隊(duì)的人員有些什么特殊的要求?

  Martin Fowler:目前為止,我們還沒有相關(guān)驗(yàn)證表明什么樣的人能在敏捷方法里面表現(xiàn)得更好。但是有一點(diǎn)值得注意,不管采用什么樣的方法,人的素質(zhì)與水平都會對項(xiàng)目造成至關(guān)重要的影響。

  郭旭:傳統(tǒng)的軟件開發(fā)方法是將架構(gòu)設(shè)計(jì)與程序開發(fā)分開的。架構(gòu)設(shè)計(jì)往往需要具有較高造詣的架構(gòu)師來實(shí)現(xiàn),需要他對軟件的整體結(jié)構(gòu)非常熟悉,而程序開發(fā)可能只需要開發(fā)人員掌握編程語言就可以了,那么敏捷開發(fā)對開發(fā)人員的要求是怎樣的呢?

  Martin Fowler:首先軟件的設(shè)計(jì)和編程這兩件事情本來就是非常接近,很難區(qū)分開來。傳統(tǒng)軟件開發(fā)方法中一定要在這兩者之間劃分一條線,說這部分是設(shè)計(jì),那部分是編程,造成的結(jié)果往往不是特別好,常常導(dǎo)致一些脫離實(shí)際的設(shè)計(jì)和脫離設(shè)計(jì)構(gòu)想的編程實(shí)現(xiàn),我們在很多項(xiàng)目中親眼目睹了這些方面的實(shí)例。當(dāng)一個架構(gòu)師脫離編程實(shí)踐很長時間之后,他做出來的架構(gòu)設(shè)計(jì)往往變得不切實(shí)際,讓程序員很難實(shí)現(xiàn)。

  郭旭:對于一個企業(yè)的軟件項(xiàng)目,其業(yè)務(wù)人員參與與否將決定著敏捷開發(fā)的成功與否嗎?

  Sidney G.Pinney:如果說業(yè)務(wù)部門能夠參與到開發(fā)過程中與開發(fā)團(tuán)隊(duì)一起工作的話,敏捷方法將給予他們最大的參與機(jī)會。他們將能夠在最短的時間內(nèi)看到一個軟件是如何由腦子里的想法變成草圖,再變成程序,最后變成一個可以用的軟件,看到整個系統(tǒng)如何由一小塊一小塊的功能組合起來變成一個大的應(yīng)用程序,并享受這樣一個樂趣,親眼看到自己在業(yè)務(wù)上的需求如何變成一個實(shí)實(shí)在在的軟件。

  相反,如果業(yè)務(wù)人員不愿意參與到軟件的開發(fā)過程中,那么敏捷開發(fā)是很難將一些好的開發(fā)方法貫徹進(jìn)開發(fā)過程中的。我個人認(rèn)為,如果業(yè)務(wù)人員對軟件不感興趣,不想跟開發(fā)人員溝通,不管通過什么樣的軟件開發(fā)方法都不可能得到很好的軟件。

  郭旭:在采用敏捷方法實(shí)施系統(tǒng)開發(fā)時,是否要求開發(fā)團(tuán)隊(duì)所有人在個人素質(zhì)、編程能力上都有較高的水準(zhǔn)?如果他們的水平高低不同是否會影響系統(tǒng)開發(fā)的效果?

  Sidney G.Pinney:如果團(tuán)隊(duì)的成員都在一個水平上,并且是高水平上,當(dāng)然是有它的好處。但是對于一個團(tuán)隊(duì)來講,更多的情況是,團(tuán)隊(duì)中有一些人是比較資深的、高水平的,另外一些人則是水平較低、缺乏經(jīng)驗(yàn)的。當(dāng)這樣兩組人結(jié)合成一個團(tuán)隊(duì)進(jìn)行項(xiàng)目開發(fā)時,首先應(yīng)當(dāng)是新手向高水平成員學(xué)習(xí),這是毫無疑問的。但是,某種程度上高水平成員也需要向新手學(xué)習(xí),因?yàn)樾率值乃枷脒€處在一個新鮮的狀態(tài),腦子里不存在一些思維定式。他雖然可能不知道應(yīng)該做哪些事情,但是可能會有非常新鮮的想法。人是開發(fā)過程中最重要的因素,在整個團(tuán)隊(duì)進(jìn)行協(xié)作開發(fā)時,應(yīng)當(dāng)盡量讓每個成員發(fā)揮出最大的能量。

  誰更適合敏捷方法

  作者:李琨

  隨著敏捷開發(fā)漸成氣候,許多人提出了這樣的疑問:敏捷開發(fā)是否適合自己的研發(fā)團(tuán)隊(duì),適合自己的企業(yè)?

  郭旭:事實(shí)上,目前使用敏捷開發(fā)的人依然是少數(shù)。既然是一個很好的方法,為什么沒有被開發(fā)人員廣泛采用呢?企業(yè)用戶為何也甚少使用它?

  Martin Fowler:敏捷開發(fā)仍然是一種比較新的方法。對于企業(yè)客戶而言,要采用這種方法實(shí)施軟件開發(fā),就需要從事業(yè)務(wù)的人與實(shí)施開發(fā)的技術(shù)人員更加緊密地結(jié)合在一起工作,這將需要企業(yè)員工付出很大工作量,這種工作方式被接受也需要一個過程。所以即便有越來越多的人對敏捷開發(fā)很感興趣,但是到目前為止也只是少數(shù)人在采用它。

  郭旭:具體到應(yīng)用,您覺得什么樣的企業(yè)、什么樣團(tuán)隊(duì)、什么樣的項(xiàng)目更適合使用敏捷開發(fā)這種方法呢?

  Sidney G.Pinney:實(shí)施敏捷開發(fā)會給企業(yè)帶來很多影響與變化。一個好的企業(yè)應(yīng)該是樂于接受變化的企業(yè),愿意通過不斷地改進(jìn)軟件來促進(jìn)企業(yè)變化,并且能夠從這種變化中感受到一種興奮、快樂。也就是說,敏捷開發(fā)要求一個企業(yè)擁有適應(yīng)變化的能力,它給企業(yè)帶來的是擁抱變化的能力。因此,適合使用敏捷開發(fā)的企業(yè),一定是一個愿意接受變化的企業(yè)。如果說企業(yè)更愿意看到自己的業(yè)務(wù)一萬年不變,那么給它一個像敏捷開發(fā)這樣靈活的方法沒有意義。

  郭旭:剛才說到在敏捷開發(fā)過程中人是最重要的因素,與傳統(tǒng)的軟件開發(fā)方法相比,知識庫更多地是積累在開發(fā)人員的腦海中,而不是一堆需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、測試報(bào)告等文檔。但是當(dāng)一個項(xiàng)目結(jié)束以后,項(xiàng)目出現(xiàn)問題,或者需要重新進(jìn)行軟件變更與維護(hù)時,發(fā)覺對該項(xiàng)目有深刻了解的開發(fā)人員已經(jīng)不能回來繼續(xù)提供服務(wù)時,該怎么辦?

  Sidney G.Pinney:確實(shí),在使用敏捷方法開發(fā)軟件時,產(chǎn)生的文檔非常少是毫無疑問的。因?yàn)槲覀冇眉夹g(shù)的手段把更多的知識固化在這個項(xiàng)目中。后來者可以通過閱讀代碼或者是察看項(xiàng)目本身了解到項(xiàng)目的很多知識。而對于那些不能在代碼中體現(xiàn)出來的知識,我們會采用交流方式記錄這些知識。在ThoughtWorks的標(biāo)準(zhǔn)工作方法中,有一個專門業(yè)務(wù)流程用來記錄相應(yīng)文檔,幫助客戶保留關(guān)鍵文檔。而這些文檔也往往是客戶真正需要的。

  為什么說這些文檔是客戶真正需要的呢?因?yàn)檫@些都是開發(fā)團(tuán)隊(duì)在實(shí)施開發(fā)過程遇到的真正難題,由于當(dāng)時不明白,才記錄下來。團(tuán)隊(duì)已經(jīng)掌握的知識只須固化在項(xiàng)目內(nèi)就可以,而不明白的部分可能是接下來接手項(xiàng)目的人同樣不明白的地方。在傳統(tǒng)的軟件開發(fā)過程中留下來的例如詳細(xì)設(shè)計(jì)等文檔,從知識上來講,對于許多人來講往往是多余的。與此相對,敏捷方法留下的文檔幾乎是沒冗余的。

  敏捷開發(fā)如何前進(jìn)

  至今,仍然只有少部分人在使用敏捷開發(fā)。敏捷開發(fā)應(yīng)當(dāng)如何發(fā)展并尋找到自己的商業(yè)價值呢?

  郭旭:敏捷開發(fā)方法解決了軟件的適應(yīng)性問題,但是我們知道軟件工程里軟件的可復(fù)用性也是很關(guān)鍵的。請問Martin Fowler先生,軟件的適應(yīng)性和軟件的可復(fù)用性哪個更重要呢?

  Martin Fowler:應(yīng)當(dāng)說軟件的可復(fù)用必須建立在軟件是可用的基礎(chǔ)上,軟件首先要解決可用性問題,可復(fù)用性對軟件本身提出了更高的要求,更多的軟件是不具備可復(fù)用能力的。

  郭旭:軟件的可復(fù)用性與適用性解決的是否是不同領(lǐng)域的問題?

  Martin Fowler:這兩者相對獨(dú)立,并具備太多的可比性。敏捷方法不但能解決軟件的適應(yīng)性,同樣也能實(shí)現(xiàn)軟件的可復(fù)用性。

  現(xiàn)在有很多人也用敏捷的方法開發(fā)可復(fù)用的軟件,比如一些Java框架也是采用敏捷方法開發(fā)的,具有很強(qiáng)的可復(fù)用性,而且很多開源軟件也采用了大量的敏捷實(shí)踐,雖然他們并沒有明確提出采用哪種方法,但是其開發(fā)特征具有敏捷的特征。

  郭旭:如果在項(xiàng)目開發(fā)過程中,ThoughtWorks幫助客戶學(xué)會敏捷開發(fā)的方法,客戶將不再需要ThoughtWorks,似乎ThoughtWorks的商業(yè)價值也就此中止。相反如果不教會客戶,將導(dǎo)致這樣一種情況的出現(xiàn),客戶只要有一點(diǎn)業(yè)務(wù)變化或需求,就需要不斷地尋求ThoughtWorks的幫助,讓ThoughtWorks將該客戶綁定,持久實(shí)現(xiàn)商業(yè)價值。在實(shí)際項(xiàng)目運(yùn)作中,ThoughtWorks是如何實(shí)現(xiàn)自身商業(yè)價值的?

  Sidney G.Pinney:我們最希望的工作方式是進(jìn)入這個項(xiàng)目和客戶團(tuán)隊(duì)一起工作,開發(fā)出客戶需要的頭一兩個版本,與此同時提高客戶團(tuán)隊(duì)的開發(fā)能力,讓他們能夠有能力把后續(xù)的開發(fā)繼續(xù)進(jìn)行下去,然后我們將離開并尋找下一個項(xiàng)目。因?yàn)閷τ赥houghtWorks人來講,更喜歡去接受新的業(yè)務(wù)、新的技術(shù)、新的挑戰(zhàn)。

  因此,我們不太喜歡在一個項(xiàng)目上停留非常長的時間,這會讓我們感覺有些缺乏挑戰(zhàn)。所以我們更愿意這樣做,就是與客戶團(tuán)隊(duì)共同工作一段時間,教會客戶團(tuán)隊(duì)敏捷開發(fā)方法,以后選擇離開這個項(xiàng)目。ThoughtWorks的商業(yè)價值不是在于給客戶做持續(xù)不斷的系統(tǒng)維護(hù),而是在于教會越來越多的人如何去采用敏捷開發(fā),帶給他們敏捷開發(fā)的價值。(n101)

  作者:李琨

相關(guān)文章

最新評論