軟件體系結(jié)構(gòu)描述_第1頁
軟件體系結(jié)構(gòu)描述_第2頁
軟件體系結(jié)構(gòu)描述_第3頁
軟件體系結(jié)構(gòu)描述_第4頁
軟件體系結(jié)構(gòu)描述_第5頁
已閱讀5頁,還剩237頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

4.1軟件體系結(jié)構(gòu)描述方法4.2軟件體系結(jié)構(gòu)描述語言4.3

典型的軟件體系結(jié)構(gòu)描述語言4.4

可擴展標(biāo)記語言4.5

基于XML的軟件體系結(jié)構(gòu)描述語言4.6使用“4+1”模型描述軟件體系結(jié)構(gòu)4.7使用UML描述軟件體系結(jié)構(gòu)4.8本章小結(jié)本章內(nèi)容在目前通用的軟件開發(fā)方法中,對軟件體系結(jié)構(gòu)的描述通常采用非形式化的圖和文本,它們不能描述系統(tǒng)構(gòu)件之間的接口,也難于進(jìn)行形式化分析和模擬,并且缺乏相應(yīng)的支持工具幫助設(shè)計師完成設(shè)計工作,也不能分析其一致性和完整性等特性。因此,形式化的、規(guī)范化的體系結(jié)構(gòu)描述對于體系結(jié)構(gòu)的設(shè)計和理解都是非常重要的。第4章軟件體系結(jié)構(gòu)描述

描述方法的種類

第4章軟件體系結(jié)構(gòu)描述4.1軟件體系結(jié)構(gòu)描述方法◎

圖形表達(dá)工具◎

模塊內(nèi)連接語言◎

基于軟構(gòu)件的系統(tǒng)描述語言◎

軟件體系結(jié)構(gòu)描述語言

對于軟件體系結(jié)構(gòu)的描述和表達(dá),一種簡潔易懂且使用廣泛的方法是采用由矩形框和有向線段組合而成的圖形表達(dá)工具。在這種方法中,矩形框代表抽象構(gòu)件,框內(nèi)標(biāo)注的文字為抽象構(gòu)件的名稱,有向線段代表輔助各構(gòu)件進(jìn)行通信、控制或關(guān)聯(lián)的連接件。第4章軟件體系結(jié)構(gòu)描述4.1軟件體系結(jié)構(gòu)描述方法

圖形表達(dá)工具

5.1

生產(chǎn)函數(shù)與軟件生產(chǎn)函數(shù)生產(chǎn)是指廠商對各種生產(chǎn)要素加以組合制成產(chǎn)品的行為。生產(chǎn)要素就是生產(chǎn)過程中所使用的各種資源,主要包括勞動、資本、土地和企業(yè)家才能。5.1生產(chǎn)函數(shù)與軟件生產(chǎn)函數(shù)勞動是指勞動者所提供的各種服務(wù)資本是指生產(chǎn)過程中使用的資金土地是指在生產(chǎn)過程中所使用的自然資源企業(yè)家才能是指企業(yè)家對整個生產(chǎn)過程的管理和組織工作

企業(yè)家主要根據(jù)市場預(yù)測,合理地配置各生產(chǎn)要素來從事生產(chǎn)經(jīng)營活動,以追求企業(yè)的利潤最大化。5.1.1

生產(chǎn)函數(shù)

生產(chǎn)函數(shù)是指一定時期內(nèi)生產(chǎn)要素的數(shù)量與某種組合與其所能產(chǎn)出的最大產(chǎn)量之間存在的函數(shù)關(guān)系。生產(chǎn)函數(shù)的表達(dá)式如式5.1所示。式5.1中的y表示總產(chǎn)出量,L,K,N,E分別表示投入到生產(chǎn)中的勞動、資本、土地、企業(yè)家才能的數(shù)量。1.生產(chǎn)函數(shù)的定義5.1.1生產(chǎn)函數(shù)

考慮到土地的固定性,變化較小,企業(yè)家才能難以估算故生產(chǎn)函數(shù)通常被簡化為式5.2。式5.2表明,在已知勞動和資本數(shù)量的組合情況時,可以推算出產(chǎn)品的最大產(chǎn)量。1.生產(chǎn)函數(shù)的定義5.1.1生產(chǎn)函數(shù)2.生產(chǎn)函數(shù)的特征特征①資本與勞動力的邊際產(chǎn)出總是為正值,勞動力(或者資本)投入量不變的情況下,資本(或者勞動力)的增加將引起產(chǎn)出的增加②邊際產(chǎn)量遞減特性。當(dāng)其他生產(chǎn)要素固定不變時,隨著某一要素投入量的增加,其邊際產(chǎn)量將逐漸減少③生產(chǎn)函數(shù)具有非負(fù)性,總產(chǎn)出必須是正值,且總產(chǎn)量是生產(chǎn)要素組合的結(jié)果,單一要素的投入是不能獲得產(chǎn)出的5.1.1生產(chǎn)函數(shù)3.規(guī)模報酬規(guī)模報酬又稱為規(guī)模經(jīng)濟,主要研究所有要素都同比例增加時,產(chǎn)量時如何發(fā)生變化的。

通常在規(guī)模較小時,增加投入可以促進(jìn)規(guī)模報酬遞增,而當(dāng)規(guī)模達(dá)到一定程度時,則會出現(xiàn)規(guī)模報酬遞減的情況。5.1.1

生產(chǎn)函數(shù)

3.規(guī)模報酬5.1.1

生產(chǎn)函數(shù)分別對公示5.3中的L與K求偏導(dǎo)數(shù)則有:式5.4中,

表示勞動力對產(chǎn)出的彈性系數(shù),表示在其他條件不變的情況下,勞動力增加1%會使產(chǎn)出發(fā)生變化的百分比;

表示資本對產(chǎn)出的彈性系數(shù),表示在其他條件不變的情況下,資本增加1%會使產(chǎn)出發(fā)生變化的百分比。3.規(guī)模報酬5.1.1

生產(chǎn)函數(shù)

5.1.2軟件生產(chǎn)函數(shù)

5.1.2軟件生產(chǎn)函數(shù)

5.1.2軟件生產(chǎn)函數(shù)

軟件生產(chǎn)率是指軟件開發(fā)的效率,是衡量軟件開發(fā)水平的一個重要因素。影響軟件生產(chǎn)率的因素眾多,主要有技術(shù)因素、管理因素以及文化因素。5.1.2軟件生產(chǎn)函數(shù)強調(diào)對企業(yè)研發(fā)人員個人職業(yè)能力的綜合評估。為了提升個人對軟件企業(yè)的貢獻(xiàn),有必要從專業(yè)、技能、經(jīng)驗、學(xué)歷以及年齡等多方面進(jìn)行考量。軟件技術(shù)領(lǐng)域最好根據(jù)研發(fā)人員所擅長的技術(shù)能力來劃分不同的專業(yè)技術(shù)組。培養(yǎng)研發(fā)人員對新技術(shù)的學(xué)習(xí)掌握,并創(chuàng)新應(yīng)用。提高軟件生產(chǎn)率的主要舉措有:技術(shù)方面5.1.2軟件生產(chǎn)函數(shù)建立良好的人才激勵機制,通過物質(zhì)、精神獎勵以及職務(wù)晉升制度提高研發(fā)人員的工作熱情。建立科學(xué)、合理的研發(fā)人員梯隊制度,明確劃分管理與技術(shù)領(lǐng)域人才。依據(jù)軟件企業(yè)所處的市場環(huán)境及企業(yè)自身發(fā)展的要求適時變革管理。用以應(yīng)對不斷變化的IT市場,進(jìn)而增強軟件企業(yè)的核心競爭力。提高軟件生產(chǎn)率的主要舉措有:管理方面5.1.2軟件生產(chǎn)函數(shù)建立良好的企業(yè)學(xué)習(xí)氛圍。通過研發(fā)人員個人知識的學(xué)習(xí)、交流及其共享來形成群體效應(yīng),提升整個企業(yè)的知識資源。注重軟件工程項目團(tuán)隊建設(shè),加強團(tuán)隊合作精神,提高團(tuán)隊溝通能力。提高軟件生產(chǎn)率的主要舉措有:文化方面

