《軟件設(shè)計與體系結(jié)構(gòu)(第二版)》2_第1頁
《軟件設(shè)計與體系結(jié)構(gòu)(第二版)》2_第2頁
《軟件設(shè)計與體系結(jié)構(gòu)(第二版)》2_第3頁
《軟件設(shè)計與體系結(jié)構(gòu)(第二版)》2_第4頁
《軟件設(shè)計與體系結(jié)構(gòu)(第二版)》2_第5頁
已閱讀5頁,還剩64頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

內(nèi)容提要2.1 什么是軟件模型2.2 軟件模型的發(fā)展脈絡(luò)2.3 軟件模型解析2.3.1 功能模型2.3.2 對象模型2.3.3 組件模型2.3.4 配置型組件模型2.3.5 服務(wù)模型2.3.6 抽象模型2.4 深入認識軟件模型2.4.1 軟件體系結(jié)構(gòu)的描述2.4.2 軟件體系結(jié)構(gòu)的設(shè)計2.5 體系結(jié)構(gòu)描述語言2.5.1 ADL簡介2.5.2 典型ADL的比較2.5.3 描述體系結(jié)構(gòu)行為

12.1 什么是軟件模型體系結(jié)構(gòu)強調(diào)一種思想的抽象,通過一些原則和方法等具體體現(xiàn)。體系結(jié)構(gòu)的另一種解釋,是指系統(tǒng)的基本組成元素及其相互關(guān)系的抽象。軟件體系結(jié)構(gòu)也是體系結(jié)構(gòu)概念在軟件上的投影或具體應(yīng)用,是一系列關(guān)于軟件系統(tǒng)組織的重大決策,是軟件系統(tǒng)結(jié)構(gòu)的結(jié)構(gòu),由軟件元素、元素的外部可見屬性及元素間的關(guān)系組成。軟件模型作為軟件組成的最基本單元的抽象,既反映了軟件體系結(jié)構(gòu)構(gòu)建的核心思想,也奠定了軟件體系結(jié)構(gòu)構(gòu)建的基礎(chǔ)。一方面,定義了軟件體系結(jié)構(gòu)構(gòu)建的基本單元元素的形態(tài);另一方面,定義了基本單元元素之間關(guān)系的基本形態(tài)。不同的軟件模型,隱式地定義了軟件體系結(jié)構(gòu)構(gòu)建的不同方法。

2模型模型(Model),一般是指客觀世界中存在事物的一種抽象。事物可以是具體的,例如房子、人,也可以是抽象的,例如思想、算法。模型一般都需要通過某種形式表達出來,以便交流。從形式上看,模型的表達,有文字(包括自然語言和數(shù)學語言)、圖形(圖形語言)或圖文混合。用數(shù)學語言表達的模型,稱為數(shù)學模型,這種模型的形式化級別最高,一般用來描述事物的抽象本質(zhì),刻畫事物內(nèi)在的穩(wěn)定規(guī)律。

3軟件模型軟件模型(SoftwareModel),是指軟件的一種抽象,目前,一般通過非數(shù)學模型來描述。相對于其它事物,軟件具有特殊性。這主要體現(xiàn)在軟件描述的基本元素的一致性,也就是說,無論如何描述軟件,同構(gòu)模型中描述的最基本單元的抽象,都是統(tǒng)一的。將這種統(tǒng)一的基本單元的抽象,稱為軟件模型,而將軟件系統(tǒng)的抽象,稱為軟件體系結(jié)構(gòu)。因此,軟件模型可以看做一種元模型(MetaModel)。

4軟件模型

52.2 軟件模型的發(fā)展脈絡(luò)審視軟件模型從誕生到發(fā)展的歷程,盡管各種軟件模型的發(fā)展存在一定的時間交叉,但從其是否作為軟件構(gòu)造技術(shù)的主體支撐技術(shù)來說軟件模型的發(fā)展脈絡(luò),清晰地體現(xiàn)了計算機應(yīng)用發(fā)展的歷程,以及計算機技術(shù)發(fā)展的歷程。

6技術(shù)、應(yīng)用和軟件模型的關(guān)系計算機應(yīng)用的發(fā)展和計算機技術(shù)的發(fā)展相輔相成。一方面,計算機應(yīng)用的發(fā)展,對計算機技術(shù)提出了新的要求,促進計算機技術(shù)的發(fā)展;另一方面,計算機技術(shù)的發(fā)展,又為新型計算機應(yīng)用的發(fā)展提供了基礎(chǔ),促進計算機應(yīng)用的發(fā)展。軟件技術(shù)作為計算機技術(shù)之一,在計算機應(yīng)用和其它計算機技術(shù)之間建立起橋梁。因此,軟件模型的發(fā)展,事實上也就是不斷動態(tài)地黏合應(yīng)用與技術(shù)。

