關鍵詞:軟件項目合同 CMM 合同條款
軟件項目合同作為保證軟件項目開發方、客戶方既可享受合同所規定的權利,又必須全面履行合同所規定的義務的法律約束,對軟件項目開發的成敗至關重要。經驗表明,軟件項目合同范圍定義不當而導致管理失控是項目成本超支和時間延遲以及質量低劣的主要原因,有時由于不能或者沒有清楚地定義軟件項目合同的范圍,以致在項目實施過程中不得不經常改變作為項目靈魂的項目實施計劃,相應的變更也就不可避免地發生,從而造成項目執行過程的被動,所以強調對項目合同范圍的定義和管理,無論對項目涉及的任何一方來說,都是必不可少和非常重要的。
有關合同范圍的普遍性定義和管理,我們在這里就不再贅述,本文主要針對軟件項目開發過程的特點,結合CMM的相關知識,試圖給出一個軟件項目合同特有的范圍定義,并以合同條款的形式予以表現。
我們在對CMM的研究中發現,作為CMM的重要組成部分——關鍵過程區域(Key Practivice Area簡稱KPA),具有類似于合同條款的功能。每個KPA識別出一串相關活動,當這些活動全部完成時,能達到一組對增強過程能力至關重要的目標。這與合同中列出相應條款,指出項目要達到的目標相吻合。所不同的,KPA的直接目的是增強軟件過程能力,合同條款的直接目的是實現項目目標,但兩者的最終目標都是確保軟件項目的成功。從這個意義上說,二者是一致的。為此,我們認為,采用KPA來界定合同范圍是可取的。所要注意的是,CMM中的KPA共有18個,我們不能完全照般,而必須結合合同自身的特點以及軟件項目的實際,予以取舍,并作恰當的變通。從目前我國的軟件開發實際情況看,要提高軟件過程能力成熟度,應該從CMM 2級做起。為此,本文主要結合CMM 2級的六個KPA,談談如何擴充軟件項目合同的范圍定義,以此來促進項目過程的改善。
1.需求管理
需求管理的目的是在客戶和軟件項目開發方之間建立對客戶需求的共同理解。它包括和客戶一起建立和維護有關軟件項目需求的協議。因此,合同具有如下條款:
a.在整個項目開發過程中,開發方應明確保證對系統需求及其分配進行管理,并建立文檔;
b.項目雙方協商制定影響軟件項目活動的非技術性需求(協議、條件和附加合同條款),主要包括交付產品的形式、交付日期、項目里程碑等,并建立文檔;
c.項目雙方協商制定影響軟件項目活動的技術性需求,主要包括對軟件的性能要求、界面要求、設計約束、最終用戶的要求以及選用何種編程語言;
d. 項目雙方協商制定確認軟件產品滿足客戶需求的驗收準則,包括采用何種方法、何種工具進行驗收;
e. 項目雙方協商制定對客戶進行軟件操作方面的培訓準則,以及其他相關服務的說明。
2.軟件項目策劃
軟件項目策劃的目的是為了完成軟件項目開發而制定合理的計劃。它包括以下步驟:估計軟件工作產品規模以所需的資源,制定時間表,鑒別和評估軟件風險和協商約定。因此,合同具有如下條款:
a.開發方應在合同中指定負責協商約定和制定軟件項目開發計劃的項目經理;
b.開發方應確保在項目經理和軟件開發人員、其他工程組相關人員之間達成軟件項目的約定,并建立文檔;
c. 項目雙方應對軟件項目的規模、工作量、成本、進度等做出科學的估計;
d.項目雙方(以開發方為主)共同建立高級管理者評審方法,對所有的軟件項目約定和計劃進行評審,并使其保持在監控狀態下;
e. 項目雙方(以開發方為主)共同明確開發工作的范圍、技術目標和對象、最終用戶的識別、成本和進度的約束及目標、項目伙伴;
f.開發方應確保能夠為策劃軟件項目提供足夠的資源和投資,必要時應采取的應對措施;
g. 項目雙方(以開發方為主)共同對與項目成本資源、進度和技術方面相聯系的軟件風險進行鑒別、評估和建立文檔。
3.軟件項目跟蹤和監督
軟件項目跟蹤和監督的目的是建立對實際進展的適當的可視性,使項目經理能在軟件項目性能明顯偏離軟件計劃時采取有效措施。它包括對照已文檔化的估計、約定和計劃,評審和跟蹤軟件完成情況和結果,基于實際的完成情況和結果調整這些計劃。因此,合同具有如下條款:
a.開發方能夠采用并維護一個已文檔化的軟件開發計劃作為跟蹤軟件項目的基礎,隨時向項目經理報告軟件項目的狀態和問題;
b. 開發方應確保能夠為跟蹤軟件項目提供足夠的資源和投資,必要時應采取的應對措施;
c.在管理軟件的技術和人員方面,軟件經理受到培訓,使其能熟練地管理技術項目,跟蹤和監督軟件規模、工作量、成本以及進度,管理職員;
d. 開發方應確保一線軟件開發人員在軟件項目的技術方面受到定向培訓,包括項目的軟件工程標準和規程、項目的應用領域;
e.跟蹤軟件工作產品的規模,跟蹤項目的軟件工作量和成本,跟蹤項目的關鍵計算機資源,跟蹤項目的軟件進度,必要時能采取應對措施;
f.軟件開發方應進行定期的內部評審以便對照軟件開發計劃跟蹤技術進展、計劃、性能和問題,并在里程碑處進行正式評審。
4.軟件質量保證
軟件質量保證的目的是向項目經理提供適當的對軟件項目正使用的過程和正構造產品的可視性。它包括評審和審計軟件產品和活動以驗證它們符合適用的規程和標準,給項目和其他有關的經理提供這些評審和審計的結果。因此,合同具有如下條款:
a. 項目雙方(以開發方為主)共同制定軟件產品和活動遵循適用的標準、規程和需求的情況并得到客觀的驗證;
b.開發方能保證受影響的組和個人接到軟件質量保證活動和結果的通知;
c.開發方存在負責協調和實施項目的SQA的組,SQA組有一個向高級管理者報告的渠道,使其處理在軟件項目內部不能解決的不符合問題;
d. 開發方應確保能夠為SQA活動提供足夠的資源和投資,必要時應采取的應對措施;
e. SQA組的成員受到培訓以完成他們的SQA活動,培訓的內容包括軟件工程技巧和實踐、相關部門的崗位任務和職責、用于軟件項目的標準、規程及方法、軟件項目的應用領域等;
f.軟件項目的成員接受有關SQA組的任務、職責、權力和價值等的定向培訓。
5.軟件配置管理
軟件配置管理的目的是建立和維護在項目的整個軟件生存周期中軟件項目產品的完整性。它包括標識在給定時間點上軟件的配置,系統地控制對配置的更改、并維護在整個軟件生存周期中配置的完整性和可跟蹤性。因此,合同具有如下條款:
a.開發方能按照已文檔化的規程對軟件項目準備一份軟件配置管理(SCM)計劃,明確指派每個項目的SCM職責,并保證其在整個軟件開發過程中實行;
b.開發方能確保項目建立或利用一個倉庫(軟件基線庫),用來存儲配置項/單元和相關聯的SCM記錄;
c.開發方存在或建立一個有權力管理項目軟件基線的委員會(即軟件配置控制委員會——SCCB)以及負責協調和實施項目的SCM的組,并建立制度定期審計軟件基線和SCM活動;
d. 開發方應確保能夠為SCM活動提供足夠的資源和投資,必要時應采取的應對措施;
e. SCM組的成員在有關進行其SCM活動的對象、規程和方法方面受到培訓,包括SCM標準、規程和方法,以及SCM工具等;
f.軟件工程組和其他軟件有關組的成員受到培訓以便完成其SCM活動。
至于軟件子合同管理KPA,其目的與本文的主旨相符,我們就不將其單獨列出來了。綜上所述,我們已經對CMM 2級中的各個KPA進行了研究,并將其中比較重要、需要控制管理的內容以合同條款的形式予以表現。我們認為,從軟件項目管理的發展趨勢來看,以合同的模式來推行CMM,對于降低項目開發的風險,提高軟件開發方的過程能力成熟度,對于軟件項目合同的簽定雙方都具有較大的借鑒意義。本文僅對CMM 2級中的KPA進行了研究,隨著軟件過程能力成熟度的提高,軟件項目合同雙方可根據自身的實際情況,逐步加入CMM 3級、4級乃至5級的內容。
參考文獻:
[1]. SW-CMM v1.1, 卡內基-梅隆大學軟件工程研究所(SEI)
[2]. 中華人民共和國合同法
[3].鄭人杰,殷人昆,陶永雷:實用軟件工程.第二版, 清華大學出版社
作者小傳:
唐云嵐,國防科技大學管理科學與工程專業的研究生,目前正從事項目管理方面的畢業課題研究。
文章來源于領測軟件測試網 http://www.kjueaiud.com/