國內從事 “企業(Enterprise)” 軟體的獨立開發廠商(ISV),大致可以分為三種營利的模式:
- Project (專案)。
- Package (套件)。
- Product (產品)。
算起來,應該約有 80% 以上的開發廠商是以專案開發為主的(Project-based)。專案,顧名思義,會偏以滿足單一任務的工作性質,服務的對象也偏以單一的客戶為主,目的就在於能達成客戶對資訊系統的期望,而這些期望,也就是系統所提供的服務與功能—軟體開發廠商所負責承諾來實現,並換取實質的回饋報酬。
我們都知道,最為難的就是如何能滿足客戶的期望,因為,客戶的期望一直在變;又,競爭的因素,專案性質的資訊系統開發總是被要求在最短的時間,以最少的成本來完成,自然,種種不合理的要求,品質當然也就不佳。
請記得,開發端與客戶端是要能達成一種實質交易上的平衡,而開發端投入許多的心力與人力,來服務單一的客戶,卻換取開發端認為不合理的報酬,當然這種交易的結果也就無法讓雙方都能協調滿意的了。
只賣給一家客戶,即使開發 ERP 系統拿到 200 萬元,開發端都還認為是慘賠,因為人月的實質負擔實在不敷成本。一般專案性質的軟體開發總是存在一個根本問題:無法達成軟體的大量複製!
專案的規模除非夠 “肥”、專業領域夠 “精”,否則,對開發與客戶端都很難取得實質交易的平衡。我還記得,閱讀 XP (Extreme Programming) 的書籍,Kent beck,軟體業界的大師,所涉及參與的專案,諸如航空班機的控管系統,開發預算都是高達數千萬、數億美金以上,開發的週期要高達好幾年以上 …。我覺得,若要開發專案,作這種才有機會有實質的回饋、人生也會活得比較有成就感吧?
ERP 系統可否大量複製呢? 嗯,我們在世貿軟體展,可以看到國內許多的軟體廠商展出 ERP 系統的產品,可真便宜,數千至數萬就可以買到了。站在該軟體廠商的角度,活用軟體的大量複製,方向是對的,如此才有可能將成本壓低,才能服務眾多需要的客戶,售價自然也就可以大幅降低了。只可惜,這些 ERP 系統實在不能稱為產品(Product),最多最多,只能稱為套件(Package)而已。
套件與產品如何區別? 每一次我到軟體展時,遇到漂亮的展售小姐解說 ERP 功能時,我只會問一個問題:可不可以將 SQL Server 換成 MySQL? 幾乎一致的回答是不行。我還只是問實體平台的變更而已喔,還沒有問到,若我要求某一個 ERP 系統所沒有的功能或需要變更業務流程時,該如何客製化(Customize)呢?這問題我連問根本也不想問,因為可想而知,作不到!
套件的特性是,它提供了預先定義好的功能(pre-defined)給客戶,然後利用 “參數(parameters)”,讓客戶來自行 “微調” 系統功能;若是客戶單位要求的是套件沒有的功能、企業規則或企業流程的話,當然就要找原開發廠商,然後回到 “專案” 的型態來開發新的功能。
專案要作的是滿足客戶的需求,但期望客戶的需求變動不要太頻繁;套件則是提供預先定義好的需求給客戶,但其假設點是客戶的要求不多、規模不大(這也就是國內的 ERP 廠商的客戶鎖定在中小企業的原因)。兩者的根本問題是:彈性度不足,無法提供 Enterprise 層級的資訊系統,有效的客製化與變動性管理!
那麼,該具備什麼樣的特性才 “夠格” 稱之為 “產品(Product)” 呢? 答案就是理出專案與套件的共同問題:讓系統更有彈性!
為什麼客戶端需要更換資料庫系統與應用伺服平台? 因為成本、效能、穩定性等考量。
為什麼客戶端需要客製化? 因為需求就是一直持續性地變動。
即使有領域專家的協助、即使有超炫的使用者介面、即使提供的是更棒更完善的功能,這些仍是沒有用的,因為,客戶永遠都會有第 101 個意想不到的需求!
既然如此,就乾脆讓客戶端可以自行開發他們的需求,未嘗不可! 學學 MS 的 .NET Framework、Java 陣營的 J2EE Framework,以上兩者提供的是作業系統層級的框架(System-level frameworks),而開發如 ERP 產品,就是提供企業層級的框架(Business-level frameworks),讓開發者視需求的變動與要求,而在既有的基礎建設(Infrastructure)上,加工快速建置新的功能。
企業層級的 Framework,除了提供共用的資料庫、共用的企業流程,還要能提供白箱的 Open-APIs 與原始碼,以及黑箱的 “企業元件(Business Components)”,來供其客製化客戶單位的功能。難不難? 非常地困難! Business Framework 的設計與開發,需要能結合領域專家、軟體專家、與平台面的 IT 專家,共同合力協助,才有可能完成的。這也是為什麼國外頂級的 PDM((Product Data Management)產品與國內某些軟體公司所開發號稱的 PDM 產品,價格為何能差到數百萬元之多吧。
對了,Open-source 的許多企業層級的專案,可否稱之為產品? 個人是不以為然,還是無法到這樣的層次。但,Open-source 卻靠兩種方式,來達成如同產品的性質:
- 頻繁的改版。
- 提供原始程式碼(Source-codes)。
這是一種非常有意思與另類的作法,此時,軟體廠商反而不是賣產品,而改以提供 “服務(services)” 的方式來計價收費了。