72.3 軟件模型解析2.3.1 功能模型功能模型(FunctionModel)也可以稱為過程模型或函數(shù)模型,是模型化軟件構(gòu)建方法的第一個基本模型。功能模型的基本原理,是將一個系統(tǒng)分解為若干個基本功能模塊,基本功能模塊之間可以按需進行調(diào)用?;竟δ苣K集合及其調(diào)用關(guān)系集合,構(gòu)成一個系統(tǒng)的模型。功能模型誕生于20世紀60年代,強調(diào)了對程序中數(shù)據(jù)處理(功能)的抽象,通過功能分解和綜合的方法,降低系統(tǒng)構(gòu)造的復雜度。從而實現(xiàn)一體式程序體系結(jié)構(gòu),向結(jié)構(gòu)化程序體系結(jié)構(gòu)的轉(zhuǎn)變,并建立了結(jié)構(gòu)化軟件設(shè)計方法。功能模型的核心之一,是基本功能模塊的抽象及耦合。

8基本功能模塊的實現(xiàn)基本功能模塊的抽象,一般需要定義其處理的抽象數(shù)據(jù)集。具體實現(xiàn)中,基本功能模塊一般有函數(shù)(Function)和過程(Procedure)兩種形式,前者返回處理結(jié)果,后者不返回處理結(jié)果。

9function函數(shù)名(形參列表):返回值類型數(shù)據(jù)組織定義;begin

數(shù)據(jù)處理定義;end返回值類型函數(shù)名(形參列表){數(shù)據(jù)組織定義;

數(shù)據(jù)處理定義;}PASCAL語言實現(xiàn)C語言實現(xiàn)function過程名(形參列表);數(shù)據(jù)組織定義;begin

數(shù)據(jù)處理定義;endvoid函數(shù)名(形參列表){數(shù)據(jù)組織定義;

數(shù)據(jù)處理定義;}參數(shù)傳遞和函數(shù)返回按照傳遞的方式,參數(shù)傳遞基本上有值傳遞、地址傳遞兩種。值傳遞將實際參數(shù)的值復制到堆棧,地址傳遞則是將實際參數(shù)值存放的內(nèi)存地址復制到堆棧。

10兩種參數(shù)傳遞方式的C語言實現(xiàn)當被調(diào)模塊的抽象數(shù)據(jù)集具體化后,值傳遞方式不會因為被調(diào)模塊的處理而改變原始的實際參數(shù)值,而地址傳遞方式,由于被調(diào)模塊的處理會通過實際參數(shù)值存放的內(nèi)存地址而間接地作用于原實際參數(shù),從而改變原始的實際參數(shù)值。

11intsubmodule(intp,intq){intr;r=p+q;returnr;}mainmodule(){intx=10,y=20,z=0;z+=submodule(x,y);printf(“TheResultsis:%d\n”,z);}intsubmodule(int*p,int*q){intr;r=*p+*q;returnr;}mainmodule(){intx=10,y=20,z=0;z+=submodule(&x,&y);printf(“TheResultsis:%d\n”,z);}遞歸方法的基本思想遞歸(Recursion)是指用同一種處理方法來處理不斷縮小規(guī)模的數(shù)據(jù)集,并通過不斷綜合小規(guī)模數(shù)據(jù)集的處理結(jié)果,來得到大規(guī)模數(shù)據(jù)集的處理結(jié)果的一種問題處理方法。

12

13漢諾塔問題求解把n-1個圓金片環(huán)從A到B,其中,C作為臨時用。

14(3)(2)(1)(3)(1)(2)nn-11n-11n-11n-1n-21n-21n-21n個圓金片環(huán)從A到C,B作為臨時用n-1個圓金片環(huán)從A到B,C作為臨時用voidmove(unsignedn,chara,charc,charb){if(n>0){move(n-1,a,b,c);(1)printf(“%d:%c->%c\n”,n,a,c);(2)move(n-1,b,c,a);(3)}}遞歸的多種具體應(yīng)用

