測試一架剛剛下線的波音飛機需要多久?鋻於它將翱翔藍天、承載所有乘客的生命,有人回答六個月,有人説三個月,也有人斗膽猜了個“兩天”,結果引來哄堂大笑。不過,正確的答案竟然是——“20個小時”。
這一幕發生在日前本市首家中外合資的CMM(軟體能力成熟度模型)認證中心成立時的研討會上。ManuPrego——該中心的外方夥伴歐洲軟體學院的總裁,舉出波音飛機的例子是想説明:如果生産過程式控制制得當、零件品質可靠,最終産品的品質和工期準時度也就會相應提高。
現代大型軟體開發的複雜程度已經不亞於製造一架飛機,因此,在軟體開發過程中引入“工業化的手段”,實行“流水線作業”,從而提高開發的效率和産品的品質,已成為國際上公認的軟體公司必備競爭力之一。那麼“流水線”的概念究竟意味著什麼呢?
過程和零件標準化
流水線作業,首先要求的是過程的標準化,説到軟體生産的標準化,目前談論得最多的就是CMM,它也被稱為軟體行業的ISO。CMM的逐漸趨熱,本質上在於市場正在逐漸認同這樣一個概念:一個企業的軟體能力更取決於該企業的過程能力,特別是在軟體開發和生産中的成熟度,技術或工具並不是第一位的。
印度軟體公司騰飛,印證了CMM的作用,在全球通過CMM最高級別的5級認證的66家公司中,有42家(64%)來自印度。在選擇自己的合作夥伴時,大量軟體外包業務的發包方十分看重對方的CMM評級,CMM成就了印度世界第二大軟體出口國的地位。
當然,接受CMM諮詢評估,並非是提升軟體企業過程水準的唯一途徑。微軟與上海市政府合資成立的微創公司,本身也在開發能幫助軟體企業改進開發過程的BMS系統(BugManagementSystem),它基於微軟自己的軟體開發經驗,幫助企業儘快在開發過程中避免缺陷的産生。
標準化上的流水線,需要裝配標準化的零件,同CMM密不可分的是軟體復用技術。在介紹了這項技術時,Prego形象地解釋説,如同汽車流水線上用現成的零件組裝汽車,而不用臨時澆注鋼構件一樣,軟體復用技術使得軟體企業在開發産品時,首先完成作為一個個零件的小模組,然後基於這些模組開發所有的軟體,而不是每個新的程式都是從頭寫起。
Prego説,基於這樣思想,軟體開發的速度可以達到700行代碼/秒,同時保障了一家軟體公司所有産品的相容性,而且由於“零件”都已經過測試,保證了最終系統性能穩定。最關鍵的是,它使得企業再也不必依賴於掌握著核心代碼的少數技術骨幹,企業的“長治久安”得到了保證。
高速成長需要更細分工
微軟在上海的合資公司——微創,公司內部嚴格地將開發團隊分為六個角色:開發、測試、産品策劃、項目經理、客戶教育、産品發佈。團隊無論大小都嚴格分工,因為根據微軟的開發架構,如果有人兼任其中兩個角色的話將會産生利益衝突,影響産品開發的進度的品質。
提出要信任市場這只“看不見的手”的亞當斯密有一條斯密定理:“勞動分工受市場規模的限制”,也就是説隨著市場的擴大,社會分工和企業內部分工都會隨之專業化。他也提出:“勞動生産力上最大的增進,以及運用勞動時所表現的更強的訓練、技巧和判斷力,似乎都是分工的結果。”將這個原理應用到中國軟體企業上,我們可以發現他們太需要分工,以及為了管理分工而産生的勞動過程式控制制了。
標準化的過程和零件,使得軟體公司再也不能成為程式員天馬行空、我行我素、靠迸發靈感發展的天才企業。像靠強大的勞動紀律管理的傳統製造業學習,已經成為軟體企業發展的必然。在對中國軟體企業的評論中,最常見的一條是“仍停留在手工作坊階段”。來自資訊産業部的數字表明,今年前8個月,我國通過認定的軟體企業為4200家,但銷售額超過億元的只有十幾家。與此同時,權威報道稱,我國今年軟體銷售預計將達357億元,而發展目標是在2005年銷售達到2500億元,其中國産化率為60%。面對如此高速的成長,誰能抓緊實現內部分工,早日形成生産力強勁的軟體生産線,誰就能以高於市場發展的速度長大,從手工作坊變成金字招牌。
以上這些話是説給企業老總聽的,不過,影響分工根本的問題也許不只在於老總,試想,如果每個招進來的員工如果都是大學本科,都不能主導大系統開發但又不甘心在“流水線”上當“裝配工”,於是只能不分工。所以,我想前一陣出現的批評“培養軟體藍領的軟體學院泡沫”的聲音言之尚早。我們現在需要大量的掌握基本軟體編程技巧的“操作工”,同時,高校不妨給學生定位於將來能獨當一面的架構工程師。
CMM只是幫助我們加強軟體企業開發管理的手段之一,它不一定是最好的,但可能是最直接見效的。有人評論CMM認證太貴,一次可能要歷時幾個月、100萬,而且世界上通過各級CMM認證的也不到2000家。不過我想,中國的軟體企業受無CMM之苦遠大於上CMM之苦,希望我們的企業能認真對待CMM,而不要像少數企業對待ISO那樣逐漸流於形式。如果企業的軟體能力沒有合格,輸掉信譽的不是CMM,而是企業自己。
《文匯報》 2002年12月05日