軟件項目超出計劃的目標,通常被稱為范圍蔓延,是IT開發(fā)過程固有的矛盾。項目范圍也可以說是產生項目產品所包括的所有工作及產生這些產品所用的過程,包括項目的最終產品或者服務,以及實現(xiàn)該產品或者服務所需要執(zhí)行的全部工作。你必須采取一些步驟來控制對項目的改進并確保你和你的開發(fā)團隊不會受到這些改進所造成的負面影響的損害——完工時間的拖延和工程預算的超支。范圍蔓延由幾個原因引起而且如果處理不當將成為項目失敗的主要原因。幸運的是,你可以遵循一些規(guī)則來防止項目范圍蔓延造成出軌。
首先,讓我們先來看一個警示性的例子,它能夠幫助我們明白如果沒有合適的計劃和控制,事情會變得多么壞。當我在一家顧問公司工作的時候,我親眼見證了我們的姐妹公司在一次公司內部為用戶開發(fā)以Web中心的桌面環(huán)境的時候在項目范圍上所做的掙扎。這個項目在五年前迫不及待的展開,沒有項目計劃而且只有一個主要開發(fā)者指導它的進度。開始的時候這個項目有許多很有天賦的Java程序員而他們所有的指導來自于他們的并非技術專家的上司。這聽起來象是一場惡夢,它確實是一場惡夢而且現(xiàn)在還是這樣。今天這家公司有了一個不值得的客戶和一個其競爭對手在兩年以前就已經超越的產品。
隨著這個項目繼續(xù)進行,這家公司自身已經無法為它的員工發(fā)工資了,這對投資者看起來象一個無底洞,而且在它的管理層看來還只是剛剛開始。由于在開始工作的時候沒有簽定正式的項目意向書,這個項目的范圍不斷的改變,甚至每天都在改變,而所有的工作,從開發(fā)到銷售和質量保證都因為不斷改變的項目范圍所帶來的繁重工作而停滯。
項目范圍改變的效果并不一定是負面的,這得看你的實際情況。如果你是擔當顧問或者是為一家顧問公司工作,那么軟件功能改進對于你的業(yè)務來說是非常好的--只要能夠很專業(yè)的處理這個問題。對于公司內部的軟件開發(fā)過程,額外的功能能夠讓你的產品比你的競爭對手更勝一籌。但是,如果你發(fā)布軟件的時間推遲一兩個月,那么這個優(yōu)勢就會被丟失。通過控制你開發(fā)過程的費用并按時發(fā)布軟件,你的項目就會取得成功,而不需要損失在軟件制作過程中的靈活性。
控制項目范圍在編寫第一行代碼以前就已經開始了。不論實際情況如何,每一次開發(fā)工作都應該有相應的項目計劃或者項目協(xié)議書。即使你只是一個希望讓老板高興的程序員,你也能夠因為在開始工作以前制定計劃書而得到很多的好處。可以使用下面的步驟來使自己成功的控制項目的范圍:
1.確保自己明白項目的范圍。與項目主管會談并發(fā)布整個項目的概覽交與他們查看和評論。
2.定義你的項目發(fā)布目標并讓項目主管同意它們。項目發(fā)布目標應該是在項目過程中應該完成的功能的大概描述。
3.了解你自己認為重要的東西和項目主管認為重要的東西。在項目進行的整個過程里把你得到的信息按順序列成一張表。這些信息應該包括預算,項目截止時間,功能發(fā)布,客戶滿意度,以及員工的滿意度。一旦項目開始,你將使用這個表來調整你的時間安排。
4.把經過同意的項目發(fā)布目標細化成具體的工作要求。這些要求應該盡可能的詳細并使用一個簡單的電子表格來完成它。你的項目越大,那么你就應該包括更多的細節(jié)。如果你的項目持續(xù)的時間不止一兩個月的話,不要忘記包括開發(fā)過程中軟件升級的時間,你還應該總是為編寫充足的文檔而留下時間。
5.意識到會出現(xiàn)項目范圍蔓延。盡早填寫“項目范圍改變要求”表格并在開發(fā)的過程中說服項目主管。一個“項目范圍改變要求”表格能夠讓你在按項目主管的要求進行時間表改變以前對這些改變進行收益投入比