15模塊調(diào)用模塊調(diào)用模塊調(diào)用模塊調(diào)用模塊調(diào)用模塊調(diào)用模塊調(diào)用模塊調(diào)用模塊調(diào)用模塊調(diào)用模塊模塊模塊模塊模塊模塊模塊模塊模塊調(diào)用(a)單直接遞歸(b)單直接遞歸(c)多直接遞歸(d)間接遞歸(e)嵌套遞歸三種基本的處理邏輯及其語義處理邏輯的遞歸應(yīng)用,是指將問題的整個處理邏輯看做數(shù)據(jù)集,將基本的處理邏輯看做處理方法,從而實現(xiàn)用基本的處理邏輯及其組合,來處理不同復雜度問題的整個處理邏輯。功能模型建立了三種基本處理邏輯:順序、分支、循環(huán)

16處理邏輯的遞歸應(yīng)用內(nèi)涵程序A(大程序)和子程序B(小程序)在思維上,具有顯示通約性。

17C語言中的兩類數(shù)據(jù)類型由于功能模型側(cè)重于功能部分,淡化了數(shù)據(jù)部分以及數(shù)據(jù)與功能之間的關(guān)系,因此,對于大規(guī)模程序的構(gòu)造,功能模型具有其固有的波動效應(yīng)的缺陷。于是,如果一個模塊或者某個數(shù)據(jù)被修改了或被調(diào)整了,而又沒有及時通知其他相關(guān)的模塊,會產(chǎn)生意想不到的影響。

18復合數(shù)據(jù)類型數(shù)據(jù)類型基本數(shù)據(jù)類型整數(shù)單精度浮點數(shù)雙精度浮點數(shù)字符字符串數(shù)組指針結(jié)構(gòu)聯(lián)合

192.3.2 對象模型對象模型(ObjectModel)于20世紀80年代誕生,強調(diào)了對程序中數(shù)據(jù)組織的抽象,并將數(shù)據(jù)處理和數(shù)據(jù)組織統(tǒng)一進行考慮。對象模型以對象為核心,通過對象進行數(shù)據(jù)組織的抽象并實現(xiàn)數(shù)據(jù)組織和數(shù)據(jù)處理的統(tǒng)一,在此基礎(chǔ)上,建立面向?qū)ο蟮能浖?gòu)造方法。因此,對象模型的基本原理,是將一個系統(tǒng)分解為若干個對象,對象之間可以通過發(fā)送消息按需進行協(xié)作。對象集合及其協(xié)作關(guān)系集合,構(gòu)成一個系統(tǒng)的模型。對象(Object),是指客觀世界中存在的事物,可以是具體的(如:人、貓、狗等)或者抽象的(如:緩沖池、堆棧等)。計算機中,為了描述一個對象(或以對象進行數(shù)據(jù)組織),必須給出對象的形態(tài)(稱為對象的型),并按照需要建立對象的各個具體實例(稱為對象的值)。

20對象描述的基本視圖C++語言中描述對象的具體案例

21classCar{ stringbrand; stringmodel; stringcolor; intprice; intweight; stringno;public: Car(); ~Car(); voidmoveforward(); voidstop(); voidturnleft(); voidturnright(); voidmoveback();}Carc1,c2;屬性行為型值數(shù)據(jù)類型的抽象所謂數(shù)據(jù)類型的抽象,是允許用戶按照需求定義自己的數(shù)據(jù)類型,并通過其進行數(shù)據(jù)組織,從而拓展某種程序設(shè)計語言固有的數(shù)據(jù)類型,為應(yīng)用程序的構(gòu)造帶來靈活性。相對于傳統(tǒng)的固有數(shù)據(jù)類型,拓展的數(shù)據(jù)類型,稱為抽象數(shù)據(jù)類型(AbstractType)。一般來說,一種數(shù)據(jù)類型既要規(guī)定數(shù)據(jù)的取值范圍,又要定義數(shù)據(jù)的基本運算操作。因此,對象模型中的對象機制可以用來定義抽象數(shù)據(jù)類型。其中,對象的屬性描述與數(shù)據(jù)的取值范圍相對應(yīng),對象的行為描述與數(shù)據(jù)的基本運算操作相對應(yīng)??梢姡瑢ο蟊举|(zhì)上就是數(shù)據(jù),對象的描述就是定義一種抽象數(shù)據(jù)類型。

