如何認識軟件項目估算
雖然估算是一門科學,更是一門藝術,這個重要的活動不能以隨意的方式來進行……因為估算是所有其他項目計劃活動的基礎,而項目計劃又提供了通往成功的軟件工程的道路圖,所以,沒有它我們就會搭錯車!猂oger S. Pressman 《軟件工程——實踐者的研究方法》
1、估算前的規劃
當我們的辦公室內堆滿了雜亂無章的文件時,恐怕無法知道對于我們真正有用的文件在哪里,當我們的軟件相目中收集了各種需求、意見、問題時,我們也很難從中估算出整個項目的規模、工作量以及成本。因此,在估算之前我們首先要對眾多信息進行整理、歸類分析,從而得到一個條理清晰的項目計劃,在這個計劃提供的框架內,才可能開始正確的估算。精心的規劃是任何一個軟件開發項目成功與否的關鍵,有了規劃就有如成竹在胸,之后無論風云變幻,都有應對入流的方法。當然只有正確的規劃,才能給軟件開發指引正確的方向。
軟件項目規劃的重點是對人員角色、任務進度、經費、設備資源、工作成果等等做出合適的安排,制定出一些計劃(包括高層的和細節的),使大家按照計劃行事,最終順利地達到預定的目標。
1.1、規劃的第一步:確定軟件范圍
確定軟件范圍,就是確定目標軟件的數據和控制、功能、性能、約束、接口以及可靠性。這項工作和需求分析是很類似的,如果之前已經達成需求分析規約,那么可以直接從《需求分析說明書》中把有用的部分拿來使用。如果還沒有開始需求分析,關于確定軟件范圍的方法方面,我們可以采用許多需求分析技術(如需求誘導),從客戶那里得到一個具體的軟件范圍。當然如果是一次全新的軟件邊界探索,就應當考慮軟件本身可行性問題,包括團隊是否具備在技術、財務、時間、資源上游可靠的保障,軟件本身在市場上是否有可靠的競爭優勢 ,等等。
獲得軟件范圍,最直接最可靠的來源就是用戶對軟件的需求描述。例如,在開發一個C/S架構的鐵路供電段數據上報系統中,客戶向我們提供了以下的目標軟件需求描述:
在供電站總部每天結束前要審核下屬節點操作員(30~40個)的供電安全數據報表,要求每個節點必須在下午5:30~6:00之間上傳數據?偛肯到y通過自動分析,整理出整個區內的安全形勢報表,并自動反饋到每個節點。各個節點之間通過調制解調器撥號(MODEM)用內部電話線相連,每個節點電腦主機配備一個MODEM。上傳數據為制式報表出了制式信息外,系統自動附加操作員姓名、上報時間、上報節點名稱。信息一旦上傳,節點端就不可以對已提交信息進行修改、刪除,只能閱讀、查詢。節點間數據互相隔離,只有總部才具備對各個節點數據的管理權限,但是對于歸檔數據(一旦審核完畢的數據,就進行歸檔)總部不具備刪改的權限。系統設置數據庫管理員,獨立于審核權限,其職責是對歷史數據的清理維護。
通過上面的描述,我們通過提煉和簡化,得到軟件的一下功能:
◆ 節點數據錄入、查詢、上傳
◆ 總部數據匯總、查詢、反饋
◆ 總部與節點的互聯
◆ 總部數據庫存儲
◆ 節點數據的本地存儲
在本例中,軟件的性能是潛在的?蛻綦m然沒有明確提出,但是由于數據本身的重要性,要求系統在數據上傳、反饋、存儲過程中安全可靠?蛻粢笫褂肕ODEM進行撥號連接,那么鑒于MODEM連接過程中可能會出現,由于撥號斷開而道導致的數據丟失,在節點本地存放一份數據副本是有必要的。由于系統要求每天上傳數據,總部數據庫應當是7X24小時不間斷服務的,再加上目前總部只有該系統運行接受數據任務,各節點數據量并不大,那么在建議用戶選擇服務器時,應當考慮性能穩定可靠,但并不一定要購買大容量磁盤陣列和高性能雙CPU主機。由于每天上傳數據接近下班時間,那么總部匯總數據應當是自動進行的,一旦分析發現重大問題,可以通過與外部網絡的設置,向值班人員發送手機訊息、E-MAIL或其他警示。由于不同人員對于上報數據的權限不同,對于系統用戶實行分級管理。不同級別的用戶,具有對數據的不同管理權力,從而保證在軟件使用過程中不發生混亂。
那么現在一個較為清晰的軟件模型已經構造完畢,接下來我們需要進入計劃的第二步:確定工作所需資源。
1.2、規劃的第二步:確定工作所需資源
軟件工作所需資源包括:工作環境(軟硬件環境、辦公室環境)、可復用軟件資源(構件、中間件)、人力資源(包括不同各種角色的人員:分析師、設計師、測試師、程序員、項目經理……)。這三種資源的組成比例,可以看作一個金字塔的模式,最上面是人力資源、其次是可復用軟件資源、最下面是工作環境。最上面的是組成比例最小的,最下面的是組成比例最大的部分。
■ 人力資源
一個項目到底需要多少種職務的人員構成、多少數量的人員總量,再能成為最有創造力的團隊呢?這恐怕是最讓項目經理頭疼的事情了。任何一個軟件工程,都必須在確定軟件的工作量之后,才能清楚地知道究竟需要多少人力才能以最小成本和最高效率完成任務。在這之前,不能盲目地進行人力擴充,而且絕對不能為了給公司抬高門面,盲目招收高學歷。
■ 可復用軟件資源
這是一個容易在計劃階段被忽視的重要資源,很多人總是進入編碼階段才發現可復用資源的價值和存在。經過長期的項目積累或是購買,公司的軟件資源庫中或許已經積累了大量的可復用資源,但在當前任務中,只能選擇有價值的資源。根據不同的應用、時間、來源,可復用軟件資源被分為以下幾種:
可直接使用的構件:已有的,能夠從第三方廠商獲得或已經在以前的項目中開發過的軟件。這些構件已經經過驗證及確認且可以直接用在當前的項目中。
具有完全經驗的構件:已有的為以前類似于當前要開發的項目建立的規約、設計、代碼、或測試數據。當前軟件項目組的成員在這些構件所代表的應用領域中具有豐富的經驗。因此,對于這類構件進行所需的修改其風險相對較小。
具有部分經驗的構件:已有的為以前與當前要開發的項目相關的項目建立的規約、設計、代碼、或測試數據,但需做實質上的修改。當前軟件項目組的成員在這些構件所代表的應用領域中僅有有限的經驗,因此,對于這類構件進行所需的修改會有相當程度的風險。
新構件:軟件項目組為滿足當前項目的特定需要而必須專門開發的軟件構件。
在采用構件的時候,應當以低成本、低風險為使用前提。如果任何一個漂亮的構件的應用,可能會帶來潛在出錯的風險或者必須經過復雜修改或者效率低下時,我們都應當毫不猶豫地把它拋棄。我們只采用那些能夠滿足項目的需要且可直接使用的構件,或者具有完全經驗的構件,或者經過稍微修改便可使用的構件。
■ 環境資源
“工欲善其事,必先利其器”,要得到高效的開發過程,就必須向工作人員提供良好的軟硬件環境,包括開發工具、開發設備、工作環境、管理制度。一般管理人員都會購買可以滿足需要的軟件開發工具和硬件平臺,但是工作環境和管理制度往往被忽視。
站在人件的角度看,向工作人員提供更輕松自在、安靜舒適的辦公環境的公司員工往往比整天在狹小隔間中工作的公司員工,產生更高的工作效率。而那些擁有靈活人性化的管理制度的公司,比整天加班的公司更能留住高技術的人才。所以如何在有限資金中,規劃一個合理的環境是很重要的事情。
到此為止,估算前的項目計劃已經完成,我們已經形成一個工程開發框架。這是一個有界限的框架,雖然還不夠精確,但足以進行估算的工作。
文章來源于領測軟件測試網 http://www.kjueaiud.com/