對軟件項目做開發(fā)計劃也許是最不靠譜的一件事了,由于需求的變動、開發(fā)人員的水平以及如人事變動等不可預測的情況,導致項目的延期成為了家常便飯。而現(xiàn)在的項目管理人員往往是憑經(jīng)驗來制作進度計劃的,經(jīng)驗的確很重要,也是項目進度估算一個不可或缺的基礎條件,但僅僅憑經(jīng)驗來做計劃也會產(chǎn)生以下的一些問題:
創(chuàng)新互聯(lián)建站于2013年創(chuàng)立,公司以成都網(wǎng)站制作、做網(wǎng)站、系統(tǒng)開發(fā)、網(wǎng)絡推廣、文化傳媒、企業(yè)宣傳、平面廣告設計等為主要業(yè)務,適用行業(yè)近百種。服務企業(yè)客戶上千,涉及國內(nèi)多個省份客戶。擁有多年網(wǎng)站建設開發(fā)經(jīng)驗。為企業(yè)提供專業(yè)的網(wǎng)站建設、創(chuàng)意設計、宣傳推廣等服務。 通過專業(yè)的設計、獨特的風格,為不同客戶提供各種風格的特色服務。
1、對項目的理解不同,每個項目管理人員的開發(fā)經(jīng)歷與項目經(jīng)歷都是不同的,你有你的計劃方法,我有我的計劃方法,不同的人對同一項目做計劃時可能對于人員的安排與項目的完成日期的分歧會很大。所以如果碰到中途換人的情況,那軟件進度計劃這個事就說不清楚了。
2、漏掉必須完成的需求,如果項目管理人員每次都憑經(jīng)驗來對項目做計劃,那么當項目規(guī)模變得很大時,勢必會遺漏一些需求的細節(jié),而這些致命的細節(jié)往往會在設計后期或開發(fā)后期才會知道,嚴重的可能導致整個軟件架構(gòu)重構(gòu)。
3、沒有一套模型,項目管理人員僅憑經(jīng)驗來做計劃是會缺少依據(jù)和可追溯性的,雖然對于每個任務時間的估算大部分情況是靠管理人員的經(jīng)驗與開發(fā)人員的承諾,但任務之間的順序安排,任務之間的依賴關(guān)系,人員數(shù)量對項目開發(fā)效率的影響是需要一套方法來描述清楚的。而可追溯性則表現(xiàn)為為什么我要這么安排的層面上。
為了解決上面的一些問題,我們需要引入一套模型(可以理解為一種思想)來完善我們的進度計劃估算工作。這里,我以一個簡單的B2C系統(tǒng)作背景,描述其中的一些主要模塊,與大家一起探討下如何為一個web軟件項目的開發(fā)做計劃。
首先,當然是要明確我們需要做什么,也就是確定需求。我們的需求及用例是這樣的:
用戶操作
注冊:用戶注冊為網(wǎng)站會員。
登錄:用戶登錄網(wǎng)站,登錄后能購買產(chǎn)品,查看相關(guān)用戶資料。
加入購物車:用戶將產(chǎn)品加入購物車后可一起支付購買。
購買(生成訂單,支付):付款及生成訂單。
查看/修改用戶資料:通過用戶資料頁面查看/修改用戶資料。
查看購物車:看看準備買的東西。
查看訂單:看看已經(jīng)買過的東西。
用戶用例
管理員操作
產(chǎn)品
操作產(chǎn)品(操作指增、刪、改操作):添加、修改、刪除提供給用戶購買的產(chǎn)品。
操作產(chǎn)品所屬廠商:添加、修改、刪除產(chǎn)品所屬的廠商。
操作產(chǎn)品屬性:添加、修改、刪除產(chǎn)品的屬性。
操作產(chǎn)品類別:添加、修改、刪除產(chǎn)品的類別。
配件
操作運送方式:添加、修改、刪除提供的運送方式,如是順豐還是UPS。
操作國家地區(qū):添加、修改、刪除國家/區(qū)域,網(wǎng)站國家區(qū)域不同,收稅也不同。
操作語言:添加、修改、刪除網(wǎng)站支持的語言,如中文和英文顯示。
操作稅:設置稅的類別,不同的產(chǎn)品可以附加不同的稅費。
操作系統(tǒng)設置,如設置商店名稱等:網(wǎng)站的全局設置。
操作貨幣:設置用戶支付的幣種。
用戶
操作用戶:添加、刪除、修改用戶資料。
操作用戶組:添加、刪除、修改用戶所屬的用戶組,不同用戶組的用戶在購買商品時享受的折扣不同。
報表
操作訂單報表:添加、刪除、修改、查詢用戶訂單。
管理員用例
通過用例,我們可以提煉出業(yè)務對象:
1 用戶
2 用戶組
3 產(chǎn)品
3.1 產(chǎn)品分類
3.2 廠商
3.3 產(chǎn)品屬性
4 訂單
5 配件
5.1 國家
5.2 語言
5.3 物流
5.4 稅
5.5 貨幣
5.6 支付方式
在確定業(yè)務對象后,我們需要知道每個對象的具體職責和用例的基本執(zhí)行流程,可以用活動圖來達到這個目的。
活動圖顯示了核心用例購買商品的基本流程,從圖中可以發(fā)現(xiàn),要完成購買用例,我們必須先建立“產(chǎn)品對象”,“物流對象”,“支付方式對象”,“交易對象”,“訂單對象”?!百徫镘噷ο蟆庇捎谑强蛇x步驟,所以可以單獨建立。
物流對象、交易對象、支付方式對象,是比較獨立的對象,沒有依賴。而要建立產(chǎn)品對象,購物車對象,訂單對象都是有先決條件的。下面我們來依次分析這幾個對象。分析的依據(jù)就是我們的用例圖。我們可以利用表格來表達我們的分析結(jié)果:
從上表可知對象間的相互關(guān)系。那么,在開發(fā)過程中,我們將從簡單對象,也就是沒有依賴項的對象開始設計,然后再來設計復雜對象。簡單對象可以并行設計,也可依次設計,視具體人員決定。根據(jù)業(yè)務對象表,我們可推導出出版的關(guān)鍵路徑圖。如下圖所示:
點擊此處查看圖
上圖初步的展示了開發(fā)步驟,在理想狀態(tài)下,獨立對象可以同步開發(fā),依賴對象在前置對象開發(fā)完成后再開發(fā)。圖中的虛線箭頭表示隱性依賴,意思是在此期間并沒有實際的任務在做,而只是表達一種依賴關(guān)系,表明在進行箭頭后任務之前,必須完成箭頭前的任務。但從圖中我們也發(fā)現(xiàn)了,還沒有計劃安排開始時間及完成時間,每個任務的持續(xù)時間也沒有計算出來。所以下面我們來開始估算每個任務的開發(fā)時間。
對于任務時間的估算,有一種稱為功能點的估算方法。下面來詳細介紹下這個估算方法,請看下面的兩個公式:
未調(diào)整的功能點數(shù) = a1 x Inp+ a2 x Out + a3 x Inq + a4 x Maf + a5 x Inf
技術(shù)復雜性因子(TCF) = 軟件技術(shù)因素對軟件規(guī)模的綜合影響程度(DI) x 0.01 + 0.65
DI = ΣFi
1<=i<=14
F最小取值為0(對軟件規(guī)模無影響), 最大取值為5(對軟件規(guī)模有很大影響)
功能點數(shù)(FP) = 未調(diào)整的功能點數(shù) x 技術(shù)復雜性因子
Inp為輸入項數(shù),指用戶向軟件輸入的項數(shù),a1為它的系數(shù)。
Out為輸出項數(shù),指軟件向用戶輸出的項數(shù),a2為它的系數(shù)
Inq為查詢數(shù),指軟件執(zhí)行數(shù)據(jù)查詢,如得到產(chǎn)品信息就是一個查詢,a3為它的系數(shù)。
Maf為文件數(shù)目,a4為它的系數(shù)。
Inf為機器可讀的接口數(shù),如磁盤上數(shù)據(jù)文件的數(shù)量,a5為它的系數(shù)
利用Albrecht & Gaffney 模型
工作量 = -13.39 + 0.0545 x FP
利用Maston, Barnett 和 Mellichamp模型
工作量 = 585.7 + 15.12 x FP
工作量單位為人/月
從上面的公式可以看出,利用不同模型推算出來的工作量差別很大。實際上,沒有一種模型能精確的推算出所有的軟件項目工作量,多數(shù)只是根據(jù)若干應用領域中有限個項目的經(jīng)驗數(shù)據(jù)推導出來的。所以我們在計算時,完全無需照搬模型的算法,而是應該吸收模型所代表的思想。所以,下面我們試著用調(diào)整過的公式來計算下每個業(yè)務對象的功能點數(shù)以及工作量。
在我們自己的計算中,打算去掉Maf與Inf這兩個參數(shù)。所以,未調(diào)整的功能點數(shù) = a1 x 填寫表單數(shù)+ a2 x 數(shù)據(jù)操作數(shù)。對于簡單對象,a1取值4,a2取值5。對于復雜對象,a1取值8,a2取值10。a在這里代表一個人完成任務所需要的小時數(shù)。其中,訂單對象,產(chǎn)品對象為復雜對象,其它對象為簡單對象,由于支付方式、運送方式是涉及到對外API實現(xiàn),購物車是不存在填寫表單與數(shù)據(jù)操作的,所以需要另算。在計算DI時,我們?nèi)∑骄鵉為1.5,代表技術(shù)因素對軟件規(guī)模影響不大。則技術(shù)復雜因子=14*1.5*0.01+0.65=0.86。
填寫表單數(shù)對用戶或管理員填寫的表單進行統(tǒng)計,如用戶注冊需要填寫一張表單,查詢需要填寫一張表單。管理員添加用戶需要填寫一張表單,修改用戶也需要填寫一張表單。
詳細統(tǒng)計請看下表:
由此算出,除開購物車,支付方式,運送方式三個業(yè)務對象的開發(fā),估計需要約416小時。按一天8小時計算,需52人/天,購物車的難度介于復雜對象與簡單對象之間,可以取35。單個支付方式與運送方式,因為可能需要對外聯(lián)調(diào),所以難度可能相當于復雜對象,可以取50。所以如果該系統(tǒng)支持單個支付方式與運送方式,則全部業(yè)務對象估算需要416+35+50+50=551小時≈69人/天
理論上,參與開發(fā)的人數(shù)越多,則軟件開發(fā)速度越快。但事實上,隨著項目規(guī)模的擴大,開發(fā)人員之間的通信開銷也為之增大,所以個人生產(chǎn)率將會下降,以至于開發(fā)時間與從事開發(fā)工作的人數(shù)并不成反比關(guān)系。如果在項目過程中有老員工的離職與新員工的加入等情況,則更會加劇項目的延遲。
假設有P名開發(fā)人員,則項目組成員間的通信路徑的范圍在P~P2/2之間,因為如果項目組每個成員都必須與其他成員溝通,那么通信路徑是P(P-1)/2,而如果項目組每個成員只需與一個同事溝通的話,那么通信路徑將是P-1。由此我們推導出項目總生產(chǎn)率的公式為
Lsum = P(L-l(P-1)的r次方)
L為單個成員理想生產(chǎn)率(不與任何其他成員通信時的生產(chǎn)率)
l為每條通信路徑導致生產(chǎn)率減少量
r為對通信路徑的度量,如每個成員都必須與其他所有成員通信,則r為1
根據(jù)此公式計算,一般項目成員在3~5名的時候總生產(chǎn)率與成本將達到一個比較理想的狀態(tài)。由于在這個例子中的業(yè)務對象較少(當然,在現(xiàn)實項目中,開發(fā)過程不僅僅只有業(yè)務對象,還有數(shù)據(jù)結(jié)構(gòu)設計、模板設計、環(huán)境部署等一系列的工作,而這些工作可能還需要與不同小組的同事溝通協(xié)調(diào)),所以我們假定項目組成員有3人進行業(yè)務對象的開發(fā)。
現(xiàn)在我們得到了總的工作量為69人/天,開發(fā)人數(shù)為3人,那么大概此項工作的全部時間為1個月。所以我們可以按1個月(22天)來安排工作了。根據(jù)工作量的估算,我們先為每個人安排工作,設員工為A, B和C則
A負責: 產(chǎn)品類別/24.08, 產(chǎn)品廠商/28.38,產(chǎn)品屬性/24.08,購物車/35,產(chǎn)品/56.76,語言/24.08 192.38
B負責: 支付方式/50,運送方式/50,貨幣/24.08,國家/區(qū)域/48.16 172.24
C負責: 用戶/42.14,用戶組/24.08,稅/48.16,訂單/72.24 186.62
按每個員工的職責來重新繪制網(wǎng)絡工程圖,如下所示:
點擊此處查看圖
至此,我們確定了工程的關(guān)鍵路徑及具體每個任務的開始結(jié)束日期,而開發(fā)組成員的具體工作任務也分配好了。
在實際的開發(fā)工程中,我們不僅要確認每個業(yè)務對象的具體任務,還有如數(shù)據(jù)對象的確認(從數(shù)據(jù)對象映射到數(shù)據(jù)結(jié)構(gòu)),環(huán)境的配置,單元測試等一系列的工作,這些工作都可以用網(wǎng)絡工程圖的形式來確認相互的完成順序與完成時間,并且網(wǎng)絡工程圖還可以等價轉(zhuǎn)換為更加直觀的甘特圖來表示,從而對我們的項目的進度計劃提供指導與依據(jù)。
文章題目:軟件項目進度計劃估算探討
網(wǎng)頁網(wǎng)址:http://www.rwnh.cn/article14/igicge.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、網(wǎng)站維護、面包屑導航、網(wǎng)站設計公司、網(wǎng)站收錄、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)