我們希望,面向構件技術的出現可以幫助中國企業從技術的角度加速管理進步,減少企業在信息化建設中的彎路,提高企業競爭力。
——劉亞東,《軟件中國的機會》
經過百萬行代碼,無數無止無休的軟件工程項目的洗禮之后,軟件行業的思考都集中在軟件開發、管理的能力方面了。從構件技術的出現,網絡服務的產生,模型驅動的探索,大家都在嘗試更大粒度的軟件編寫,更自動化的軟件生成,以及更松散的軟件組合。正是在這樣的大環境之下,面向構件的技術體系應運而生,引領潮流。麥肯錫也在考察了全球一百多家軟件企業之后,在《軟件成功的奧秘》一書中指出,“不斷采用構件技術是未來軟件生產力提高的主要來源”。
面向構件以構件技術為核心,以數據總線為依托,融合了最新的構件技術、網絡服務技術和模型驅動技術。經過三、五年的不斷實踐,不斷提煉,已經從毛毛蟲成長為飛蝴蝶,成為軟件業界引人注目的新潮流。更令人振奮的是,這樣一項軟件的新興技術,發源在中國這樣一個地方,因為正是中國的軟件應用環境在全球來講都是變化最快,交易量最多,而投資最少的一個軟件市場。
中國的大量客戶,包括電信、金融、政務,本身的業務發展模型、市場定位都在不斷地演化過程中,而其信息技術部門往往因而承擔著巨大的責任。一方面,軟件系統必須快速地趕上業務發展的要求。另一方面,中國的發展中的業務模型在全球找不到第二家,也因而找不到另外一個地方的成熟的應用軟件可以購買來完成自己的業務。比如在電信行業,在使用國際計費產品失敗之后,尋找集成商自主開發成了首選。但是集成商的開發能力有限,在常常以百萬行計的代碼面前,一個系統往往開發兩到三年,最多勉強使用,在接下去的業務變革中又推倒重來。
巨大的軟件投入和軟件開發周期,又因而成為企業發展的一大阻力。除了最大的電信公司,最大的銀行,大家往往因為軟件投入的脫節而無法快速成長,在相對已經比較開放的中國市場中,公司的成長無形中受到軟件技術投入的制約。
面向構件解決了企業應用的結構問題。通過面向構件技術,一個系統是按照個性化的需求,從一個比較完備、比較成熟的構件庫組裝而成,大大提高了系統的成功率、穩定性、適應性和逐步發展性。通過面向構件對業務的封裝和積累,能夠保護現有投資,有助于高效地表達業務,進而表現其內在的組織敏捷性。當與面向服務技術聯合時,面向構件提供了一個重要的潛在現實效益,從而改變組織的技術與前景。我們的目標是幫助讀者去探索、理解并實現這個潛在的現實效益。
面向構件還解決了企業應用的開發和管理問題。通過建立一個不斷完整的構件庫,企業的知識可以得到有效的管理。業務知識不是在上百萬行的代碼之中,也不是在每天晚上回家的員工腦里,而是在一個可見的、可控的構件庫中,便于管理、衡量,達到持續發展的目的。企業可以看到自己的業務、知識和流程。而廠商也通過構件庫來不斷發展自己的核心競爭力。要不,有二、三千人的軟件大公司和一個新開始的二、三十人的小公司有什么本質區別呢?
很多軟件工程師也面臨這樣一個問題。剛從學校出來的幾年,大家比較喜歡技術鉆研,熬夜寫代碼,找Bug。而后自己想想,收獲在哪里呢?確實每個人都積累了很多經歷和經驗,但只是一個熟練的代碼工具。逐漸地大家希望自己能從日常的代碼中逃離出來,去設計、規劃一個大型的軟件系統,而且能夠長期持續發展。面向構件也正是這樣的一個承載思想,承載知識,承載經驗的平臺。
面向構件的出現不是“嶄新的”,其外延和基礎技術仍在不斷發展。面向構件作為將軟件系統分解與隔離的一種方法,是一個非常通用的概念。我們注意到這在傳統產業實踐中更為常見,我們日常接觸到的傳統行業已經大部分實現了某種形式的構件化生產。盡管如此,一旦應用到軟件領域,面向構件卻是一個需要重新思考的主題。
本書分為六章:
第一章,面向構件概述及案例研究介紹。在這一章中,我們通過對傳統行業發展的觀察發現,構件化不是軟件行業所特有的,而是所有行業進入工業化生產的必經之路。有了構件知識才能積累、才能重用。古代的建筑、現在的汽車、我們的軟件都是這樣。在這一章里,我們還具體介紹了神州電信這么一個假想的典型用戶,便于大家思考和練習。
第二章,面向構件的軟件體系。我們對面向構件技術的理論體系,做了全面的考察,包括面向構件的概念和面向構件的軟件架構,從傳統的橫切豎割的軟件架構出發,引入更為靈活、穩定的面向構件的條塊編織的架構。
第三章,面向構件的軟件過程。這一章內容比較豐富,為面向構件的實踐總結了一套完整的全過程的方法。從軟件工程的視角,用面向構件的思想,從新審視軟件過程,包括軟件需求,軟件分析與高層設計,并行開發與測試,提交發布與部署,以至應用軟件的管理。我們發現,以往的軟件工程因為每個階段的概念的脫節和工具的脫節造成了軟件工程連貫性較差,前后階段的雙向可驗證性較差的問題,通過面向構件的工程管理有了很好的解決方法。構件是前后貫通需求、分析、設計、開發、測試、提交、發布、部署、以至應用管理的實體,使軟件工程有了連貫性和雙向可驗證性,更好的保障軟件系統和需求的一致性。
第四章,面向構件的項目管理。我們在這里提出了面向構件的項目級管理進程和組織方法。在面向構件的項目管理中,人員的工作分配更加清晰,互相之間工作的獨立性更強,減少因為工作項間互相制約帶來的不確定性。面向構件的方法大大加強了軟件項目的可管理性和可控制性。
第五章,面向構件的組織及管理。我們發現,面向構件的方法不僅提高了項目管理能力。如果在組織級跨項目地對企業知識、軟件構件庫進行規劃、設計和管理,企業的軟件能力將隨著構件庫的不斷豐富而不斷的提高。
第六章,面向構件的中間件。面向構件是一個完整的理論體系,也有一套完整的實踐方法。這一套方法在不同的技術平臺上都會有所幫助,但是在一個為面向構件打造的平臺上可以使面向構件的價值最大化。這一章里我們討論了一個面向構件的中間件的設想和要求。
同時本書還附上了我們在本書的實踐中所使用和參考的面向構件的中間件,普元EOS的介紹、普元EOS構件庫參考、完整的案例研究總結、開發規范條例(部分)、構件文檔參考等。如果大家需要更多的資料,需要試用普元EOS,或者參加最新的軟件技術的討論、交流,可以參加面向構件成長社區http://gocom.primeton.com。
本書的創作是長期積累的結果,包括EOS產品實踐與研究成果、來自客戶的反饋,以及最新的SOA和SCA規范等。本書的主要目的是從廠商中立的角度來討論面向構件的方法與實踐,同時還花費大量精力去研究面向構件的概念、架構,以及具體的產品實現。歡迎有興趣的讀者們一起來研究、批評和發展面向構件的軟件技術。
作 者
2006年4月
回書目 下一節 |