六、 軟件項目外包采購管理過程
為了保證軟件外包采購項目的順利進行,本文作者在上訴理論體系和“雙贏”采購策略的基礎上,提出和細化了軟件項目外包采購的總體框架和具體操作內容,旨在為軟件項目外包采購管理人員提供具體的可操作過程。
對于本采購過程,如果業主方由于行業、人員等原因,沒有健全的監控部門,可以聘請具有軟件監理職責的公司,或者總承包給具有一定軟件工程監控能力的公司。這時的總承包公司角色相當于本文提到的采購部。
軟件項目的整個外包采購過程可以分為十個工作階段,包括總體項目需求分析和設計、子項目的需求分析、廠商選擇、分承制商開發、業主階段評估、交驗測試、安裝、培訓、維護,后評價。
在開始外包采購之前,首先業主要完成項目的總體需求規格說明書和承包項目的需求說明書。一般承包項目的需求分用戶需求和分配需求。對于分承包商來說,業主對軟件項目所提出的需求通稱 “用戶需求”。對于業主來說,系統總體分配給軟件的系統需求通稱 “分配需求”。如何作好子項目的需求分析和管理,請參閱《軟件需求》,詳見參考文獻5。
然后業主把需求說明書交給采購組組織采購。采購部門收到需求說明書后,再補充質詢調查表、報價指南、綜合條款及條件等文件,組成采購質詢技術文件發往廠商進行質詢。采購部門在廠商質詢的基礎上,準備了廠商選擇和投標估價等技術文件后,向業主送審,提請業主批準和確認所選廠商。在廠商選擇和投標估價這兩個文件中,采購部根據擬采購的軟件對被質詢的至少三家以上的供應廠商,技術開發成熟能力、資源(包括以有的產品、硬件、軟件、信息和已經過的培訓)、資格和信譽、過去的合作關系、價格、提供的售后服務(包括培訓和維護)、分承制方組織配置結構、與質詢要求的差異等方面,經過經濟技術和商業戰略角度出發進行全面評估,經過其他各部門(例如系統工程組、軟件工程組、質保組、財務組)審核后,列出供應廠商的優劣次序,擇其優者為該項目的供應廠商。采購部一般以月為單位向業主通報軟件采購情況。一般以招投標方式或內部評審的方式來確定分承制商。
分承制商在接到采購部的定貨以后,可以進行工作說明書、用戶需求說明書、軟件需求規格說明書、軟件開發詳細計劃和成本概預算、測試計劃、質量控制方法、風險控制、擬采用的軟件工程標準和軟件生命周期等文檔的制作。然后分承制商把有關的技術資料文件通過業主的采購部送給業主進行校核和批準,然后才能開始開發。
業主在接到分承制商的上述材料后,組織系統工程部、軟件工程部、質保部、財務部、采購部、法律部上述材料中的開發項目視圖和需求范圍、使用或需要購買的軟硬件、進度計劃和成本、測試計劃與案例、使用的技術和工程標準、人員配置等進行評審,并出具評審文件和風險評估、控制建議書。并由采購部制定采購項目監督評估計劃書。合格后,由采購部、質保部及法律人員與分承制商簽署詳細的軟件采購子合同。如需要對軟件項目投保,以此來降低風險,需要和分承制商協商后,納入合同文件。
分承制商在簽署合同后可以進行設計和開發。業主應該委派采購部監督分承制商的工作。采購部應該有計劃的組織質保部、軟件工程部的項目計劃管理人員和配置管理人員,定期對分承制商的開發活動進度、質量、成本等進行評估,并形成評估建議書。送審業主方的系統工程部、項目管理人員、分承制商的此項目的負責人。分承制方的項目負責人要對評估建議書的建議進行書面回復,并確保實施。
分承制方對所有需要采購的資源(軟件、硬件、人力資源等)負責進行檢驗;采購部有權在任何時候對分承制商所采購的資源進行驗證,使之符合所采用的規格說明書、規范、標準和其他技術文件所規定的要求,確保分承制商?顚S,建立開發環境。在這個階段之前,采購部門和分承制商首先要確定由分承制商提供的驗證建議書,并作好準備工作,提交檢驗用的技術文件,包括廠商說明書、設備性能數據表、配制清單、試驗程序、檢驗技術要求。在檢驗的物質條件和技術條件均已準備妥善后,分承包商可以向采購部并通過采購部向業主提出書面檢驗申請。一般分承包商可以提前三周通知采購部,由采購部提前兩周以書面形式向業主提出檢驗申請,由業主召集系統工程部、軟件工程部、質保部組成驗證組,在規定的時間、地點檢驗。通過檢驗后,分承包商進入項目開發階段;業主進入監控和評估階段。對于重大關鍵項目,業主可以派遣項目監督員短期或長期進駐分承包商單位。
由于作為外部單位,業主不便時刻監督項目的開發過程。雖然理論上需要把分承制商看作是自己的一個項目部門來對待,納入自己的進度控制和質量控制體系,但是客觀上由于分承制商與業主距離較遠,人員不熟悉,各自有自己的企業文化和管理體制,雙方之間的信息溝通不暢,業主難以實時監督分承制商的開發進程和質量。好的辦法是在分承制商的軟件項目的各個里程碑處和分承制商一起進行檢查和評估。軟件項目一般可以劃分成若干個里程碑(3-5個為益),分承制商需要提前一周通知采購部組織相關人員來評估。軟件項目的里程碑一般指產品設計趨于穩定,中間產品定義趨于明晰,項目開發組真正了解項目實際的關鍵技術難度和可行的進度計劃,開發活動停止,產品進入除錯和穩定、隨時可以發布的階段,或當產品設計被刪減、資源增加、進度延誤的時候。在評估軟件質量、進度和功能的同時,還要評估分承制商的人員工作負荷程度、風險、費用和資源消耗情況,并形成文檔。由采購部送審系統工程部、軟件工程部、項目管理部和分承制商的此項目負責人。
當產品進入交驗測試的時候,分承制商需要提前三周通知采購部,采購部于前兩周通知業主作好交驗的組織評估準備工作。這時業主組織系統工程部、軟件工程部、測試部、質保部和采購部,根據分承制商和業主在分承制商開發階段預先共同定義、評審并批準的測試計劃和驗收方案進行驗收測試,對需求規格說明書中的各項逐個詳細的測試。后以書面的形式給出對整個軟件項目的測試評估報告。并對未通過驗收測試的軟件產品指定相應的補救措施和計劃。分承制商交付給業主方的軟件產品應當包括:源代碼、軟件開發計劃、仿真環境、軟件需求規格說明書、設計文檔、軟件測試計劃、軟件測試說明、驗收測試計劃、軟件使用手冊、軟件安裝手冊、軟件維護手冊。必要的話,還包括相關培訓計劃。
軟件采購的一個重要階段是交貨,也是目前經常忽略的階段。當所采購的軟件產品以及硬件運行環境在規定的時間到達采購部時候,采購部要以書面的形式通知業主交貨。業主對所交的整個軟件產品清單進行驗收,并事先通知采購部拆箱日期,要采購部和分承包商的代表按時到場。業主要在接到采購部交貨通知后一個月內,對所檢查驗收的整個軟件產品(包括相關的軟件、硬件及其附屬產品、文檔、技術資料等子合同中規定的產品)出具一份交貨證明,如果這些提交的軟件產品沒有受到損壞并與裝箱清單相一致,并在業主方環境運行良好;否則出具一份書面通知,說明在某個方面此產品損壞或與裝箱單不符,或在業主方提供的環境運行不良。此通知或證明應由采購部和分承制商代表簽署。如果在簽合同的時候,規定分承制商負責安裝和調試,則相應的過程省略。
后業主方由采購部把所有的文檔歸類封存,以備后續類似項目采購的參考查詢。同時采購部在兩個月之內以書面形式,對分承制商的技術開發成熟能力、資源(包括以有的產品、硬件、軟件、人力資源和已經過的培訓)、信譽、分承制方組織配置結構,管理能力和企業文化提交后評價報告,作為建立客戶關系管理(CRM)的依據。對于此次采購的經驗和教訓,包括進度控制、質量控制、成本控制、客戶關系控制、流程控制、風險控制等方面,采購部以文檔的形式在組內討論并保存。
七、 結束語:
作為大型工程項目中的軟件子項目或者部分功能模塊的采購(外包),由于軟件開發的固有特性(風險大,柔性強,人為因素突出,結果不宜測量等),使軟件項目的外包采購管理變得十分復雜。如何控制分承制商的開發進度和質量等關鍵因素,需要在實踐中不斷探索,并針對具體公司和項目對采購過程有所裁剪。