圖形表達(dá)工具

第4章軟件體系結(jié)構(gòu)描述4.1軟件體系結(jié)構(gòu)描述方法目前,這種圖形表達(dá)工具在軟件設(shè)計中占據(jù)著主導(dǎo)地位。盡管由于在術(shù)語和表達(dá)語義上存在著一些不規(guī)范和不精確,使得以矩形框與線段為基礎(chǔ)的傳統(tǒng)圖形表達(dá)方法在不同系統(tǒng)和不同文檔之間有著許多不一致甚至矛盾,但該方法仍然以其簡潔易用的特點在實際的設(shè)計和開發(fā)工作中被廣泛使用。第4章軟件體系結(jié)構(gòu)描述4.1軟件體系結(jié)構(gòu)描述方法

圖形表達(dá)工具

模塊內(nèi)連接語言

第4章軟件體系結(jié)構(gòu)描述4.1軟件體系結(jié)構(gòu)描述方法◎采用將一種或幾種傳統(tǒng)程序設(shè)計語言的模塊連接起來的模塊內(nèi)連接語言(MIL)。由于程序設(shè)計語言和模塊內(nèi)連接語言具有嚴(yán)格的語義基礎(chǔ),因此它們能支持對較大的軟件單元進(jìn)行描述。◎MIL方式對模塊化的程序設(shè)計和分段編譯等程序設(shè)計與開發(fā)技術(shù)確實發(fā)揮了很大的作用。但是由于這些語言處理和描述的軟件設(shè)計開發(fā)層次過于依賴程序設(shè)計語言,因此限制了它們處理和描述比程序設(shè)計語言元素更為抽象的高層次軟件體系結(jié)構(gòu)元素的能力。

基于軟構(gòu)件的系統(tǒng)描述語言

第4章軟件體系結(jié)構(gòu)描述4.1軟件體系結(jié)構(gòu)描述方法◎基于軟構(gòu)件的系統(tǒng)描述語言將軟件系統(tǒng)描述成一種是由許多以特定形式相互作用的特殊軟件實體構(gòu)造組成的組織或系統(tǒng)?!蜻@種表達(dá)和描述方式雖然也是較好的一種以構(gòu)件為單位的軟件系統(tǒng)描述方法,但是他們所面向和針對的系統(tǒng)元素仍然是一些層次較低的以程序設(shè)計為基礎(chǔ)的通信協(xié)作軟件實體單元,而且這些語言所描述和表達(dá)的系統(tǒng)一般而言都是面向特定應(yīng)用的特殊系統(tǒng),這些特性使得基于軟構(gòu)件的系統(tǒng)描述仍然不是十分適合軟件體系結(jié)構(gòu)的描述和表達(dá)。

軟件體系結(jié)構(gòu)描述語言

第4章軟件體系結(jié)構(gòu)描述4.1軟件體系結(jié)構(gòu)描述方法◎軟件體系結(jié)構(gòu)的第四種描述和表達(dá)方法是參照傳統(tǒng)程序設(shè)計語言的設(shè)計和開發(fā)經(jīng)驗,重新設(shè)計、開發(fā)和使用針對軟件體系結(jié)構(gòu)特點的專門的軟件體系結(jié)構(gòu)描述語言。◎由于ADL是在吸收了傳統(tǒng)程序設(shè)計中的語義嚴(yán)格精確的特點基礎(chǔ)上,針對軟件體系結(jié)構(gòu)的整體性和抽象性特點,定義和確定適合于軟件體系結(jié)構(gòu)表達(dá)與描述的有關(guān)抽象元素,因此,ADL是當(dāng)前軟件開發(fā)和設(shè)計方法學(xué)中一種發(fā)展很快的軟件體系結(jié)構(gòu)描述方法,目前,已經(jīng)有幾十種常見的ADL。

軟件體系結(jié)構(gòu)描述框架標(biāo)準(zhǔn)IEEEP1471

第4章軟件體系結(jié)構(gòu)描述鑒于體系結(jié)構(gòu)描述的概念與實踐的不統(tǒng)一,IEEE于1995年8月成立了體系結(jié)構(gòu)工作組,綜合體系結(jié)構(gòu)描述研究成果,并參考業(yè)界的體系結(jié)構(gòu)描述的實踐,負(fù)責(zé)起草了體系結(jié)構(gòu)描述框架標(biāo)準(zhǔn),即

IEEEP1471,并于2000年9月21日通過IEEE-SA標(biāo)準(zhǔn)委員會評審。4.1軟件體系結(jié)構(gòu)描述方法

IEEEP1471

第4章軟件體系結(jié)構(gòu)描述◎IEEEP1471適用于軟件密集的系統(tǒng),其目標(biāo)在于:便于體系結(jié)構(gòu)的表達(dá)與交流,并通過體系結(jié)構(gòu)要素及其實踐標(biāo)準(zhǔn)化,奠定質(zhì)量與成本的基礎(chǔ)?!騃EEEP1471詳細(xì)介紹了一套體系結(jié)構(gòu)描述的概念框架,并給出建立框架的思路。但在如何描述以及具體的描述技術(shù)等方面缺乏更進(jìn)一步的指導(dǎo)。4.1軟件體系結(jié)構(gòu)描述方法

Rational

第4章軟件體系結(jié)構(gòu)描述◎在IEEEP1471推薦的體系結(jié)構(gòu)描述的概念框架基礎(chǔ)上,

Rational起草了可重用的軟件資產(chǎn)規(guī)格說明,專門討論了體系結(jié)構(gòu)描述的規(guī)格說明,提出了一套易于重用的體系結(jié)構(gòu)描述規(guī)范?!?/p>

可重用的體系結(jié)構(gòu)描述框架建議,基于RUP(RationalUnifiedProcess)、采用UML模型描述軟件的體系結(jié)構(gòu),認(rèn)為體系結(jié)構(gòu)描述的關(guān)鍵是定義視點、視圖以及建模元素之間的映射關(guān)系。4.1軟件體系結(jié)構(gòu)描述方法它從四個視點出發(fā)描述體系結(jié)構(gòu),即需求視點、設(shè)計視點、實現(xiàn)視點和測試視點。并在此基礎(chǔ)上提出了七個體系結(jié)構(gòu)視圖,即用例視圖、域視圖、非功能需求視圖、邏輯視圖、實現(xiàn)視圖、過程視圖和部署視圖。然后,從系統(tǒng)建模的角度考慮多個視圖之間的映射關(guān)系,并建議了這些視圖的表示和視圖之間的映射關(guān)系的表示。

Rational

第4章軟件體系結(jié)構(gòu)描述4.1軟件體系結(jié)構(gòu)描述方法

◎與IEEEP1471相比,該建議標(biāo)準(zhǔn)的體系結(jié)構(gòu)描述方案涉及面比較窄,所注重的層次比較低,因而更具體。由于將體系結(jié)構(gòu)的描述限于UML和RUP,具有一定的局限性,但該建議標(biāo)準(zhǔn)結(jié)合了業(yè)界已經(jīng)廣泛采用的建模語言和開發(fā)過程,因而易于推廣,可以有效實現(xiàn)在跨組織之間重用體系結(jié)構(gòu)描述結(jié)果。

Rational

