版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件體系結(jié)構(gòu)基礎(chǔ)經(jīng)典軟件工程過(guò)程軟件體系結(jié)構(gòu)的定位主要內(nèi)容:一、發(fā)展歷程二、定義三、主要研究?jī)?nèi)容四、重要性一、發(fā)展歷程
自從軟件系統(tǒng)首次被分成許多模塊,模塊之間有相互作用,組合起來(lái)有整體的屬性,就具有了體系結(jié)構(gòu)。好的開(kāi)發(fā)者常常會(huì)使用一些體系結(jié)構(gòu)模式作為軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)策略,但他們并沒(méi)有規(guī)范地、明確地表達(dá)出來(lái),這樣就無(wú)法將他們的知識(shí)與別人交流。軟件體系結(jié)構(gòu)是設(shè)計(jì)抽象的進(jìn)一步發(fā)展,滿(mǎn)足了更好地理解軟件系統(tǒng),更方便地開(kāi)發(fā)更大、更復(fù)雜的軟件系統(tǒng)的需要。
一、發(fā)展歷程
軟件體系結(jié)構(gòu)這個(gè)術(shù)語(yǔ)第一次出現(xiàn)在1969年由NATO組織的一個(gè)關(guān)于軟件工程技術(shù)的會(huì)議上[1]。[1]KruchtenP,ObbinkH,StaffordJ.Thepast,present,andfutureofsoftwarearchitecture.IEEESoftware,2006,23(2):22?30.一、發(fā)展歷程
從那時(shí)候一直到20世紀(jì)80年代末期,出現(xiàn)了一些與軟件體系結(jié)構(gòu)相關(guān)的研究,其中典型的研究成果包括:
EdsgerDilkstra首先提出了軟件結(jié)構(gòu)的重要性,他認(rèn)為“軟件體系結(jié)構(gòu)的研究應(yīng)該注重軟件系統(tǒng)的分割及其結(jié)構(gòu),而不應(yīng)該僅僅局限于實(shí)現(xiàn)一個(gè)正確的軟件系統(tǒng)”,提出了結(jié)構(gòu)化設(shè)計(jì)的思想,并且指出良好的軟件結(jié)構(gòu)體現(xiàn)出來(lái)的概念完整性將使軟件的開(kāi)發(fā)和維護(hù)大大受益[2]。一、發(fā)展歷程FredBrooks提出了概念結(jié)構(gòu)的思想,認(rèn)為系統(tǒng)的體系結(jié)構(gòu)是完整、詳細(xì)的用戶(hù)接口說(shuō)明,提出了在系統(tǒng)結(jié)構(gòu)設(shè)計(jì)中,概念完整性是最重要的考慮因素,并進(jìn)一步指出體系結(jié)構(gòu)設(shè)計(jì)必須和實(shí)現(xiàn)區(qū)分開(kāi)來(lái),他指出“體系結(jié)構(gòu)陳述的是發(fā)生了什么,而實(shí)現(xiàn)描述的是如何實(shí)現(xiàn)”[3]。一、發(fā)展歷程DavidParnas發(fā)展了軟件結(jié)構(gòu)研究,先后提出了信息隱蔽模塊、軟件結(jié)構(gòu)和程序家族等概念[4-7]??傮w來(lái)說(shuō),該階段的研究還沒(méi)有形成完整的技術(shù)體系,并且在概念上也比較混亂,如軟件結(jié)構(gòu)、軟件系統(tǒng)結(jié)構(gòu)、軟件系統(tǒng)組織等。一、發(fā)展歷程
軟件體系結(jié)構(gòu)作為一個(gè)單獨(dú)的學(xué)科并對(duì)其開(kāi)展系統(tǒng)的研究始于20世紀(jì)90年代初。
1991年,在WinstonW.Royce和WalkerRoyce父子的一篇論文中,軟件體系結(jié)構(gòu)第一次同時(shí)出現(xiàn)在論文標(biāo)題和論文內(nèi)容中[8]。一、發(fā)展歷程
在1992年,DewaynePerry和AlexanderWolf發(fā)表了對(duì)以后發(fā)展有巨大影響的文章“FoundationsfortheStudyofSoftwareArchitecture”,在這篇文章中提出了關(guān)于什么是軟件體系結(jié)構(gòu)的著名公式[9]:
{elements,forms,rationale}=softwarearchitecture
這篇文章也被許多學(xué)者看作是軟件體系結(jié)構(gòu)正式成為軟件工程的一個(gè)研究方向的標(biāo)志。一、發(fā)展歷程
軟件體系結(jié)構(gòu)得到學(xué)術(shù)界和工業(yè)界廣泛認(rèn)同并進(jìn)入全面發(fā)展始于1995年。
1995年第一屆軟件體系結(jié)構(gòu)國(guó)際研討會(huì)IWSA-1召開(kāi),IEEESoftware和IEEETransactionsonSoftwareEngineering軟件體系結(jié)構(gòu)專(zhuān)刊出版。
1996年《SoftwareArchitecture:PerspectivesonanEmergingDiscipline》專(zhuān)著出版。
一、發(fā)展歷程
最初,軟件體系結(jié)構(gòu)概念的提出是為了解決從軟件需求向軟件實(shí)現(xiàn)(包括代碼)的平坦過(guò)渡問(wèn)題,其研究主要集中在軟件生命周期的設(shè)計(jì)階段,關(guān)注如何通過(guò)SA解決軟件系統(tǒng)的前期設(shè)計(jì)問(wèn)題,典型的研究點(diǎn)如體系結(jié)構(gòu)描述語(yǔ)言、體系結(jié)構(gòu)風(fēng)格、體系結(jié)構(gòu)的驗(yàn)證、分析、評(píng)估方法等。一、發(fā)展歷程
此后,隨著更多不同背景研究者的參與,SA的研究也開(kāi)始超出軟件設(shè)計(jì)階段,逐步擴(kuò)展到整個(gè)軟件生命周期。如在系統(tǒng)設(shè)計(jì)前期考慮在需求中引入對(duì)體系結(jié)構(gòu)的考慮,在設(shè)計(jì)后期考慮如何用SA支持系統(tǒng)的實(shí)現(xiàn)、組裝、部署,以及開(kāi)發(fā)階段之后的維護(hù)、演化與復(fù)用等。二、定義
雖然軟件體系結(jié)構(gòu)已經(jīng)在軟件工程領(lǐng)域中有著廣泛的應(yīng)用,但迄今為止還沒(méi)有一個(gè)軟件體系結(jié)構(gòu)被大家所公認(rèn)的定義。許多專(zhuān)家學(xué)者從不同角度和不同側(cè)面對(duì)軟件體系結(jié)構(gòu)進(jìn)行了刻畫(huà)。長(zhǎng)期以來(lái),CMU-SEI(卡內(nèi)基梅隆大學(xué)軟件工程研究所)在其網(wǎng)站上公開(kāi)征集SA的定義,至今已有百余種。二、定義/architecture/start/glossary/index.cfm?ClassicSoftwareArchitectureDefinitions經(jīng)典的軟件體系結(jié)構(gòu)定義?ModernSoftwareArchitectureDefinitions現(xiàn)代的軟件體系結(jié)構(gòu)定義?BibliographicSoftwareArchitectureDefinitions著作中的軟件體系結(jié)構(gòu)定義?PublishedSoftwareArchitectureDefinitions出版物中的軟件體系結(jié)構(gòu)定義?CommunitySoftwareArchitectureDefinitions機(jī)構(gòu)的軟件體系結(jié)構(gòu)定義二、定義Perry&Wolf1992SA={elements,form,rational}。軟件體系結(jié)構(gòu)是由一組元素(elements)構(gòu)成,包括處理元素(processingelements)、數(shù)據(jù)元素(dataelements)和連接元素(connectingelements)共3類(lèi),處理元素負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行加工,數(shù)據(jù)元素是被加工的信息,連接元素把體系結(jié)構(gòu)的不同部分組合連接起來(lái)。軟件體系結(jié)構(gòu)形式(form)是由專(zhuān)有特性(properties)和關(guān)系(relationship)組成,專(zhuān)有特性用于限制軟件體系結(jié)構(gòu)元素的選擇,關(guān)系用于限制軟件體系結(jié)構(gòu)元素組合的拓?fù)浣Y(jié)構(gòu)。而在多個(gè)體系結(jié)構(gòu)方案中選擇合適的體系結(jié)構(gòu)方案往往基于一組準(zhǔn)則(rational)。二、定義Garlan&Shaw1993
軟件體系結(jié)構(gòu)是設(shè)計(jì)過(guò)程的一個(gè)層次,它處理算法和數(shù)據(jù)結(jié)構(gòu)之上關(guān)于整體系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和描述方面的一些問(wèn)題,如大組織結(jié)構(gòu)和全局控制結(jié)構(gòu);關(guān)于通訊、同步和數(shù)據(jù)存取的協(xié)議;設(shè)計(jì)元素的功能定義、物理分布和合成;設(shè)計(jì)方案的選擇、評(píng)估和實(shí)現(xiàn)等。二、定義Bass等1994
一個(gè)系統(tǒng)的體系結(jié)構(gòu)設(shè)計(jì)至少?gòu)囊韵氯齻€(gè)方面進(jìn)行描述:該系統(tǒng)應(yīng)用領(lǐng)域的功能分割、系統(tǒng)結(jié)構(gòu)和結(jié)構(gòu)的領(lǐng)域功能分配。二、定義Hayes-Roth1994
軟件體系結(jié)構(gòu)是一個(gè)由功能構(gòu)件組成的抽象系統(tǒng)的說(shuō)明,按照功能構(gòu)件的行為、界面和構(gòu)件之間的相互作用進(jìn)行描述。二、定義Garlan&Perry1995
軟件體系結(jié)構(gòu)包括一個(gè)程序/系統(tǒng)的構(gòu)件的結(jié)構(gòu)、構(gòu)件的相互關(guān)系、以及控制構(gòu)件設(shè)計(jì)演化的原則和指導(dǎo)三個(gè)方面。二、定義Boehm等1995
一個(gè)軟件體系結(jié)構(gòu)由以下三部分組成:一組軟件系統(tǒng)的成分、連接和約束;一組系統(tǒng)倉(cāng)庫(kù)管理員提出的需求;一個(gè)理論,它證明用構(gòu)件、連接和約束定義的一個(gè)系統(tǒng)在實(shí)現(xiàn)后能滿(mǎn)足系統(tǒng)倉(cāng)庫(kù)管理員需求。二、定義Soni,Nord,Hofmeister1995
軟件體系結(jié)構(gòu)至少由四個(gè)不同的實(shí)例化結(jié)構(gòu),這些結(jié)構(gòu)從不同的方面描述了系統(tǒng):概念體系結(jié)構(gòu)按照主要設(shè)計(jì)元素和這些元素之間的關(guān)系描述系統(tǒng);模塊連接體系結(jié)構(gòu)包含兩個(gè)正交的結(jié)構(gòu):功能分解和分層;執(zhí)行體系結(jié)構(gòu)描述了一個(gè)系統(tǒng)的動(dòng)態(tài)結(jié)構(gòu);代碼結(jié)構(gòu)描述了在開(kāi)發(fā)環(huán)境中源代碼、二進(jìn)制和庫(kù)是如何組織的。二、定義Show1995
將軟件體系結(jié)構(gòu)定義分類(lèi)為多個(gè)模型:結(jié)構(gòu)模型認(rèn)為軟件體系結(jié)構(gòu)是由構(gòu)件、構(gòu)件間的連接加上一些其他方面組成的,包括:配置,風(fēng)格;條件,語(yǔ)義;分析,屬性;理論,需求說(shuō)明、倉(cāng)庫(kù)管理員需求??蚣苣P皖?lèi)似于結(jié)構(gòu)觀點(diǎn),但主要強(qiáng)調(diào)整個(gè)系統(tǒng)的內(nèi)在結(jié)構(gòu)(常常是單一的),而不是它的組成。動(dòng)態(tài)模型重在系統(tǒng)的行為質(zhì)量,“動(dòng)態(tài)”可以是整個(gè)系統(tǒng)的配置變化、通訊和交互通道的設(shè)置或取消,也可以是計(jì)算過(guò)程中的動(dòng)態(tài)性,如數(shù)值改變等。過(guò)程模型重在體系結(jié)構(gòu)的構(gòu)造,構(gòu)造的步驟和過(guò)程。按照這個(gè)觀點(diǎn),體系結(jié)構(gòu)是實(shí)施過(guò)程描述的結(jié)果。二、定義ANSI/IEEE標(biāo)準(zhǔn)1471-2000SA={component,relationship,environment,prineiple}。軟件體系結(jié)構(gòu)是一個(gè)系統(tǒng)的基本組織結(jié)構(gòu),表現(xiàn)為構(gòu)件、構(gòu)件之間的相互關(guān)系、構(gòu)件與環(huán)境之間的相互關(guān)系,以及指導(dǎo)其設(shè)計(jì)和演化的原理。二、定義Bass,Clements,Kazman2003
一個(gè)程序或計(jì)算系統(tǒng)的軟件體系結(jié)構(gòu)是該系統(tǒng)的一個(gè)或多個(gè)結(jié)構(gòu),它們由軟件元素、元素的外部可見(jiàn)屬性以及這些元素之間的關(guān)系組成。其中,“外部可見(jiàn)”屬性是指其他元素可以了解一個(gè)元素的前提,包括提供的服務(wù)、性能特性、錯(cuò)誤處理、共享資源使用等。二、定義Clements等2010
軟件體系結(jié)構(gòu)是關(guān)于系統(tǒng)的一組結(jié)構(gòu),它們由軟件元素、軟件元素之間的關(guān)系和兩者的屬性組成。二、定義張效祥,計(jì)算機(jī)科學(xué)技術(shù)百科全書(shū),清華大學(xué)出版社,p628,2005
軟件體系結(jié)構(gòu)softwarearchitecture是軟件總體結(jié)構(gòu)的抽象表示,或以此為研究對(duì)象的學(xué)科。規(guī)定性含義描述性含義多視面含義二、定義規(guī)定性含義軟件體系結(jié)構(gòu)=(結(jié)構(gòu)元集,結(jié)構(gòu)形,結(jié)構(gòu)理)結(jié)構(gòu)元集為一組構(gòu)成軟件的結(jié)構(gòu)元。結(jié)構(gòu)元有三類(lèi),即處理元、信息元和連接元。處理元為對(duì)信息元施行處理的構(gòu)件,信息元為處理元的處理對(duì)象,連結(jié)元負(fù)責(zé)構(gòu)件間的連接。結(jié)構(gòu)形包括特性、聯(lián)系以及權(quán)重。特性用以約束結(jié)構(gòu)元的選取,聯(lián)系則約束結(jié)構(gòu)元間的交互與組織,權(quán)重表示特性及聯(lián)系的重要程度。結(jié)構(gòu)理刻畫(huà)體系結(jié)構(gòu)人員選取體系結(jié)構(gòu)風(fēng)格、結(jié)構(gòu)元、結(jié)構(gòu)形的動(dòng)因與根據(jù)。體系結(jié)構(gòu)風(fēng)格是各種特定體系結(jié)構(gòu)中結(jié)構(gòu)元與結(jié)構(gòu)形的抽象,它不如特定體系結(jié)構(gòu)約束嚴(yán)格,也不如特定體系結(jié)構(gòu)完備。二、定義描述性含義軟件體系結(jié)構(gòu)=(構(gòu)件集,連件集,模式,約束集)構(gòu)件集表示構(gòu)成軟件的一組組成元素,連件集為一組連件,用以刻畫(huà)各構(gòu)件間的交互,模式為軟件設(shè)計(jì)風(fēng)格的描述,反映由構(gòu)件及連件構(gòu)成軟件的構(gòu)成原則,約束集中的約束表示對(duì)模式所加的限制條件。二、定義多視面含義軟件體系結(jié)構(gòu)為軟件的一個(gè)或多個(gè)結(jié)構(gòu),每一個(gè)結(jié)構(gòu)反應(yīng)一種視面。軟件體系結(jié)構(gòu)=結(jié)構(gòu)集結(jié)構(gòu)=(構(gòu)件集,外部可見(jiàn)特性集,聯(lián)系集)構(gòu)件集表示構(gòu)成軟件的一組組成元素,外部可見(jiàn)特性反映為其他構(gòu)件可利用該構(gòu)件所作的假定,聯(lián)系用以溝通相關(guān)構(gòu)件。三、研究?jī)?nèi)容軟件體系結(jié)構(gòu)建模軟件體系結(jié)構(gòu)描述方法軟件體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證軟件體系結(jié)構(gòu)發(fā)現(xiàn)、演化與重用基于體系結(jié)構(gòu)的軟件開(kāi)發(fā)方法特定領(lǐng)域的體系結(jié)構(gòu)框架軟件體系結(jié)構(gòu)支持工具軟件產(chǎn)品線(xiàn)體系結(jié)構(gòu)建立評(píng)估軟件體系結(jié)構(gòu)的方法三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建模軟件體系結(jié)構(gòu)建模又可以分成模型研究和建模方法研究?jī)蓚€(gè)方面。三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!P脱芯寇浖w系結(jié)構(gòu)的首要問(wèn)題是如何表示軟件體系結(jié)構(gòu),即如何對(duì)軟件體系結(jié)構(gòu)建模。根據(jù)建模的側(cè)重點(diǎn)不同,可以將軟件體系結(jié)構(gòu)的模型分為5種,分別是結(jié)構(gòu)模型、框架模型、動(dòng)態(tài)模型、過(guò)程模型和功能模型。在這5個(gè)模型中,最常用的是結(jié)構(gòu)模型和動(dòng)態(tài)模型。三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!P?/p>
(l)結(jié)構(gòu)模型:這是一個(gè)最直觀、最普遍的建模方法。這種方法以體系結(jié)構(gòu)的構(gòu)件、連接件和其他概念來(lái)刻畫(huà)結(jié)構(gòu),并力圖通過(guò)結(jié)構(gòu)來(lái)反映系統(tǒng)的重要語(yǔ)義內(nèi)容,包括系統(tǒng)的配置、約束、隱含的假設(shè)條件、風(fēng)格、性質(zhì)等。研究結(jié)構(gòu)模型的核心是體系結(jié)構(gòu)描述語(yǔ)言。三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!P?/p>
(2)框架模型:與結(jié)構(gòu)模型類(lèi)似,但它不太側(cè)重描述結(jié)構(gòu)的細(xì)節(jié)而更側(cè)重于整體的結(jié)構(gòu)??蚣苣P椭饕砸恍┨厥獾膯?wèn)題為目標(biāo)建立只針對(duì)和適應(yīng)該問(wèn)題的結(jié)構(gòu)。
(3)動(dòng)態(tài)模型:是對(duì)結(jié)構(gòu)或框架模型的補(bǔ)充,研究系統(tǒng)的“大顆粒”的行為性質(zhì)。例如,描述系統(tǒng)的重新配置或演化。三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!P?/p>
(4)過(guò)程模型:研究構(gòu)造系統(tǒng)的步驟和過(guò)程,體系結(jié)構(gòu)是遵循某些過(guò)程腳本的結(jié)果。
(5)功能模型:認(rèn)為體系結(jié)構(gòu)是由一組功能構(gòu)件按層次組成,下層向上層提供服務(wù)。功能模型可以看作是一種特殊的框架模型。三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!P蜕鲜?種模型各有所長(zhǎng),將5種模型有機(jī)地統(tǒng)一在一起,形成一個(gè)完整的模型來(lái)刻畫(huà)軟件體系結(jié)構(gòu)更合適。PhillppeK淦uchien在1995年提出了一個(gè)“4+1”的視圖模型[18]?!?+l”視圖模型從5個(gè)不同的視角包括邏輯視圖、進(jìn)程視圖、物理視圖、開(kāi)發(fā)視圖和場(chǎng)景視圖來(lái)描述軟件體系結(jié)構(gòu)。每一個(gè)視圖只關(guān)心系統(tǒng)的一個(gè)側(cè)面,5個(gè)視圖結(jié)合在一起才能反映軟件體系結(jié)構(gòu)的全部?jī)?nèi)容。
三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!P腿?、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!7椒榱双@取對(duì)體系結(jié)構(gòu)設(shè)計(jì)的抽象,人們己經(jīng)提出了許多方法。我們把這些體系結(jié)構(gòu)設(shè)計(jì)方法分類(lèi)為:工件驅(qū)動(dòng)(Artifact-Driver)的方法用例驅(qū)動(dòng)(Use-Case-Driven)的方法模式驅(qū)動(dòng)(Pattern-Driven)的方法領(lǐng)域驅(qū)動(dòng)(Domain-Driven)的方法三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!7椒?)工件驅(qū)動(dòng)的方法工件驅(qū)動(dòng)的體系結(jié)構(gòu)設(shè)計(jì)方法從工件描述中提取體系結(jié)構(gòu)描述。工件驅(qū)動(dòng)的體系結(jié)構(gòu)設(shè)計(jì)方法的例子包括廣為流行的面向?qū)ο蠓治龊驮O(shè)計(jì)方法OMT(ObjectModelingTechnology)和OAD(ObjectorientAnalysis&Design)。三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!7椒?)工件驅(qū)動(dòng)的方法三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!7椒?)用例驅(qū)動(dòng)的方法用例驅(qū)動(dòng)的體系結(jié)構(gòu)設(shè)計(jì)方法主要從用例導(dǎo)出體系結(jié)構(gòu)抽象。一個(gè)用例,是指系統(tǒng)進(jìn)行的一個(gè)活動(dòng)系列,它為參與者提供一些結(jié)果值。參與者通過(guò)用例使用系統(tǒng)。參與者和用例共同構(gòu)成了用例模型。用例模型的目的是作為系統(tǒng)預(yù)期功能及其環(huán)境的模型,并在客戶(hù)和開(kāi)發(fā)者之間起到合約的作用。三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!7椒?)用例驅(qū)動(dòng)的方法統(tǒng)一過(guò)程使用的是一種用例驅(qū)動(dòng)的體系結(jié)構(gòu)設(shè)計(jì)方法。它由核心工作流(coreworkflows)組成。核心工作流定義了過(guò)程的靜態(tài)內(nèi)容,用活動(dòng)、工人和工件描述了過(guò)程。隨時(shí)間變化的過(guò)程的組織被定義為階段。下圖給出了用統(tǒng)一過(guò)程描述的用例驅(qū)動(dòng)的體系結(jié)構(gòu)設(shè)計(jì)方法的概念模型。三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!7椒?)用例驅(qū)動(dòng)的方法三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!7椒?)領(lǐng)域驅(qū)動(dòng)的體系結(jié)構(gòu)設(shè)計(jì)方法在領(lǐng)域驅(qū)動(dòng)的體系結(jié)構(gòu)設(shè)計(jì)方法中,體系結(jié)構(gòu)抽象是從領(lǐng)域模型導(dǎo)出的。這一方法的概念模型如下圖所示。三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!7椒?)領(lǐng)域驅(qū)動(dòng)的體系結(jié)構(gòu)設(shè)計(jì)方法三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建?!7椒?)模式驅(qū)動(dòng)的方法軟件工業(yè)界己經(jīng)廣泛接受了軟件設(shè)計(jì)模式的概念。軟件設(shè)計(jì)模式的目的在于編制一套可重用的基本原則,用于開(kāi)發(fā)高質(zhì)量的軟件系統(tǒng)。軟件設(shè)計(jì)模式常常用在設(shè)計(jì)階段,但是,人們已經(jīng)開(kāi)始在軟件開(kāi)發(fā)過(guò)程中的其他階段定義并使用設(shè)計(jì)模式。比如,在實(shí)現(xiàn)階段,可以定義從面向?qū)ο蟮脑O(shè)計(jì)到面向?qū)ο蟮恼Z(yǔ)言構(gòu)造的設(shè)計(jì)模式;在分析階段,可以使用設(shè)計(jì)模式導(dǎo)出分析模型。近年來(lái),也有研究者在軟件開(kāi)發(fā)過(guò)程中的體系結(jié)構(gòu)分析階段應(yīng)用設(shè)計(jì)模式。體系結(jié)構(gòu)模式類(lèi)似于設(shè)計(jì)模式,但它關(guān)心的是更粗粒度的系統(tǒng)結(jié)構(gòu)及其交互。實(shí)際上,它也就是體系結(jié)構(gòu)風(fēng)格的另一種名稱(chēng)。體系結(jié)構(gòu)設(shè)計(jì)模式是體系結(jié)構(gòu)層次的一種抽象表示。模式驅(qū)動(dòng)的體系結(jié)構(gòu)設(shè)計(jì)方法從模式導(dǎo)出體系結(jié)構(gòu)抽象。下圖描述了這一方法的概念模型。三、研究?jī)?nèi)容1、軟件體系結(jié)構(gòu)建模—建模方法4)模式驅(qū)動(dòng)的方法三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法圖形表達(dá)工具模塊內(nèi)連接語(yǔ)言基于軟構(gòu)件的系統(tǒng)描述語(yǔ)言軟件體系結(jié)構(gòu)描述語(yǔ)言軟件體系結(jié)構(gòu)描述框架標(biāo)準(zhǔn)三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法圖形表達(dá)工具在圖形表達(dá)方法中,用矩形框代表抽象構(gòu)件,框內(nèi)標(biāo)注的文字為抽象構(gòu)件的名稱(chēng),用有向線(xiàn)段代表輔助各構(gòu)件進(jìn)行通訊、控制或關(guān)聯(lián)的連接件。三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法圖形表達(dá)工具由于圖形表達(dá)方法簡(jiǎn)潔易懂,在實(shí)際的設(shè)計(jì)和開(kāi)發(fā)工作中被廣泛使用,目前,占據(jù)著主導(dǎo)地位。但是,由于在術(shù)語(yǔ)和表達(dá)語(yǔ)義上存在著一些不規(guī)范和不精確,使得圖形表達(dá)方法在不同系統(tǒng)和不同文檔之間有著許多不一致甚至矛盾。為了克服圖形表達(dá)方法中所缺乏的語(yǔ)義特征,有關(guān)研究人員試圖通過(guò)增加含有語(yǔ)義的圖元素的方式來(lái)開(kāi)發(fā)圖文法理論。
三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法模塊內(nèi)連接語(yǔ)言模塊內(nèi)連接語(yǔ)言(ModuleInterconneetionLanguage,MIL)將一種或幾種傳統(tǒng)程序設(shè)計(jì)語(yǔ)言的模塊連接起來(lái)。由于程序設(shè)計(jì)語(yǔ)言和模塊內(nèi)連接語(yǔ)言具有嚴(yán)格的語(yǔ)義基礎(chǔ),因此能支持對(duì)較大的軟件單元進(jìn)行描述。例如,Ada語(yǔ)言采用use實(shí)現(xiàn)包的重用,Pascal語(yǔ)言采用過(guò)程(函數(shù))實(shí)現(xiàn)模塊的交互。三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法模塊內(nèi)連接語(yǔ)言
MIL方式對(duì)模塊化的程序設(shè)計(jì)和分段編譯等技術(shù)發(fā)揮了很大的作用。然而,由于這些語(yǔ)言處理和描述的軟件設(shè)計(jì)開(kāi)發(fā)層次過(guò)于依賴(lài)程序設(shè)計(jì)語(yǔ)言,因此,限制了它們處理和描述比程序設(shè)計(jì)語(yǔ)言元素更為抽象的高層次軟件體系結(jié)構(gòu)元素的能力。三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法基于軟構(gòu)件的系統(tǒng)描述語(yǔ)言基于軟構(gòu)件的系統(tǒng)描述語(yǔ)言將軟件系統(tǒng)描述成一種是由許多以特定形式相互作用的特殊軟件實(shí)體組成的系統(tǒng)。例如,Darwin最初用作設(shè)計(jì)和構(gòu)造復(fù)雜分布式系統(tǒng)的配置說(shuō)明語(yǔ)言,因具有動(dòng)態(tài)特性,也可用來(lái)描述動(dòng)態(tài)體系結(jié)構(gòu)。三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法基于軟構(gòu)件的系統(tǒng)描述語(yǔ)言這種描述方式雖然也是一種以構(gòu)件為單位的軟件系統(tǒng)描述方法,但是他們所面向和針對(duì)的系統(tǒng)元素仍然是一些層次較低的以程序設(shè)計(jì)為基礎(chǔ)的通信協(xié)作軟件實(shí)體單元,而且這些語(yǔ)言所描述和表達(dá)的系統(tǒng)一般而言都是面向特定應(yīng)用的特殊系統(tǒng),這些特性使得基于軟構(gòu)件的系統(tǒng)描述仍然不是十分適合軟件體系結(jié)構(gòu)的描述和表達(dá)。三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法軟件體系結(jié)構(gòu)描述語(yǔ)言軟件體系結(jié)構(gòu)描述語(yǔ)言(ArchitectureDescriptionLanguage,ADL)是參照傳統(tǒng)程序設(shè)計(jì)語(yǔ)言的設(shè)計(jì)和開(kāi)發(fā)經(jīng)驗(yàn),針對(duì)軟件體系結(jié)構(gòu)特點(diǎn),重新設(shè)計(jì)、開(kāi)發(fā)的描述方式。三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法軟件體系結(jié)構(gòu)描述語(yǔ)言由于ADL是在吸收了傳統(tǒng)程序設(shè)計(jì)中的語(yǔ)義嚴(yán)格精確的特點(diǎn)基礎(chǔ)上,針對(duì)軟件體系結(jié)構(gòu)的整體性和抽象性特點(diǎn),定義和確定適合于軟件體系結(jié)構(gòu)表達(dá)與描述的有關(guān)抽象元素,因此,ADL是當(dāng)前軟件開(kāi)發(fā)和設(shè)計(jì)方法學(xué)中一種發(fā)展很快的軟件體系結(jié)構(gòu)描述方法。三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法軟件體系結(jié)構(gòu)描述語(yǔ)言主要的體系結(jié)構(gòu)描述語(yǔ)言有Aesop、MetaH、C2、Rapide、SADL、Unicon和Wright等,盡管它們都描述軟件體系結(jié)構(gòu),卻有不同的特點(diǎn)。這些ADL強(qiáng)調(diào)了體系結(jié)構(gòu)不同的側(cè)面,對(duì)體系結(jié)構(gòu)的研究和應(yīng)用起到了重要的作用,但也有負(fù)面的影響。每一種ADL都以獨(dú)立的形式存在,描述語(yǔ)法不同且互不兼容,同時(shí)又有許多共同的特征,這使設(shè)計(jì)人員很難選擇一種合適的ADL,若設(shè)計(jì)特定領(lǐng)域的軟件體系結(jié)構(gòu)又需要從頭開(kāi)始描述。三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法軟件體系結(jié)構(gòu)描述框架標(biāo)準(zhǔn)鑒于體系結(jié)構(gòu)描述的概念與實(shí)踐的不統(tǒng)一,IEEE于1995年8月成立了體系結(jié)構(gòu)工作組,綜合體系結(jié)構(gòu)描述研究成果,并參考業(yè)界的體系結(jié)構(gòu)描述的實(shí)踐,負(fù)責(zé)起草了體系結(jié)構(gòu)描述框架標(biāo)準(zhǔn)即IEEEP1471,并于2000年9月21日通過(guò)IEEE-SA標(biāo)準(zhǔn)委員會(huì)評(píng)審。三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法軟件體系結(jié)構(gòu)描述框架標(biāo)準(zhǔn)
IEEEP1471僅僅提供了體系結(jié)構(gòu)描述的概念框架、體系結(jié)構(gòu)描述應(yīng)該遵循的規(guī)范,但如何描述以及具體的描述技術(shù)等方面缺乏更進(jìn)一步的指導(dǎo)。三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法軟件體系結(jié)構(gòu)描述框架標(biāo)準(zhǔn)在IEEEPI471推薦的體系結(jié)構(gòu)描述的概念框架基礎(chǔ)上,Rational公司(己經(jīng)被IBM公司收購(gòu))起草了可重用的軟件資產(chǎn)規(guī)格說(shuō)明,專(zhuān)門(mén)討論了體系結(jié)構(gòu)描述的規(guī)格說(shuō)明,提出了一套易于重用的體系結(jié)構(gòu)描述規(guī)范。三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法軟件體系結(jié)構(gòu)描述框架標(biāo)準(zhǔn)可重用的體系結(jié)構(gòu)描述框架建議,基于RUP(RationalunitedProcess)、采用UML模型描述軟件體系結(jié)構(gòu),認(rèn)為體系結(jié)構(gòu)描述的關(guān)鍵是定義視點(diǎn)、視圖以及建模元素之間的映射關(guān)系??梢詮乃膫€(gè)視點(diǎn)出發(fā)描述體系結(jié)構(gòu),這四個(gè)視點(diǎn)分別是需求視點(diǎn)、設(shè)計(jì)視點(diǎn)、實(shí)現(xiàn)視點(diǎn)和測(cè)試視點(diǎn)。并在此基礎(chǔ)上提出了7個(gè)體系結(jié)構(gòu)視圖,分別是用例視圖、域視圖、非功能需求視圖、邏輯視圖、實(shí)現(xiàn)視圖、過(guò)程視圖和部署視圖。然后,從系統(tǒng)建模的角度考慮多個(gè)視圖之間的映射關(guān)系,并建議了這些視圖的表示和視圖之間的映射關(guān)系的表示。
三、研究?jī)?nèi)容2、軟件體系結(jié)構(gòu)描述方法軟件體系結(jié)構(gòu)描述框架標(biāo)準(zhǔn)與IEEEP1471相比,Rational公司的描述方案涉及面比較窄,所注重的層次比較低,因而更具體。由于將體系結(jié)構(gòu)的描述限于UML和RUP,具有一定的局限性,但該建議標(biāo)準(zhǔn)結(jié)合了業(yè)界已經(jīng)廣泛采用的建模語(yǔ)言和開(kāi)發(fā)過(guò)程,因而易于推廣,可以有效實(shí)現(xiàn)在跨組織之間重用體系結(jié)構(gòu)描述結(jié)果。三、研究?jī)?nèi)容3、軟件體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證軟件體系結(jié)構(gòu)分析的內(nèi)容可分為結(jié)構(gòu)分析、功能分析和非功能分析。在進(jìn)行非功能分析時(shí),可以采用定量分析方法與推斷的分析方法。在非功能分析的途徑上,可以采用單個(gè)體系結(jié)構(gòu)分析與體系結(jié)構(gòu)比較的分析方法。三、研究?jī)?nèi)容3、軟件體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證
RickKazman等人提出了一種非功能分析的體系結(jié)構(gòu)分析方法SAAM,并運(yùn)用場(chǎng)景技術(shù),提出了基于場(chǎng)景的體系結(jié)構(gòu)分析方法。而MarioBarbacci等人提出了多質(zhì)量屬性情況下的體系結(jié)構(gòu)質(zhì)量模型、分析與權(quán)衡方法ATAM。三、研究?jī)?nèi)容3、軟件體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證體系結(jié)構(gòu)設(shè)計(jì)是生成一個(gè)滿(mǎn)足軟件需求的體系結(jié)構(gòu)的過(guò)程,其本質(zhì)在于:將系統(tǒng)分解成相應(yīng)的組成成分,并將這些成分重新組裝成一個(gè)系統(tǒng)。目前,體系結(jié)構(gòu)設(shè)計(jì)主要有兩大類(lèi)方法,分別是過(guò)程驅(qū)動(dòng)方法和問(wèn)題列表驅(qū)動(dòng)方法。三、研究?jī)?nèi)容3、軟件體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證體系結(jié)構(gòu)設(shè)計(jì)研究的重點(diǎn)內(nèi)容之一就是體系結(jié)構(gòu)風(fēng)格/模式,體系結(jié)構(gòu)風(fēng)格在本質(zhì)上反映了一些特定的元素、按照特定的方式組成一個(gè)特定的結(jié)構(gòu),該結(jié)構(gòu)應(yīng)有利于上下文環(huán)境下的特定問(wèn)題的解決。體系結(jié)構(gòu)風(fēng)格可分為兩個(gè)大類(lèi),分別為固定術(shù)語(yǔ)和參考模型。三、研究?jī)?nèi)容3、軟件體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證己知的固定術(shù)語(yǔ)類(lèi)的體系結(jié)構(gòu)風(fēng)格包括管道過(guò)濾器、客戶(hù)/服務(wù)器、面向?qū)ο?、黑板、分層、?duì)等模式(基于事件調(diào)用方法,隱式調(diào)用,基于推理模式)、狀態(tài)轉(zhuǎn)換、一些派生的固定術(shù)語(yǔ)類(lèi)的體系結(jié)構(gòu)風(fēng)格,包括GenVoca,CZ和REST等;而參考模型則相對(duì)較多,常常與特定領(lǐng)域相關(guān),如編譯器的順序參考模型和并行參考模型、信息系統(tǒng)的參考模型、航空模擬環(huán)境系統(tǒng)的參考模型等。國(guó)內(nèi)學(xué)者在這方面也做了不少有益的工作,如北京大學(xué)張世餛等人提出的JB/HBM風(fēng)格。
三、研究?jī)?nèi)容3、軟件體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證體系結(jié)構(gòu)測(cè)試著重于仿真系統(tǒng)模型,由于測(cè)試的抽象層次不同,體系結(jié)構(gòu)測(cè)試策略可分為單元/子系統(tǒng)/集成/驗(yàn)收測(cè)試等階段的測(cè)試策略。在體系結(jié)構(gòu)集成測(cè)試階段,DebraRichardson等人提出了一組針對(duì)體系結(jié)構(gòu)的測(cè)試覆蓋標(biāo)準(zhǔn),PaolaInveradi提出了一種基于CHAM的體系結(jié)構(gòu)語(yǔ)義驗(yàn)證技術(shù)。三、研究?jī)?nèi)容3、軟件體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證雖然體系結(jié)構(gòu)分析、設(shè)計(jì)和驗(yàn)證已經(jīng)取得了很豐富的研究成果,但這些方法存在著一個(gè)普遍缺點(diǎn):可操作性差,難于實(shí)用化,因此并沒(méi)有取得很好的實(shí)踐效果。三、研究?jī)?nèi)容4、軟件體系結(jié)構(gòu)發(fā)現(xiàn)、演化與重用體系結(jié)構(gòu)發(fā)現(xiàn)解決如何從已經(jīng)存在的系統(tǒng)中提取軟件體系結(jié)構(gòu)的問(wèn)題,屬于逆向工程范疇。Waters等人提出了一種迭代式體系結(jié)構(gòu)發(fā)現(xiàn)過(guò)程,即由不同的人員對(duì)系統(tǒng)進(jìn)行描述,然后對(duì)這些描述進(jìn)行分類(lèi)并融合,發(fā)現(xiàn)并解除沖突,將體系結(jié)構(gòu)新屬性加入到已有的體系結(jié)構(gòu)模型中,并重復(fù)該過(guò)程直至體系結(jié)構(gòu)描述充分。三、研究?jī)?nèi)容4、軟件體系結(jié)構(gòu)發(fā)現(xiàn)、演化與重用體系結(jié)構(gòu)演化是指由于系統(tǒng)需求、技術(shù)、環(huán)境、分布等因素的變化而最終導(dǎo)致軟件體系結(jié)構(gòu)變動(dòng)的過(guò)程。軟件在運(yùn)行時(shí)刻的體系結(jié)構(gòu)變化稱(chēng)為體系結(jié)構(gòu)的動(dòng)態(tài)性,而將體系結(jié)構(gòu)的靜態(tài)修改稱(chēng)為體系結(jié)構(gòu)擴(kuò)展。EstebanTorresLeon等人通過(guò)研究系統(tǒng)的動(dòng)態(tài)可配置特性,提出了電信軟件體系結(jié)構(gòu)動(dòng)態(tài)修改的方案。黃罡等人提出了一種基于軟件體系結(jié)構(gòu)的軟件維護(hù)和演化方法。三、研究?jī)?nèi)容4、軟件體系結(jié)構(gòu)發(fā)現(xiàn)、演化與重用體系結(jié)構(gòu)的動(dòng)態(tài)性分為有約束的和無(wú)約束的以及結(jié)構(gòu)動(dòng)態(tài)性和語(yǔ)義動(dòng)態(tài)性。Darwin和C2都直接支持結(jié)構(gòu)動(dòng)態(tài)性,而CHAM、Wright和Rapide支持語(yǔ)義動(dòng)態(tài)性。在C2中定義了專(zhuān)門(mén)支持體系結(jié)構(gòu)修改的描述語(yǔ)言AML,而Darwin對(duì)體系結(jié)構(gòu)的修改則采用相應(yīng)的腳本語(yǔ)言,CHAM是通過(guò)多值演算實(shí)現(xiàn)系統(tǒng)體系結(jié)構(gòu)的變換,Wright通過(guò)順序通信進(jìn)程描述構(gòu)件的交互語(yǔ)義。三、研究?jī)?nèi)容4、軟件體系結(jié)構(gòu)發(fā)現(xiàn)、演化與重用體系結(jié)構(gòu)重用屬于設(shè)計(jì)重用,比代碼重用更抽象。由于軟件體系結(jié)構(gòu)是系統(tǒng)的高層抽象,反映了系統(tǒng)的主要組成元素及其交互關(guān)系,因而較算法更穩(wěn)定,更適合于重用。VanKatwijk等人采用擴(kuò)展數(shù)據(jù)流技術(shù)實(shí)現(xiàn)了系統(tǒng)與構(gòu)件的構(gòu)造過(guò)程,得出了相應(yīng)的體系結(jié)構(gòu)是易于重用的結(jié)論。三、研究?jī)?nèi)容5、基于體系結(jié)構(gòu)的軟件開(kāi)發(fā)方法目前,常見(jiàn)的軟件開(kāi)發(fā)模型大致可分為三種類(lèi)型:(1)以軟件需求完全確定為前提的瀑布模型。(2)在軟件開(kāi)發(fā)初始階段只能提供基本需求時(shí)采用的漸進(jìn)式開(kāi)發(fā)模型,如螺旋模型等。(3)以形式化開(kāi)發(fā)方法為基礎(chǔ)的變換模型。三、研究?jī)?nèi)容5、基于體系結(jié)構(gòu)的軟件開(kāi)發(fā)方法所有開(kāi)發(fā)方法都是要解決需求與實(shí)現(xiàn)之間的差距。但是,這三種類(lèi)型的軟件開(kāi)發(fā)模型都存在這樣或那樣的缺陷,不能很好地支持基于軟件體系結(jié)構(gòu)的開(kāi)發(fā)過(guò)程。因此,研究人員在發(fā)展基于體系結(jié)構(gòu)的軟件開(kāi)發(fā)模型方面做了一定的工作。三、研究?jī)?nèi)容5、基于體系結(jié)構(gòu)的軟件開(kāi)發(fā)方法引入了體系結(jié)構(gòu)之后,軟件開(kāi)發(fā)的過(guò)程變?yōu)椤皢?wèn)題定義一>軟件需求一>軟件體系結(jié)構(gòu)設(shè)計(jì)一>軟件設(shè)計(jì)一>軟件實(shí)現(xiàn)”,可以認(rèn)為軟件體系結(jié)構(gòu)架起了軟件需求與軟件設(shè)計(jì)之間的一座橋梁。而在由軟件體系結(jié)構(gòu)到實(shí)現(xiàn)的過(guò)程中,借助中間件技術(shù)與軟件總線(xiàn)技術(shù),軟件體系結(jié)構(gòu)將易于映射成相應(yīng)的實(shí)現(xiàn)。三、研究?jī)?nèi)容5、基于體系結(jié)構(gòu)的軟件開(kāi)發(fā)方法
LenBass等人提出了一種基于體系結(jié)構(gòu)的軟件開(kāi)發(fā)過(guò)程。國(guó)內(nèi)學(xué)者在這方面也做了不少的工作,如清華大學(xué)車(chē)敦仁教授等人提出了基于體系結(jié)構(gòu)的應(yīng)用平臺(tái)及框架倉(cāng)庫(kù)技術(shù),北京郵電大學(xué)周瑩新等人提出了基于體系結(jié)構(gòu)的開(kāi)發(fā)模型中軟件體系結(jié)構(gòu)的生命周期模型,北京航空航天大學(xué)陶偉等人提出了一種以6個(gè)體系結(jié)構(gòu)視圖為中心的軟件開(kāi)發(fā)方式。三、研究?jī)?nèi)容6、特定領(lǐng)域的體系結(jié)構(gòu)框架早在20世紀(jì)70年代就有人提出程序族、應(yīng)用族的概念,并開(kāi)拓了對(duì)特定領(lǐng)域軟件體系結(jié)構(gòu)的早期研究。為了解脫因?yàn)槿狈捎玫能浖?gòu)件以及現(xiàn)有軟件構(gòu)件難以集成而導(dǎo)致軟件開(kāi)發(fā)過(guò)程中難以進(jìn)行重用的困境,ErikMettala在1992年提出了特定領(lǐng)域軟件體系結(jié)構(gòu)(DomainSpecificSoftwareArchitecture,DSSA)的概念,嘗試解決這類(lèi)問(wèn)題。三、研究?jī)?nèi)容6、特定領(lǐng)域的體系結(jié)構(gòu)框架簡(jiǎn)單地說(shuō),DSSA就是在一個(gè)特定應(yīng)用領(lǐng)域中為一組應(yīng)用提供組織結(jié)構(gòu)參考的標(biāo)準(zhǔn)軟件體系結(jié)構(gòu)。對(duì)DSSA研究的角度、關(guān)心的問(wèn)題不同導(dǎo)致了對(duì)DSSA的不同定義。三、研究?jī)?nèi)容6、特定領(lǐng)域的體系結(jié)構(gòu)框架常見(jiàn)的DSSA主要有CASE體系結(jié)構(gòu)、CAD軟件的參考模型、信息系統(tǒng)的參考體系結(jié)構(gòu)、網(wǎng)絡(luò)體系結(jié)構(gòu)、機(jī)場(chǎng)信息系統(tǒng)的體系結(jié)構(gòu)和信息處理DSSA等。國(guó)內(nèi)學(xué)者提出的DSSA主要有北京郵電大學(xué)周瑩新提出的電信軟件的體系結(jié)構(gòu),北京航空航天大學(xué)孫昌愛(ài)等人提出的測(cè)試環(huán)境的體系結(jié)構(gòu)等。三、研究?jī)?nèi)容7、軟件體系結(jié)構(gòu)支持工具幾乎每種體系結(jié)構(gòu)都有相應(yīng)的支持工具,如C2的支持環(huán)境ArchStudio,支持主動(dòng)連接件的Tracer工具等。另外,支持體系結(jié)構(gòu)分析的工具,如支持靜態(tài)分析的工具、支持類(lèi)型檢查的工具、支持體系結(jié)構(gòu)層次依賴(lài)分析的工具、支持體系結(jié)構(gòu)動(dòng)態(tài)特性仿真工具、體系結(jié)構(gòu)性能仿真工具等。但與其他成熟的軟件工程環(huán)境相比,體系結(jié)構(gòu)設(shè)計(jì)的支持工具還很不成熟,難于實(shí)用化。三、研究?jī)?nèi)容8、軟件產(chǎn)品線(xiàn)體系結(jié)構(gòu)軟件體系結(jié)構(gòu)的開(kāi)發(fā)是大型軟件系統(tǒng)開(kāi)發(fā)的關(guān)鍵環(huán)節(jié)。體系結(jié)構(gòu)在軟件產(chǎn)品線(xiàn)的開(kāi)發(fā)中具有至關(guān)重要的作用,在這種開(kāi)發(fā)生產(chǎn)中,基于同一個(gè)軟件體系結(jié)構(gòu),可以創(chuàng)建具有不同功能的多個(gè)系統(tǒng)。在軟件產(chǎn)品族之間共享體系結(jié)構(gòu)和一組可重用的構(gòu)件,可以降低開(kāi)發(fā)和維護(hù)成本。三、研究?jī)?nèi)容8、軟件產(chǎn)品線(xiàn)體系結(jié)構(gòu)與軟件體系結(jié)構(gòu)一樣,目前,軟件產(chǎn)品線(xiàn)沒(méi)有一個(gè)統(tǒng)一的定義。相對(duì)而言,卡耐基梅隆大學(xué)軟件工程研究所(CMU/SEI)對(duì)產(chǎn)品線(xiàn)和軟件產(chǎn)品線(xiàn)的定義,更能體現(xiàn)軟件產(chǎn)品線(xiàn)的特征:“產(chǎn)品線(xiàn)是一個(gè)產(chǎn)品集合,這些產(chǎn)品共享一個(gè)公共的、可管理的特征集,這個(gè)特征集能滿(mǎn)足選定的市場(chǎng)或任務(wù)領(lǐng)域的特定需求。這些系統(tǒng)遵循一個(gè)預(yù)描述的方式,在公共的核心資源基礎(chǔ)上開(kāi)發(fā)的”。三、研究?jī)?nèi)容8、軟件產(chǎn)品線(xiàn)體系結(jié)構(gòu)根據(jù)CMU/SEI的定義,軟件產(chǎn)品線(xiàn)主要由兩部分組成,分別是核心資源和產(chǎn)品集合。其中核心資源是領(lǐng)域工程的所有結(jié)果的集合,是產(chǎn)品線(xiàn)中產(chǎn)品構(gòu)造的基礎(chǔ)。產(chǎn)品線(xiàn)體系結(jié)構(gòu)和構(gòu)件是用于軟件產(chǎn)品線(xiàn)中的產(chǎn)品的構(gòu)建和核心資源最重要的部分。三、研究?jī)?nèi)容8、軟件產(chǎn)品線(xiàn)體系結(jié)構(gòu)
CMU/SEI是從事軟件產(chǎn)品線(xiàn)研究最活躍的學(xué)術(shù)團(tuán)體,從1996年11月開(kāi)始,CMU/SEI每年召開(kāi)一次軟件產(chǎn)品線(xiàn)實(shí)踐學(xué)術(shù)討論會(huì),從1998年開(kāi)始每年召開(kāi)一次美國(guó)國(guó)防部的產(chǎn)品線(xiàn)實(shí)踐學(xué)術(shù)討論會(huì),2000年發(fā)起召開(kāi)了第一次國(guó)際軟件產(chǎn)品線(xiàn)會(huì)議。CMU/SEI制定了一個(gè)產(chǎn)品線(xiàn)實(shí)踐框架,軟件組織可以把該框架作為實(shí)現(xiàn)軟件產(chǎn)品線(xiàn)開(kāi)發(fā)的技術(shù)和過(guò)程提高計(jì)劃的基礎(chǔ)和指南。三、研究?jī)?nèi)容8、軟件產(chǎn)品線(xiàn)體系結(jié)構(gòu)其他的學(xué)術(shù)團(tuán)體也在軟件產(chǎn)品線(xiàn)研究方面進(jìn)行了一定的研究,例如,美國(guó)Texas大學(xué)的DonBatory等人主要研究了產(chǎn)品線(xiàn)體系結(jié)構(gòu),提出了層次設(shè)計(jì)思想。荷蘭Groningen大學(xué)的JanBosch等人主要研究產(chǎn)品線(xiàn)體系結(jié)構(gòu),他們認(rèn)為產(chǎn)品線(xiàn)及其體系結(jié)構(gòu)是不斷演化的,需要使用面向生命周期的方式對(duì)產(chǎn)品線(xiàn)進(jìn)行范圍劃分和對(duì)產(chǎn)品線(xiàn)體系結(jié)構(gòu)進(jìn)行調(diào)整。美國(guó)SouthernCalifornia大學(xué)的AlexanderEgyed等人在產(chǎn)品線(xiàn)需求分析方面進(jìn)行了深入的研究等。在國(guó)內(nèi),浙江大學(xué)王廣昌等人在軟件產(chǎn)品線(xiàn)關(guān)鍵方法與技術(shù)方面,取得了很好的研究成果。
三、研究?jī)?nèi)容9、建立評(píng)估軟件體系結(jié)構(gòu)的方法軟件體系結(jié)構(gòu)的設(shè)計(jì)是整個(gè)軟件開(kāi)發(fā)過(guò)程中關(guān)鍵的一步,但是,怎樣才能知道為軟件系統(tǒng)所選用的體系結(jié)構(gòu)是恰當(dāng)?shù)哪??如何確保按照所選用的體系結(jié)構(gòu)能順利地開(kāi)發(fā)出成功的軟件產(chǎn)品呢?要回答這些問(wèn)題并不容易,因?yàn)樗艿胶芏嘁蛩氐挠绊?,需要?zhuān)門(mén)的方法來(lái)對(duì)其進(jìn)行評(píng)估。三、研究?jī)?nèi)容9、建立評(píng)估軟件體系結(jié)構(gòu)的方法體系結(jié)構(gòu)評(píng)估可以只針對(duì)一個(gè)體系結(jié)構(gòu),也可以針對(duì)一組體系結(jié)構(gòu)。從目前己有的軟件體系結(jié)構(gòu)評(píng)估技術(shù)來(lái)看,可以歸納為三類(lèi)主要的評(píng)估方式,分別是:基于調(diào)查問(wèn)卷或檢查表的方式基于場(chǎng)景的方式基于度量的方式三、研究?jī)?nèi)容9、建立評(píng)估軟件體系結(jié)構(gòu)的方法基于調(diào)查問(wèn)卷或檢查表的評(píng)估方式比較自由靈活,可評(píng)估多種質(zhì)量屬性,也可以在軟件體系結(jié)構(gòu)設(shè)計(jì)的多個(gè)階段進(jìn)行。但是由于評(píng)估的結(jié)果很大程度上來(lái)自評(píng)估人員的主觀推斷,因此不同的評(píng)估人員可能會(huì)產(chǎn)生不同甚至截然相反的結(jié)果,而且評(píng)估人員對(duì)領(lǐng)域的熟悉程度、是否具有豐富的相關(guān)經(jīng)驗(yàn)也成為評(píng)估結(jié)果是否正確的重要因素。盡管基于調(diào)查問(wèn)卷與檢查表的評(píng)估方式相對(duì)比較主觀,但由于系統(tǒng)相關(guān)的人員的經(jīng)驗(yàn)和知識(shí)是評(píng)估軟件體系結(jié)構(gòu)的重要信息來(lái)源,因而它仍然是進(jìn)行軟件體系結(jié)構(gòu)評(píng)估的重要途徑之一。CMU/SEI的軟件風(fēng)險(xiǎn)評(píng)估過(guò)程采用了這一方式。
三、研究?jī)?nèi)容9、建立評(píng)估軟件體系結(jié)構(gòu)的方法場(chǎng)景是一系列有序的使用或修改系統(tǒng)的步驟?;趫?chǎng)景的軟件體系結(jié)構(gòu)評(píng)估方式由CMU/SEI首先提出,并應(yīng)用在體系結(jié)構(gòu)權(quán)衡分析方法(ArchitectureTradeoffAnalysisMethod,ATAM)和軟件體系結(jié)構(gòu)分析方法(SoftwareArchitectureAnalysisMethod,SAAM)中。這種評(píng)估方式分析軟件體系結(jié)構(gòu)對(duì)場(chǎng)景的使用或修改活動(dòng)的支持程度,從而判斷該體系結(jié)構(gòu)對(duì)這一場(chǎng)景所代表的質(zhì)量需求的滿(mǎn)足程度。三、研究?jī)?nèi)容9、建立評(píng)估軟件體系結(jié)構(gòu)的方法基于場(chǎng)景的評(píng)估方式是特定于領(lǐng)域的。這一評(píng)估方式的實(shí)施者一方面需要有豐富的領(lǐng)域知識(shí)以對(duì)某一質(zhì)量需求設(shè)計(jì)出合理的場(chǎng)景。另一方面,必須對(duì)待評(píng)估的軟件體系結(jié)構(gòu)有一定的了解,以準(zhǔn)確判斷它是否支持場(chǎng)景描述的一系列活動(dòng)。三、研究?jī)?nèi)容9、建立評(píng)估軟件體系結(jié)構(gòu)的方法度量是指為軟件產(chǎn)品的某一屬性所賦予的數(shù)值,如代碼行數(shù)、方法調(diào)用層數(shù)、構(gòu)件個(gè)數(shù)等。美國(guó)Helsinki大學(xué)提出的基于模式挖掘的面向?qū)ο篌w系結(jié)構(gòu)度量技術(shù)、瑞典Karlskrona/Ronneby大學(xué)提出的基于面向?qū)ο蠖攘康能浖w系結(jié)構(gòu)可維護(hù)性評(píng)估、美國(guó)WestVirginia大學(xué)提出的軟件體系結(jié)構(gòu)度量方法等都在這方面進(jìn)行了探索,提出了一些可操作的具體方案。三、研究?jī)?nèi)容9、建立評(píng)估軟件體系結(jié)構(gòu)的方法基于度量的評(píng)估方式提供更為客觀和量化的質(zhì)量評(píng)估。這一評(píng)估方式需要在軟件體系結(jié)構(gòu)的設(shè)計(jì)基本完成以后才能進(jìn)行,而且需要評(píng)估人員對(duì)待評(píng)估的體系結(jié)構(gòu)十分了解,否則不能獲取準(zhǔn)確的度量。自動(dòng)的軟件體系結(jié)構(gòu)度量獲取工具能在一定程度上簡(jiǎn)化評(píng)估的難度,例如,MAISA可從文本格式的UML圖中抽取面向?qū)ο篌w系結(jié)構(gòu)的度量。四、存在問(wèn)題
盡管自1994年召開(kāi)了首屆軟件體系結(jié)構(gòu)國(guó)際研討會(huì)以來(lái),軟件體系結(jié)構(gòu)研究領(lǐng)域取得了上述成果,但在應(yīng)用方面,軟件體系結(jié)構(gòu)仍然很不成熟。NenadMedvovonic認(rèn)為,目前對(duì)軟件體系結(jié)構(gòu)的理解還僅限于直觀,語(yǔ)義豐富但不嚴(yán)密。第2屆“產(chǎn)品線(xiàn)系統(tǒng)的體系結(jié)構(gòu)開(kāi)發(fā)與演化國(guó)際研討會(huì)”的總結(jié)報(bào)告認(rèn)為,因?yàn)楦拍钌胁唤y(tǒng)一、描述規(guī)范也不能達(dá)成一致認(rèn)識(shí),體系結(jié)構(gòu)似乎沒(méi)有解決實(shí)際問(wèn)題。因此,在軟件開(kāi)發(fā)實(shí)踐中軟件體系結(jié)構(gòu)尚不能發(fā)揮重要作用。總結(jié)對(duì)軟件體系結(jié)構(gòu)的研究,主要存在如下不足:四、存在問(wèn)題(l)缺乏統(tǒng)一的軟件體系結(jié)構(gòu)概念,導(dǎo)致體系結(jié)構(gòu)的研究范疇模糊。四、存在問(wèn)題(2)有關(guān)軟件體系結(jié)構(gòu)性質(zhì)的研究尚不充分,不能明確給出一個(gè)優(yōu)秀的體系結(jié)構(gòu)的屬性或判定標(biāo)準(zhǔn),沒(méi)有給出設(shè)計(jì)指導(dǎo)原則,因此,對(duì)于軟件開(kāi)發(fā)實(shí)踐缺乏有力的促進(jìn)作用。四、存在問(wèn)題(3)對(duì)軟件體系結(jié)構(gòu)的描述通常都采用ADL,但ADL繁多,缺乏統(tǒng)一的ADL的支持。盡管MaryShaw等人提出了體系結(jié)構(gòu)互換語(yǔ)言ACME,但沒(méi)有統(tǒng)一的ADL框架與定義,不同體系結(jié)構(gòu)描述語(yǔ)言所描述的體系結(jié)構(gòu)規(guī)格說(shuō)明難以互換。而且ADL在對(duì)軟件體系結(jié)構(gòu)的動(dòng)態(tài)行為、演化和可擴(kuò)充特征方面的描述能力明顯不足。四、存在問(wèn)題(4)缺乏有效的支持環(huán)境,軟件體系結(jié)構(gòu)理論研究與環(huán)境支持不同步,缺乏有效的體系結(jié)構(gòu)分析、設(shè)計(jì)和驗(yàn)證工具支持,導(dǎo)致體系結(jié)構(gòu)應(yīng)用上的困難。四、存在問(wèn)題(5)缺乏有效的體系結(jié)構(gòu)重用方案,盡管體系結(jié)構(gòu)是一種高層的系統(tǒng)抽象,并且具有相對(duì)的穩(wěn)定性,但是體系結(jié)構(gòu)又是經(jīng)驗(yàn)與設(shè)計(jì)知識(shí)的體現(xiàn),如何說(shuō)明體系結(jié)構(gòu)、重用已有體系結(jié)構(gòu)的過(guò)程、體系結(jié)構(gòu)演化等問(wèn)題,尚未很好地解決。四、存在問(wèn)題(6)體系結(jié)構(gòu)發(fā)現(xiàn)方法研究相對(duì)欠缺,尚未發(fā)現(xiàn)比較可行的體系結(jié)構(gòu)發(fā)現(xiàn)方法。五、重要性利于復(fù)雜軟件的系統(tǒng)理解構(gòu)建軟件體系結(jié)構(gòu)的過(guò)程是一種對(duì)軟件系統(tǒng)的抽象過(guò)程,它有選擇性地突出和隱蔽某些系統(tǒng)特征,完成對(duì)系統(tǒng)的高層建?;顒?dòng),從而更有利于人們對(duì)復(fù)雜軟件的系統(tǒng)理解:其一,有效增強(qiáng)系統(tǒng)相關(guān)人員的信息交流;其二,有效改進(jìn)軟件系統(tǒng)和軟件過(guò)程的理解。五、重要性利于復(fù)雜軟件的系統(tǒng)理解一個(gè)良好的軟件體系結(jié)構(gòu)是一張融合了諸多需求角度的多維視圖,它提供了一種通用語(yǔ)言,使不同的需求得以表達(dá)、交流、協(xié)商和達(dá)成共識(shí)。良好的體系結(jié)構(gòu)不僅有效改善了人員間的交流,而且使得基于體系結(jié)構(gòu)描述的系統(tǒng)理解取得了巨大成功。五、重要性利于系統(tǒng)設(shè)計(jì)早期決策一個(gè)體系結(jié)構(gòu)定義了一種實(shí)現(xiàn)上的諸多約束。系統(tǒng)的一種實(shí)現(xiàn)必須遵循體系結(jié)構(gòu)在結(jié)構(gòu)方面的設(shè)計(jì)決策。分配的設(shè)計(jì)決策同樣約束著實(shí)現(xiàn)。體系結(jié)構(gòu)不僅規(guī)定了開(kāi)發(fā)系統(tǒng)的結(jié)構(gòu),而且也決定了開(kāi)發(fā)項(xiàng)目的結(jié)構(gòu)。軟件體系結(jié)構(gòu)闡明了系統(tǒng)早期設(shè)計(jì)中的諸多決策,而這些早期決策正是系統(tǒng)生命周期中相對(duì)穩(wěn)定的部分,對(duì)整個(gè)系統(tǒng)有著極其深遠(yuǎn)的影響。五、重要性利于軟件高層性質(zhì)分析軟件分析的基本任務(wù)是準(zhǔn)確地理解舊系統(tǒng),定義新系統(tǒng)的目標(biāo)。對(duì)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求,以及確定系統(tǒng)的構(gòu)成及主要成份,最后要建立起新系統(tǒng)的邏輯模型。分析階段的結(jié)果是開(kāi)發(fā)的基礎(chǔ),關(guān)系到系統(tǒng)的成敗和質(zhì)量。許多系統(tǒng)性質(zhì)是可以在開(kāi)發(fā)早期進(jìn)行分析和排錯(cuò)的。謝謝大家!再見(jiàn)!SOA二0一三年九月主要內(nèi)容:一、發(fā)展歷程二、定義三、基本結(jié)構(gòu)四、主要研究?jī)?nèi)容一、發(fā)展歷程
面向服務(wù)的體系結(jié)構(gòu)(service-orientedarchitecture,SOA)來(lái)源于早期的基于構(gòu)件的分布式計(jì)算方式,Allen在《Component-BasedDevelopmentforEnterpriseSystems》一書(shū)中首次提到了服務(wù)的概念,他認(rèn)為服務(wù)是將構(gòu)件描述成提供相關(guān)服務(wù)的物理黑盒封裝的可執(zhí)行代碼單元,它的服務(wù)只能通過(guò)一致的已發(fā)布的接口進(jìn)行訪(fǎng)問(wèn),構(gòu)件必須能夠連接到其他構(gòu)件以構(gòu)成一個(gè)更大的構(gòu)件[1]。一、發(fā)展歷程JINI的發(fā)展又進(jìn)一步推動(dòng)了SOA的早期概念體系的建立。1996年國(guó)際咨詢(xún)機(jī)構(gòu)Gartner公司第一次闡述了SOA的概念,并認(rèn)為未來(lái)SOA會(huì)成為占絕對(duì)優(yōu)勢(shì)的軟件工程方法,從而結(jié)束已長(zhǎng)達(dá)40多年的傳統(tǒng)軟件體系架構(gòu)的主導(dǎo)地位。但是由于當(dāng)時(shí)技術(shù)發(fā)展的限制,始終沒(méi)有廣泛應(yīng)用。一、發(fā)展歷程
近幾年以來(lái),隨著WebService、XML技術(shù)的發(fā)展,實(shí)現(xiàn)SOA時(shí)機(jī)逐漸成熟,并且由于Microsoft、IBM等廠商不遺余力的推崇,SOA已經(jīng)成為企業(yè)應(yīng)用中的核心概念之一,并成為軟件工程技術(shù)發(fā)展的重要趨勢(shì)。一、發(fā)展歷程SOA在剛開(kāi)始的時(shí)候,它的關(guān)注點(diǎn)在企業(yè)應(yīng)用集成和廠商相關(guān)的解決方案上,這個(gè)時(shí)期對(duì)于SOA的研究主要集中在軟件系統(tǒng)集成和整合方面,緊接著SOA的發(fā)展逐步過(guò)渡到以WebService以及WebService組合為主要研究關(guān)注點(diǎn),現(xiàn)在SOA的研究重點(diǎn)在業(yè)務(wù)流程管理以及業(yè)務(wù)流程的開(kāi)放標(biāo)準(zhǔn)方面。一、發(fā)展歷程
回顧SOA發(fā)展歷程,我們把其大致分為了三個(gè)階段。下面將分別介紹每個(gè)階段的重要標(biāo)準(zhǔn)和規(guī)范。一、發(fā)展歷程1、孕育階段這一階段以XML技術(shù)為標(biāo)志,時(shí)間大致從上世紀(jì)九十年代末到本世紀(jì)初。雖然這段時(shí)期很少提到SOA,但XML的出現(xiàn)無(wú)疑為SOA的興起奠定了穩(wěn)固的基石。一、發(fā)展歷程1、孕育階段可擴(kuò)展標(biāo)記語(yǔ)言(ExtensiblMarkupLanguage,XML)系W3C所創(chuàng)建,源自流行的標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言(StandardGeneralisedMarkupLanguage,SGML),它在上世紀(jì)60年代后期就已存在。這種廣泛使用的元語(yǔ)言,允許組織定義文檔的元數(shù)據(jù),實(shí)現(xiàn)企業(yè)內(nèi)部和企業(yè)之間的電子數(shù)據(jù)交換。由于SGML比較復(fù)雜,實(shí)施成本很高,因此很長(zhǎng)時(shí)間里只用于大公司之間,限制了它的推廣和普及。一、發(fā)展歷程1、孕育階段通過(guò)XML,開(kāi)發(fā)人員擺脫了HTML語(yǔ)言的限制,可以將任何文檔轉(zhuǎn)換成XML格式,然后跨越互聯(lián)網(wǎng)協(xié)議傳輸。借助XML轉(zhuǎn)換語(yǔ)言(ExtensibleStylesheetLanguageTransformation,XSLT),接受方可以很容易地解析和抽取XML的數(shù)據(jù)。這使得企業(yè)既能夠?qū)?shù)據(jù)以一種統(tǒng)一的格式描述和交換,同時(shí)又不必負(fù)擔(dān)SGML那樣高的成本。事實(shí)上,XML實(shí)施成本幾乎和HTML一樣。一、發(fā)展歷程1、孕育階段
XML是SOA的基石。XML規(guī)定了服務(wù)之間以及服務(wù)內(nèi)部數(shù)據(jù)交換的格式和結(jié)構(gòu)。XSDSchemas保障了消息數(shù)據(jù)的完整性和有效性,而XSLT使得不同的數(shù)據(jù)表達(dá)能夠通過(guò)Schema映射而互相通信。一、發(fā)展歷程2、發(fā)軔之初
2000年以后,人們普遍認(rèn)識(shí)到基于公共——專(zhuān)有互聯(lián)網(wǎng)之上的電子商務(wù)具有極大的發(fā)展?jié)摿?,因此需要?jiǎng)?chuàng)建一套全新的基于互聯(lián)網(wǎng)的開(kāi)放通信框架,以滿(mǎn)足企業(yè)對(duì)電子商務(wù)中各分立系統(tǒng)之間通信的要求。于是,人們提出了Web服務(wù)的概念,希望通過(guò)將企業(yè)對(duì)外服務(wù)封裝為基于統(tǒng)一標(biāo)準(zhǔn)的Web服務(wù),實(shí)現(xiàn)異構(gòu)系統(tǒng)之間的簡(jiǎn)單交互。這一時(shí)期,出現(xiàn)了三個(gè)著名的Web服務(wù)標(biāo)準(zhǔn)和規(guī)范:一、發(fā)展歷程2、發(fā)軔之初簡(jiǎn)單對(duì)象訪(fǎng)問(wèn)協(xié)議(SimpleObjectAccessProtocal,SOAP)Web服務(wù)描述語(yǔ)言(WebServicesDescriptionLanguage,WSDL)通用服務(wù)發(fā)現(xiàn)和集成協(xié)議(UniversalDiscoveryDescriptionandIntegration,UUDI)一、發(fā)展歷程2、發(fā)軔之初這三個(gè)標(biāo)準(zhǔn)可謂Web服務(wù)三劍客,極大地推動(dòng)了Web服務(wù)的普及和發(fā)展。短短幾年之間,互聯(lián)網(wǎng)上出現(xiàn)了大量的Web服務(wù),越來(lái)越多的網(wǎng)站和公司將其對(duì)外服務(wù)或業(yè)務(wù)接口封裝成Web服務(wù),有力地推動(dòng)了電子商務(wù)和互聯(lián)網(wǎng)的發(fā)展。Web服務(wù)也是互聯(lián)網(wǎng)Web2.0時(shí)代的一項(xiàng)重要特征。一、發(fā)展歷程3、成長(zhǎng)階段從2005年開(kāi)始,SOA推廣和普及工作開(kāi)始加速。不僅專(zhuān)家學(xué)者,幾乎所有關(guān)心軟件行業(yè)發(fā)展的人士都開(kāi)始把目光投向SOA。一時(shí)間,SOA頻頻出現(xiàn)在各種技術(shù)媒體、新產(chǎn)品發(fā)布會(huì)和技術(shù)交流會(huì)上。一、發(fā)展歷程3、成長(zhǎng)階段各大廠商也逐漸放棄成見(jiàn),通過(guò)建立廠商間的協(xié)作組織共同努力制定中立的SOA標(biāo)準(zhǔn)。這一努力最重要的成果體現(xiàn)在3個(gè)重量級(jí)規(guī)范上:SCA/SDO/WS-Policy。SCA和SDO構(gòu)成了SOA編程模型的基礎(chǔ),而WS-Policy建立了SOA組件之間安全交互的規(guī)范。這三個(gè)規(guī)范的發(fā)布,標(biāo)志著SOA進(jìn)入了實(shí)施階段。一、發(fā)展歷程3、成長(zhǎng)階段從整體架構(gòu)角度看,人們已經(jīng)把關(guān)注點(diǎn)從簡(jiǎn)單的Web服務(wù)拓展到面向服務(wù)體系架構(gòu)的各個(gè)方面,包括安全、業(yè)務(wù)流程和事務(wù)處理等。二、定義W3C將SOA定義為:“一種應(yīng)用程序體系結(jié)構(gòu),在這種體系結(jié)構(gòu)中,所有功能都定義為獨(dú)立的服務(wù),這些服務(wù)帶有定義明確的可調(diào)用接口,可以以定義好的順序來(lái)調(diào)用這些服務(wù)來(lái)形成業(yè)務(wù)流程”。
SOA的關(guān)鍵是“服務(wù)”的概念,W3C將服務(wù)定義為:“服務(wù)提供者完成一組工作,為服務(wù)使用者交付所需的最終結(jié)果。最終結(jié)果通常會(huì)使使用者的狀態(tài)發(fā)生變化,但也可能使提供者的狀態(tài)改變,或者雙方都產(chǎn)生變化”。二、定義IBM公司的定義:面向服務(wù)的體系結(jié)構(gòu)(service-orientedarchitecture,SOA)是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱(chēng)為服務(wù))通過(guò)這些服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互[2]。二、定義Gartner則將SOA描述為:“客戶(hù)端/服務(wù)器的軟件設(shè)計(jì)方法,一項(xiàng)應(yīng)用由軟件服務(wù)和軟件服務(wù)使用者組成……SOA與大多數(shù)通用的客戶(hù)端/服務(wù)器模型的不同之處,在于它著重強(qiáng)調(diào)軟件組件的松散耦合,并使用獨(dú)立的標(biāo)準(zhǔn)接口?!倍?、定義S將SOA定義為:“本質(zhì)上是服務(wù)的集合。服務(wù)間彼此通信,這種通信可能是簡(jiǎn)單的數(shù)據(jù)傳送,也可能是兩個(gè)或更多的服務(wù)協(xié)調(diào)進(jìn)行某些活動(dòng)。服務(wù)間需要某些方法進(jìn)行連接。所謂服務(wù)就是精確定義、封裝完善、獨(dú)立于其他服務(wù)所處環(huán)境和狀態(tài)的函數(shù)?!倍?、定義L將SOA定義為:“按需連接資源的系統(tǒng)。在SOA中,資源被作為可通過(guò)標(biāo)準(zhǔn)方式訪(fǎng)問(wèn)的獨(dú)立服務(wù),提供給網(wǎng)絡(luò)中的其他成員。與傳統(tǒng)的系統(tǒng)結(jié)構(gòu)相比,SOA規(guī)定了資源間更為靈活的松散耦合關(guān)系?!比OA的基本結(jié)構(gòu)ServiceProviderServiceConsumerServiceRegistryContractFindRegisterBindandExecute三、SOA的基本結(jié)構(gòu)
(1)服務(wù)提供者(ServiceProvider)。發(fā)布自己的服務(wù),并且對(duì)使用自身服務(wù)的請(qǐng)求進(jìn)行響應(yīng)。(2)服務(wù)注冊(cè)(ServiceRegistry)。注冊(cè)已經(jīng)發(fā)布的服務(wù)提供者,對(duì)其進(jìn)行分類(lèi)并提供搜索服務(wù)。(3)服務(wù)請(qǐng)求者(ServiceConsumer)。利用服務(wù)代理查找所需的服務(wù),然后使用該服務(wù)。三、SOA的基本結(jié)構(gòu)
(4)協(xié)議(Contract)。是服務(wù)請(qǐng)求者和與它相互作用的服務(wù)提供者之間的方法說(shuō)明。它對(duì)服務(wù)的請(qǐng)求和相應(yīng)的格式格式化。一個(gè)服務(wù)協(xié)議要求一系列的前置條件和后置條件。前置條件和后置條件規(guī)定了為完成特定的功能,服務(wù)必須處在特定的狀態(tài)。協(xié)議還聲明了服務(wù)質(zhì)量水平。例如,服務(wù)質(zhì)量的一個(gè)屬性就是完成一個(gè)特定的服務(wù)方法所花費(fèi)的總時(shí)間。三、SOA的基本結(jié)構(gòu)
(5)服務(wù)代理(ServiceProxy)。服務(wù)提供者為服務(wù)請(qǐng)求者提供一個(gè)服務(wù)代理。服務(wù)請(qǐng)求者通過(guò)調(diào)用代理上的應(yīng)用接口函數(shù)來(lái)完成請(qǐng)求。服務(wù)代理在服務(wù)注冊(cè)處找到服務(wù)提供者的協(xié)議和參數(shù)。接著服務(wù)代理格式化請(qǐng)求消息并完成代表服務(wù)請(qǐng)求者的請(qǐng)求。服務(wù)代理對(duì)服務(wù)請(qǐng)求者來(lái)說(shuō)是一個(gè)很方便的實(shí)體。它不是必需的,服務(wù)請(qǐng)求的開(kāi)發(fā)者通過(guò)開(kāi)發(fā)需要的軟件可以直接訪(fǎng)問(wèn)服務(wù)。三、SOA的基本結(jié)構(gòu)注冊(cè)服務(wù)提供者服務(wù)請(qǐng)求者執(zhí)行代碼服務(wù)代理FindBindandExecute三、SOA的基本結(jié)構(gòu)
服務(wù)代理通過(guò)緩沖遠(yuǎn)程參數(shù)和數(shù)據(jù)可以提高性能。當(dāng)代理緩沖了遠(yuǎn)程的參數(shù),后面來(lái)的服務(wù)調(diào)用就不需要額外的注冊(cè)調(diào)用。通過(guò)在本地存儲(chǔ)協(xié)議,服務(wù)請(qǐng)求者減少了為完成服務(wù)所需的網(wǎng)絡(luò)跳躍的次數(shù)。三、SOA的基本結(jié)構(gòu)
此外,通過(guò)在本地完成一些功能,代理可以完全避免網(wǎng)絡(luò)調(diào)用,從而提高性能。對(duì)那些不需要服務(wù)數(shù)據(jù)的服務(wù)程序來(lái)說(shuō),整個(gè)的程序就可以在代理本地完成。如果程序需要很少的服務(wù)數(shù)據(jù),代理可以一次下載一小部分?jǐn)?shù)據(jù)并可在接下來(lái)的程序調(diào)用中使用。程序在代理處完成而不是被發(fā)送到服務(wù)處完成的事實(shí)就是對(duì)服務(wù)請(qǐng)求者的透明度。然而,在使用這項(xiàng)技術(shù)時(shí),代理只支持服務(wù)自己提供的程序,這是很重要的。代理設(shè)計(jì)模式表明代理只是對(duì)遠(yuǎn)程對(duì)象來(lái)說(shuō)的本地參數(shù)。如果代理以任何方式改變了遠(yuǎn)程服務(wù)的接口,那么嚴(yán)格地說(shuō)它就不再是代理了。三、SOA的基本結(jié)構(gòu)
服務(wù)提供者會(huì)為不同的環(huán)境提供代理。服務(wù)代理用服務(wù)請(qǐng)求者的當(dāng)?shù)卣Z(yǔ)言書(shū)寫(xiě)。例如,服務(wù)提供者可以為Java,VisualBasic和Delphi提供代理,如果這些是服務(wù)請(qǐng)求者最有可能使用的平臺(tái)。雖然服務(wù)代理不是必需的,但它能大大地提高服務(wù)請(qǐng)求者的方便性和性能。三、SOA的基本結(jié)構(gòu)
(6)服務(wù)租借。是服務(wù)注冊(cè)給予服務(wù)請(qǐng)求者的,規(guī)定了協(xié)議有效的總時(shí)間:從服務(wù)請(qǐng)求者向注冊(cè)發(fā)出請(qǐng)求到租借所規(guī)定的時(shí)間。當(dāng)租借時(shí)間被用完,服務(wù)請(qǐng)求者就必須向服務(wù)注冊(cè)請(qǐng)求新的租借。三、SOA的基本結(jié)構(gòu)
租借對(duì)需要維持請(qǐng)求者和提供者間綁定信息狀態(tài)的服務(wù)是必需的。租借定義了狀態(tài)可能保持的總時(shí)間。通過(guò)限制請(qǐng)求者和提供者間綁定的總時(shí)間,租借大大降低了服務(wù)請(qǐng)求者和服務(wù)提供者間的耦合。如果沒(méi)有租借的概念,一個(gè)請(qǐng)求者可能會(huì)永久地綁定在一個(gè)服務(wù)上,并永不再重綁定在其它的協(xié)議上。這就會(huì)導(dǎo)致服務(wù)請(qǐng)求者和服務(wù)提供者間更加緊的耦合。三、SOA的基本結(jié)構(gòu)
有了服務(wù)租借,如果開(kāi)發(fā)者需要實(shí)現(xiàn)一些改變,他就可以在服務(wù)請(qǐng)求者擁有的租借用完時(shí)來(lái)達(dá)成。實(shí)現(xiàn)可以改變,而不影響服務(wù)請(qǐng)求者的完成,因?yàn)檫@些請(qǐng)求者可以請(qǐng)求一個(gè)新的協(xié)議和租借。當(dāng)獲得新的協(xié)議和租借時(shí),他們并沒(méi)有保證與以前的完全一致,他們可能已經(jīng)改變了,并且理解和處理這些改變是服務(wù)請(qǐng)求者的責(zé)任。三、SOA的基本結(jié)構(gòu)SOA體系結(jié)構(gòu)中的組件必須具有上述一種或多種角色,在這些角色之間使用了三種操作:(1)發(fā)布(Publish)。使服務(wù)提供者可以向服務(wù)代理注冊(cè)自己的功能及訪(fǎng)問(wèn)接口(2)查找(Find)。使服務(wù)請(qǐng)求者可以通過(guò)服務(wù)代理查找特定種類(lèi)的服務(wù)。(3)綁定(BindandExecute)。使服務(wù)請(qǐng)求者能夠真正使用服務(wù)提供者提供的服務(wù)。三、SOA的基本結(jié)構(gòu)
理論上,面向服務(wù)的體系結(jié)構(gòu)這種思想,在其簡(jiǎn)易性上十分吸引人。如果能夠用定義很好的機(jī)制封裝應(yīng)用,就有可能將一個(gè)單一的應(yīng)用加入到一個(gè)服務(wù)的集合中。封裝的過(guò)程創(chuàng)建了一個(gè)抽象層,屏蔽了應(yīng)用中復(fù)雜的細(xì)節(jié)(你將不必關(guān)心用的是哪一種編程語(yǔ)言,什么操作系統(tǒng),應(yīng)用程序用的是什么數(shù)據(jù)庫(kù)產(chǎn)品)。唯一相關(guān)的就是服務(wù)所描述的接口。四、主要研究?jī)?nèi)容理論模型服務(wù)建模、設(shè)計(jì)、發(fā)現(xiàn)、組合面向服務(wù)的全生命周期的軟件開(kāi)發(fā)方法SOA和BPM的結(jié)合研究面向服務(wù)的體系結(jié)構(gòu)的交叉研究面向服務(wù)的體系結(jié)構(gòu)的模擬驗(yàn)證面向服務(wù)的體系結(jié)構(gòu)的評(píng)估和測(cè)試面向服務(wù)的體系結(jié)構(gòu)的應(yīng)用面向服務(wù)的體系結(jié)構(gòu)的演化模型動(dòng)態(tài)面向服務(wù)的體系結(jié)構(gòu)四、主要研究?jī)?nèi)容一、理論模型參考模型服務(wù)接口模型面向服務(wù)的體系結(jié)構(gòu)形式化描述四、主要研究?jī)?nèi)容一、理論模型--參考模型為了更好地促進(jìn)未來(lái)系統(tǒng)間的互聯(lián)互通,需要對(duì)基于SOA的企業(yè)應(yīng)用系統(tǒng)的開(kāi)發(fā)進(jìn)行規(guī)范和指導(dǎo)。進(jìn)行SOA參考模型的研究的意義正在于此。各個(gè)研究機(jī)構(gòu)和各個(gè)公司提出了若干概念參考模型,作為面向服務(wù)的體系結(jié)構(gòu)的指導(dǎo)方針。四、主要研究?jī)?nèi)容一、理論模型--參考模型
OASIS(結(jié)構(gòu)化信息標(biāo)準(zhǔn)促進(jìn)組織)在2006年初提出了SOA參考模型,并在年底成為標(biāo)準(zhǔn)。OASIS參考模型致力于SOA參考模型的標(biāo)準(zhǔn)化,其目標(biāo)是定義最小的一組SOA核心概念,并確定其間的關(guān)系,用于提供構(gòu)造具體SOA的共同語(yǔ)義,該參考模型處于概念定義與概念關(guān)聯(lián)的層次,主要用于提供對(duì)SOA進(jìn)行共同的理解,沒(méi)有闡述如何運(yùn)用這些概念深入地構(gòu)造SOA的基本結(jié)構(gòu)(如服務(wù)總線(xiàn)和組織機(jī)構(gòu)等)。四、主要研究?jī)?nèi)容一、理論模型--參考模型
OSOA(開(kāi)放SOA合作組織,OpenSOACollaboration)制定的SCA(ServiceComponentArchitecture,服務(wù)組件架構(gòu))和SDO(ServiceDataObjects,服務(wù)數(shù)據(jù)對(duì)象)規(guī)范。SCA提供了一個(gè)統(tǒng)一的面向服務(wù)組件的調(diào)用方式,從而使得用戶(hù)可以把不同的軟件模塊通過(guò)服務(wù)組件的標(biāo)準(zhǔn)化統(tǒng)一的封裝起來(lái)和被調(diào)用訪(fǎng)問(wèn)。而SDO則作為一種數(shù)據(jù)編程架構(gòu)和API,統(tǒng)一了不同數(shù)據(jù)源類(lèi)型的數(shù)據(jù)編程,讓開(kāi)發(fā)人員可以從不同的數(shù)據(jù)源以統(tǒng)一的方式訪(fǎng)問(wèn)和操縱數(shù)據(jù)。四、主要研究?jī)?nèi)容一、理論模型--參考模型針對(duì)目前還沒(méi)有公認(rèn)的企業(yè)服務(wù)總線(xiàn)的狀況,CBDI提出了一個(gè)SOA參考模型,其中給出了企業(yè)服務(wù)總線(xiàn)的主要構(gòu)成模塊,但偏重于如何進(jìn)行實(shí)現(xiàn),并主張全面的支持Web服務(wù)。各大公司也有自己的SOA參考模型。四、主要研究?jī)?nèi)容一、理論模型--參考模型國(guó)內(nèi),北京大學(xué)麻志毅等提出了一個(gè)與具體實(shí)現(xiàn)技術(shù)無(wú)關(guān)的SOA參考模型,該模型不直接受任何具體標(biāo)準(zhǔn)、技術(shù)或其它實(shí)現(xiàn)細(xì)節(jié)的約束,描述了應(yīng)用服務(wù)的環(huán)境設(shè)施以及其中的部件和部件之間的關(guān)系,是一個(gè)用以指導(dǎo)建立具體的SOA的抽象框架。四、主要研究?jī)?nèi)容一、理論模型--服務(wù)接口模型在面向服務(wù)的軟件體系結(jié)構(gòu)中,服務(wù)提供者向服務(wù)注冊(cè)機(jī)構(gòu)發(fā)布服務(wù)的接口信息,該信息描述了這個(gè)服務(wù)對(duì)于外界環(huán)境的要求和它能夠?qū)ν饨缣峁┑姆?wù),如何保證接口信息的準(zhǔn)確性對(duì)于面向服務(wù)系統(tǒng)的構(gòu)建非常關(guān)鍵。形式化的接口描述是保證其準(zhǔn)確性的有效手段,也是對(duì)其進(jìn)行測(cè)試或驗(yàn)證的前提。因此,建立服務(wù)的形式化接口模型受到了關(guān)注。四、主要研究?jī)?nèi)容一、理論模型--服務(wù)接口模型文獻(xiàn)[16]提出了接口自動(dòng)機(jī)描述接口之間的時(shí)序行為;文獻(xiàn)[17]提出了時(shí)間接口,它對(duì)具備時(shí)間約束的接口時(shí)序行為進(jìn)行了描述。以此為基礎(chǔ),文獻(xiàn)[18,19]中提出了一種服務(wù)接口模型,對(duì)3個(gè)抽象層面進(jìn)行接口信息描述,并在給出的每個(gè)層面接口的相容性和可替換性條件下提出了接口規(guī)范及其驗(yàn)證方法。四、主要研究?jī)?nèi)容一、理論模型--服務(wù)接口模型事務(wù)性是面向服務(wù)系統(tǒng)的一個(gè)非常重要的特點(diǎn),面向服務(wù)的事務(wù)模型與傳統(tǒng)的原子事務(wù)模型有著很大的區(qū)別,前者往往在執(zhí)行時(shí)間上比較長(zhǎng),而且很多操作不具備傳統(tǒng)事務(wù)模型的原子性和可回滾性,對(duì)于長(zhǎng)事務(wù)(longrunningtransactions)模型,需要提供補(bǔ)償和錯(cuò)誤處理機(jī)制對(duì)其發(fā)生的異常進(jìn)行處理,因此,很多學(xué)者在事務(wù)補(bǔ)償和錯(cuò)誤處理機(jī)制方面展開(kāi)了研究。四、主要研究?jī)?nèi)容一、理論模型--服務(wù)接口模型文獻(xiàn)[21]使用Guarded有限狀態(tài)機(jī)對(duì)單個(gè)服務(wù)接口建模,然后將模型轉(zhuǎn)換到Promela語(yǔ)言,并在SPIN上進(jìn)行驗(yàn)證,以保證接口行為的正確性。這種方法在對(duì)接口層面的事務(wù)模型的描述能力上存在不足,對(duì)BPEL[22]中錯(cuò)誤處理和補(bǔ)償行為的描述不夠精確,比如,它們不能處理BPEL中的多層作用域,同時(shí)也沒(méi)有考慮BPEL中默認(rèn)的錯(cuò)誤處理和補(bǔ)償機(jī)制。四、主要研究?jī)?nèi)容一、理論模型--服務(wù)接口模型基于面向構(gòu)件的接口理論,Butler[23]使用補(bǔ)償通信順序進(jìn)程(compensatingCSP,簡(jiǎn)稱(chēng)cCSP)來(lái)描述長(zhǎng)事務(wù)模型。補(bǔ)償通信順序進(jìn)程是通信順序進(jìn)程的一種變體,它提供了補(bǔ)償進(jìn)程來(lái)描述補(bǔ)償行為,同時(shí)使用中斷進(jìn)程、中斷處理和產(chǎn)生中斷進(jìn)程對(duì)錯(cuò)誤發(fā)生及錯(cuò)誤處理行為進(jìn)行描述,并且還提供了事務(wù)塊進(jìn)程來(lái)表示獨(dú)立的子事務(wù),但是并沒(méi)有對(duì)并發(fā)進(jìn)程中的分支進(jìn)程發(fā)生錯(cuò)誤后的進(jìn)程同步策略進(jìn)行討論,而這一點(diǎn)在事務(wù)處理中非常重要。四、主要研究?jī)?nèi)容一、理論模型--面向服務(wù)的體系結(jié)構(gòu)形式化描述面向服務(wù)的體系結(jié)構(gòu)本身也是一種軟件體系結(jié)構(gòu),所以可以把軟件體系結(jié)構(gòu)研究方法和研究成果用在面向服務(wù)的體系結(jié)構(gòu)的研究上。因此,很多對(duì)于面向服務(wù)的體系結(jié)構(gòu)的研究也都是在體系結(jié)構(gòu)這個(gè)層面上來(lái)做的。形式化描述可以保證面向服務(wù)的體系結(jié)構(gòu)實(shí)施過(guò)程中的準(zhǔn)確性,方便形式化驗(yàn)證。四、主要研究?jī)?nèi)容一、理論模型--面向服務(wù)的體系結(jié)構(gòu)形式化描述文獻(xiàn)[24]在體系結(jié)構(gòu)層次使用Z語(yǔ)言對(duì)SOA進(jìn)行了形式化的描述,給出了服務(wù)組件、匹配、組合的形式化定義,分析了體系結(jié)構(gòu)風(fēng)格的可替換性。文獻(xiàn)[25]提出了一個(gè)面向服務(wù)的輕量級(jí)形式化框架,用于捕獲SOA中的主要組件,分析SOA的結(jié)構(gòu)。這些研究對(duì)提高SOA的準(zhǔn)確性和形式化驗(yàn)證能力上起到了推動(dòng)作用。同時(shí)也屬于軟件體系結(jié)構(gòu)研究的范疇。四、主要研究?jī)?nèi)容二、服務(wù)建模、設(shè)計(jì)、發(fā)現(xiàn)、組合面向服務(wù)源于軟件工程理論的“關(guān)注點(diǎn)分離”的思想。也就是說(shuō)將一個(gè)大的、復(fù)雜的軟件問(wèn)題分解為一系列單個(gè)關(guān)注點(diǎn),單個(gè)組件,使得邏輯上將需要解決的問(wèn)題分解成更小的、相關(guān)片段的集合。每一段邏輯處理一個(gè)特定的關(guān)注點(diǎn)。這個(gè)思想已經(jīng)被不同的開(kāi)發(fā)平臺(tái)以不同的方式實(shí)現(xiàn)。例如,面向?qū)ο蟮木幊膛c基于組件的編程方法,通過(guò)使用對(duì)象和組件而實(shí)現(xiàn)了關(guān)注點(diǎn)分離。面向服務(wù)能夠被視作以截然不同的方式來(lái)實(shí)現(xiàn)關(guān)注點(diǎn)分離。這種不同就在于它不是以細(xì)粒度的對(duì)象和基于私有接口協(xié)議的組件為基礎(chǔ)的,而是以粗粒度、基于開(kāi)放標(biāo)準(zhǔn)協(xié)議的服務(wù)為基礎(chǔ)的。四、主要研究?jī)?nèi)容二、服務(wù)建模、設(shè)計(jì)、發(fā)現(xiàn)、組合盡管設(shè)計(jì)模式、程序框架大大地完善和發(fā)展了面向?qū)ο蟮睦碚?,但是由于?duì)象粒度太小,在當(dāng)今互聯(lián)網(wǎng)迅猛發(fā)展的情況下,所能提供的復(fù)用性、靈活性相當(dāng)有限。而基于分布式組件的編程,比如DCOM、COBRA等都不是基于一個(gè)廣泛認(rèn)可的協(xié)議,導(dǎo)致使用這些組件模型開(kāi)發(fā)出來(lái)的軟件在互聯(lián)互通上存在一定的難度,也造成了很多孤立系統(tǒng)的存在,產(chǎn)生了所謂的“信息孤島”。而且組件之間耦合非常緊密,一旦需求發(fā)生變更,應(yīng)對(duì)需求變更往往需要花費(fèi)很大代價(jià)。而服務(wù)是粗粒度的,大到一個(gè)企業(yè)具體的一項(xiàng)業(yè)務(wù)都可以成為一個(gè)服務(wù),這樣軟件復(fù)用的程度大大提高,而且服務(wù)是松耦合的,一旦需求變更,只需要花很小的代價(jià)就可以隨需應(yīng)變。
四、主要研究?jī)?nèi)容二、服務(wù)建模、設(shè)計(jì)、發(fā)現(xiàn)、組合一般認(rèn)為服務(wù)的基本原則有以下八條[7]:1)服務(wù)可復(fù)用不管是否存在復(fù)用的機(jī)會(huì),服務(wù)被設(shè)計(jì)為支持潛在可復(fù)用。2)服務(wù)共享一個(gè)正式契約為了與服務(wù)交互,只需要共享描述每個(gè)服務(wù)信息交換術(shù)語(yǔ)定義的正式契約。3)服務(wù)是松散耦合的服務(wù)被設(shè)計(jì)為無(wú)需緊密的、跨服務(wù)的依賴(lài)而交互。四、主要研究?jī)?nèi)容二、服務(wù)建模、設(shè)計(jì)、發(fā)現(xiàn)、組合一般認(rèn)為服務(wù)的基本原則有以下八條[7]:4)服務(wù)是底層邏輯的抽象只有經(jīng)由服務(wù)契約所暴露的部分服務(wù)對(duì)于外部世界是可見(jiàn)的。契約之外所表達(dá)的底層邏輯是不可見(jiàn)的,且與服務(wù)請(qǐng)求者無(wú)關(guān)。5)服務(wù)是可組合的服務(wù)可能組合其他服務(wù)。這允許表示不同粒度的邏輯,并促進(jìn)復(fù)用及抽象層的創(chuàng)建。四、主要研究?jī)?nèi)容二、服務(wù)建模、設(shè)計(jì)、發(fā)現(xiàn)、組合一般認(rèn)為服務(wù)的基本原則有以下八條[7]:6)服務(wù)是自治的邏輯由服務(wù)所控制,并位于一個(gè)清晰的邊界內(nèi)。服務(wù)已經(jīng)在這個(gè)邊界內(nèi)被控制,并且不依賴(lài)于執(zhí)行其控制的其他服務(wù)。7)服務(wù)是無(wú)狀態(tài)的服務(wù)應(yīng)當(dāng)不需要管理狀態(tài)信息,因此能夠其維持松耦合性。服務(wù)應(yīng)當(dāng)盡可能設(shè)計(jì)成無(wú)狀態(tài)的,即便這意味著要將狀態(tài)管理移至別處。四、主要研究?jī)?nèi)容二、服務(wù)建模、設(shè)計(jì)、發(fā)現(xiàn)、組合一般認(rèn)為服務(wù)的基本原則有以下八條[7]:8)服務(wù)是可發(fā)現(xiàn)的服務(wù)應(yīng)當(dāng)允許其描述被發(fā)現(xiàn),并被人工和可能會(huì)利用其邏輯的服務(wù)請(qǐng)求者所理解。在這八條原則中,自治性、松散耦合、抽象、以及需要正式契約被視為形成SOA根本基礎(chǔ)的核心原則。四、主要研究?jī)?nèi)容二、服務(wù)建模、設(shè)計(jì)、發(fā)現(xiàn)、組合1、服務(wù)建模
SOA是一種新的軟件體系結(jié)構(gòu),包含有服務(wù)提供者提供的可幫助服務(wù)消費(fèi)者實(shí)現(xiàn)各種功能的服務(wù),由于SOA松耦合和粗粒度的本質(zhì)特性,服務(wù)應(yīng)該在獨(dú)立于實(shí)現(xiàn)的較高抽象層次進(jìn)行描述。四、主要研究?jī)?nèi)容二、服務(wù)建模、設(shè)計(jì)、發(fā)現(xiàn)、組合1、服務(wù)建模目前對(duì)服務(wù)建模的研究主要有:利用UML進(jìn)行服務(wù)建模[26,27],利用自定義語(yǔ)言對(duì)服務(wù)行為建模[28],利用體系結(jié)構(gòu)描述語(yǔ)言進(jìn)行服務(wù)建模[29],研究WebService的建模框架。Web服務(wù)建模方面相對(duì)成功的模型是OWL-S和WSMO。四、主要研究?jī)?nèi)容二、服務(wù)建模、設(shè)計(jì)、發(fā)現(xiàn)、組合2、服務(wù)設(shè)計(jì)服務(wù)的構(gòu)件要考慮到當(dāng)前大量使用面向?qū)ο蠡蛎嫦驑?gòu)件方法開(kāi)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 居民種花活動(dòng)方案策劃(3篇)
- 《GA 1002-2012劇毒化學(xué)品、放射源存放場(chǎng)所治安防范要求》專(zhuān)題研究報(bào)告深度
- 《GA 664-2006公安獎(jiǎng)匾》專(zhuān)題研究報(bào)告
- 養(yǎng)老院志愿者服務(wù)管理制度
- 養(yǎng)老院入住老人糾紛調(diào)解與處理制度
- 養(yǎng)老院個(gè)性化服務(wù)制度
- 2026湖南岳陽(yáng)市云溪區(qū)人民法院招聘3人備考題庫(kù)附答案
- 2026福建漳州市鼓浪嶼故宮文物館招聘6人參考題庫(kù)附答案
- 2026自然資源部所屬單位招聘634人參考題庫(kù)附答案
- 2026貴州醫(yī)科大學(xué)附屬白云醫(yī)院養(yǎng)老護(hù)理員招聘8人考試備考題庫(kù)附答案
- 商超信息系統(tǒng)操作規(guī)定
- 如何做好一名護(hù)理帶教老師
- 房地產(chǎn)項(xiàng)目回款策略與現(xiàn)金流管理
- 花溪區(qū)高坡苗族鄉(xiāng)國(guó)土空間總體規(guī)劃 (2021-2035)
- 非連續(xù)性文本閱讀(中考試題20篇)-2024年中考語(yǔ)文重難點(diǎn)復(fù)習(xí)攻略(解析版)
- 專(zhuān)題13 三角函數(shù)中的最值模型之胡不歸模型(原卷版)
- 門(mén)診藥房西藥管理制度
- 新能源汽車(chē)生產(chǎn)代工合同
- 2025年中煤科工集團(tuán)重慶研究院有限公司招聘筆試參考題庫(kù)含答案解析
- 消防救援預(yù)防職務(wù)犯罪
- 一體化泵站安裝施工方案
評(píng)論
0/150
提交評(píng)論