快速軟件開發(fā) 學(xué)習(xí)筆記 之五第7章 Estimation(軟件估算)7.1 軟件估算的故事做軟件估算是很困難的,但許多人(包括各級軟件經(jīng)理、客戶和開發(fā)人員)都不明白軟件估算為什么會如此困難。軟件估算難做的原因在于:軟件開發(fā)是一個(gè)gradual refinement(逐漸改進(jìn))的過程。由于開始時(shí)對待開發(fā)軟件的認(rèn)識比較模糊,所有對開發(fā)時(shí)間和工作量的估算也比較模糊。只有隨著對軟件本身的認(rèn)識逐漸清晰,估算才可能逐漸清晰。這其實(shí)意味著軟件估算是一個(gè)逐漸改進(jìn)的過程,這個(gè)過程可以用下圖所示的估算收斂圖來表示。 估算收斂圖告訴我們:對整個(gè)項(xiàng)目的估算應(yīng)該是開始時(shí)比較籠統(tǒng),隨著項(xiàng)目的進(jìn)行才逐漸變得準(zhǔn)確起來。 鑒于軟件估算是一個(gè)動(dòng)態(tài)過程,將在整個(gè)項(xiàng)目過程中得到改進(jìn),因此應(yīng)該在軟件項(xiàng)目的每個(gè)major milestone到達(dá)時(shí)修正估算,以獲得更準(zhǔn)確的估算,并向客戶匯報(bào)最新的估算結(jié)果。 7.2 軟件估算的過程與技巧軟件估算的過程如下圖所示。 所謂product size(產(chǎn)品規(guī)模),是指某個(gè)軟件項(xiàng)目在非常普通的意義上的total scope(總范圍)。它包含feature set的深度和廣度,以及項(xiàng)目的難度與復(fù)雜度。項(xiàng)目早期考察product size的最準(zhǔn)確的方法是function point(功能點(diǎn));而當(dāng)項(xiàng)目進(jìn)展到設(shè)計(jì)階段時(shí),product size一般通過模塊數(shù)和class的數(shù)量來度量;而當(dāng)項(xiàng)目進(jìn)展到實(shí)現(xiàn)與測試階段時(shí),product size一般由代碼行數(shù)來度量。 估算effort(工作量)就是基于對產(chǎn)品規(guī)模的估算結(jié)果去估算項(xiàng)目需要多少人月可以完成。常用的工作量估算方法包括: l 利用估算軟件從size estimate直接得到effort estimate。 l 利用表7-1將以代碼行衡量的size estimate轉(zhuǎn)換成effort estimate。 l 使用你所在組織的歷史數(shù)據(jù)來確定先前的項(xiàng)目完成相同product size所花費(fèi)的工作量。除非你有令人信服的理由表明新項(xiàng)目和以前挖規(guī)模的項(xiàng)目是有區(qū)別的,否則我們假定它們的工作量是成正比的。 軟件項(xiàng)目估算的第三步是得到schedule estimate。常用的進(jìn)度估算方法包括: l 利用組織的歷史數(shù)據(jù)。 l 利用下面的公式:進(jìn)度(單位:月)= 3.0 x 人月1/3。例如,如果你已估算出一個(gè)項(xiàng)目要65人月,那么這個(gè)公式打出最佳進(jìn)度是12個(gè)月(3.0 x 651/3)。它還暗示最佳團(tuán)隊(duì)大小是5或6個(gè)人員(65/12)。 l 利用表7-1進(jìn)行估算。
表 7-1 常規(guī)進(jìn)度估算表
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||