第4章軟件體系結(jié)構(gòu)描述4.1軟件體系結(jié)構(gòu)描述方法第4章軟件體系結(jié)構(gòu)描述4.2軟件體系結(jié)構(gòu)描述語言軟件體系結(jié)構(gòu)描述語言是一種形式化語言,它在底層語義模型的支持下,為軟件系統(tǒng)的概念體系結(jié)構(gòu)建模提供具體語法和概念框架。基于底層語義的工具為體系結(jié)構(gòu)的表示、分析、演化、細(xì)化、設(shè)計過程等提供支持。其三個基本元素如下:(1)構(gòu)件:計算或數(shù)據(jù)存儲單元。(2)連接件:用于構(gòu)件之間交互建模的體系結(jié)構(gòu)構(gòu)造塊及其支配這些交互的規(guī)則。(3)體系結(jié)構(gòu)配置:描述體系結(jié)構(gòu)的構(gòu)件與連接件的連接圖。

主要的體系結(jié)構(gòu)描述語言有Aesop、MetaH、C2、Rapide、SADL、UniCon和Wright等,盡管它們都描述軟件體系結(jié)構(gòu),卻有不同的特點:(1)Aesop支持體系結(jié)構(gòu)風(fēng)格的應(yīng)用;(2)MetaH為設(shè)計者提供了關(guān)于實時電子控制軟件系統(tǒng)的設(shè)計指導(dǎo);(3)C2支持基于消息傳遞風(fēng)格的用戶界面系統(tǒng)的描述;(4)Rapide支持體系結(jié)構(gòu)設(shè)計的模擬并提供了分析模擬結(jié)果的工具;(5)SADL提供了關(guān)于體系結(jié)構(gòu)加細(xì)的形式化基礎(chǔ);(6)UniCon支持異構(gòu)的構(gòu)件和連接件類型并提供了關(guān)于體系結(jié)構(gòu)的高層編譯器;(7)Wright支持體系結(jié)構(gòu)構(gòu)件之間交互的說明和分析。表4-3各種ADL簡況ADL研發(fā)組織負(fù)責(zé)人ACMECarnegieMellon大學(xué)DavidGarlanAesopCarnegieMellon大學(xué)DavidGarlanC2SouthernCalifornia大學(xué)MedvidovicDarwin英國ImperialCollegeJeffKramer和JeffMageeMetaHHoneywell公司技術(shù)中心SteveVestalRapideStanford大學(xué)DavidLuchhamSADLSRIMarkMoriconiUniConCarnegieMellon大學(xué)MaryShawWeaves美國Aerospace公司GorlickWrightCarnegieMellon大學(xué)DavidGarlan這些ADL強調(diào)了體系結(jié)構(gòu)不同的側(cè)面,對體系結(jié)構(gòu)的研究和應(yīng)用起到了重要的作用,但也有負(fù)面的影響。每一種ADL都以獨立的形式存在,描述語法不同且互不兼容,同時又有許多共同的特征,這使設(shè)計人員很難選擇一種合適的ADL;大部分ADL都是領(lǐng)域相關(guān)的,不利于對不同領(lǐng)域的體系結(jié)構(gòu)進(jìn)行分析;一些ADL在某些方面大同小異,有很多冗余的部分。第4章軟件體系結(jié)構(gòu)描述4.2軟件體系結(jié)構(gòu)描述語言第4章軟件體系結(jié)構(gòu)描述4.2軟件體系結(jié)構(gòu)描述語言◎構(gòu)造能力:ADL能夠使用較小的獨立體系結(jié)構(gòu)元素來建造大型軟件系統(tǒng);◎抽象能力:ADL使得軟件體系結(jié)構(gòu)中的構(gòu)件和連接件描述可以只關(guān)注它們的抽象特性,而不管其具體的實現(xiàn)細(xì)節(jié);◎重用能力:ADL使得組成軟件系統(tǒng)的構(gòu)件、連接件甚至是軟件體系結(jié)構(gòu)都成為軟件系統(tǒng)開發(fā)和設(shè)計的可重用部件;

ADL與其他語言的比較(1)

第4章軟件體系結(jié)構(gòu)描述4.2軟件體系結(jié)構(gòu)描述語言◎組合能力:ADL使得其描述的每一系統(tǒng)元素都有其自己的局部結(jié)構(gòu),這種描述局部結(jié)構(gòu)的特點使得ADL支持軟件系統(tǒng)的動態(tài)變化組合;◎異構(gòu)能力:ADL允許多個不同的體系結(jié)構(gòu)描述關(guān)聯(lián)存在;◎分析和推理能力:ADL允許對其描述的體系結(jié)構(gòu)進(jìn)行多種不同的性能和功能上的多種推理分析。

ADL與其他語言的比較(2)第4章軟件體系結(jié)構(gòu)描述4.2軟件體系結(jié)構(gòu)描述語言

典型元素含義比較

第4章軟件體系結(jié)構(gòu)描述4.2軟件體系結(jié)構(gòu)描述語言

常見的軟件體系結(jié)構(gòu)元素

UniCon是一種圍繞著構(gòu)件和連接件這兩個基本概念組織的體系結(jié)構(gòu)描述語言。具體地說,UniCon及其支持工具的主要目的有:①提供對大量構(gòu)件和連接件的統(tǒng)一的訪問。②區(qū)分不同類型的構(gòu)件和連接件以便對體系結(jié)構(gòu)配置進(jìn)行檢查。③支持不同的表示方式和不同開發(fā)人員的分析工具。④支持對現(xiàn)有構(gòu)件的使用。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

UniCon為了達(dá)到目標(biāo)①,UniCon提供了一組預(yù)先定義的構(gòu)件和連接件類型,體系結(jié)構(gòu)的開發(fā)者從中選擇合適的構(gòu)件或連接件。對于②,UniCon區(qū)分所有類型的構(gòu)件和連接件的交互點,并對它們的組合方式進(jìn)行限制。根據(jù)這些限制,UniCon工具可以對組合失配進(jìn)行檢查。對于③,特性列表的方法已經(jīng)被ACME和USC開發(fā)的ArchitectureCaptureTool所采納。對于已有的構(gòu)件,通過利用UniCon的術(shù)語對其接口重新定義的方式,使得它們可以被UniCon使用。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

UniCon在UniCon中,定義構(gòu)件的語法如下:<component>:==COMPONENT<identifier><interface><component_implementation>END<identifier>

可見,構(gòu)件的定義主要包括兩方面的內(nèi)容,即接口和實現(xiàn)。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

UniConUniCon中定義接口的語法如下:

<interface>:==INTERFACEISTYPE<component_type><property_list><player_list><component_type>:==Module|Computation|SharedData|SeqFile|Filter|Process|General第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

UniCon接口包括3方面的信息:構(gòu)件類型、屬性和參與者定義。構(gòu)件類型:表達(dá)了設(shè)計者所認(rèn)為的構(gòu)件所承擔(dān)的功能種類。構(gòu)件類型對參與者的數(shù)目、類型等做出了約束。屬性:屬性列表用于對構(gòu)件進(jìn)行補充說明。在定義構(gòu)件接口時,諸如運行某個進(jìn)程的處理器的名字,或在運行環(huán)境中進(jìn)程的優(yōu)先級,都用屬性說明。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

UniCon參與者:它起到類似掛鉤的作用,構(gòu)件通過它與其他構(gòu)件實現(xiàn)交互。在連接件把構(gòu)件組織成系統(tǒng)時,實際上是參與者被關(guān)聯(lián)了起來。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