222.3.3 組件模型20世紀90年代,組件模型(ComponentModel)誕生,在對象模型的基礎(chǔ)之上,強調(diào)了異族對象關(guān)系以及獨立性問題。異族對象關(guān)系指,組件內(nèi)部完成組件功能的對象可以是同族的,也可以是異族的。獨立性是指,組件建立在二進制基礎(chǔ)上并獨立封裝,可以獨立部署。組件模型以接口為核心,通過接口抽象組件行為,在此基礎(chǔ)上,建立面向接口的軟件構(gòu)造方法。組建集合及其協(xié)作關(guān)系集合,構(gòu)成一個系統(tǒng)的模型。接口(Interface)指對象動態(tài)行為的集合,接口也支持繼承機制。相對于對象模型,組件模型更加重視在概念層次和規(guī)約層次上認識面向?qū)ο蟮姆椒ê退枷?,強調(diào)對象具有可以被其它對象或?qū)ο笞陨碚{(diào)用的方法。

23

24組件基本結(jié)構(gòu)組件(Component)指能完成特定功能并能獨立部署的軟件合成單元。一個組件一般具有一個或多個接口,每個接口的功能由一個或多個方法實現(xiàn)。接口的具體功能,由組建對象實現(xiàn)。

25組件功能重用方式

組件功能重用方式組件模型強調(diào)標準,以實現(xiàn)具有獨立性的組件之間的集成。組件模型的標準一般稱為軟總線(SoftwareBus),定義組件的封裝結(jié)構(gòu)并提供基本的集成服務(wù)功能(例如,命名服務(wù)、查找服務(wù)等)。滿足同一標準的組件,可以通過軟總線進行集成。目前,常見的組件模型標準,有微軟的COM、SUN的JavaBeans和OMG的CORBA。

26微軟COM組件的基本結(jié)構(gòu)為了實現(xiàn)對組件的管理和集成,軟總線除了提供各種基本服務(wù)功能外,還提供一些高級服務(wù)功能,例如屬性服務(wù)、持久化服務(wù)、安全服務(wù)、事務(wù)服務(wù)。

27(a)封裝結(jié)構(gòu)(b)運行時結(jié)構(gòu)組件集成的基本原理組件對象首先必須在軟總線中進行注冊,然后才能被使用。某個客戶應(yīng)用或一個對象需要使用某個組件對象時,也是通過軟總線進行查找,然后再使用。因此,軟總線充當組件對象集成的中介。組件模型,通常采用基于框架的程序構(gòu)造方法。

28

29框架框架(Framework)指已實現(xiàn)部分功能的某類程序結(jié)構(gòu)的實現(xiàn)??蚣艹橄罅四愁惓绦虻慕Y(jié)構(gòu),定義其中各個功能組件及其相互關(guān)系并實現(xiàn)部分功能??蚣芘c生產(chǎn)線很相似,通過框架構(gòu)造程序,相當于按照生產(chǎn)線進行各種組件的裝配。框架可分為水平型、垂直型、復合文檔型三種。水平型框架一般面向通用類程序的構(gòu)造,與特定應(yīng)用領(lǐng)域無關(guān),例如,VisualC++支持的各種項目類型,就是各種水平型框架。垂直型框架一般面向特定應(yīng)用領(lǐng)域,抽象和封裝了該應(yīng)用領(lǐng)域應(yīng)用程序的基本結(jié)構(gòu)和共性基本組件。復合文檔型框架是一種比較通用的框架,將一個程序抽象為一個文檔,將構(gòu)成程序的各個組件看作是文檔中的不同的獨立元素,這些獨立元素,通過事件消息相互聯(lián)系。通過復合文檔型框架構(gòu)造程序,相當于用各種元素在文檔上創(chuàng)作一幅動態(tài)的圖畫。

30利用復合型文檔框架進行程序構(gòu)造

31(a)基本原理(b)一個樣例分布式對象計算的基本模型由于組件模型解決了異構(gòu)集成問題,因此,分布式對象計算模型,得到迅速發(fā)展。分布式對象計算的基本模型在軟件總線的基礎(chǔ)上,通過在客戶端和服務(wù)端分別增加代理機制,來實現(xiàn)分布式環(huán)境下組件對象之間的集成。

32DCOM運行時結(jié)構(gòu)CORBA直接支持分布式計算模型,JavaBeans通過JavaRMI(RemoteMethodInvoke)將其組件模型拓展為分布式計算模型,COM通過RPC(RemoteProcedureCall)將其拓展為DCOM(DistributedComponentObjectModel)。對于DLL封裝的組件,DCOM通過自動加載一個Dllhost.exe作為其宿主。

332.3.4 配置型組件模型配置型組件模型(ConfigurableComponentModel),又稱為服務(wù)器組件模型,專門針對應(yīng)用服務(wù)器,定義其基于組件的基礎(chǔ)結(jié)構(gòu)模型。在傳統(tǒng)的分布式對象計算模型中,軟總線提供的附加基礎(chǔ)服務(wù),需要被業(yè)務(wù)邏輯代碼顯式地使用。然后,對于響應(yīng)大量客戶端的服務(wù)器,基礎(chǔ)服務(wù)的提供涉及系統(tǒng)資源的有效利用,基礎(chǔ)服務(wù)需要與資源管理技術(shù)一起使用。因此,如果這兩者都由業(yè)務(wù)邏輯代碼來顯式使用,那么,應(yīng)用開發(fā)的復雜度,就會急劇增大。特別是,隨著組件交互的行為越加復雜,協(xié)調(diào)這些基礎(chǔ)服務(wù)就,成為了一項困難的任務(wù),需要與編寫業(yè)務(wù)邏輯代碼無關(guān)的系統(tǒng)級專門技術(shù)來處理。

34配置型組件模型的基本實現(xiàn)思想配置型組件模型的基本原理,是將應(yīng)用業(yè)務(wù)邏輯與系統(tǒng)基礎(chǔ)服務(wù)兩者解耦,由系統(tǒng)基礎(chǔ)服務(wù)構(gòu)成一個服務(wù)容器,自動隱式地為各種應(yīng)用業(yè)務(wù)邏輯按需統(tǒng)一提供相應(yīng)的基礎(chǔ)服務(wù)。應(yīng)用業(yè)務(wù)邏輯,可以按需提出不同的基礎(chǔ)服務(wù)要求,亦即,它是可配置的。這樣,基于問題分離(SeparationofConcerns)原理和功能可變性(FunctionalVariability)原理,將業(yè)務(wù)邏輯的功能部分和系統(tǒng)資源有效管理的技術(shù)部分分開,允許兩者獨立進化并促進基礎(chǔ)服務(wù)和資源的重用。

35.NET模塊及裝配件的基本結(jié)構(gòu).NET采用裝配件(Assembly)作為基本的組件打包及部署單元,是一種邏輯組件(LogicalComponent),可以包含打包清單(Manifest,用來描述該配件以及所需的其他配件,包括版本號、編譯鏈接號以及編譯器在編譯時捕獲的修正號、文化特征等版本信息)以及一個(或多個)物理DLL或EXE模塊,每個模塊內(nèi)部,包含中間語言(IntermediateLanguage,IL)代碼、元數(shù)據(jù)(Metadata,描述配件中聲明的所有類型及其關(guān)系)及資源(包括圖標、圖像等),模塊以文件形式存儲。

36.NET應(yīng)用程序結(jié)構(gòu).NET支持兩種組件,即使用基礎(chǔ)服務(wù)的組件(ServicedComponent)和標準的被管理組件(ManagedComponent,又稱托管代碼或受控代碼)。其中,前者是COM+標準組件的進化和發(fā)展,后者則是新的組件封裝模型。.NET實現(xiàn)了兩者統(tǒng)一。為了支持說明性程序設(shè)計,.NET提供的新型程序設(shè)計語言C#支持,將配置要求以屬性方式寫入程序中,建立基于屬性的程序設(shè)計方法。

372.3.5 服務(wù)模型服務(wù)(Service)指一個封裝著高級業(yè)務(wù)概念、實現(xiàn)公共需求功能、可遠程訪問的獨立應(yīng)用程序模塊。服務(wù)一般由數(shù)據(jù)、業(yè)務(wù)邏輯、接口及服務(wù)描述構(gòu)成

38服務(wù)模型的基本原理服務(wù)獨立于具體的技術(shù)細節(jié),一般提供業(yè)務(wù)功能,而不是技術(shù)功能。服務(wù)模型的基本原理,是明確服務(wù)提供者和服務(wù)使用者,并通過服務(wù)中介實現(xiàn)兩者的耦合

39服務(wù)模型的抽象作用服務(wù)模型通過定義獨立于具體技術(shù)、可以擴展的通用描述手段,來描述服務(wù)和實現(xiàn)服務(wù)交互,而將服務(wù)實現(xiàn)的具體技術(shù)細節(jié)隱藏在內(nèi)部,從而實現(xiàn)服務(wù)的無縫集成。

40XML作為一種集成技術(shù)XML是一種通用的結(jié)構(gòu)化信息編碼標準。亦即,作為一種可以創(chuàng)建其他專用標記語言的通用元標記語言,XML可以對任意結(jié)構(gòu)化信息進行定義。XMLInfoset所定義的信息模型是層次型模型,層次型模型的遞歸特性決定了其廣泛的適用性和描述能力。XML可以是軟件集成問題的統(tǒng)一解決方案

41面向互聯(lián)網(wǎng)的Web服務(wù)對象微軟.NET平臺面向新一代Web應(yīng)用的開發(fā),通過在開發(fā)工具VisualStudio.NET中提供VisualC#Projects中的ASP.NETWeb服務(wù)模版類型以及建立支持屬性編程的新型程序設(shè)計語言C#,直接支持面向Web服務(wù)的應(yīng)用開發(fā)。通過Web服務(wù),將COM+對象包裝為面向互聯(lián)網(wǎng)的一種服務(wù)對象

422.3.6 抽象模型一個可恢復程序語句組件實例,需要一個或多個書簽,因此,所有的書簽必須由一個書簽管理器統(tǒng)一管理。并且還需要一個監(jiān)聽器程序,所有需要分發(fā)到書簽中去的數(shù)據(jù),都由該程序進行分發(fā)。書簽管理器和監(jiān)聽器,都獨立于可恢復程序語句組件。

43可恢復程序語句組件的基本模型基于書簽機制,可恢復程序語句組件,具有可恢復性(Resumable)及支持片段式執(zhí)行(EpisodicExecution)的特點。因此,可恢復程序語句組件的基本模型,一般包括兩個部分:基本執(zhí)行邏輯和可恢復執(zhí)行邏輯

44可恢復程序基本結(jié)構(gòu)基于可恢復程序語句組件模型的可恢復程序,是由可恢復程序語句組件和復合語句組件及其邏輯關(guān)系定義所建立的一個復合語句組件??苫謴统绦?,本質(zhì)上也是一個復合語句組件,描述的控制流,是相對獨立的某種業(yè)務(wù)工作流。

45可恢復程序設(shè)計思想與面向?qū)ο笤O(shè)計思想的思維通約性可恢復程序,本質(zhì)上就是一種數(shù)據(jù),即程序=數(shù)據(jù)。該類型化設(shè)計思想,與面向?qū)ο蟮脑O(shè)計思想具有明顯的思維通約性。

