第五章       軟體工廠

 

 

軟體工廠是有機體,由一群人的腦袋組成,没有廠房、機器設備,也没有材料和倉庫。所以它比一般工廠更需要規格文件、檢驗規範、標準元件、標準製程、以及標準化的出貨及安裝程序。標準作業程序(SOP)對軟體工廠而言,遠比一般工廠來得重要。

 

 

********************************************************************

 

台灣大學集思會議中心的一場研討會,丹尼爾應邀發表演講,主題是「軟體工廠」。

 

一開場,丹尼爾亮出一張投影片:「台灣筆記型電腦全球市佔率91%ERP系統全球市佔率0%

 

觀眾有點騷動,有人舉起手。

 

「請說」,丹尼爾下了講台,走向第1排聽眾席走道。

 

後排一位觀眾站起來:「我們公司用的就是台灣本土ERP系統,台灣ERP產品市佔率怎麼可能是0%

 

丹尼爾:「從任何一個市場研究機構的報告,都看不到台灣ERP的蹤影。當數字很小的時候,在統計學上的意義就是零。」

 

緊接著銀幕上出現幾張電腦市場佔有率的統計表。

 

宏基2008年個人電腦全球市佔率10.9%,僅次於HP19.2%Dell15.0%,排名全球第3。而這僅是單一公司的自有品牌市佔率,若考慮華碩、廣達、仁寶和緯創等公司,再加上代工市場,台灣毫無疑問是世界第一。早在2007年台灣全球筆記型電腦代工市佔率已高達91%

 

台灣的硬體業發達,但軟體業落後。全世界大部分的電腦是台灣製造,為什麼世界市場上没有台灣的ERP產品?台灣軟體業的唯一成功案例是史帝夫的趨勢科技,國際資料公司(IDC, International Data Corporation)把趨勢科技列為全球成長最快速的防毒軟體公司,目前是世界第3大。趨勢科技雖然成功,但像ERP這種商用軟體在世界市場上缺席的事實卻証明了台灣整體軟體業的落後。

 

丹尼爾:「是產品的關係嗎?還是有別的原因?」

 

史帝夫在適當的時間切入利基市場是成功的原因之一,但主要還是他的願景與堅持。丹尼爾腦海中浮起20多年前到美國找史帝夫,在聖地牙哥他母親經營的汽車旅館中和他一起打地舖的一幕。每一位成功的人背後都有一段奮鬥的故事,再怎麼困頓,史帝夫永遠是樂觀的。

 

丹尼爾:「ERP和在地文化有關,本土產品連在自己家裡都經營得那麼辛苦是没有道理的。為什麼國內軟體公司一直很難生存?為何國內企業寧願用外國ERP產品也不使用便宜很多的本土產品?」

 

丹尼爾在2002年出版了「企業資源規劃整合資源管理篇」,在序言中他寫道:「視窗作業系統或資料庫這一類工具性軟體讓先進國家獨霸,我們認了;但是,像ERP這種和本土文化有關的應用軟體,我們絕不應輸給其他國家!」

 

這麼多年過去了,台灣的ERP產品在市場上依然排不上任何名次。

 

********************************************************************

 

丹尼爾打出下一張投影片:「美國能、歐洲能、印度能,為什麼台灣不能?

 

丹尼爾問:「為什麼台灣不能?」,台下鴉雀無聲。

 

丹尼爾:「我曾經在雜誌上看到一個大師級教授接受訪問,說台灣教授不應該寫管理書籍,應該專心把英文管理書翻譯成中文,因為我們再怎麼寫,也寫不過先進國家。台灣管理學者不應該寫書嗎?」台下依舊没有反應。

 

丹尼爾:「國內電影業在好萊塢的強攻猛打下幾乎消滅。我也多次看過優秀導演及演員三餐不繼的報導,台灣人不該拍電影嗎?」

 

這時台下又一陣騷動,聽眾議論紛紛,突然有人大喊:「海角七號」。

 

2008年是台灣電影轟轟烈烈的一年,海角七號創下台灣電影史上最佳票房記錄,給垂死的台灣電影業打了一劑強心針。

 

丹尼爾:「為什麼海角七號會成功?因為他打動人心。電影是文化創意產業,和在地文化有關,所以能引起這麼大的回響。」

 

