企業業務軟件工程項目和商業軟件産品項目無論是需求重點、實現方式、項目管理等方面(miàn)都(dōu)有極大不同。現在的有關研究并沒(méi)有關注此區别,實際上,其中絕大部分還(hái)集中在較簡單的産品項目上。對(duì)于需求變動要大得多的企業軟件項目來說,對(duì)需求進(jìn)行分級管理是非常必要的,也是生死悠關的。
企業化軟件項目和商業軟件最大的區别就(jiù)在于項目需求的重點不一樣(yàng),以緻于這(zhè)兩(liǎng)種(zhǒng)同樣(yàng)稱爲軟件工程,就(jiù)其項目過(guò)程管理是幾乎完全不一樣(yàng)的。商業軟件的開(kāi)發(fā)最大的特點是基本功能(néng)非常明确,隻在細節上有多種(zhǒng)選擇,所以其管理重在源代碼管理和算法的優化,以及測試嚴格,就(jiù)測試要求的強度上單純軟件代碼的質量來說,要強于企業信息化的軟件工程項目。
企業信息工程項目一般來源于企業某一特定的業務軟件需求,象一個倉庫管理系統,從進(jìn)貨到定期定标出倉平衡責任追蹤等;或者是一個生産流程配料系統,如MRP2;或者是一個購銷一體計劃系統,象ERP(資源管理),等等。這(zhè)種(zhǒng)軟件有時侯會(huì)象國(guó)産的那些變相的會(huì)計軟件式的ERP一樣(yàng)當成(chéng)商業軟件開(kāi)發(fā),顯然,這(zhè)時侯與上述的商業軟件沒(méi)有太大的區别,但實際差别在應用需求上。企業業務軟件是一種(zhǒng)必須适應同時能(néng)夠優化企業流程的計算機輔助運營系統,真正起(qǐ)作用的,通常隻能(néng)是一對(duì)一實現定制;這(zhè)種(zhǒng)需求是如此廣泛,以緻于大型企業如果不是聘有一兩(liǎng)家軟件咨詢顧問公司就(jiù)是自建一個計算機部門專門負責這(zhè)一方面(miàn)的工作;最典型的例子就(jiù)是沃爾瑪特。
正由于企業用的軟件都(dōu)存在著(zhe)強烈的一對(duì)一定制的需求,所以這(zhè)種(zhǒng)項目不便宜。
爲了應付企業業務軟件項目強烈的定制需求,供應商都(dōu)提供了廣泛的基礎組件和嵌套工具,以便可以由二三級的程度員在現場爲用戶一對(duì)一的進(jìn)行定制、試用、更改、再定制等項目實現。典型如SAP,有的隻是基礎組件庫,涉及到27個項目常用業務場合的組件庫,包括與之配合的數據庫預制定義(表定義)。一個SAP項目要求用戶按自已需求定購這(zhè)些組件庫,以及必須的支持軟硬件,數據庫操作系統什麼(me)的,最經(jīng)常的就(jiù)是ORACLE和SOLARIS了;然後(hòu)SAP項目組要到企業裡(lǐ)蹲點,聽各個部門講流程故事(shì);然後(hòu)是寫需求文檔,建原型,讓企業的項目組試用部門流程,基本流程确定合乎需求了,再找幾個三流的程序員用ABAP/4腳本語言把各個組件的功能(néng)連成(chéng)一個統一的流程。這(zhè)個工作就(jiù)完成(chéng)一大半了。
由此可見,企業軟件項目的關鍵在于需求管理和流程建模,相反,算法和基本功能(néng)以及BUG什麼(me)的,那是作爲商業軟件開(kāi)發(fā)的組件保證的,一般以外包形式由印度這(zhè)些公司早早做了出來。企業軟件需求最大的困難就(jiù)是用戶根本不知道(dào)自已要幹什麼(me),最常犯的錯誤就(jiù)是把現有的落後(hòu)流程要求電腦重複一遍,拿了機關槍,總是要求上面(miàn)沒(méi)有裝刺刀,還(hái)抱怨不比紅纓槍好(hǎo)用。另一個常見的錯誤就(jiù)是随著(zhe)企業項目主管,知識開(kāi)始豐富後(hòu),總是把有用沒(méi)有用,暫時有用或永遠沒(méi)有用的需求要項目組一一實現。作爲承包方的人員是沒(méi)有辦法與之争業務上有沒(méi)有用的,但如果真的跟著(zhe)他的點子走,這(zhè)個項目是永遠沒(méi)法完成(chéng)的。而在商業需求明确的商業軟件開(kāi)發(fā)中就(jiù)不會(huì)碰上這(zhè)種(zhǒng)事(shì)情。
這(zhè)時侯需要對(duì)客戶的需求進(jìn)行分級管理,簡單地說,把需求分成(chéng)五級:urgent(必須立刻優先實現),necessary(必須實現,但不一定馬上進(jìn)行),needed(需要的,不過(guò)沒(méi)有也還(hái)湊合),better(現在似乎也可以,但可以更好(hǎo)一點),useful(總會(huì)有用的)。一個需求等級的确認需要兩(liǎng)個過(guò)程,首先是從正面(miàn)論證它是不是必須的,是不是好(hǎo)得多;然後(hòu)從反而論證,不要他是不是可以回避的,天會(huì)不會(huì)塌下來?這(zhè)樣(yàng),一個軟件需求就(jiù)可以定一個級别。毫無疑問,如果一個項目各項需求驗證下來隻是useful的,不但賺不了多少錢,而且,這(zhè)個項目未必有必要存在;但如果都(dōu)是urgent的話,如果不是大幅度加價的話,就(jiù)叫(jiào)神仙來做好(hǎo)了。顯然,無論客戶是如何的行業專家,他的需求隻能(néng)是平均地分配在這(zhè)五個級别,否則就(jiù)說明他不是專家,在實現時,當然就(jiù)挑urgen和necessary來實現,其餘的,升級再說了。這(zhè)樣(yàng)一個項目就(jiù)有可能(néng)最終完成(chéng)了。