UniCon構(gòu)件的實現(xiàn)有兩種方式:原始的方式和合成的方式。原始的實現(xiàn)方式由一個指向源文檔的指針構(gòu)成,該文檔使用UniCon之外的語言,構(gòu)件的實現(xiàn)包含在此源文檔中。此源文檔可以是某種程序設(shè)計語言編寫的源代碼,或obj文件,或二進(jìn)制形式的可執(zhí)行代碼,或一段Unix下的Shell腳本等。合成的實現(xiàn)方式是對構(gòu)件和連接件配置的一種描述,這些構(gòu)件和連接件也是用UniCon定義的。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

UniConUniCon中定義構(gòu)件實現(xiàn)的語法如下:<component_implementation>:==<primitive_implementation>|<composite_implementation><primitive_implementation>:==IMPLEMENTATIONIS<property_list><variant_list>ENDIMPLEMENTATION<composite_implementation>:==IMPLEMENTATIONIS<property_list><composite_statement_list>ENDIMPLEMENTATION第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

UniCon軟件系統(tǒng)中,構(gòu)件與構(gòu)件之間的交互有著不同的特點。按照這些特點,可以把構(gòu)件間的交互分為不同的類型。這種不同類型的交互在連接件上的反映,就是不同的連接件類型。UniCon中定義連接件的語法如下;

<connector>:==CONNECTOR<identifier><protocol><connector_implementation>END<identifier>第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

UniCon連接件的定義主要包括兩方面的內(nèi)容:即協(xié)議和實現(xiàn)。連接件用協(xié)議來定義。協(xié)議定義了多個構(gòu)件之間所允許的交互,并為這些交互提供保障。它也包括3方面的信息:連接件類型、屬性和角色定義。連接件通過角色在構(gòu)件之間進(jìn)行中介。當(dāng)系統(tǒng)中的構(gòu)件和連接件有交互時,構(gòu)件的參與者和連接件的角色被關(guān)聯(lián)起來。角色定義了連接件對參與者的需求和職責(zé)。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

UniConUniCon中定義協(xié)議的語法如下:

<protocol>:==PROTOCOLISTYPE<connector_type><property_list><role_list>ENDPROTOCOL<connector_type>:==DataAccess|FileIO|Pipe|PLBundler|ProcedureCall|RemoteProcCall|RTScheduler

第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

UniCon連接件的實現(xiàn)方式是UniCon語言內(nèi)建的。UniCon工具集提供了專門的實現(xiàn)方式。UniCon中定義連接件實現(xiàn)的語法如下:<connector_implementation>:==IMPLEMENTATIONISBUILTINENDIMPLEMENTATION第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

UniCon第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言◎C2和其提供的設(shè)計環(huán)境(Argo)支持采用基于時間的風(fēng)格來描述用戶界面系統(tǒng),并支持使用可替換、可重用的構(gòu)件開發(fā)GUI的體系結(jié)構(gòu)?!蛟贑2中,連接件負(fù)責(zé)構(gòu)件之間消息的傳遞,而構(gòu)件維持狀態(tài)、執(zhí)行操作并通過兩個名字分別為“top”和“bottom”的端口和其它的構(gòu)件交換信息。◎每個接口包含一種可發(fā)送的消息和一組可接收的消息。構(gòu)件之間的消息要么是請求其它構(gòu)件執(zhí)行某個操作的請求消息,要么是通知其他構(gòu)件自身執(zhí)行了某個操作或狀態(tài)發(fā)生改變的通知消息。

C2概述(1)第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言◎構(gòu)件之間的消息交換不能直接進(jìn)行,而只能通過連接件來完成。每個構(gòu)件接口最多只能和一個連接件相連,而連接件可以和任意數(shù)目的構(gòu)件或連接件相連?!蛘埱笙⒅荒芟蛏蠈觽魉?而通知消息只能向下層傳送。◎通知消息的傳遞只對應(yīng)于構(gòu)件內(nèi)部的操作,而和接收消息的構(gòu)件的需求無關(guān)。◎C2對構(gòu)件和連接件的實現(xiàn)語言、實現(xiàn)構(gòu)件的線程控制、構(gòu)件的部署以及連接件使用的通訊協(xié)議等都不加限制。

C2概述(2)第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

C2對構(gòu)件的描述

第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

C2對構(gòu)件接口的描述

interface_requests::={request;}|null;

interface_notifications::={notification;}|null;

request::=message_name(request_parameters)

request_parameters::=[tocomponent_name][parameter_list]

notification::=message_name[parameter_list]component_message_interface::=top_domain_interfacebottom_domain_interface

top_domain_interface::=top_domainisoutinterface_requestsininterface_notifications

bottom_domain_interface::=bottom_domainisoutinterface_notificationsininterface_requests第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

會議安排系統(tǒng)的C2風(fēng)格系統(tǒng)包含了三種功能構(gòu)件,分別是一個Meeting-Initiator、若干個Attendee和Important-Attendee,三個連接件(MainConn、AttConn和ImportantAttConn)用來在構(gòu)件之間傳遞消息,某些消息可由MeetingInitiator同時發(fā)送給Attendee和ImportantAttendee,但還有某些消息只能傳遞給ImportantAttendee。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

會議安排系統(tǒng)的C2風(fēng)格因為一個C2構(gòu)件在top、bottom端分別只有一個通信端口,且所有消息路由功能都與連接件相關(guān),所以MainConn必須保證其top端的AttConn和ImportantAttConn分別只接收那些與它們相連的構(gòu)件有關(guān)的消息。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

會議安排系統(tǒng)的C2風(fēng)格MeetingInitiator構(gòu)件通過發(fā)送會議請求信息給Attendee和ImprotantAttendee來進(jìn)行系統(tǒng)初始化。Attendee和ImportantAttendee構(gòu)件可以發(fā)送消息給MeetingInitiator,告訴MeetingInitiator自己喜歡的會議日期、地點等信息。但不能向MeetingInitiator遞交請求,因為在C2體系結(jié)構(gòu)中,它們處在MeetingInitiator的top端。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

會議安排系統(tǒng)的C2風(fēng)格第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

C2對MeetgingInitiator構(gòu)件的描述(1)

componentMeetingInitiatorisinterfacetop_domainisoutGetPrefSet();

GetExclSet();

GetEquipReqts();

GetLocPrefs();

RemoveExclSet();

RequestWithdrawal(toAttendee);

RequestWithdrawal(toImportantAttendee);

AddPrefDates();

MarkMtg(d:date;l:lov_type);第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

C2對MeetgingInitiator構(gòu)件的描述(2)

inPrefSet(p:date_mg);

ExclSet(e:data_mg);

EquipReqts(eq:equip_type);

LocPref(l:loc_type);

behaviorstartupalways_generateGetPrefSet,GetExclSet,GetEquipReqts,

GetLocPrefs;

received_messagesPrefSetmay_generateRemoveExclSetxor

RequestWithdrawalxorMarkMtg;

received_messagesExclSetmay_generateAddPrefDatesxorRemoveExclSet

xorRequestWithdrawalxorMarkMtg;

received_messagesEquipReqtsmay_generateAddPrefDatesxor

RemoveExclSetxorRequestWithdrawalxorMarkMtg;

received_messagesLocPrefalways_generatenull;endMeetingInitiator;

Attendee和ImportantAttendee構(gòu)件接收來自MeetingInitiator構(gòu)件的會議安排請求,把自己的有關(guān)信息發(fā)送給MeetingInitiator。這兩種構(gòu)件只能通過其bottom端與體系結(jié)構(gòu)中的其他元素進(jìn)行通信。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

會議安排系統(tǒng)的C2風(fēng)格第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

C2對Attendee構(gòu)件的描述(1)

componentAttendeeisinterfacebottom_domainisoutPrefSet(p:date_mg);

ExclSet(e:date_mg);

EquipReqts(eq:equip_type);

inGetPrefSet();

GetExclSet();

