萬能MIS系統=100%的失敗!
這是在一次公開課上聽到的斷言,也是這幾年我感觸頗深的經驗教訓。
什麼是“萬能MIS系統”?就是企圖用一套軟體完成使用者所有工作的系統。
為什麼會出現“萬能MIS系統”?這要從以下幾個方面進行分析:
一、貪婪的使用者:對於使用者掏錢讓一個軟體公司來為他們開發一套軟體,其活動和一般的買賣活動沒有本質的區別,如同我們到菜市場買菜一樣,都抱著這樣的想法:想花最少的錢買到最好的或最多的產品。但是卻忘記了這樣一句古語“便宜沒好貨”,雖不能說價格高就一定是好的商品,但是價格低是一定有其原因的。軟體的使用者很容易進入一種貪婪狀態(我自己的定義),如果開發方滿足了使用者某個要求後,又希望開發方滿足另一個要求……而這些要求往往是原來需求調研時沒有提到的。一旦使用者的其他需求得到滿足後,使用者就有種佔到便宜的滿足感,而這種滿足感又會驅動他繼續這樣下去。從表面上看使用者的確佔到了便宜,因為在限定的成本之下,使用者得到了額外的收益。但是天底下哪有沒有成本的好事?其實使用者的這些收益是在減少了對已有系統的品質檢查和有效測試的基礎上建立起來的,甚至有的是在破壞了原有設計基礎的條件下得到的,這樣的收益真的很值得嗎?
二、軟弱的專案經理:專案經理在軟體開發中,一個很重要的作用是在使用者與開發人員之間溝通協調。培養使用者,引導使用者,是一項重要的管理技能,與使用者建立良好的關係是重要的,但是並不代表一切都要無條件的聽從。雖然使用者是出資方,但是作為專案經理要清楚,項目的最終目的是要給使用者提供一個高品質的軟體系統。如果沒有達到這個目的,一切的努力都是白費的。還有一部分專案經理本身對技術不瞭解,不清楚某一個功能的添加或修改要付出多大的成本,不與開發人員商量就輕易的答應使用者的需求,給開發人員帶來的是無盡的煩惱,無休止的加班,接著就是項目工期的一再拖延。
三、軟體萬能論的錯覺。許多人會有的一種錯覺:對軟體的一種迷信,也可以說是對技術的迷信,認為軟體可以解決工作中所有的事情。基於我國的基本國情,工作流程的隨意性和複雜性絕非一套軟體可以完成,還是讓我們再次讚揚人類的智慧吧。
以上分析了萬能MIS系統的“起源”,那麼我們如何避免掉進這樣的焦油坑呢?這就涉及到一個軟體工程中的基本概念:範圍界定。
範圍界定是保障開發人員權益和使用者利益的有利武器。
工程的最終目標是範圍界定的基礎,也就是說使用者和開發人員都要清楚並且一致理解這個軟體工程是需要實現的目標是什麼,需要解決的問題是什麼。只有這樣,才不至於在項目執行過程中走向歧途。
對於使用者,目標的明確是對使用者心中需求的一種規範定義。一旦形成需求規格說明書,就相當於法律檔案,在項目中不可輕易更改。基於人類思維的跳躍性和無序性,規範的定義是最好的界定,也是使用者最終接收軟體的條件和依據。
對於開發方,目標是確定使用者需求和規範設計的主線。不理解軟體的目標,就不能做好需求調研,因為使用者的思維常常是發散的,有的需求往往是偏離軌道的,如果沒有軟體目標這個主心骨,就無法引出使用者的真正需求,如果在需求階段就偏離方向,那麼後果可想而知。
在項目的其他階段,軟體的目標都是要在專案經理和開發人員心中銘記的概念。軟體項目的工期往往是數月以上,很難保證甲乙雙方沒有新的想法和觀點,那麼遇到任何軟體需求方面的變更,我們首先要進行以下詢問:
1. 改變是否有利於軟體目標的實現?
2. 改變是否會影響基礎架構?
3. 改變的成本是否可以接受?
4. 改變是否必須要在目前的版本實現?
如果以上問題其中之一為否,就不應該在目前階段來實現。
系統範圍的界定最困難的地方是如何說服使用者,使他們放棄偏離目標或不切實際的想法。這就需要專案經理來進行有效協調,所以項目的成敗與否,技術是一方面,更大的方面是好的管理,因為再好的技術在無邊無際的幻想面前也是那麼的渺小和脆弱。
軟體範圍的界定歸根到底涉及到專案管理的三個方面:使用者管理,變更管理和版本管理。在這裡就不再展開討論。總之,只有進行有效軟體範圍界定,才能避免進入萬能MIS系統的漩渦之中。