“我給學生上課說的第一句話是:你們挑選了一個最好的行業――只有這個行業里你不用看老板臉色,而是你給老板臉色看!睆偷┐髮W博士生導師趙文耘以此開頭,與記者聊起了構件技術的話題。
在趙看來,編碼裝在人的腦袋里,即便明知你在“拿把”或偷懶,老板也不能用斧頭劈開你的腦袋把程序拿出來,這是軟件老板的一怕;另一怕是項目開發到一半,聽你說“我要走人了”。所以這個行業經常是老板低聲下氣哄著員工。盡管這樣,項目開發到一半被要挾加工資,或因某個骨干被挖走而導致整個項目流產的事還是經常發生!斑@個產業發展不起來,這是關鍵”,趙說。
趙的另一個身份是復旦天翼公司總經理,打理著一家五十多人的軟件企業。顯然,他對看員工臉色過日子的事早有體驗。
不過,此一時彼一時:“今年 7 月我在國外, 8 月在北京,兩個月不在公司,一個找我的電話也沒有,公司運轉得很好,也不再害怕誰跳槽,這是管理的最高境界”,趙有些得意。原因是他的公司采用了“面向構件”的開發模式。
復用——從泥沙級到磚頭級
“面向構件”是怎么一回事?專家給出的說法各異,但大體意思一致:所謂構件,無非是組成軟件系統的模塊,且這些模塊有相對獨立的功能,可在不同的系統中“復用”。有了這些構件,軟件開發就可以用“組裝”模式來提高開發效率。
這有點像集成電路設計中的 IP 模塊( Intellect Property ),即把一組擁有知識產權的電路設計集合在一起,構成芯片的基本單位,以供設計時搭積木之用。集成電路發展到超大規模階段后,芯片中凝聚的知識已經高度濃縮,以奔騰微處理器為例,其所承載的晶體管已多達 960 萬個,如果芯片設計依舊基于單個的晶體管而不是基于 IP 核的物理級設計,那永遠也不會有奔騰處理器問世。
“從 1968 年 NATO 軟件工程會議 Mcllroy 提交的論文《大量生產的軟件構件》中提出‘軟件組裝生產線'的思想開始,采用構件實現軟件復用,采用搭積木方式生產軟件就成為軟件人員長期的夢想”(引自互聯網實驗室——編者注)。但早期的構件局限于“類”的復用(代碼復用),有人稱之為“泥沙級復用”。蓋房子從擔水挖沙和泥開始,效率當然很差。面向對象技術出現后,軟件復用上升到應用層,但依然存在“結構混亂”問題,不能從根本上解決軟件工程的危機。一直到互聯網時代的“面向構件”技術,才實現了“對一組類的組合進行封裝”,并隱藏了具體的實現過程,只提供接口服務,使構件實現了代碼級、對象級、架構級和系統級多個層次的復用,有人稱之為“磚頭級復用”。
有了“磚頭級復用”的構件技術,軟件開發終于柳暗花明,“能夠像硬件一樣任人裝配了”,系統管理和維護的難度也呈“數量級地降低”。此前還有構件與中間件之分,現在隨著構件技術的升級,有人把中間件也納入了構件范圍。
目前主流的構件技術標準有:微軟的 COM/COM+ 、 SUN 的 JavaBean/EJB 、 OMG 的 CORBA 等,這些標準為應用軟件的工業化開發提供了平臺,結束了開發語言混亂局面,打通了軟件復用在通信、互操作等環境異構問題上的瓶頸。
由于具有“獨立性、功能性和互換性”的構件不再依存于系統,軟件工程對單體開發者的依賴性隨之減弱,企業管理也變得輕松起來。這便是趙文耘感到軟件企業老板不再難當的原因之一。在趙文耘看來,汽車制造最大的一次革命是“分離”,構件化也是一種分離,它意味著軟件產業的革命來臨了。
從 86.4 人月到 16.5 人月
在花園式的浦東張江高科技園,寶信軟件公司研發部張克強用 PPT 演示構件化開發。
大屏幕上出現了一個車輛川流不息的隧道,這就是一年前竣工的上海大連路跨江隧道。中央控制系統是寶信做的,“這種系統開發難度大,質量要求嚴,因為隧道車流量非常大,出一點問題浦東的交通就會陷入癱瘓。系統從立項到開通 9 個月,除去硬件選型等環節,實際留給軟件開發的時間只有 5 個月!睆堻c動鼠標,屏幕上出現了一個系統框架,很多五顏六色的小模塊咚咚咚地往里面蹦,就像魔術表演,大構件套小構件,眨眼功夫一個系統就搭好了! 81% 的代碼是復用的,只用了 16.5 人月。若用傳統方法,得 86.4 人月。我們采用第三方廠商提供的構件平臺去參加投標,從拿到需求到搭起一個可以跑起來的應用模型只用了兩三天。那些沒有構件手段的企業只能拿一摞枯燥的文字投標,用戶當然不會喜歡”,張克強說。
唐慶林是家大型物流公司的一把手,對 IT 算是外行,卻對構件的好處了如指掌,這是他“拿時間和痛苦換的”。唐在電話中告訴記者,他的公司上馬“南海國際物流協同工作平臺港口社區系統”,前后竟換了三波軟件商,歷時兩年半,耗資上千萬元!暗谝徊ㄩ_發商實力強大,但開發的系統中看不中用,最致命的是可擴展性不好,而我們這個物流平臺涉及海關、商檢、碼頭、貨主、船舶公司等方方面面,系統不靈活是無法用的,只好忍痛割愛;第二波廠商的系統框架不合理;第三波廠商規模名氣都不大,卻很熟悉物流業務,特別是采用了構件組裝模式,‘一塊一塊地鑲嵌起來',不但開發速度大大加快,維護和修改也很方便,一個普通大學生培訓兩個月就能熟練管理這套系統,骨干跳了槽也不會受到影響!
據《 Software Reuse 》分析,采用構件技術開發軟件,產品投放時間可縮短為原來的 1/2 到 1/5 ;產品缺陷密度可降低為原來的 1/5 到 1/10 ;維護成本可降低為原來的 1/5 到 1/10 ;整體開發成本可降低 15% ,長期項目可降低 75% 。
令人期待的“小狗經濟”
“溫州盛行‘小狗經濟'――就是一群人做好一件事。譬如生產摩托車,做輪胎的做輪胎,做發動機的做發動機,大家各做一塊,合起來就是最好的。小狗咬不死大象,但是一群小狗沖上去,你咬腿,我咬頭,大象就被咬死了!
復旦金仕達公司陳曉躍說這話時心情挺復雜的,作為一家軟件企業的技術總監,這些年他最頭痛的事是向外發包時無合作伙伴可覓。原因一是現有的開發模式無法對系統進行結構性拆分,二是產業鏈還沒形成。無奈之下他只好拿一個子系統出來找高校做,一個老師帶幾個學生,把一個軟件從頭做到尾,“最后做成了一塊短板子”。
構件讓陳曉躍看到了軟件產業實現“小狗經濟”的希望,焦急的只是不知道哪一天才會變成現實。金仕達總裁助理石興梅則信心十足:“用這種方法做軟件,必須劃分好哪些地方該用通用模塊,哪些地方該用核心模塊,全力做好核心,把通用的包出去,以尋求更低的成本。只要用到第三方的東西就會帶來專業分工,專業分工又帶來了專業積累――每個人只做擅長的那一塊,產業鏈就會形成!
“另一個好處是把知識和經驗用構件積累下來”,萬達信息公司首席技術官李光亞說,“以往軟件開發有點像黑瞎子掰玉米,掰一個丟一個”。當然,在理念上,傳統開發模式也不是不講“積累”和“復用”,但那與構件的復用不是一回事。前者是給客戶開發一個軟件,下次遇到相似的項目就在原來的代碼上修修補補。這種“懶漢式復用”的結果不是系統越來越成熟,而是越來越不好用,“補丁加補丁,最后面目全非”。
中國軟件行業協會副理事長、上海軟件行業協會秘書長朱三元總結說:面向構件技術所要求的復用是一種主動式復用――為了復用而設計,為了復用而開發,并要配以有效的管理,以方便查找和使用。其特點是“分解再組裝”,譬如它把一個應用系統分解為基礎構件、通用構件和應用構件,每一種構件都是從共性出發抽象出來的成熟的東西!坝辛藰藴蕵嫾,混沌的軟件世界就變得清晰了”。
李光亞解釋說:“譬如我們開發上海的醫保系統,傳統方法是用戶提需求,我來實現這個需求;跇嫾拈_發則不能只考慮實現上海這個需求,還要考慮整個醫保領域的需求,把共性的東西提煉出來做成構件備以后之用。這會促使企業清晰定位,扎根某個領域深耕細作,使自己成為領域專家!薄皼]有重疊就沒有沉淀,寶鋼十多年的業務經驗,被我們用一個個構件封裝起來了,今后再開發一個 30 億元規模的鋼鐵廠的信息系統,只需 27 人月就能交鑰匙,傳統方法得 200 人月以上!睆埧藦娬f。
“普元的構件開發平臺是試圖解決中國軟件市場的一個普遍問題――客戶的需求總在變動。雖然變化是永恒的,但比較而言,國內用戶比國外的變動更頻繁一些。因為中國用戶還不知道怎樣管理一個企業。譬如美國人今天穿套阿巴尼西服,明天換一套更好的西服是為了參加一個更高場合的活動。而中國人是今天有了錢就理個發,明天刮個胡子,后天再買件襯衫打個領帶――需求變化不在一個層次上。這中間還有很長的學習之路要走,中國企業信息化因此而風險更大,這也是導致軟件產業不掙錢的一個原因。用上了構件,這個問題就迎刃而解,因為用構件搭建系統非常靈活,修改也方便!逼赵 CEO 劉亞東說。
曾為亞信創始人之一的劉亞東算得上中國 IT 的符號式人物了,他的創業選擇對我們揣摸 IT 的風向不無參考價值。在北京友誼賓館的咖啡廳里,劉亞東向記者描述著他的“構件之賭”。劉離開亞信那陣子正趕上 IT 寒冬,便投資了兩個玉米加工廠,“那時我對投資 IT 沒有興趣,什么破爛公司都進來。玉米廠我是按 4 倍的市盈率投資的,就是人家賺了錢按 4 倍還你。但這對我只不過像買了一支股票參加分紅而已,我的興趣還是在 IT ,我在尋找真正的機會。 2001 年機會來了,這就是構件。條件有兩個,第一是 WTO ――洋人來了,中國企業都是小米加步槍,你死活也得弄挺機槍使使啊;第二是互聯網技術的成熟, XML 、 Java 、 J2EE 成為標準技術。有了這兩條,我才敢賭構件。否則,做出來的構件平臺都不知該賣給誰!
企業轉軌遭遇拐點
構件化雖好,卻有一道道坎橫在躍躍欲試的企業面前。
技術 / 方法之坎——需掌握 CBSE (領域工程技術)方法,以及構件庫、構件組裝與架構等技術。
工具 / 平臺之坎——實現流水線式的構件組裝,需要構件建模、制作、配置管理、項目管理等一系列工具。
標準 / 規范之坎——統一的標準規范是大范圍分工與協作的基礎,涉及構件運行平臺標準、描述規范、庫互操作標準、開發過程規范、質量及其度量標準等。
管理 / 人才之坎——構件開發本質上是一種資源配置管理,要對管理流程再造,涉及人員崗位的調整和利益的再分配,需要增加構件管理和架構師的角色,尤其要有能看清行業發展方向的領域專家,做軟件項目與構件開發的人員要分開,好比一幫人專門做零件,一幫人專門做組裝,角色分離,才能體現大生產。
“這幾年上海構件化研討會開了不下十幾次,研討焦點都是前期資金投入問題!鄙虾\浖夹g開發中心副主任葛孝堃說。需要花錢的地方很多,技術和設備的投入只是一方面,管理方式的改變更意味著隱性成本的增加。算下來,“用構件做第一個項目,成本是老方法的好幾倍!
據介紹,上海有家做醫院信息系統的企業,做了幾百家醫院,市場占有率無人能出其右,F在面臨著系統維護與資源管理的難題,準備向構件轉型,但是一核計,轉型至少得二三百萬元“起步費”,企業老總稱“遇到了一個向下的拐點”。
還有企業文化這道無形的坎!按蠹姨晳T自己動手去寫一些基礎軟件,認為‘找一個還不如寫一個',而大生產觀念是‘與其加工一個還不如到倉庫提一個'”,劉亞東說。面向構件的開發,實際是教給你一套管理、復用知識的方法!耙s束好你的工程師,不要隨意發揮,必須用標準構件去搭建系統!比绻l現某個構件有問題,應該去找構件工程師提出修改申請,你的任務就是“裝配”,F在很多開發工程師都是可以到處“救火”的高手,屬于藝術型的,你讓他改什么都行,可就是不能積累,不能復用,開發成本越來越高。
政府扶持遭遇難題
本報確立構件報道選題緣于政府的邀請。說來也巧,北京與上海市科委的相關部門不約而同地想到了邀請記者宣傳構件庫。顯然,他們遇到了推廣的難題。
斥資 8000 萬元創建的“國家 863 軟件專業孵化器――北京軟件產業基地公共技術支撐體系”位于上地中關村軟件園,環境設施都是大手筆,據稱是國內“規模最大、資源最豐富、服務面最廣”的軟件產業公共服務平臺, 2002 年開始對外服務,資源利用率達 80% ,其中的構件庫已發布 3043 個構件?偣こ處熤x騰翔告訴記者,政府組建這個庫是為了減少中小企業的重復開發。但企業對構件有一個認知過程,很多人對“你的構件是不是對我有用”還持懷疑態度。為此,他們提供了免費一條龍服務,包括建立幾個應用示范點,指導使用和質量把關,并發展了 4 家應用示范單位!翱傊,只要你用這里的構件,我們就全程免費服務。做的事情很多還是公益性的,這當然是暫時的,隨著企業對構件認知度的提高,這個公共服務平臺的市場化成份會逐漸加大!
曾有人質疑:具有政府背景的公共技術支撐體系會不會發展成一個官僚機構?他們不知道,這個體系從成立伊始就開始了企業化運營的探索,目標是“辦成一個事業單位性質企業化管理的第三方服務機構”,這與把它簡單地交給一個完全以贏利為目標的企業來實施是不同的,北京市科委信息技術處姜廣智處長這樣說。
“構件庫的創意是北京提出來的,上海得到了北京的啟發。上海構件庫是 2002 年市科委重大項目和‘十五'國家 863 計劃項目。最早是想做成一個構件大賣場,政府搭一個交易平臺,提供‘零配件'讓企業來用,F在回過頭來看,‘大賣場'的條件還不成熟,企業有顧慮:知識產權怎么辦?買來的構件不好用怎么辦?這需要一個過程,不能一蹴而就”。上海市科委信息技術處處長聶春泥接受采訪時說。中小企業向構件化轉軌有困難,政府的角色就是扶一把、送一程!皫焓禽d體與抓手”,圍繞著“庫”要逐步形成幾個高地:科研高地、服務高地、技術交流的高地。
2003 年 12 月上海構件庫竣工時召開了一個“構件化帶動軟件工業化應用示范大會”,企業的熱情出乎聶春泥她們的預料!皩嵲拰嵳f,建立構件庫這種公共服務平臺,我們也是摸著石頭過河,心中無底,現在堅定了信心――我們所做的事情一定是企業所需要的,企業覺著有實惠就愿意跟著政府走!甭櫞耗嗾f。從市場規律來看,這事交給企業運作更合適些,問題是現在讓企業推廣這項技術,信譽度還不夠,也沒哪個企業愿意出頭,所以政府先走一步。第二步是“通過服務能有回報”,第三步是高回報的成熟市場。隨著三部曲唱完,我們對上海軟件開發中心的扶持將會弱化,直至他們成為一個獨立的公共服務平臺公司或構件中介公司。我們希望將來全國的構件庫會連起來,實現更大范圍的資源共享。
采用何種模式創建構件復用平臺,涉及到未來構件化的機制問題,對此,政府、企業、大學、專家各有不同的看法,概括來說有三種途徑:一是建立類似圖書館的公益性資源平臺;二是由國家投資創建不以贏利為目的交易所,通過服務贏利;三是完全企業化運作。就我國目前情況看,由于實行構件化開發的企業所占比例甚少,遠低于建立公司化運作平臺所要求的 30% 的底線,所以目前還是以政府推動為主。專家認為,隨著構件技術的推廣,走向完全企業化運作將是最理想的選擇。
記者手記
構件化:需求推著走
軟件開發的構件化,最大的推動力來自需求。過去你問什么是軟件,惟一的辦法是把你寫的程序拿過來。早期的簡單程序還好,可到了一“拿”就是“ 200 萬行程序加 20 本手冊再加若干本需求說明”的時候,便成了不能承受之重。如果發現問題需要修改,還得需求、程序、文檔一起改,這對用戶和企業而言幾乎是不可能的事情:“任何事物有了‘百萬級'的因子之后,都是沒有辦法直接管理的,軟件因此變成了掙扎于焦油坑中的巨大怪獸,系統建成即閑置”(普元公司 CTO 黃柳青語)。
但換個角度看,如果企業接二連三走麥城,原因又驚人地一致的話,這個產業也就到了變革的時候了。這就是“社會需求勝過 10 所大學”的推動力量:因痛苦而思變,因痛苦而創新。至于創新的路徑,“大生產”早就給出答案了――“用構件組裝”。
軟件構件化在發達國家業已普及,美國已有上萬個商業軟件構件( Cots )、近千個專業構件制作組織和一批商業構件庫運作機構,形成了幾百億美元的構件市場。
在中國,構件帶來的變革還不為多數企業所認識,特別是那些掙扎在溫飽線上尚無暇顧及創新的中小企業。上海構件化推廣走在全國前列,但該市 1000 多家軟件企業真正認識構件的只有 10 %~ 15% 。上個世紀 80 年代初,楊芙清院士帶領北大軟件工程研究所牽頭承擔的國家科技攻關項目“青鳥工程”,目標之一就是構件技術,現已碩果累累;中科院軟件研究所馮玉琳博士帶領的隊伍在構件工程的研究上也取得了突破性進展。但“好的技術并沒有帶來人們期望的好結果,直到今天,構件技術的應用仍然局限于小范圍內”(楊芙清語)。
所幸政府已看到了這個大趨勢。 2002 年 7 月,國務院 47 號文將構件庫列為影響軟件產業的重大關鍵共性軟件。 2004 年 4 月,科技部、發改委、商務部、信產部、標準化委在“國科發高字” 124 號文中,把發展“構件庫”寫進了 2005 年“加強軟件企業技術創新”的目標中。北京和上海分別由科委出面組建構件庫,幫助中小企業開展構件化應用。北京叫“軟件產業基地公共技術支撐體系”,由“三庫四平臺”組成,其中的一庫即軟件構件庫;上海的“構件庫”依托于上海軟件技術開發中心,內容包括“六個一”工程:一批示范應用企業、一個構件庫、一個運行服務平臺、一套組裝工具、一套標準規范、一套運行規則。
可以預料,構件化駛上中國軟件產業的快車道,已為時不遠。畢竟,市場的需求和誘惑是誰也擋不住的。
文章來源于領測軟件測試網 http://www.kjueaiud.com/