丹尼爾:「難道管理和文化無關嗎?一昧的學習國外的管理手法,真的對國內企業最好嗎?為了使用國外ERP系統而改變國內企業的管理流程,真的能提高我們的競爭力嗎?」

 

丹尼爾:「答案是否定的,學別人最多只能和別人一樣好。所以國內的管理學者應該多寫一點融合國際觀與本土文化特色的管理書籍。至於ERP我們只能怪自己不爭氣,没有把產品作好,逼得國內企業只好使用國外ERP產品。」

 

********************************************************************

 

下一張投影片:「想想我們的硬體是怎麼做的?是在工廠做的!」

 

丹尼爾教了很多年書,一直做不好一件事:要求學生先寫文件再寫程式。大部分學生都是先程式再文件,好比工廠先製造出產品再畫設計圖,是非常可笑的。

 

多數學生一上電腦就開始寫程式,邊寫邊想,邊寫邊改,寫完後才知道做出來的是什麼東西。幾次試著禁止學生先寫程式,卻很難。丹尼爾希望學生先在文件上完成所有設計,建立各種情境的測試資料後,用人腦全部跑過一遍,訂正所有邏輯上的錯誤,然後才開始寫程式。

 

丹尼爾打出下一張投影片:「工廠先有設計資料和圖面才開始生產」,繼續他的演說:「工廠生產零件可以在製造出來之後再畫設計圖嗎?當然不可以,一定先有圖面再製造零件,這個零件和其他零件才能組裝得起來。每一個零件的設計一定要分毫不差,否則根本不能用。而軟體卻可以天馬行空,愛怎麼寫就怎麼寫,有問題改到没問題,雖然通過測試,裡面還是暗藏無數隻虫。」

 

有一次史帝夫參加寶盛在貓空舉辦的活動,他跟丹尼爾說,英特爾對趨勢的每一支程式都從不同的角度測200多次以上。1992年趨勢科技與英特爾結盟,在英特爾的鞭策下,程式都要經過徹底的驗證,這應該也是趨勢科技成功的因素之一。

 

丹尼爾:「在座貴賓很多是企業的CIO,應該很清楚系統規格文件的重要,有做到在設計系統規格時製作大量測試個案並全部走過的,請舉手。」全場靜悄悄。

 

測試個案(test case)是在系統設計階段,模擬未來的使用環境,設想各種可能發生的狀況,設計系統的輸入和輸出資料。「走過」(go through)的意思是,利用測試個案的輸入資料,用手工的方式實際執行所有系統規格,看看結果是否和測試個案的輸出資料吻合。利用這個方法確保系統規格的正確性,然後才發包生產程式。寶盛就是這樣在進行系統規格,最終的程式百分之百和規格一樣,連一個字或一個標點符號也不會差。測試個案也是一樣,必須先「走過」規格,程式開發完成後,再以相同的測試個案驗證程式的正確性。但寶盛畢竟不能和國外大公司比,測試個案的數量不可能太多。

 

********************************************************************

 

下一張投影片:「工廠使用標準化元件在標準化的製程中生產。」

 

丹尼爾繼續說:「因為產品和製程的標準化,每一個人做出來的產品都一模一樣。」

 

寶盛的程式完全看不出個人風格,所有程式都是標準的。原因之一是寶盛的程式全部建立在框架(framework)中,好像使用同一個模子一樣,所有程式「被迫」標準化。另一個原因是寶盛的標準作業程序(SOP)規定了所有命名原則和程式風格,透過程式碼評估(code review)的同儕壓力,將程式完全標準化。還有一個原因就是服務(service),相當於工廠中的標準化元件。

 

丹尼爾:「由於寶盛的ERP產品NEO是服務導向架構(SOAservice-oriented architecture),程式人員的工作就是寫介面並組裝現成的服務供介面呼叫。」

 

聽眾中有人舉手。

 

「請問服務從那裡來?」

 

丹尼爾:「SOA中應該要有那些服務是由系統架構師(system architect)決定的。寶盛的系統架構師是凱爾副總,他剛好在現場。凱爾,請站起來一下。」

 

凱爾靦腆的起立,揮揮手。

 

丹尼爾繼續說:「系統規格師決定那一個程式應該呼叫那一個服務或服務組合。若同一群服務經常被組合,表示服務切得太小,規格師會向架構師申請一個新服務。若一個服務的訊息經常只被使用到一部分,表示服務切得太大,規格師也會向架構師申請一個新服務。SOA中的服務只會增加不會減少,因為我們不知道那些服務曾經被誰用過,客戶自行開發的程式很可能呼叫了一些服務。」

 

