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