面向對象發展到面向構件,由面向構件再發展到面向服務,因此它們的認知觀和基礎理論都是息息相關的,解決大型軟體的開發效率和質量除了要解決編程的正確性外,還必需解決開發周期長、復用性差、成本高、文檔多、以及難以適應系統演化等問題。
40年前國際上發生了「軟體危機」,如IBM公司開發一個作業系統、或美國的航空公司開發飛機訂票系統,都花費了上千人年的工作量,開發周期長、而開發出來的產品卻是錯誤很多,難以維護和適應修改。正在此時,一位荷蘭的物理家E.W.Dijkstra提出了一種「結構程序設計方法」,他認為:人的智力是有限的,採用數學或物理學的思維方法,用枚舉、抽象、歸納、類比等思維方式簡化問題,稱為結構程序的分析和設計方法(SASD)。由於我也是數學系畢業的,我拜讀了他的所有論文,編寫一本著作「編程方法學」,此書三次獲得著作大獎,並在全國十多所名牌大學講過課。用此方法擴展到軟體設計中時,稱為「結構化分析和結構化設計(SASD)」,
所謂「結構程序設計方法」,就是基於面向對象的體系結構沒計方法的早期藍本,側重於解決程序正確性的編程的方法,以此為基礎建立了軟體工程這門學科,建立了編程的基礎理論體系。
解決軟體開發效率的認知觀及其基礎理論
我們都知道由面向對象發展到面向構件,由面向構件再發展到面向服務,因此它們的認知觀和基礎理論都是息息相關的,解決大型軟體的開發效率和質量除了要解決編程的正確性外,還必需解決開發周期長、復用性差、成本高、文檔多、以及難以適應系統演化等問題,十多年來仍舊困惑著這門學科,「軟體危機」仍未解決。
姍姍來遲的重用技術
人們的知識是從一個定理、一個原理逐步積累起來的,,社會是依靠知識的不斷積累發展的。然而編制軟體每次卻都是從零開始,這是造成「軟體危機」的根本原因。由此提出了編程工作是否也可以重用以前成功的經驗和程序呢?。然而軟體的重用比數學中重用難得多,整整又經過十多年的探索,到七十年代才獲得成功。
面向對象技術就是為解決重用而提出了「封裝性、繼承性和多態性」,提出了一批基礎理論著作,我用此方法設計了大型作業系統,
但這種方法真正用於實際工程中的開發應用軟體卻很少見到:另外OO未形成統一的模型和概念,難以形成標準;工程上的實施缺乏開發規範;在技術上要術開發人員的素質較高;最大的問題是被開發出來的軟體難以演化,而軟體要能適應變化是客觀存在的。 為此發展出單純重用的「構件和架構」思想及其理論體系。在1998年日本京都召開的「基於構件的軟體開發(CBSD)」國際專題學術會議上,一致認為構件技術離不開構件和體系結構。軼件體系結構現簡稱架構。
軟體開發技術已發展到基於構件/架構的技術,與此同時出現了建模語言UML。
UML統一建模語言
由於面向對象的不足,三位面向對象的奠基人聯合起來,吸收了構件的思想,創建了UML統一建模語言。UML為軟體開發和SOA的產生起到奠基和里程碑的作用。
UML主要理論成果是:①統一面向對象的基本概念,並引用了用例、,實際上己演化到構件和架構概念;②認為軟體開發的過程實質上是從抽象的模型逐步細化,過渡到具體的實現,其中間的每個階段都是實現了某一抽象模型,UML為此提供了建立模型的工具,用直覺的圖形來建立模型,從此軟體專家就有了自已的工具,正如音樂家有了五線譜工具那樣;③為適應軟體的多變性,提供了演化的概念。為此建模語言為構件技術建立了基礎理論模型。
軟體架構的產生的背景來自分布式系統的需求
在此之前的軟體架構都採用層次結構的架構,直到分布式系統提出了c/s胖終端模式的架構後,才產生對架構的研究,出現了構件和架構。
卡內基.梅隆大學為軟體的架構和框架建立了紮實的基礎理論,軟體體系結構是軟體系統的高級抽象,體現了軟體設計思想,反映了系統開發中最早的決策,明確了系統有那幾部分組成,它們之間是如何交互的;進一步影響到資源的配置、團隊的組織以及產品的質量。系統的成敗在於體系結構。
特別是三層體系結構是由胖終端中把應用構件獨立出來組成了應用層。分布式系統的複雜性主要來自網絡的傳輸,由此提出了中間件技術及其理論。
我參與了國產網絡版CIS課題的開發,由於採用了這種結構,獲得了極大的成功,廣州地稅的數據大集中,銀行的通存通取、機票訂票、電子商場等都在國內獲得成功。
面向服務架構被廣泛接受絕非偶然
八年前我的最後一位博士生王文軍的學位論文是「分布式系統的聯邦結構」,即面向服務的架構SOA,但未被應用和發展,而二年前IBM公司提出後卻很快被廣泛接受,其原因可從客觀需求上和技術成熟度上二方面來敘述:
⒈客觀上需要
隨著網絡普及化,越來越迫功需要將現有多個應用系統集成,以能實現更強的信息處理功能。如電子商務的供應鏈、智能交通、電子政務、數字地球等已是本世紀發展的熱點。Gartner Group預計,到2008年基於件產品將占領70%的市場份額。IDC預測到 2007年,基於SOA的支撐平台、應用軟體等相關市場將達到210億美元。SOA是當前最理想的解決方案。
⒉面向對象和構件架構的基礎理論和技術已趨向成熟,發展到統一建模語言,提供建模工具;中間件集群理論己趨向成熟,並提出了中間件inter bus技術;
⒊瀏覽器技術普及,己成為行業標準,奠定了SOA的基礎理論和技術規範,由此巳是水到渠成,使SOA拙拙成長。
什麼是SOA
SOA(service-oriented architecture)是面向服務的體系結構,是一類分布式系統的體系結構。這類系統是將異構平台上應用程式的不同功能部件(稱為服務)通過這些服務之間定義良好的接口和規範,按鬆耦合方式整合在一起,即將多個現有的應用軟體通過網絡將其整合成一個新系統。
SOA的二大認知觀「整合創新和隨需應變」及其基礎理論和技術
這二句話是IBM提出的,多應用的整合不但是跨平台的,而且應該是鬆耦合的,也就是說,被整合的應用自身仍保持其自主,如香港政府已回歸中國,但保持一國二制,採用了市場經濟體系,我為人人,人人為我,用服務這個簡單概念整合在一起。另外,新增設的業務功能,應允許適應變化,即隨需應變。
SOA實現中的組成部分
SOA的體系結構仍舊是三層或N層結構,但對異構平台各層之間的聯繫,不是用CORBA或J2EE的方式,而且用Web的服務協議來實現,概念簡單統一,目前都是採用嵌入ESB服務總線的平台來實現,ESB是一個中間件群,確保系統實現服務功能、各種中間件功能及鬆耦合連接等。另外,普遍採用BPEL(業務過程執行語言)來描述用戶需求,由BPM(業務過程管理平台)來解釋執行。
SOA的主要優點
①利用現有的資產。方法是將這些現有的資產包裝成提供企業功能的服務。組織可以繼續從現有的資源中獲取價值,而不必重新從頭開始構建。
②更易於集成和管理複雜性。將基礎設施和實現發生的改變所帶來的影響降到最低限度。因為複雜性是隔離的。當更多的企業一起協作提供價值鏈時,這會變得更加重要。
③ 更快地整合和現實。通過利用現有的構件和服務,可以減少完成軟體開發生命周期所需的時間。這使得可以快速地開發新的業務服務,並允許組織迅速地對改變做出響應和縮短開發時間。
④ 減少成本和增加重用。通過以鬆散耦合的方式公開業務服務,企業可以根據業務要求更輕鬆地使用和組合服務。
⑤ SOA 業務流程是由一系列業務服務組成的,可以更輕鬆地創建、修改和管理它來滿足不同時期的需要。
國外發展情況
IBM公開宣布僅三年不到,去年年底,BEA公司、甲骨文公司、惠普等所有名牌公司都在中國開了SOA發布會。
由於標準都一致,都是把本公司的中間件產品向SOA靠,提供開發和運行SOA系統的相應工具和環境,以爭取市場效益。
國內發展情況
正邦公司是國內最早採用SOA技術之一,開發了上海證卷公司的管理系統。中和威公司開發了ESB的SOA運行平台的產品。但國內看望的多,具體應用的還剛剛開始。
北京市市科委將支持SOA提供研發資金,由軟體行業促進中心統一管理,促進北京市IP行業發展。
關鍵技術和基礎理論
⒈各種規範和標準,如SOAP、開發系統的規範。
⒉各種工具和環境。如ESB平台、BEPL語言執行平台。
⒊適應SOA的系統需求建模和領域參考模型。
4比較CORBA、J2EE、和COM,融合到SOA中。
結束語
總之:SOA理念清晰、技術趨向成熟、優點突出、實現不難,但要做好卻不容易,如果大家少做重複性工作,經常交流,我們會趕上國際水平,振興我國IP行業。我希望長風聯盟能挑起此重擔,本人將全力支持。
(責任編輯:朱晶)
更多SOA行業研究分析,詳見中國報告大廳《SOA行業報告匯總》。這裡匯聚海量專業資料,深度剖析各行業發展態勢與趨勢,為您的決策提供堅實依據。
更多詳細的行業數據盡在【資料庫】,涵蓋了宏觀數據、產量數據、進出口數據、價格數據及上市公司財務數據等各類型數據內容。