丹尼爾繼續說:「新產品研發團隊也會提出新服務的規格,架構師會評估是否開發,或指示開發團隊使用現成服務。至於服務的撰寫則由另一組程式人員負責。在架構師的把關下,軟體工廠中的軟體零件,也就是服務,越來越齊全。」

 

在寶盛,規格初稿由顧問師根據客戶需求開出,規格師把規格初稿轉成規格完稿。規格初稿包含測試個案,顧問師必須「走過」測試個案給客戶確認需求。規格完稿根據規格初稿寫成,所有介面及服務細部規格都已確定,程式師可精準產生程式。只要規格開出,程式幾乎就已完成。

 

********************************************************************

 

丹尼爾打出下一張投影片:「工廠中的作業有標準工時並依計畫生產。」

 

由於程式均利用框架和服務做出來,所需時間相當穩定。寶盛把程式分成幾類,每一類程式都有標準工時,稱為權數,一個權數相當於一人一天的工作量。系統規格開出來後,即可展開成各種工作,並依權數排生產計畫,再指派給程式人員。不只程式開發有權數,規格設計和程式測試都有權數,也都排入生產計畫中。每週檢核一次,以確保工作進度符合生產計畫。

 

下一張投影片:「工廠有標準化的出貨及安裝程序。」

 

丹尼爾繼續說:「ERP系統的出貨程序是先安裝標準系統,再進行客製,最後再安裝客製系統。安裝標準系統後即可進行教育訓練,所以客製和教育訓練可以平行進行。」

 

聽眾又有人舉手:「怎麼會安裝兩次?應該等全部客製完再安裝吧?」

 

丹尼爾:「寶盛的NEO ERP包含很多模組,其中一個就是客製模組。所有模組都是獨立的,可選擇安裝或不安裝,不會影響其他模組。客製模組也是一樣,因此可以先安裝標準系統再安裝客製系統。」

 

寶盛的系統導入標準作業程序共分8個階段:專案啓動、系統安裝、作業分析、流程改善、系統客製、系統整合、系統開帳、系統上線。流程改善階段包含種子人員的教育訓練及客製規格的產出,系統整合階段包含全體使用人員的教育訓練。每一個階段都必須產出標準文件,文件對寶盛而言是最重要的資產,所有活動,不管是系統開發或系統導入,都會留下文件。

 

********************************************************************

 

丹尼爾的演講已近尾聲:「台灣的硬體世界第一,軟體卻吊車尾,原因是我們没有用工廠的方式來生產軟體。軟體是軟的、無形的,的確不容易管理。軟體工廠是個有機體,没有廠房、機器設備,也没有材料和倉庫。軟體工廠由一群人的腦袋組成,所以它比一般工廠更需要規格文件、檢驗規範、標準元件、標準製程、以及標準化的出貨及安裝程序。總之,軟體開發是非常複雜的工作,標準作業程序(SOP)對軟體工廠而言,遠比一般工廠還要重要。」

 

丹尼爾繼續:「可惜國內軟體公司不重視SOP,無法按部就班一步一步來。表面上看起來速度很快,但做了很多虛功。而且事前没有周全的設計,事後又無徹底的測試,做出來的東西當然無法使用。

 

丹尼爾演講時習慣走近聽眾,所以演講開始後就一直在聽眾席頭幾排走動。這會兒,丹尼爾回到講台。

 

「總而言之,要讓台灣的ERP在世界上發光,最有效的方法就是向台灣已經發光的硬體業學習。首先,產品一定要完整設計並充分測試過才發包生產;其次,要利用標準化的元件在標準化的製程中生產;所有的開發及導入工作都要有標準工時並事先排定計畫;最後,一定要有標準化的出貨及安裝程序。」

 

丹尼爾:「我們今天談的是軟體工廠,而趨勢科技的成就已不只是軟體工廠,他們已經做到軟體供應鏈。趨勢科技在菲律賓抓病毒、在台灣研究解藥、再送到全世界解毒。趨勢科技是軟體業的第1個台灣之光,希望很快的會出現第2、第3台灣之光!謝謝大家。」

 

演講在一片如雷掌聲中劃下句點。

 

********************************************************************