46可恢復程序的執(zhí)行流程統(tǒng)一書簽機制,將對整個程序?qū)嵗械拿恳粋€可恢復程序語句組件實例的可恢復調(diào)度,與對一個可恢復程序語句組件實例的可恢復調(diào)度采用同一個書簽機制。分級書簽機制,將對兩者的可恢復調(diào)度,采用不同的書簽機制。

472.4 深入認識軟件模型2.4.1 軟件體系結(jié)構(gòu)的描述軟件體系結(jié)構(gòu)的描述,指通過某種語言表達軟件體系結(jié)構(gòu),描述的目的,是為了實現(xiàn)對軟件體系結(jié)構(gòu)的認識、理解、交流。進而,基于描述,可以對軟件系統(tǒng)的行為、特性進行各種理論分析和仿真模擬,以及實現(xiàn)軟件系統(tǒng)代碼的自動生成。因此,軟件體系結(jié)構(gòu)的描述對于科學的軟件系統(tǒng)設(shè)計方法的建立、大規(guī)模高質(zhì)量軟件系統(tǒng)的設(shè)計與構(gòu)造,有著重要的意義。目前,軟件體系結(jié)構(gòu)的描述,有非形式化描述和形式化描述兩大類方法。

48非形式化描述軟件體系結(jié)構(gòu)非形式化描述方法的典型代表,是統(tǒng)一建模語言(UnifiedModelingLanguage,UML)方法。UML是一種通用的可視化建模語言,建立在對象模型概念的基礎(chǔ)上,提供了標準的系統(tǒng)建模方法,可以對任何具有靜態(tài)結(jié)構(gòu)和動態(tài)行為的系統(tǒng)進行建模。UML的統(tǒng)一性在于,所提供的概念可以統(tǒng)一已有的各種建模方法,在系統(tǒng)開發(fā)的各個階段具有一致性,可以面向各種應(yīng)用領(lǐng)域系統(tǒng)建模。UML統(tǒng)一了建模的基本元素及其語義、語法和可視化表示方法。