GetEquipReqts();

RemoveExclSet();

RequestWithdrawal();

AddPrefDates();

MarkMtg(d:date;l:loc_type);第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

C2對Attendee構(gòu)件的描述(2)behaviorreceived_messagesGetPrefSetalways_generatePrefSet;received_messagesAddPrefDatesalways_generatePrefSet;received_messagesGetExclSetalways_generateExclSet;received_messagesGetEqipReqtsalways_generateEqipReqts;received_messagesRemoveExclSetalways_generateExclSet;received_messagesReuestWithdrawalalways_generatenull;received_messagesMarkMtgalways_generatenull;endAttendee;

ImportantAttendee構(gòu)件是Attendee構(gòu)件的一個特例,它具有Attendee構(gòu)件的一切功能,并且還增加了自己特定的功能(可以指定會議地點),因此ImportantAttendee可以作為Atendee的一個子類型,保留了Attendee的接口和行為。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

會議安排系統(tǒng)的C2風(fēng)格第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

C2對ImportantAttendee構(gòu)件的描述componentImportantAttendeeissubtypeAttendee(inandbeh)interfacebottom_domainisoutLocPrefs(l:loc_type);

ExclSet(e:date_mg);

EquipReqts(eq:equip_type);

inGetLocPrefs();

behaviorreceived_messagesGetLocPrefsalways_generateLocPrefs;endImportantAttendee;

第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

C2對體系結(jié)構(gòu)的描述architectureMeetingScheduleris

conceptual_componentsAttendee;ImportantAttendee;MeetingInitiator;

connectorsconnectorMainConnismessage_filterno_filtering;

connectorAttConnismessage_filterno_filtering;

connectorImportantAttConnismessage_filterno_filtering;

architectural_topologyconnectorAttConnconnectionstop_portsAttendee;bottom_portsMainConn;connectorImportantAttConnconnectionstop_portsImportantAttendee;bottom_portsMainConn;connectorMainConnconnectionstop_portsAttConn;ImportantAttConn;bottom_portsMeetingInitiator;endMeetingScheduler;

第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

C2對會議安排系統(tǒng)的描述

systemMeetingScheduler_1isarchitectureMeetingSchedulerwithAttendeeinstanceAtt_1,Att_2,Att_3;

ImportantAttendeeinstanceImpAtt_1,ImpAtt_2;

MeetingInitiatorinstanceMtgInit_1;endMeetingScheduler_1;

ACME是由美國卡耐基梅隆大學(xué)的Garlan等人創(chuàng)建的一門體系結(jié)構(gòu)描述語言,其最初目的是為了創(chuàng)建一門簡單的、具有一般性的ADL,該ADL能用來為體系結(jié)構(gòu)設(shè)計工具轉(zhuǎn)換形式,和/或為開發(fā)新的設(shè)計和分析工具提供基礎(chǔ)。嚴(yán)格說來,ACME并不是一種真正意義上的ADL,而是一種體系結(jié)構(gòu)變換語言,它提供了一種在不同ADL的體系結(jié)構(gòu)規(guī)范描述之間實現(xiàn)變換的機制,可以把它作為體系結(jié)構(gòu)設(shè)計工具的通用交換格式。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言ACME提供了描述體系結(jié)構(gòu)的結(jié)構(gòu)特性的方法,此外還提供了一種開放式的語義框架,使得可以在結(jié)構(gòu)特性上標(biāo)注一些ADL相關(guān)的屬性。這種方法使得ACME既能表示大多數(shù)ADL都能描述的公共的結(jié)構(gòu)信息,又能使用注解來表示與特定的ADL相關(guān)的信息。有了這種公共而又靈活的表示方法,再加上ADL之間關(guān)于屬性的語義轉(zhuǎn)換工具,就能順利地實現(xiàn)ADL之間的變換,從而使ADL之間能夠?qū)崿F(xiàn)分析方法和工具的共享。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言ACME支持從四個不同的方面對軟件體系結(jié)構(gòu)進(jìn)行描述,分別是結(jié)構(gòu)、屬性、約束、類型和風(fēng)格。1、結(jié)構(gòu)在ACME中定義了七種體系結(jié)構(gòu)實體,分別是構(gòu)件、連接件、系統(tǒng)、端口、角色、表述和表述映射。其中前五種如圖4-3所示。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言圖4-3ACME描述的元素用ACME描述一個簡單的C/S體系結(jié)構(gòu)。其中client構(gòu)件只有一個sendRequest端口,server也只有一個receiveRequest端口,連接件rpc有兩個角色,分別為caller和callee。該系統(tǒng)的布局由構(gòu)件端口和連接件角色綁定的attachments定義,其中client的請求端口綁定到rpc的caller角色,server的請求處理端口綁定到rpc的callee端口。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言Systemsimple_CS={ComponentClient={PortsendRequest}ComponentServer={PortreceiveRequest;}Connectorrpc={Roles{caller,callee}}Attachments{Client.sendRequesttorpc.caller;Server.receiveRequesttorpc.callee}}第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言ACME支持體系結(jié)構(gòu)的分級描述,特別是每個構(gòu)件或連接件都能用一個或多個更詳細(xì)、更低層的描述來表示。在ACME中每一個這樣的描述被稱為一個表述。通過使用多個表述,ACME能表達(dá)體系結(jié)構(gòu)實體的多種視圖。如圖4-4所示。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言當(dāng)某個構(gòu)件或連接件有體系結(jié)構(gòu)表述,那就需要有一種手段來指出,在這個表述的系統(tǒng)內(nèi)部和此表述所代表的構(gòu)件或連接件的外部接口之間,存在何種相關(guān)性。表述映射定義了這種相關(guān)性。在最簡單的例子中,構(gòu)件的表述映射僅提供內(nèi)部端口和外部端口之間的聯(lián)系,連接件的表述映射僅提供內(nèi)部角色和外部角色之間的聯(lián)系。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言圖4-5帶有表述的C/S結(jié)構(gòu)2、屬性

ACME定義的七類體系結(jié)構(gòu)實體足以定義一個體系結(jié)構(gòu)的組織,但為了記錄體系結(jié)構(gòu)的非結(jié)構(gòu)屬性,以及為說明輔助信息提供開放型需求,ACME支持使用任意的屬性列表對體系結(jié)構(gòu)的結(jié)構(gòu)進(jìn)行注釋。每個屬性有名稱、可選類型和值。ACME定義的七類設(shè)計元素都可以用屬性列表進(jìn)行注釋。屬性可用來記錄于體系結(jié)構(gòu)相關(guān)分析和設(shè)計的細(xì)節(jié)。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言3、設(shè)計約束設(shè)計約束是體系結(jié)構(gòu)描述的關(guān)鍵成分,它們決定體系結(jié)構(gòu)設(shè)計是如何演化的。設(shè)計約束可以當(dāng)做一種特殊的屬性,但因為在體系結(jié)構(gòu)中,設(shè)計約束起著核心作用,所以,ACME提供了特定的語法來描述設(shè)計約束。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言ACME使用基于一階謂詞邏輯的約束語言來描述設(shè)計約束,在體系結(jié)構(gòu)規(guī)格說明中,約束被當(dāng)作謂詞。例如,有決定兩個構(gòu)件是否有連接的謂詞,有決定一個構(gòu)件是否有特殊的屬性的謂詞等。約束可以與ACME描述中的任何設(shè)計元素相關(guān)聯(lián),約束的范圍取決于關(guān)聯(lián)。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言表4-4設(shè)計約束描述的例子設(shè)計約束說明Connected(comp1,comp2)如果構(gòu)件comp1與comp2之間至少有一個連接件,則取True,否則取FalseReachable(comp1,comp2)如果構(gòu)件Comp2處在Connected(comp1,*)上,則取True,否則取FalseHasProperty(elt,propName)如果元素elt有一個屬性,取名為ProNameHasType(elt,typeName)如果元素elt有一個類型,取名為TypeNameSystemName.Connectors連接件的集合在系統(tǒng)SystemName中ConnectorName.Roles角色的集合在連接件ConnectorName中

