1.介紹
軟件開發有兩種業務模式。一個是針對特定用戶需求的軟件開發(應用開發),第二個是面向市場的軟件開發(產品開發)。第一種模式,由的客戶承擔全部開發費用,并提出軟件需求。而第二種模式,開發費用來自多個用戶(潛在的要購買此產品的用戶)。沒有特定的用戶提出需求。而且產品要安裝在不同的地點,所以在開發產品時還要考慮采用通用的解決方案。
2.在本文中區別項目開發和產品開發是很重要的。從管理的觀點來看二者的區別主要有以下幾點:
2 .1軟件需求的所有者
在產品開發中,沒有特定的用戶提出軟件需求。軟件產品的特征是從不同來源獲得,如客戶、市場、技術支持組、當前的技術趨勢等等。除此以外,還要有一個團隊來實現需求,并管理產品開發中的任務。
2 .2市場和技術支持
當產品開發工作完成,開始產品銷售時,還要有有力的市場活動,這是需要售前售后的技術支持。
2.3 打包和分發
產品打包和準備軟件產品分發是產品經理的職責。這在應用開發中是很少關心的,因為應用開發不需要大量分發。
2.4許可證和合法發布
由于軟件產品有很多用戶,所以軟件產品的許可證的管理成為一項重要任務。為此需要設計一種特殊的許可證控制機制。合法性方面如產品命名、整理專利文檔、版權等,也是產品管理的職責。
2.5產品維護
由于用戶和部署軟件的站點的多樣性,產品維護比應用開發要復雜得多。不同的站點要安裝不同版本的軟件。
2.6多線程開發
當軟件演變成了大型產品時,開發的范圍也擴展了,因而不易于在一個線程中管理所有的開發。可以將它分成多個線程,并對每個線程分別管理。這也給集成管理和版本管理增加了復雜性。
以上開發方面不在我們的標準軟件開發過程(SDP)的討論之列,SDP跨越了從需求收集、計劃、系統測試和發布的過程。SDP模型不適合軟件產品開發附加的需求,這里引進一種新的軟件開發過程模型,目標是對整個軟件產品的開發進行全局管理。這種模型,可以很實用地幫助將產品開發組織成有著多個子項目的主項目,這是集成項目管理的基礎。
圖1產品開發過程模型
3.產品開發過程模型
考慮軟件產品開發的特殊性,并借用硬件行業的觀點,以下方面構成產品開發的過程模型
● 市場
● 技術支持
● 產品策略描述
● 侯選特性列表和版本計劃
● 體系結構開發
● 軟件開發
● 集成和配置管理
圖1解釋了過程接口和邏輯流程。多數活動都是顯然的和直觀的,在這個案例的解釋是合適的。以下部分對上述活動進行了解釋。
3.1市場
市場是由促銷和與客戶聯系的部門啟動的前導工作。市場部負責從技術的觀點和商業的觀點識別客戶需求。客戶的需求形成了產品策略描述。其它的職責還有:為客戶使用創建產品描述,報價單、宣傳手冊以及其它的市場材料。
3.2 技術支持
支持活動包括產品在客戶處的安裝,產品部署、咨詢和客戶培訓。支持組還要負責收集并識別客戶新的需求,并輸入到產品策略決策和特性列表中。
3.3產品策略描述
產品策略描述是產品策略和產品路線過程的輸出結果。要形成一個專門的團隊來負責從市場、支持組或其它工程組收集信息并正確表示,這些策略決定被寫在產品策略文檔中。
3.4 特性侯選列表&版本計劃
特性侯選列表(FCL)是一套在版本中要優先考慮的特性。FCL提供了一個起點,對于一個版本來說可以選擇或確定一個更小的子集。特性控制委員會擁有FCL(產品的需求)。
3.5 體系結構開發
體系結構開發的開始和在軟件生命周期中持續的進化都在體系結構開發這個活動中進行。獨立的體系結構組確保設計的一致性和所有功能區域的互譯性。體系結構組的權限和職責是:
● 創建產品線的概念和原則
● 標識層與接口
● 標識通用機制和服務
● 定義、原型和通用機制的增強,如錯誤處理和內部進程通訊協議
● 與產品線、概念和原則的項目成員的溝通
體系結構組通常都是由有著擴展領域和工程經驗的專家組成的全職的小團隊。
3.6軟件開發
依據版本計劃和商業需求,項目經理要分配特定的項目組來開發軟件。一個產品開發中不止一個開發組。這些開發項目中的每一個都可以看作一個應用開發(看前面的定義),有它自己的項目經理和項目計劃。已存在的產品的維護也應該被看作另外一個開發項目,需要識別團隊成員并進行責任分配。
3.7集成和配置管理
集成和配置管理(CM)組的責任是:
● 增量開發(與體系結構組的協作)
● 集成并發布經過驗證的子系統
● 客戶版本庫的配置管理
● 除單元測試外,開發測試策略、測試計劃、測試案例
● 所有測試運行的協同
● 確認并標識所有的軟件組件
● 創建軟件分發介質