49非形式化描述有如下缺陷語義模糊由語義模糊引起的溝通障礙無法實現(xiàn)系統(tǒng)驗證不適于描述體系結(jié)構(gòu)行為

50形式化描述計算機科學中,形式化描述是指,用于軟件與硬件系統(tǒng)的說明、開發(fā)、驗證的數(shù)學化方法。形式化的基礎(chǔ),就是數(shù)學化理論。在一個軟件開發(fā)過程中,形式化描述可以被應(yīng)用到各個方面。形式化描述在體系結(jié)構(gòu)描述上具有如下特點:形式化描述可以用于系統(tǒng)描述,而且可以在不同層次上進行描述。形式化描述在體系結(jié)構(gòu)行為描述上更勝一籌。形式化描述使得系統(tǒng)驗證變得可行。

51Petri網(wǎng)Petri網(wǎng)是用于表述分布式系統(tǒng)的眾多數(shù)學方法之一。作為一種建模語言,Petri網(wǎng)采用圖形化方法將一個分布式系統(tǒng)結(jié)構(gòu)表述為帶標簽有向雙邊圖。1962年,CarlAdamPetri在博士論文中提出了Petri網(wǎng)。CarlAdamPetri是一名物理學家,他發(fā)明Petri網(wǎng)主要是從物理的角度去描述并發(fā)現(xiàn)象的。Petri網(wǎng)是對離散并行系統(tǒng)的數(shù)學表示,適合于描述異步、并發(fā)的計算機系統(tǒng)模型。經(jīng)典的Petri網(wǎng)是簡單的過程模型,由兩種節(jié)點(庫所、變遷),有向弧,以及令牌等元素組成。其中,圓圈表示位置,圓圈中有標識表示條件滿足,線段表示變遷。