例如,下面語句的約束與一個系統(tǒng)相關(guān)聯(lián):

connected(client,server)

如果名字為client的構(gòu)件與名字為server的構(gòu)件直接由一個連接件連接,則該約束取True。又如,約束

forallconn:connectorinsystemInstance.Connectors@size(conn.roles)=2

當(dāng)系統(tǒng)中的所有連接件都是二元連接件時取True。約束可以定義合法屬性值的范圍,例如:

Self.throughputRate>=3095

約束也可以表明兩個屬性之間的關(guān)系,例如:

comp.totalLatency=(comp.readLatency+cessingLatency+comp.writeLatency)第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言約束可以通過兩種方式附加到設(shè)計元素,分別是invariant和heuristic,其中invariant約束當(dāng)作是不可違反的規(guī)則看待,heuristic約束當(dāng)作應(yīng)該遵守的規(guī)則看待。對invariant約束的違反會使體系結(jié)構(gòu)規(guī)格說明無效,而對heuristic約束的違反會當(dāng)作一個警告處理。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言

下例說明了如何在ACME中使用約束。其中invariant約束描述合法緩沖的大小范圍,heuristic約束描述了期望的速度最大值。

SystemmessagePathSystem={…ConnectorMessagepath={Roles{source;sink;}PropertyexpectedThroughput:float=512;Invariant(queueBufferSize>=512)and(queueBufferSize<=4096);HeuristicexpectedThroughput<=(queueBufferSize/2);}}第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言類型和風(fēng)格體系結(jié)構(gòu)描述的一個重要能力就是能夠定義系統(tǒng)的風(fēng)格或族。風(fēng)格允許我們定義領(lǐng)域特定或應(yīng)用特定的設(shè)計詞匯,以及如何使用這些詞匯的約束。在ACME中,定義風(fēng)格的基本構(gòu)造塊是一個類型系統(tǒng),設(shè)計師可以定義三種類型,分別是屬性類型、結(jié)構(gòu)類型和風(fēng)格。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言結(jié)構(gòu)類型結(jié)構(gòu)類型使定義構(gòu)件、連接件、端口和角色的類型變得可能,每一個這樣的類型提供了一個類型名稱和一個所需要的子結(jié)構(gòu)、屬性和約束的列表。表4-22是一個Client構(gòu)件類型的描述例子。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言下面是一個client構(gòu)件類型的描述例子。類型定義指明了任何構(gòu)件如果是類型client的任何一個實例,則必須至少有一個端口稱作Request和一個浮點型的屬性稱作request-rate。而且與類型關(guān)聯(lián)的invariant約束要求每個client都不得超過五個端口,構(gòu)件的請求個數(shù)必須大于0。最后,還有一個heuristic約束,要求請求的個數(shù)應(yīng)該要少于100。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言ComponentTypeClient={PortRequest={Propertyprotocol:CSProtocolT};PropertyRequest-rate:Float;Invariantsize(self.Ports)<=5;Invariantrequest-rate>=0;Heuristicrequest-rate<100;}第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言風(fēng)格在ACME中,風(fēng)格被稱為族,如同結(jié)構(gòu)類型代表一組結(jié)構(gòu)元素一樣,族代表一組系統(tǒng)。在ACME中,可通過指定三件事情來定義一個族,分別是一組屬性和結(jié)構(gòu)元素、一組約束、默認(rèn)結(jié)構(gòu)。屬性類型和結(jié)構(gòu)類型為族提供了設(shè)計詞匯,約束決定了如何使用這些類型的實例,默認(rèn)結(jié)構(gòu)描述了必須出現(xiàn)在族中任何系統(tǒng)中的實例的最小集合。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言下例是一個定義管道-過濾器族和使用該族的一個系統(tǒng)的實例。在這個族中,定義了兩個構(gòu)件類型,一個連接件類型和一個屬性類型。該族唯一的invariant約束指定了所有連接件必須使用管道,沒有默認(rèn)的結(jié)構(gòu)。系統(tǒng)simplePF作為族的一個實例來定義,這種定義允許系統(tǒng)使用族的任何類型,且必須滿足族的所有invariant約束。第4章軟件體系結(jié)構(gòu)描述4.3典型軟件體系結(jié)構(gòu)描述語言第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言軟件體系結(jié)構(gòu)描述語言ADL是一種形式化語言,它在底層語義模型的支持下,為軟件的概念體系結(jié)構(gòu)建模提供了具體語法和框架。雖然ADL在描述軟件體系結(jié)構(gòu)時,具有精確、完全的特點,但也導(dǎo)致專業(yè)術(shù)語過多,語義理論過于復(fù)雜等問題,使其不利于向產(chǎn)業(yè)界推廣。而XML(extensiblemarkuplanguage,可擴展標(biāo)記語言)簡單和易于實現(xiàn),并且由于XML在工業(yè)界廣泛使用,因此,若能用XML來表示軟件體系結(jié)構(gòu),必能極大推廣軟件體系結(jié)構(gòu)領(lǐng)域的研究成果在軟件產(chǎn)業(yè)界的應(yīng)用。XML的發(fā)展與HTML(hypertextmarkuplanguage,超文本標(biāo)記語言)一樣,XML是從所有標(biāo)記語言的元語SGML(standardgeneralizedmarkuplanguage,標(biāo)準(zhǔn)通用標(biāo)記語言)那里派生出來的。SGML是一種元語言,也可以成為一個定義諸如HTML等標(biāo)記語言的系統(tǒng)。XML也是一種元語言,一個定義Web應(yīng)用的SGML子集。和SGML一樣,也可以用XML來定義種種不同的標(biāo)記語言以滿足不同應(yīng)用的需要。第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言

XML語言簡介

SGML、HTML是XML的先驅(qū)。SGML是國際上定義電子文件結(jié)構(gòu)和內(nèi)容描述的標(biāo)準(zhǔn),是一種非常復(fù)雜的文檔結(jié)構(gòu),主要用于大量高度結(jié)構(gòu)化數(shù)據(jù)的場合和其他各種工業(yè)領(lǐng)域,利于分類和索引。同XML相比,SGML定義的功能很強大,缺點是它不適用于Web數(shù)據(jù)描述,而且SGML軟件價格非常昂貴。HTML的優(yōu)點是比較適合Web頁面的開發(fā),但它的缺點是標(biāo)記相對少,只有固定的一些標(biāo)記集,不能支持特定領(lǐng)域的標(biāo)記語言,如對數(shù)學(xué)、化學(xué)、音樂等領(lǐng)域的表示支持較少,開發(fā)者很難在Web頁面上表示數(shù)學(xué)公式、化學(xué)分子式和樂譜。第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言鑒于SGML語言的復(fù)雜性和HTML語言的局限性,人們希望創(chuàng)建一種自己的標(biāo)記符和標(biāo)記符語言,并使之成為自描述性的語言,以便想標(biāo)記什么,怎么標(biāo)記都可以隨心所欲。這種標(biāo)記符語言首先應(yīng)該沒有SGML語言的復(fù)雜性,其次應(yīng)該具有SGML語言基本的創(chuàng)建標(biāo)記的功能,同時還應(yīng)該具有HTML語言的表現(xiàn)能力,即SGML語言的簡化版本或者說是其子集。XML語言應(yīng)運而生。第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言XML由XML工作組(原SGML編輯審查委員會)開發(fā),大小只有SGML的五分之一,它之所以被稱為ExtensibleMarkupLanguage,是因為它不像HTML那樣有一個固定的格式,XML用戶可以自己創(chuàng)建標(biāo)記或使用其他人創(chuàng)建的標(biāo)記來描述元素的內(nèi)容。簡單地說,XML就是標(biāo)記數(shù)據(jù)的一種方式,使得數(shù)據(jù)能夠自我描述。由于網(wǎng)絡(luò)應(yīng)用的飛速發(fā)展,XML發(fā)展非常迅猛,XML的應(yīng)用軟件也飛速發(fā)展。第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言XML使用一種可自我描述的簡單的語法,下面對XML的語法作簡單介紹。(1)一個XML文檔的例子

