13.2項目計劃
里程碑(Milestone),或者說項目的階段,是軟件計劃的具體單位。說穿了,就是分階段控制軟件項目。我們管理項目的方法,就是決定并安排一個里程碑里要實現(xiàn)的功能,如果在里程碑內(nèi)不能完成所有的任務(wù),我們必須考慮把任務(wù)挪到下一個里程碑中。
在軟件項目的初期,由于團隊并沒有得到具體和清晰的功能需求,因此不能指望能簡單地根據(jù)一個數(shù)學(xué)公式:
項目長度 = f(功能需求)
來決定整個項目的長度。
正如前面提到的,軟件項目有日期驅(qū)動和功能驅(qū)動兩種,對于功能驅(qū)動的項目,可以采用這樣的步驟:
?。?)從功能需求說明中,得到場景的大致數(shù)量,把場景分解為任務(wù),估計任務(wù)的時間,除以團隊開發(fā)人員的數(shù)量,得到T1;
(2)從功能需求說明中得到服務(wù)質(zhì)量需求的數(shù)目(Quality of Service),把QoS分解為任務(wù),估計任務(wù)的時間,除以團隊開發(fā)人員的數(shù)量,得到T2。
(3)規(guī)劃解決缺陷的時間(穩(wěn)定階段),S。
(4)規(guī)劃測試QoS 的時間(因為大部分的QoS測試都要在大部分功能完成或穩(wěn)定時才能進行),Q。
項目的總時間 = T1 + T2 + S + Q
然后可以根據(jù)時間的要求(即使項目是功能驅(qū)動,也要有時間要求),決定項目需要多少個里程碑,以及里程碑的長度。一個里程碑可以持續(xù)2~6個星期,少于2個星期,人員剛剛啟動,就要結(jié)束,沒辦法做很多事情。多于6個星期,很多功能完成了之后沒有得到及時的測試。
另一方面,對于日期驅(qū)動的項目,我們必須從軟件發(fā)布之日倒推回去,如果我們要10月1日交貨,那我們9月1日要達到什么狀態(tài);如果9月1日要達到這樣的狀態(tài),那我們8月1日要如何如何。我們對于場景、任務(wù)、QoS的估計還是很有意義的,只不過在這一類的項目中,日期起到了決定性的作用。
里程碑(Milestone),或者說項目的階段,是軟件計劃的具體單位。說穿了,就是分階段控制軟件項目。我們管理項目的方法,就是決定并安排一個里程碑里要實現(xiàn)的功能,如果在里程碑內(nèi)不能完成所有的任務(wù),我們必須考慮把任務(wù)挪到下一個里程碑中。
在軟件項目的初期,由于團隊并沒有得到具體和清晰的功能需求,因此不能指望能簡單地根據(jù)一個數(shù)學(xué)公式:
項目長度 = f(功能需求)
來決定整個項目的長度。
正如前面提到的,軟件項目有日期驅(qū)動和功能驅(qū)動兩種,對于功能驅(qū)動的項目,可以采用這樣的步驟:
?。?)從功能需求說明中,得到場景的大致數(shù)量,把場景分解為任務(wù),估計任務(wù)的時間,除以團隊開發(fā)人員的數(shù)量,得到T1;
(2)從功能需求說明中得到服務(wù)質(zhì)量需求的數(shù)目(Quality of Service),把QoS分解為任務(wù),估計任務(wù)的時間,除以團隊開發(fā)人員的數(shù)量,得到T2。
(3)規(guī)劃解決缺陷的時間(穩(wěn)定階段),S。
(4)規(guī)劃測試QoS 的時間(因為大部分的QoS測試都要在大部分功能完成或穩(wěn)定時才能進行),Q。
項目的總時間 = T1 + T2 + S + Q
然后可以根據(jù)時間的要求(即使項目是功能驅(qū)動,也要有時間要求),決定項目需要多少個里程碑,以及里程碑的長度。一個里程碑可以持續(xù)2~6個星期,少于2個星期,人員剛剛啟動,就要結(jié)束,沒辦法做很多事情。多于6個星期,很多功能完成了之后沒有得到及時的測試。
另一方面,對于日期驅(qū)動的項目,我們必須從軟件發(fā)布之日倒推回去,如果我們要10月1日交貨,那我們9月1日要達到什么狀態(tài);如果9月1日要達到這樣的狀態(tài),那我們8月1日要如何如何。我們對于場景、任務(wù)、QoS的估計還是很有意義的,只不過在這一類的項目中,日期起到了決定性的作用。