52Z語言Z語言是一種形式化的說明語言,用于計算系統(tǒng)的描述與建模。旨在對計算程序的明晰說明以及對于系統(tǒng)行為的公式化證明。1997年,Jean-RaymondAbrial在SteveSchuman與BertrandMeyer的幫助下,提出了Z語言。形式化描述語言Z指德國著名數(shù)學家策梅洛(Zermelo),是使用最廣泛的一種形式化描述語言,在軟件產(chǎn)業(yè)的一些大型項目中已經(jīng)獲得成功的應(yīng)用,以一階謂詞邏輯策梅洛-弗蘭克爾(Zermelo-Fraenkel,ZF)公理集合論為主要數(shù)學基礎(chǔ)。Z語言是一種用“數(shù)學文字”或“數(shù)學符號”,來描述計算機系統(tǒng)的規(guī)范化語言,不但能應(yīng)用于計算機硬件系統(tǒng),而且也特別適用于計算機軟件系統(tǒng)。Z語言描述“做什么”,而不涉及“怎么做”,只對目標軟件系統(tǒng)進行功能描述。用戶可以通過這些內(nèi)容,去理解計算機系統(tǒng)的模塊、數(shù)據(jù)類型、過程、函數(shù)、對象、類,進而對計算機系統(tǒng)的行為、結(jié)構(gòu)、邏輯進行分析、驗證、改進、測試。

532.4.2 軟件體系結(jié)構(gòu)的設(shè)計水平型設(shè)計水平型設(shè)計是指,運用通用建模設(shè)計工具和表達語言所進行的軟件體系結(jié)構(gòu)的設(shè)計。垂直型設(shè)計垂直型設(shè)計是指,運用面向體系結(jié)構(gòu)的專用建模設(shè)計工具及其表達模型所進行的軟件體系結(jié)構(gòu)的設(shè)計。隨著計算機應(yīng)用的不斷發(fā)展,軟件系統(tǒng)規(guī)模愈發(fā)龐大,人們對于軟件系統(tǒng)的設(shè)計策略也逐漸從歸納式思維策略,向演繹式思維策略轉(zhuǎn)變。

542.5 體系結(jié)構(gòu)描述語言2.5.1 ADL簡介體系結(jié)構(gòu)描述語言(ArchitectureDescriptionLanguage,ADL)的一個非正式的定義是:是一種用于描述軟件與系統(tǒng)結(jié)構(gòu)的計算機語言。該定義關(guān)注的,是ADL的使用意圖,而缺乏必要的規(guī)范定義。目前,相關(guān)研究領(lǐng)域?qū)DL仍有爭議。爭議主要集中在:ADL是什么?ADL應(yīng)該從系統(tǒng)的哪些角度建模?隨著ADL家族的發(fā)展壯大,爭論也愈演愈烈,對其定義形成共識,愈發(fā)困難。

