<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一切皆可抽象

    大而無(wú)形 庖丁解牛 厚積薄發(fā) 滌慮玄覽
       ::  ::  ::  ::  :: 管理

    透視迭代開(kāi)發(fā)2007-04-23 來(lái)自:java060515


    引子:我們?yōu)槭裁葱枰_(kāi)發(fā)?

      我們都知道,人對(duì)于世界的認(rèn)識(shí)是一項(xiàng)主觀活動(dòng),它受到各種因素的影響,使得我們不能夠一下子對(duì)所要認(rèn)知的事物有一個(gè)清晰的了解。具體到軟件開(kāi)發(fā)中來(lái),我們會(huì)發(fā)現(xiàn),你很難在開(kāi)發(fā)之前弄清楚客戶所有的需求。一方面,客戶對(duì)自己想要什么可能并沒(méi)有一個(gè)明確的想法,這就好比在買(mǎi)衣服的時(shí)候,我們?cè)趯?zhuān)賣(mài)店里看到一個(gè)衣服,會(huì)覺(jué)得自己穿起來(lái)很帥,但是你仍然需要把它真實(shí)的穿在身上才能看到實(shí)際效果,而在你看到這件衣服之前,你能夠僅僅憑著想象在腦海里刻畫(huà)出這件衣服的樣子么?

      其次,軟件工業(yè)中我們講究的是投入和產(chǎn)出比,軟件業(yè)的成本主要是人力資源的成本。這也是軟件項(xiàng)目對(duì)時(shí)間特別敏感的原因。時(shí)間比計(jì)劃延長(zhǎng)一個(gè)月,對(duì)于一個(gè)數(shù)十人的團(tuán)隊(duì)來(lái)說(shuō)就意味著幾十萬(wàn)的成本增加。但是又有誰(shuí)能夠保證自己所做的軟件是完美無(wú)缺的呢?于是很多時(shí)候我們必須對(duì)已經(jīng)開(kāi)發(fā)的部分進(jìn)行修正,而修正就需要時(shí)間。 傳統(tǒng)的開(kāi)發(fā)方式下,很多軟件項(xiàng)目都是在匆忙交付后發(fā)現(xiàn)用戶不滿意,于是繼續(xù)修正,再次引發(fā)用戶的不滿意,再次修正,在這樣反復(fù)地拖延中,客戶和軟件開(kāi)發(fā)商都筋疲力盡。

      我們需要迭代開(kāi)發(fā),是因?yàn)槲覀兩钪獙?duì)事物的認(rèn)知就是一個(gè)探索的過(guò)程,軟件開(kāi)發(fā)也是一樣。在溫博格《探索需求---設(shè)計(jì)前的質(zhì)量》一書(shū)中提到:

      美國(guó)第34任總統(tǒng)艾森豪威爾上將曾經(jīng)說(shuō)過(guò),"計(jì)劃本身什么都不是,而編制計(jì)劃的過(guò)程就是一切"。我們認(rèn)同這樣的說(shuō)法,并把它推廣到需求過(guò)程:產(chǎn)品什么都不是,而開(kāi)發(fā)的過(guò)程就是一切。

      或用另一種方式表達(dá):發(fā)現(xiàn)什么都不是,而發(fā)現(xiàn)過(guò)程(探索過(guò)程)就是一切。

      軟件項(xiàng)目本身的意義就在于和用戶一起探索他們真正需要的東西并且?guī)椭麄儗?shí)現(xiàn)。而這種探索,如同在第一段中我們闡述的那樣,需要不斷的反復(fù),如果我們沒(méi)有做好迭代和反復(fù)的準(zhǔn)備,而是希望一次性的把所有工作都做完并且還做得非常好,結(jié)果可能恰恰相反。

      我們需要迭代開(kāi)發(fā),是因?yàn)槲覀冏非筌浖|(zhì)量的最大化。沒(méi)有人可以制造出完美無(wú)缺的東西,但是我們可以通過(guò)不斷的檢查和反饋,使得那些不適合的東西在早期被暴露出來(lái),迭代給予了我們這樣一種檢查合反饋的機(jī)制,讓我們不必在事情結(jié)束的時(shí)候才驚奇的發(fā)現(xiàn)我們所一直努力在做的東西其實(shí)是一堆廢物。

      實(shí)踐:正確實(shí)施迭代開(kāi)發(fā)

      事實(shí)上在業(yè)界,迭代開(kāi)發(fā)的觀念早已經(jīng)深入人心,然而有多少團(tuán)隊(duì)在正確地實(shí)施著迭代方法呢?有多少團(tuán)隊(duì)通過(guò)迭代得到了他們想要的東西呢?很多人簡(jiǎn)單的把迭代理解為開(kāi)發(fā)的分階段進(jìn)行。我們常常看到有項(xiàng)目經(jīng)理們這樣說(shuō):我們打算通過(guò)4次迭代完成軟件的開(kāi)發(fā),第一次迭代,完成需求分析和軟件設(shè)計(jì),第二次迭代,完成多少多少模塊的開(kāi)發(fā),第三次,完成其他多少模塊的開(kāi)發(fā),第四次,配置,部署,上線,測(cè)試,修正軟件bug。雖然我們言必稱(chēng)“迭代”,但是這樣的迭代和過(guò)去傳統(tǒng)的瀑布型開(kāi)發(fā)有多少區(qū)別?我們又能夠從這樣的偽迭代中得到什么好處呢?

      在本文以下部分將對(duì)迭代開(kāi)發(fā)實(shí)踐中幾個(gè)關(guān)鍵方面進(jìn)行闡述,這幾個(gè)方面我們概括為以下關(guān)鍵詞:變化,周期,目標(biāo),反饋,合作。

      變化
      迭代思想帶給我們最重要的一個(gè)啟示,就是要適應(yīng)變化,要積極、主動(dòng)地?fù)肀ё兓皇蔷芙^變化。

      在過(guò)去的開(kāi)發(fā)中,我們常常會(huì)拒絕變化,以需求分析工作為例,有些項(xiàng)目組在需求分析完成后會(huì)要求用戶簽字,等到交付時(shí),如果客戶有什么意見(jiàn),他們就會(huì)拿出那份客戶已經(jīng)簽字畫(huà)押的文件來(lái)理直氣壯地說(shuō):這是你們簽字過(guò)的東西,我們做的難道不是和這里所說(shuō)的一樣么?

      是的,開(kāi)發(fā)出來(lái)的可能是和需求定義文件的內(nèi)容一樣的,但問(wèn)題是:這份需求定義文件上描述的內(nèi)容是不是真正能夠幫客戶實(shí)現(xiàn)自己的價(jià)值呢?難道我們進(jìn)行軟件開(kāi)發(fā)的目的就是讓客戶在一份他們根本不清楚有什么意義的文件上簽字,然后用這個(gè)來(lái)反駁用戶的真正需求么?我們?cè)谲浖㈨?xiàng)之前總是會(huì)告訴用戶,這個(gè)即將開(kāi)發(fā)的軟件會(huì)幫助他們?nèi)绾稳绾巍N覀冇惺裁蠢碛蔀槲覀冏霾坏竭@一點(diǎn)而理直氣壯地責(zé)備客戶呢?客戶親筆簽名的需求文檔難道不是我們整理出來(lái)并且講解給他們聽(tīng)的么?

      如果一個(gè)軟件項(xiàng)目的目標(biāo)是幫助客戶實(shí)現(xiàn)某一方面的增值,但是這種增值的目的并沒(méi)有達(dá)到,我們就可以認(rèn)為這個(gè)軟件項(xiàng)目是失敗的。即使軟件廠商通過(guò)這個(gè)項(xiàng)目達(dá)到了盈利的目的,滿腹牢騷的客戶也會(huì)把自己的意見(jiàn)傳播出去。而如果軟件廠商認(rèn)為這種事情是天經(jīng)地義的話,那么它在以后的軟件項(xiàng)目中也很難幫助自己的客戶實(shí)現(xiàn)他們想要的價(jià)值。

      我們必須讓自己具有適應(yīng)變化的能力。因?yàn)檫@種變化是客戶需要的,因?yàn)檫@種變化能夠讓軟件更能體現(xiàn)出自己的價(jià)值。我并不是說(shuō)應(yīng)該無(wú)條件地接受這種變化,但是我們可以在事前就這些問(wèn)題和客戶進(jìn)行充分的討論和溝通,讓他們明白,世界總是變化的,需求本身可能會(huì)變化,而這種變化需要人力和物力的支持。讓客戶也能夠適應(yīng)自身的變化,這是非常重要的。

      將剩余的工作列入下一次迭代計(jì)劃中去,
      將本次迭代的結(jié)束時(shí)間向后延遲,等待任務(wù)的完成
      前一種辦法適合于有很大工作量沒(méi)有完成的情況,這可能也同時(shí)說(shuō)明計(jì)劃的制定有問(wèn)題,在制定下次迭代計(jì)劃時(shí)應(yīng)該考慮對(duì)任務(wù)完成時(shí)間進(jìn)行調(diào)整。后一種辦法適合剩余工作量不是很大的情況。

      通常來(lái)說(shuō),一次迭代完成以后應(yīng)該有一個(gè)產(chǎn)品的新版本可用。這也就意味著:將集成和發(fā)布分散到每次迭代中去。借助于一些自動(dòng)化工具(比如ant),我們甚至可以做到每日構(gòu)建。

      一個(gè)迭代周期應(yīng)該有多長(zhǎng)呢?這并沒(méi)有一個(gè)統(tǒng)一的說(shuō)法,而是應(yīng)該視目標(biāo)和可用的資源而定。但是,迭代周期不宜過(guò)長(zhǎng),也不宜過(guò)短。迭代周期過(guò)長(zhǎng)的話,會(huì)延緩反饋的時(shí)間,可能將許多問(wèn)題隱藏或是堆積了起來(lái)。迭代周期過(guò)短,會(huì)讓人身心疲勞,事情難有大的成效。一般來(lái)說(shuō),迭代周期應(yīng)該在2-6周之間。如果安排的迭代周期超過(guò)了兩個(gè)月,你可能就必須審視一下迭代計(jì)劃的合理性了。

      不要認(rèn)為下一次迭代應(yīng)該和上次迭代的時(shí)間差不多,刻板地把所有迭代規(guī)定一個(gè)統(tǒng)一的時(shí)間是一個(gè)很壞的做法。但是你可以把以前迭代周期中的工作效率作為估算下次迭代時(shí)間的一個(gè)依據(jù)。

      目標(biāo)
      一次迭代必須有明確的目標(biāo):我們希望通過(guò)這次迭代達(dá)到什么目的。在制定目標(biāo)時(shí),應(yīng)該同時(shí)考慮另外一個(gè)問(wèn)題:如何檢查該目標(biāo)是否已經(jīng)達(dá)成。這就是所謂的“里程碑”。

      迭代計(jì)劃必須有明確而可行的目標(biāo)。明確的意思是它應(yīng)該是可度量的,不能太模糊,因?yàn)槟愫茈y檢查一個(gè)模糊的目標(biāo)是否達(dá)成。比如,我們可以說(shuō),這次迭代的目標(biāo)是對(duì)xxx方面的需求作進(jìn)一步細(xì)化和評(píng)審,完成xxx模塊的開(kāi)發(fā)以加入到軟件的下一版本中去。這樣的目標(biāo)是明確而且可行的。反過(guò)來(lái),如果我們這樣說(shuō):我們要通過(guò)和用戶的討論明確絕大部分愿景,同時(shí)要有一個(gè)初步的開(kāi)發(fā)。“絕大部分”和“初步”這樣的詞讓人感到困惑:多少是絕大部分呢,在總量尚未明確的前提下,怎么能夠知道完成的確是“絕大部分”而不是“一小部分”?“初步的開(kāi)發(fā)”似乎告訴我們這次開(kāi)發(fā)量比較小,但是具體開(kāi)發(fā)哪個(gè)部分,或者開(kāi)發(fā)到什么程度,并沒(méi)有指出一個(gè)明確的概念。

      由此產(chǎn)生了一個(gè)困惑,軟件項(xiàng)目是一個(gè)不斷探索的過(guò)程,我們?cè)趺茨軌蛎鞔_地對(duì)未來(lái)的事情作安排呢?譬如在項(xiàng)目初始調(diào)查用戶愿景時(shí),為了實(shí)現(xiàn)“明確”的目標(biāo),是否這樣定義任務(wù):完成20%的用戶愿景調(diào)查?

      很顯然,用戶愿景總量到底有多少我們并不知道,所以在這次迭代完成以后如果我們問(wèn):是否真的完成了20%而不是15%?很難得到答案。

      為了避免出現(xiàn)這種情況,你必須換個(gè)角度來(lái)看問(wèn)題,比如我們可以說(shuō):對(duì)xxx部門(mén)和yyy部門(mén)的用戶做愿景調(diào)查。在迭代完成后,可以檢查是否這兩個(gè)部門(mén)所有用戶的訪談,調(diào)查都已經(jīng)完成,是否這些部門(mén)每個(gè)人都認(rèn)為自己表達(dá)了全部的意思。

      所以,如果你發(fā)現(xiàn)很難對(duì)制定的目標(biāo)進(jìn)行度量,那么換一個(gè)角度來(lái)看事情吧,你可能就會(huì)找到一個(gè)合適的表達(dá)方式。如果你從所有的角度都看不到事情是可以度量的,那么這可能意味著這件事情可能還沒(méi)有到應(yīng)該去實(shí)施的地步,這時(shí)你應(yīng)該把它從迭代計(jì)劃中去掉。對(duì)于這種情況,有人可能會(huì)說(shuō):那我們這次迭代可做的事情就很少了,如果真是這樣,那就進(jìn)行一次小的迭代吧,可能把這次迭代的工作做完了以后就會(huì)有更多的工作可以安排了。

      有些項(xiàng)目經(jīng)理在日程表上,很詳細(xì)地寫(xiě)著:第一次迭代,某月某日到某月某日,第二次迭代:某月某日到某月某日,第三次迭代。。。這樣的做法是不恰當(dāng)?shù)摹R驗(yàn)樗僭O(shè)了后面幾次迭代的任務(wù)量,但是實(shí)際上,在前面的工作完成之前,你很難對(duì)以后的工作得到一個(gè)明確地概念。而且在這樣的計(jì)劃上,可能并沒(méi)有用于測(cè)量迭代成果的里程碑,這樣的迭代最后很可能會(huì)演變成為瀑布式的開(kāi)發(fā)。所以,在一次迭代完成之前,不要對(duì)急著去計(jì)劃下次迭代,特別是不要試圖精確定義下次迭代的時(shí)間,因?yàn)槟氵B下次迭代要做什么都還不清楚。

      為什么目標(biāo)的可度量性這么重要呢?在團(tuán)隊(duì)開(kāi)發(fā)中,很多信息因?yàn)槿伺c人的交流不暢而無(wú)法得到正確地反饋,這讓我們沒(méi)有辦法實(shí)時(shí)地掌握項(xiàng)目的進(jìn)展情況,退而求其次,我們必須階段性地了解這些信息。如果目標(biāo)難以度量,迭代結(jié)束后我們很難明確到底有哪些工作沒(méi)有完成,也就無(wú)法看到事情的問(wèn)題所在。

     有些團(tuán)隊(duì)中會(huì)要求每個(gè)成員每天對(duì)自己的工作進(jìn)度以百分比的形式做匯報(bào),他們以為通過(guò)這樣的方式可以確實(shí)的掌握事情的進(jìn)展,但實(shí)際上并不行,因?yàn)檐浖_(kāi)發(fā)中存在很多不確定因素,有時(shí)候我們認(rèn)為事情已經(jīng)完成了一大半,但是可能因?yàn)榧夹g(shù)或者其他的原因發(fā)現(xiàn)這一大半工作方向是錯(cuò)的,這時(shí)候就要推倒重來(lái),而且人們?cè)趨R報(bào)工作量的時(shí)候總是會(huì)有一些感情的因素在里面,這就使那些看似精確的百分比打了個(gè)折扣。

      所以,我們需要更加實(shí)際和細(xì)致地劃分工作,對(duì)目標(biāo)的完成情況進(jìn)行度量。這也是迭代周期不能太長(zhǎng)的一個(gè)原因:如果你把大量有前后關(guān)聯(lián)的工作劃分入一個(gè)迭代周期,在設(shè)定的結(jié)束到來(lái)時(shí),突然發(fā)現(xiàn)只完成了一小部分,這時(shí)候雖然亡羊補(bǔ)牢仍然可以,但是中間浪費(fèi)了大量的人力和物力。

      反饋
      一個(gè)男人在大街上走著,他并沒(méi)有發(fā)現(xiàn)褲子上的拉鏈已經(jīng)松開(kāi)了,雖然看到這個(gè)情況的人有很多,但他們有各種各樣的擔(dān)心,比如不想多管閑事,怕讓那個(gè)男人難堪,或者干脆就是想看笑話。結(jié)果就是這個(gè)人繼續(xù)穿著一條敞開(kāi)拉鏈的褲子在大街上行走。

      這件事情至少帶給我們兩個(gè)啟示:1,得到反饋是重要的;2,要想得到正確的,有價(jià)值的反饋,你需要其他人的配合。

      對(duì)于用戶需求來(lái)說(shuō),沒(méi)有用戶及時(shí)地反饋,我們就可能把那些不符合需求的開(kāi)發(fā)繼續(xù)下去,由于軟件中各種功能和模塊的依賴(lài)性,這種不符合最后可能被放大到數(shù)倍。越遲得到反饋,問(wèn)題可能就越大。

      軟件開(kāi)發(fā)中一個(gè)很重要的概念是“可行性”和“合理性”,無(wú)論我們做需求,設(shè)計(jì)還是開(kāi)發(fā),集成,測(cè)試,都會(huì)遇到這兩個(gè)問(wèn)題。有些事情的可行性和合理性是我們可以通過(guò)事前的分析進(jìn)行判斷的,但是有些問(wèn)題就必須有一定的實(shí)踐作為基礎(chǔ)。這也是一個(gè)反饋的問(wèn)題。譬如說(shuō)在某項(xiàng)目中技術(shù)架構(gòu)師決定采取一個(gè)技術(shù)架構(gòu),但是經(jīng)過(guò)一些階段的開(kāi)發(fā)發(fā)現(xiàn)它有一些技術(shù)上問(wèn)題不能實(shí)現(xiàn)用戶的關(guān)鍵需求,這時(shí)候就必須放棄它。

      “反饋”意味著兩個(gè)意思,對(duì)一件事情的調(diào)查和根據(jù)調(diào)查做出決策。

      在意識(shí)到反饋的重要性之后,你會(huì)要求所有的人都對(duì)迭代的成果做出反饋。可能存在的問(wèn)題是,是不是所有的人都意識(shí)到了反饋的重要性并且認(rèn)真地去做了呢?如果客戶認(rèn)為他們只需要對(duì)迭代出來(lái)的產(chǎn)品“看看而已”,那么你就很難了解他們一些深層次的想法。再比如一次迭代中某些模塊開(kāi)發(fā)的進(jìn)度比較慢,開(kāi)發(fā)人員可能會(huì)抱怨技術(shù)方案不能滿足要求,而實(shí)際的原因可能是設(shè)計(jì)不合理或者根本就是有人沒(méi)有認(rèn)真工作。

      中國(guó)國(guó)家隊(duì)前主教練米盧曾經(jīng)說(shuō)過(guò)“態(tài)度決定一切”,反饋?zhàn)鳛榈_(kāi)發(fā)中至關(guān)重要的一個(gè)方面,必須得到足夠的重視。

      獲得反饋的方式和對(duì)于反饋信息的分析是另外一個(gè)重要的方面。一般來(lái)講,根據(jù)軟件開(kāi)發(fā)角色的不同,我們非常關(guān)注的是兩類(lèi)人的反饋:項(xiàng)目組之外的客戶和項(xiàng)目組之內(nèi)的各種實(shí)施人員。

      軟件項(xiàng)目一般都會(huì)要求客戶方安排專(zhuān)門(mén)的業(yè)務(wù)人員進(jìn)行配合,在迭代開(kāi)發(fā)中,這種配合不只是進(jìn)行需求的整理和發(fā)掘,還包括對(duì)已經(jīng)完成軟件版本的評(píng)測(cè)。在這個(gè)過(guò)程中應(yīng)該有需求分析師的配合。

      在每次迭代完成之后,軟件項(xiàng)目組應(yīng)該有一些總結(jié)和分析活動(dòng)。通過(guò)這些總結(jié)和分析,找到做得好和做得不好的方面。

      在非迭代式的開(kāi)發(fā)中,也有反饋的環(huán)節(jié)。比如通常在軟件交付階段會(huì)有一個(gè)試用期讓用戶提出意見(jiàn)。而軟件團(tuán)隊(duì)在各種開(kāi)發(fā)中都會(huì)有一些總結(jié)活動(dòng)。迭代式開(kāi)發(fā)的獨(dú)特之處在于盡量早地引入反饋機(jī)制;使得反饋機(jī)制更加制度化;并且,更加快速和靈活地分析這些反饋,把得到的結(jié)論應(yīng)用到下一階段的開(kāi)發(fā)中去。

      對(duì)于一些機(jī)制引起的問(wèn)題,比如組織結(jié)構(gòu)不合理,角色分配不明確之類(lèi)。最好有一個(gè)明確的問(wèn)題記錄表。在每次迭代完成以后將這些問(wèn)題記錄下來(lái),同時(shí)在下次迭代中努力改善它。如果相同的問(wèn)題連續(xù)出現(xiàn)在幾次迭代中,可能就說(shuō)明項(xiàng)目管理出了問(wèn)題。

      合作
      軟件團(tuán)隊(duì)中的合作是人們一直都在提倡的。我們?cè)谶@里提到“合作”的意思并不只包含團(tuán)隊(duì)內(nèi)部的協(xié)作,還包括和客戶的合作。

    迭代開(kāi)發(fā)需要快速反應(yīng),這需要各種不通角色人員的配合。如果人們做事情總是拖拖拉拉,就會(huì)延緩軟件項(xiàng)目的進(jìn)度。而且每個(gè)人對(duì)自己在迭代中應(yīng)該做什么事情必須很清楚,這需要事前的準(zhǔn)備和角色的合理分配。

      迭代需要用戶的配合,實(shí)際上最好能夠有客戶方真正的系統(tǒng)使用者參加到迭代過(guò)程中來(lái),因?yàn)樗麄兪亲钣邪l(fā)言權(quán)的。很多項(xiàng)目中會(huì)讓項(xiàng)目經(jīng)理或是系統(tǒng)分析師擔(dān)當(dāng)客戶代表的角色,這樣做有很多弊病。有時(shí)出于各種原因客戶確實(shí)不能到現(xiàn)場(chǎng)配合的,我們也可以通過(guò)其他的途徑獲得客戶反饋。比如一個(gè)階段迭代完成以后,可以把相關(guān)操作用截屏加文字說(shuō)明的方式發(fā)給客戶,讓他們對(duì)產(chǎn)品有一個(gè)直觀的印象。

      為了讓團(tuán)隊(duì)能夠有效快速地配合,應(yīng)該盡可能使用各種自動(dòng)化工具。比如自動(dòng)化測(cè)試管理工具,以及配置管理,集成以及發(fā)布之類(lèi)的工具。通過(guò)對(duì)這些工具的有效應(yīng)用,使得各個(gè)成員能夠快速獲得信息。

      迭代開(kāi)發(fā)要擁抱變化,主動(dòng)適應(yīng)變化。要讓每個(gè)參與者都認(rèn)識(shí)到這一點(diǎn):不能夠固步自封,或者滿足于現(xiàn)有的成就,不去思考可改進(jìn)的地方。從管理者的角度上,必須重視每一個(gè)反饋信息。

      迭代開(kāi)發(fā)追求對(duì)任務(wù)的度量。很多組織會(huì)把這種度量和員工的績(jī)效考評(píng)聯(lián)系起來(lái)。這種做法可能是合適的,但是如果只是簡(jiǎn)單衡量工作量或者工作完成速度和質(zhì)量,有可能會(huì)比較片面。畢竟軟件開(kāi)發(fā)是一個(gè)環(huán)環(huán)相扣的過(guò)程,表面上來(lái)看這個(gè)環(huán)節(jié)處理不好,實(shí)際上可能是準(zhǔn)備工作做得不好,或者其他人的配合不好。

      所以如果在迭代過(guò)程中出現(xiàn)了問(wèn)題,一定要客觀地分析,特別是應(yīng)該挖掘?qū)е逻@些問(wèn)題出現(xiàn)的深層次原因。譬如在一次迭代中測(cè)試人員發(fā)現(xiàn)了一些bug,但是兩次迭代過(guò)去了,這些bug仍然存在,這就說(shuō)明對(duì)bug的處理不夠迅速(當(dāng)然如果因?yàn)槟承┰蜻@些事情被故意推遲了的情況不算)。這時(shí)就必須分析一下到底是什么原因造成了信息的不通暢。而不能簡(jiǎn)單地批評(píng)相關(guān)責(zé)任人。

      總結(jié)
      本文對(duì)迭代開(kāi)發(fā)的五個(gè)關(guān)鍵(變化,周期,目標(biāo),反饋,合作)方面進(jìn)行了討論。作為一種方法論,迭代開(kāi)發(fā)的好處在于它使軟件團(tuán)隊(duì)變得更加靈活。在實(shí)施迭代開(kāi)發(fā)的過(guò)程中,應(yīng)注意不能流于形式化,切實(shí)做好每個(gè)環(huán)節(jié)的工作,這樣才能獲得滿意的結(jié)果。


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲欧洲免费无码| 亚洲精品V欧洲精品V日韩精品| 叮咚影视在线观看免费完整版| 亚洲精品成a人在线观看夫| 亚洲成年人在线观看| 亚洲国产婷婷综合在线精品| 99在线视频免费观看视频| 日韩电影免费在线观看| 一级成人a免费视频| 国产天堂亚洲国产碰碰| 亚洲 日韩经典 中文字幕 | 亚洲黄页网在线观看| 99亚洲精品高清一二区| 亚洲午夜爱爱香蕉片| 国产jizzjizz视频全部免费| 欧美三级在线电影免费| 五月亭亭免费高清在线| 久久精品无码精品免费专区| 好吊色永久免费视频大全| 免费国产va在线观看| 国产成人亚洲综合无| 亚洲国产成人AV在线播放| 亚洲粉嫩美白在线| 亚洲国产综合第一精品小说| 亚洲春色另类小说| 亚洲色图古典武侠| 99人中文字幕亚洲区| 亚洲第一区视频在线观看| 自怕偷自怕亚洲精品| 99久久精品国产亚洲| 亚洲AV无码一区二区二三区软件| 中文字幕精品亚洲无线码一区| 精品亚洲成α人无码成α在线观看| 四虎影视精品永久免费| 免费国产成人高清在线观看麻豆| 搡女人免费免费视频观看| 中文字幕免费在线播放| 国产成人无码区免费内射一片色欲 | 亚洲精品国产suv一区88| 亚洲Av永久无码精品黑人 | 无码人妻精品一二三区免费|