<?xmlversion="1.0"encoding="ISO-8859-1"?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don'tforgetmethisweekend!</body></note>第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言此文檔中的第一行定義了XML的版本和文檔中使用的字符編碼。在這個例子中,遵守的是XML1.0規(guī)范,并使用了ISO-8859-1字符集。接下來的一行描述了文檔的根元素(就像是在說:“本文檔是一個便簽”):

<note>

接下來的4行描述了根元素的4個子元素(to,from,heading,以及body):最后的一行定義了根元素的結(jié)尾:

</note>

可以看到,這個XML文檔包含了一個由Jani留給Tove的便簽。由這個例子可以看出XML具有較好的自我描述特性。第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言

(2)所有元素都須有關(guān)閉標(biāo)簽當(dāng)使用XML時,省略關(guān)閉標(biāo)簽是非法的。在HTML中,某些元素不一定要有關(guān)閉標(biāo)簽。在HTML中下面的代碼是合法的:

<p>Thisisaparagraph<p>Thisisanotherparagraph

在XML中,所有的元素都要有關(guān)閉標(biāo)簽:

<p>Thisisaparagraph</p><p>Thisisanotherparagraph</p>

注釋:也許你已經(jīng)從上面的例子中注意到XML聲明沒有關(guān)閉標(biāo)簽。這不是錯誤。聲明不屬于XML本身的組成部分。它不是XML元素,也不需要關(guān)閉標(biāo)簽。第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言

(3)XML標(biāo)簽對大小寫敏感和HTML不同,XML標(biāo)簽對大小寫敏感。在XML中,標(biāo)簽<Letter>和標(biāo)簽<letter>是不同的。所以必須使用相同的大小寫打開并關(guān)閉標(biāo)簽:

<Message>這是錯誤的。</message><message>這是正確的。</message>第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言

(4)XML必須被正確地嵌套不正確的標(biāo)簽嵌套對XML是沒有意義的。在HTML中,某些元素可以不正確地彼此嵌套在一起,就像這樣:

<b><i>Thistextisboldanditalic</b></i>

在XML中,所有的元素必須正確地彼此嵌套,就像這樣:

<b><i>Thistextisboldanditalic</i></b>第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言

(5)XML文檔必須有根元素所有的XML必須包含可定義根元素的單一標(biāo)簽對。所有其它的元素都必須處于這個根元素內(nèi)部。所有的元素均可擁有子元素。子元素必須被正確地嵌套于它們的父元素內(nèi)部:

<root><child><subchild>.....</subchild></child></root>第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言

(6)XML的屬性值須加引號在XML中,省略屬性值兩旁的引號是非法的。與HTML類似,XML也可擁有屬性(名稱/值的對)。在XML中,XML的屬性值須加引號。請研究下面的兩個XML文檔。第一個是錯誤的,第二個是正確的。

<?xmlversion="1.0"encoding="ISO-8859-1"?><notedate=12/11/2002><to>Tove</to><from>Jani</from></note>第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言<?xmlversion="1.0"encoding="ISO-8859-1"?><notedate="12/11/2002"><to>Tove</to><from>Jani</from></note>

在第一個文檔中,日期屬性沒有加引號。這是正確的:date="12/11/2002"。這是錯誤的:date=12/11/2002。第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言

(7)在XML中,空格會被保留。在XML中,空格不會被截掉。這與HTML不同。在HTML中,像這樣的一個句子:

HellomynameisTove,

會顯示為這樣:

HellomynameisTove,

這是由于HTML會把多個連續(xù)的空格字符裁減為一個。第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言

(8)XML中的注釋在XML中書寫注釋的語法與HTML的語法類似:

<!--Thisisacomment-->

(9)XML沒什么特殊之處

XML沒什么特殊之處。它只是一些純文本外加括在角形括號中的標(biāo)簽而已??商幚砑兾谋疚募能浖部梢蕴幚鞽ML。在一個簡單的文本編輯器中,XML標(biāo)簽也可被顯示出來,不會被特殊地對待。第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言XML標(biāo)準(zhǔn)及應(yīng)用領(lǐng)域越來越多的規(guī)范對XML的支持,使得XML的功能日趨強大,不僅在Web世界,而且在整個軟件系統(tǒng)架構(gòu)過程中都發(fā)揮出巨大的作用。

XML存在多種標(biāo)準(zhǔn),除基本XML標(biāo)準(zhǔn)以外,其他標(biāo)準(zhǔn)定義了模式、樣式表、連接、Web服務(wù)、安全性等其它的重要項目。其主要包括XML規(guī)范、XML模式、文檔對象模型(DOM)、鏈接和引用、XSL、安全性標(biāo)準(zhǔn)等。第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言XML被應(yīng)用到互聯(lián)網(wǎng)的各個方面??疾靀ML的應(yīng)用,可以大致將它們分成以下幾類:(1)設(shè)計置標(biāo)語言設(shè)計置標(biāo)語言是設(shè)計XML的初衷。XML設(shè)計的最初目的就是為了打破HTML語言的局限性,規(guī)范、有效、有層次地表示及顯示原HTML頁面所表示的內(nèi)容。第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言(2)數(shù)據(jù)交換

XML除了能顯示數(shù)據(jù)之外,還能作為一種數(shù)據(jù)的存儲格式進(jìn)行數(shù)據(jù)交換和傳輸。因為XML可以定義自己的標(biāo)記,并給予這些標(biāo)記一定的意義,從而使XML文檔具有一定的格式,具有相同格式的文檔即可進(jìn)行數(shù)據(jù)交換。第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言(3)Web服務(wù)

XML最主要的應(yīng)用就是構(gòu)建Web服務(wù)。可以將Web服務(wù)看做一個接受客戶請求的黑盒子,它可以執(zhí)行特定的任務(wù),并返回該任務(wù)結(jié)果。例如,常用的搜索引擎本質(zhì)上就是一種Web服務(wù),它的工作原理是:用戶提交一個搜索表達(dá)式,它就編譯出一系列匹配的站點,然后將其返回瀏覽器。此外,Web服務(wù)還應(yīng)用于集成不同的數(shù)據(jù)源、本地計算、數(shù)據(jù)的多種顯示、支持Web應(yīng)用的互操作和集成等。第4章軟件體系結(jié)構(gòu)描述4.4可擴展標(biāo)記語言分布式計算的發(fā)展90年代以來,計算技術(shù)逐步進(jìn)入以網(wǎng)絡(luò)為中心的時期,用戶迫切希望在網(wǎng)絡(luò)上建立更為豐富的分布式應(yīng)用;不僅實現(xiàn)數(shù)據(jù)共享,而且支持知識共享和各類計算資源的共享,能夠?qū)崿F(xiàn)包括整個企業(yè)在內(nèi)的各個層次的協(xié)同工作。分布計算技術(shù)是指在網(wǎng)絡(luò)計算平臺上開發(fā)、部署、管理和維護(hù)以資源共享和協(xié)同工作為主要應(yīng)用目標(biāo)的分布式應(yīng)用系統(tǒng)。第3章軟件體系結(jié)構(gòu)風(fēng)格