55構(gòu)件、操作、模式、閉包、規(guī)格說明作為一種經(jīng)典理論,CMU的DavidGarlan和MaryShawd定義了ADL元素,包括構(gòu)件、操作、模式、閉包、規(guī)格說明。構(gòu)件(Components):指抽象級別上組成系統(tǒng)的計算模塊。一個模塊可以是物理上的具體軟件元素或者是編譯單元。一個模塊可以是一個功能邏輯獨立的軟件包,甚至是軟件體系結(jié)構(gòu)的更抽象的概念。操作(Operations):指構(gòu)件之間的交互機制。操作被認為是將結(jié)構(gòu)元素連結(jié)成為更加高級構(gòu)件的功能。模式(Patterns):指結(jié)構(gòu)元素依照特殊方式進行的組合。模式是元素的可重用組合。一個設(shè)計模式(或體系結(jié)構(gòu)模式),是一個針對特定問題的設(shè)計模版。模式會在實際的設(shè)計中被實例化。模版將體現(xiàn)元素選擇與元素交互的限制。閉包(Closure):是用于實現(xiàn)分層描述的概念。規(guī)格說明(Specification):規(guī)格說明包括功能、性能、容錯能力等。

562.5.2 典型ADL的比較在軟件體系結(jié)構(gòu)研究領(lǐng)域,使用著各種不同的ADL。不同的ADL的設(shè)計意圖是大相徑庭的。

57WRIGHTWRIGHT語言旨在精確描述系統(tǒng)結(jié)構(gòu)與抽象行為、體系結(jié)構(gòu)風格的描述以及系統(tǒng)一致性完整性的驗證等。根據(jù)WRIGHT語言作者的觀點,一種體系結(jié)構(gòu)描述語言應(yīng)該至少提供兩項內(nèi)容:無二義性的精確語義,并能夠進行不一致性的檢測。一套支持系統(tǒng)屬性推理的機制。還有一個目標是滿足架構(gòu)師自身的詞匯表達需求。WRIGHT專注于抽象表達,以及為架構(gòu)師提供結(jié)構(gòu)化表達系統(tǒng)信息的方法。

58C2C2的特色在于,支持構(gòu)件重置與圖形化用戶接口(GUI)重用。如今用戶接口占據(jù)了軟件的很大一部分,并且重用度相當有限。C2著眼于構(gòu)件的重用,尤其是系統(tǒng)的進化——系統(tǒng)在運行時的動態(tài)改變。因此,C2的設(shè)計目標,基于如下考慮:構(gòu)件可能用不同的編程語言實現(xiàn),構(gòu)件可能在同一時刻運行在分布、異構(gòu)的并且沒有共享地址空間的環(huán)境中,運行時的結(jié)構(gòu)可能發(fā)生變化,可能發(fā)生的多用戶交互,可能使用多種工具集,涉及多種媒體類型等。

59DarwinDarwin是一種陳述性語言,為一類系統(tǒng)提供通用的說明符號,這類系統(tǒng)由使用不同交互機制的不同構(gòu)件組成,著眼于描述分布式軟件系統(tǒng)。近來關(guān)于分布式系統(tǒng)維護的相關(guān)研究表明,采用分布式構(gòu)造可以降低構(gòu)件的復雜度。但是,這一優(yōu)勢,還不足以抵消由分布式結(jié)構(gòu)帶來的缺點以及結(jié)構(gòu)復雜度的增加。Darwin的設(shè)計出發(fā)點,正是要解決這樣的問題。此外,Darwin同樣支持動態(tài)結(jié)構(gòu)說明。

60AcmeAcme是一種交互式ADL,旨在為開發(fā)工具與環(huán)境提供交互格式。設(shè)計中關(guān)鍵在于,綜合各種獨立開發(fā)的ADL工具,為交換結(jié)構(gòu)信息提供媒介格式。除了交互這一基本目標之外,設(shè)計Acme還考慮了如下目標:為實現(xiàn)結(jié)構(gòu)分析與可視化提供表達模式;為開發(fā)新的特定領(lǐng)域的ADL提供基礎(chǔ);為體系結(jié)構(gòu)信息表達提供標準;這種語言必須便于讀寫表達。

61xADL在過去10年中,無數(shù)ADL伴隨著各種研究活動相繼誕生。這導致了軟件體系結(jié)構(gòu)表達符號的過剩,而每種ADL都有各自在系統(tǒng)表達上的重點。同時,可重用性與可擴展性也非常有限。使用現(xiàn)有的符號表達來達成一種新的設(shè)計目的,無異于重新開發(fā)一門新的ADL。xADL為架構(gòu)師提供了更好的拓展性,將用于快速地構(gòu)造新的ADL。

62π-ADLπ-ADL是用于解決動態(tài)與移動體系結(jié)構(gòu)說明的一種ADL。動態(tài)體系結(jié)構(gòu)意味著,軟件結(jié)構(gòu)可以在運行時改變。移動體系結(jié)構(gòu)意味著,構(gòu)件能在系統(tǒng)

溫馨提示

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

評論

0/150

提交評論