分布式計算的三個發(fā)展階段:(1)面向過程的分布計算技術(shù)(2)分布對象技術(shù):是90年代初開始出現(xiàn)的以面向?qū)ο蠹夹g(shù)為主要特征的第二代分布計算技術(shù)。90年代初CORBA1.0標(biāo)準(zhǔn)的頒布,揭開了分布式對象計算的序幕。(3)Web服務(wù):是一種面向服務(wù)的體系結(jié)構(gòu)。第3章軟件體系結(jié)構(gòu)風(fēng)格分布式對象技術(shù)的主要思想是:在分布式系統(tǒng)中引入一種分布的、互操作的對象機制,并且把分布網(wǎng)絡(luò)上可用的所有資源看作公共可存取的對象集合,使得不同的對象可以集成在一起,每個軟件組件都是自主的,有其獨立的功能,只能通過接口與外界通信,因此用戶只需根據(jù)外特性維護(hù)與升級。第3章軟件體系結(jié)構(gòu)風(fēng)格分布對象存在于網(wǎng)絡(luò)的任何地方,可被遠(yuǎn)程客戶應(yīng)用以方法調(diào)用的形式訪問。分布對象使用的程序設(shè)計語言和編譯器對客戶對象透明,分布對象在網(wǎng)絡(luò)中的具體位置以及運行的操作系統(tǒng)應(yīng)對客戶應(yīng)用透明。同時分布對象具有動態(tài)性,可以在網(wǎng)絡(luò)上到處移動。第3章軟件體系結(jié)構(gòu)風(fēng)格分布對象技術(shù)成為建立應(yīng)用框架和軟件構(gòu)件的核心技術(shù),在開發(fā)大型分布式應(yīng)用系統(tǒng)中表現(xiàn)出強大的生命力,并形成了三項具有代表性的主流技術(shù),即OMG的CORBA、微軟的DNA和Sun公司的J2EE。CORBA:CommonObjectRequestBrokerArchitecture,公共對象請求代理體系結(jié)構(gòu)DNA:DistributedInternetApplicationArchitecture,分布式網(wǎng)絡(luò)應(yīng)用程序體系結(jié)構(gòu),它綜合了微軟先后提出的OLE、COM/DCOM/COM+等技術(shù)。J2EE:Java2PlatformEnterpriseEdition,Java2平臺企業(yè)版第3章軟件體系結(jié)構(gòu)風(fēng)格分布對象技術(shù)應(yīng)用起來比較復(fù)雜,因為這種軟件通常都比較龐大,涉及到網(wǎng)絡(luò)、對象技術(shù)等多種技術(shù),系統(tǒng)開發(fā)比較困難。分布式系統(tǒng)通常采用基于構(gòu)件的軟件工程方法進(jìn)行開發(fā)或集成,只有特殊需求的構(gòu)件才需要新開發(fā),與其他構(gòu)件在集成框架下集成為一個整體。分布對象技術(shù)在比較大型的網(wǎng)絡(luò)系統(tǒng)中應(yīng)用較多,如銀行業(yè)、交通、電信等行業(yè)。Oracle、Sybase和Lotus等國外軟件產(chǎn)商均在其主流產(chǎn)品中支持CORBA、EJB和DNA技術(shù)以支持企業(yè)級應(yīng)用和Web應(yīng)用,這些產(chǎn)品在企業(yè)ERP和電子商務(wù)中均得到大量的應(yīng)用。第3章軟件體系結(jié)構(gòu)風(fēng)格Web服務(wù)(WebServices)是一種較新的面向服務(wù)的體系結(jié)構(gòu),其中定義了一組標(biāo)準(zhǔn)協(xié)議,用于接口定義、方法調(diào)用、基于Internet的構(gòu)件注冊以及各種應(yīng)用的實現(xiàn)。SOA:Service-OrientedArchitecture,是一種較新的體系結(jié)構(gòu)。在這種新的體系結(jié)構(gòu)中,所有功能都定義為獨立的服務(wù),這些服務(wù)帶有定義明確的可調(diào)用接口,可以以定義好的順序調(diào)用這些服務(wù)來形成業(yè)務(wù)流程。第3章軟件體系結(jié)構(gòu)風(fēng)格同傳統(tǒng)的分布式模型相比,Web服務(wù)體系結(jié)構(gòu)的主要優(yōu)勢在于:①協(xié)議的通用性

Web服務(wù)利用標(biāo)準(zhǔn)的Internet協(xié)議(如HTTP、SMTP等),解決的是面向Web的分布式計算;而CORBA、DCOM、RMI使用私有的協(xié)議,只能解決企業(yè)內(nèi)部的對等實體間的分布式計算。第3章軟件體系結(jié)構(gòu)風(fēng)格②完全的平臺、語言獨立性

Web服務(wù)進(jìn)行了更高程度的抽象,只要遵守Web服務(wù)的接口即可進(jìn)行服務(wù)的請求與調(diào)用。而CORBA、DNA、J2EE等模型要求在對等體系結(jié)構(gòu)間才能進(jìn)行通信。如CORBA需要每個連接點都使用ORB(ObjectRequestBroker,對象請求代理),DNA需要每個連接點都使用Windows平臺,J2EE需要每個連接點都使用Java,否則雙方是不能通信的。第3章軟件體系結(jié)構(gòu)風(fēng)格在電子商務(wù)市場中,要求所有的參與者都采用同一個基于某種語言和平臺的模型是不現(xiàn)實的。而Web服務(wù)結(jié)合了面向構(gòu)件方法和Web技術(shù)的優(yōu)勢,利用標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議和XML數(shù)據(jù)格式進(jìn)行通信,具有良好的普適性和靈活性,在Internet這個巨大的虛擬環(huán)境中,任何支持這些標(biāo)準(zhǔn)的系統(tǒng)都可以被動態(tài)定位以及與網(wǎng)絡(luò)上的其他Web服務(wù)交互,任何客戶都可以調(diào)用任何服務(wù)而無論它們處在何處,突破了傳統(tǒng)的分布式計算模型在通信、應(yīng)用范圍等方面的限制,允許企業(yè)和個人快速、廉價建立和部署全球性應(yīng)用。第3章軟件體系結(jié)構(gòu)風(fēng)格現(xiàn)在已經(jīng)有幾十種ADL,但沒有一種通用的ADL。XML的另一個重要的應(yīng)用就是用作ADL。因為XML有能力描述非文檔信息模型,并且XML標(biāo)準(zhǔn)已經(jīng)迅速且廣泛地在全球展開,許多大公司紛紛表示要對XML進(jìn)行支持,所以希望XML有能力和潛力消除各種ADL無法統(tǒng)一的局面,使現(xiàn)在及將來的應(yīng)用可以操作、查找、表現(xiàn)、存儲這些XML模型,并且在軟件環(huán)境和軟件工具經(jīng)常變換的情況下仍然保持可用性和重用性。第4章軟件體系結(jié)構(gòu)描述4.5基于XML的軟件體系結(jié)構(gòu)描述語言由于XML在體系結(jié)構(gòu)描述上的許多優(yōu)點,研究者們已經(jīng)開發(fā)出了不同的基于XML的體系結(jié)構(gòu)描述語言,如XADL2.0、XBA、XCOBA、ABC/ADL等。XADL2.0XADL2.0在所有的ADLs中具有很多獨特的性質(zhì)。首先,XADL2.0在結(jié)構(gòu)上具有很好的擴展性;其次,XADL2.0作為一個模型化的語言而建立,它并不是為了描述某一模型而建立的單一語言,而是一個對模型描述的集合。XADL2.0的所有模型是由各種XMLSchemas構(gòu)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論