版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
軟件體系結(jié)構(gòu)概述軟件體系結(jié)構(gòu)概述提綱背景與發(fā)展歷史軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)的作用體系結(jié)構(gòu)風(fēng)格體系結(jié)構(gòu)模式設(shè)計模式體系結(jié)構(gòu)設(shè)計方法體系結(jié)構(gòu)描述語言提綱背景與發(fā)展歷史3/83背景軟件危機(jī)的表現(xiàn)成本、進(jìn)度、質(zhì)量軟件危機(jī)的原因需求、規(guī)模、復(fù)雜度如何克服軟件危機(jī)軟件工程:過程、方法與工具3/83背景軟件危機(jī)的表現(xiàn)軟件體系結(jié)構(gòu)的出現(xiàn)軟件體系結(jié)構(gòu)是軟件系統(tǒng)的新概念軟件工程中一個新興的研究課題為了應(yīng)對日益復(fù)雜的系統(tǒng)的設(shè)計與構(gòu)造問題,描述大型復(fù)雜系統(tǒng)結(jié)構(gòu)的需要對于大規(guī)模的復(fù)雜軟件系統(tǒng)來說,對總體的系統(tǒng)結(jié)構(gòu)設(shè)計和規(guī)格說明比起對計算的算法和數(shù)據(jù)結(jié)構(gòu)的選擇已變得明顯重要得多為了理解、構(gòu)造大型、復(fù)雜的軟件系統(tǒng)的更有效的方法,作為設(shè)計抽象的自然演化而出現(xiàn)并發(fā)展的。軟件體系結(jié)構(gòu)在軟件開發(fā)過程中的位置:需求分析之后,軟件設(shè)計之前。軟件體系結(jié)構(gòu)的出現(xiàn)軟件體系結(jié)構(gòu)是5/83軟件體系結(jié)構(gòu)的定義許多專家學(xué)者從不同角度和不同側(cè)面對軟件體系結(jié)構(gòu)進(jìn)行了刻畫;軟件體系結(jié)構(gòu)(SoftwareArchitecture)對子系統(tǒng)、軟件系統(tǒng)組件以及他們之間關(guān)系的描述。子系統(tǒng)和組件一般定義在不同的視圖內(nèi),以顯示軟件系統(tǒng)的相關(guān)功能屬性和非功能屬性。5/83軟件體系結(jié)構(gòu)的定義許多專家學(xué)者從不同角度和不同側(cè)面對軟件體系結(jié)構(gòu)的定義WiKiThesoftwarearchitectureofaprogramorcomputingsystemisthestructureorstructuresofthesystem,whichcomprisesoftwarecomponents,theexternallyvisiblepropertiesofthosecomponents,andtherelationshipsbetweenthem.Thetermalsoreferstodocumentationofasystem'ssoftwarearchitecture.Documentingsoftwarearchitecturefacilitatescommunicationbetweenstakeholders,documentsearlydecisionsabouthigh-leveldesign,andallowsreuseofdesigncomponentsandpatternsbetweenprojects./wiki/Software_architecture軟件體系結(jié)構(gòu)的定義WiKihttp://en.wikiped7/83軟件體系結(jié)構(gòu)的定義PerryandWolf,1992:Asetofarchitectural(or,ifyouwill,design)elementsthathaveaparticularform.PerryandWolfdistinguishbetweenprocessingelements,dataelements,andconnectingelements,andthistaxonomybyandlargepersiststhroughmostotherdefinitionsandapproaches.軟件體系結(jié)構(gòu)是具有一定形式的結(jié)構(gòu)化元素,即構(gòu)件的集合,包括處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件。處理構(gòu)件負(fù)責(zé)對數(shù)據(jù)進(jìn)行加工,數(shù)據(jù)構(gòu)件是被加工的信息,連接構(gòu)件把體系結(jié)構(gòu)的不同部分組組合連接起來。這一定義注重區(qū)分處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件,這一方法在其他的定義和方法中基本上得到保持。7/83軟件體系結(jié)構(gòu)的定義PerryandWolf,18/83軟件體系結(jié)構(gòu)的定義GarlanandShaw,1993:...beyondthealgorithmsanddatastructuresofthecomputation;designingandspecifyingtheoverallsystemstructureemergesasanewkindofproblem.Structuralissuesincludegrossorganizationandglobalcontrolstructure;protocolsforcommunication,synchronization,anddataaccess;assignmentoffunctionalitytodesignelements;physicaldistribution;compositionofdesignelements;scalingandperformance;andselectionamongdesignalternatives."軟件體系結(jié)構(gòu)是軟件設(shè)計過程中的一個層次,這一層次超越計算過程中的算法設(shè)計和數(shù)據(jù)結(jié)構(gòu)設(shè)計。體系結(jié)構(gòu)問題包括總體組織和全局控制、通訊協(xié)議、同步、數(shù)據(jù)存取,給設(shè)計元素分配特定功能,設(shè)計元素的組織,規(guī)模和性能,在各設(shè)計方案間進(jìn)行選擇等。軟件體系結(jié)構(gòu)處理算法與數(shù)據(jù)結(jié)構(gòu)之上關(guān)于整體系統(tǒng)結(jié)構(gòu)設(shè)計和描述方面的一些問題,如全局組織和全局控制結(jié)構(gòu)、關(guān)于通訊、同步與數(shù)據(jù)存取的協(xié)議,設(shè)計構(gòu)件功能定義,物理分布與合成,設(shè)計方案的選擇、評估與實現(xiàn)等。8/83軟件體系結(jié)構(gòu)的定義GarlanandShaw,9/83軟件體系結(jié)構(gòu)的定義西門子的Soni、Nord和Hofmeister指出,軟件體系結(jié)構(gòu)有四個角度,它們從不同方面對系統(tǒng)進(jìn)行描述:概念角度描述系統(tǒng)的主要構(gòu)件及它們之間的關(guān)系;模塊角度包含功能分解與層次結(jié)構(gòu);運行角度描述了一個系統(tǒng)的動態(tài)結(jié)構(gòu);代碼角度描述了各種代碼和庫函數(shù)在開發(fā)環(huán)境中的組織。概念體系結(jié)構(gòu)ConceptualArchitecture組件、連接器、性能應(yīng)用問題的分解和劃分。模塊體系結(jié)構(gòu)ModuleArchitecture子系統(tǒng)、模塊、引入(Import)、引出(Exports)、模塊的界面、管理、控制和一致性等代碼體系結(jié)構(gòu)CodeArchitecture文件、目錄、庫、包含(includes)、軟件的配置管理、系統(tǒng)建造等運行體系結(jié)構(gòu)ExecutionArchitecture任務(wù)、線程、進(jìn)程、性能、調(diào)度、動態(tài)分配和不同執(zhí)行系統(tǒng)之間的接口等9/83軟件體系結(jié)構(gòu)的定義西門子的Soni、Nord和Hof10/83軟件體系結(jié)構(gòu)的定義HayesRoth則認(rèn)為軟件體系結(jié)構(gòu)是一個抽象的系統(tǒng)規(guī)范,主要包括用其行為來描述的功能構(gòu)件和構(gòu)件之間的相互連接、接口和關(guān)系。DavidGarlan和DewnePerry于1995年在IEEE軟件工程學(xué)報上又采用如下的定義:軟件體系結(jié)構(gòu)是一個程序/系統(tǒng)各構(gòu)件的結(jié)構(gòu)、它們之間的相互關(guān)系以及進(jìn)行設(shè)計的原則和隨時間進(jìn)化的指導(dǎo)方針。1997年,Bass,Ctements和Kazman在《軟件構(gòu)架實踐》一書中給出如下的定義:一個程序或計算機(jī)系統(tǒng)的軟件體系結(jié)構(gòu)包括一個或一組軟件構(gòu)件、軟件構(gòu)件的外部的可見特性及其相互關(guān)系。其中,"軟件外部的可見特性"是指軟件構(gòu)件提供的服務(wù)、性能、特性、錯誤處理、共享資源使用等。10/83軟件體系結(jié)構(gòu)的定義HayesRoth則認(rèn)為軟件體11/83軟件體系結(jié)構(gòu)的定義軟件體系結(jié)構(gòu)的研究正在發(fā)展,軟件體系結(jié)構(gòu)的定義不斷演化精簡GarlanandShaw的定義為:體系結(jié)構(gòu)=組件+連接(件)+設(shè)計約束Architecture=Components+Relationship(Connectors)+Constrains11/83軟件體系結(jié)構(gòu)的定義軟件體系結(jié)構(gòu)的研究正在發(fā)展,軟件組件組件(component)組件可以理解為軟件系統(tǒng)的一個組成部分。組件通過一定接口組成復(fù)雜的軟件系統(tǒng)。從系統(tǒng)構(gòu)成角度:在系統(tǒng)運行中承擔(dān)一定功能、發(fā)揮一定作用的軟件體從程序設(shè)計角度:模塊、類、對象、函數(shù)或者一個相關(guān)功能集合組件組件(component)組件組件分類(作用)控制組件:負(fù)責(zé)系統(tǒng)運行管理協(xié)調(diào)組件:負(fù)責(zé)組件間協(xié)作關(guān)系連接組件:負(fù)責(zé)組件間鏈接作用和轉(zhuǎn)換服務(wù)提供組件:為其他組件提供特定服務(wù)功能信息控制組件 :負(fù)責(zé)安全檢查和信息轉(zhuǎn)接傳遞構(gòu)造組件:完成對象的產(chǎn)生和撤銷組件組件分類(作用)14/83組件的實現(xiàn)形式組件無行為能力 簡單數(shù)據(jù)有行為能力 內(nèi)部結(jié)構(gòu)+操作行為組件的基本實現(xiàn)形式就是對象層次模型中組件的概念是在基本的組件形式上經(jīng)過復(fù)合和概念提升而產(chǎn)生的e.g.數(shù)組、樹;注冊表;瀏覽器14/83組件的實現(xiàn)形式組件15/83組件的表達(dá)形式具有操作接口定義的抽象數(shù)據(jù)類型描述組成內(nèi)部數(shù)據(jù)結(jié)構(gòu)及其操作對外提供的操作方法集合按照訪問目的對操作方法進(jìn)行劃分,得到組件的多個操作接口接口:Interface(Java)15/83組件的表達(dá)形式具有操作接口定義的抽象數(shù)據(jù)類型描述16/83組件的類別概念層次基礎(chǔ)組件、中層組件、高層組件應(yīng)用
通用組件、專用組件功能
數(shù)據(jù)服務(wù)組件、功能服務(wù)組件、邏輯處理組件、界面組件、控制組件、連接組件、體系結(jié)構(gòu)組件等運行特性
調(diào)度和非調(diào)度組件、中斷和非中斷組件、多客戶服務(wù)組件。16/83組件的類別概念層次17/83組件的特性組件的接口特性完備性 使用者可以用它完成組件應(yīng)該能夠完成的一切工作。最小性 組件接口或界面中任一操作,都不能由其他操作組合而實現(xiàn)。正交性 設(shè)法使兩個不同的操作交叉重復(fù)部分達(dá)到最小。方便性 提供用戶歡迎的操作??赡軙茐淖钚⌒院驼恍砸笮?接口操作的執(zhí)行效率17/83組件的特性組件的接口特性18/83組件的特性組件的運行特性中斷處理 實時系統(tǒng):消息機(jī)制/中斷處理并行調(diào)度 考慮進(jìn)程的產(chǎn)生、撤銷、通信和調(diào)度管理多用戶服務(wù) 組件具有事件觸發(fā)和多線程運行的能力18/83組件的特性組件的運行特性19/83組件的特性組件的遠(yuǎn)程服務(wù)特性提供數(shù)據(jù)和功能服務(wù)網(wǎng)絡(luò)的分布計算環(huán)境的要求19/83組件的特性組件的遠(yuǎn)程服務(wù)特性20/83組件的特性組件的關(guān)聯(lián)特性:組件與相關(guān)聯(lián)組件所建立的聯(lián)系和聯(lián)系的方式
e.g.向其他組件請求信息或服務(wù)動態(tài)/靜態(tài)處理聯(lián)系連接的實現(xiàn)形式影響組件的設(shè)計與實現(xiàn)e.g.同步調(diào)用/異步調(diào)用20/83組件的特性組件的關(guān)聯(lián)特性:組件與相關(guān)聯(lián)組件所建立的21/83組件的特性組件的動態(tài)特性運行調(diào)度 運行環(huán)境資源的分配和多任務(wù)的并行執(zhí)行生存期管理 組件運行實例的產(chǎn)生和撤銷,包括由組件負(fù)責(zé)的其他類型組件的產(chǎn)生和撤銷。21/83組件的特性組件的動態(tài)特性22/83連接連接(Relationship)組件與組件之間建立和維持行為關(guān)聯(lián)和信息傳遞的途徑連接的本質(zhì)在于: 實現(xiàn)機(jī)制和信息交換協(xié)議,簡稱機(jī)制和協(xié)議機(jī)制 連接得以發(fā)生和維持的機(jī)制
e.g.參數(shù)調(diào)用方式/串口通訊協(xié)議 連接的規(guī)約,是正確進(jìn)行信息交換的規(guī)則,是實現(xiàn)有意義連接的保證22/83連接連接(Relationship)23/83連接的特性連接的方向性連接的角色 連接雙方的地位(調(diào)用方和被調(diào)用方)連接的激發(fā) 引起連接行為的方式連接的響應(yīng)特性
“從動方”對連接請求的處理特性。 實時性、時間、方式(同步/異步)、并發(fā)處理的能力。23/83連接的特性連接的方向性24/83連接件(Connector)實現(xiàn)組件之間聯(lián)系的特殊機(jī)制或特殊組件。連接組件與一般組件一般組件:軟件功能設(shè)計和實現(xiàn)的承載體連接件:負(fù)責(zé)完成組件之間信息交換和行為聯(lián)系的專用組件24/83連接件(Connector)實現(xiàn)組件之間聯(lián)系的特殊屬性約束功能屬性(functionalproperty)用來處理系統(tǒng)功能性的特定方面,并且通常與特定的功能需求相關(guān)。非功能屬性(non-functionalproperty)定義了沒有被功能屬性描述覆蓋的系統(tǒng)特征。包括:易修改性,互操作性,效率,可靠性,可測試性,可重用性屬性約束功能屬性(functionalproperty)26/83軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)便于涉眾交流
涉眾包括客戶、用戶、項目經(jīng)理、系統(tǒng)構(gòu)架師、程序員、測試人員等;涉眾分別關(guān)注應(yīng)用系統(tǒng)體系結(jié)構(gòu)的不同特征;軟件體系結(jié)構(gòu)便成為涉眾表述自己的需求,協(xié)商找尋一個合理開方案的研究對象,并進(jìn)行交流的手段。26/83軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)便于涉眾交流27/83軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)是軟件開發(fā)過程中的管理明確了對系統(tǒng)實現(xiàn)的約束條件,能夠支持系統(tǒng)的質(zhì)量屬性實現(xiàn)。可行性分析時避免方向性錯誤制定工程進(jìn)度和投資計劃的依據(jù),決定了開發(fā)組織的組織結(jié)構(gòu),保障項目順利進(jìn)行的關(guān)鍵軟件開發(fā)過程的關(guān)鍵里程碑27/83軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)是軟件開發(fā)過程中的軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)支持復(fù)用產(chǎn)品線構(gòu)件(庫)軟件框架軟件體系結(jié)構(gòu)是需求和代碼之間的橋梁,為開發(fā)提供了建設(shè)的藍(lán)圖,也是測試、維護(hù)和升級的依據(jù)。軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)支持復(fù)用軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格(architecturalstyle)定義了avocabularyofcomponentsandconnectortypesasetofconstraintsonhowtheycanbecombined.Maybeoneormoresemanticmodelsthatspecifyhowtodetermineasystem’soverallpropertiesfromthepropertiesofitsparts.e.g.
Client/Server軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格(architectural軟件體系結(jié)構(gòu)風(fēng)格主程序與子過程(MainProgram/Subroutine)數(shù)據(jù)抽象與面向?qū)ο蠼M織(DataAbstractionandObject-OrientedOrganization)管道-過濾器(PipesandFilters)事件驅(qū)動與隱式調(diào)用(Event-Based,ImplicitInvocation)層次系統(tǒng)(LayeredSystems)黑板系統(tǒng)(Blackboard)過程控制(ProcessControl)解釋器/虛擬機(jī)(Interpreters)客戶/服務(wù)器(Client/Server)微核(MicroKernal)COM/DCOM組件軟件體系結(jié)構(gòu)風(fēng)格主程序與子過程(MainProgram/S軟件體系結(jié)構(gòu)模式軟件體系結(jié)構(gòu)設(shè)計中,抽象出了許多常見的系統(tǒng)構(gòu)建模式(Pattern),這些系統(tǒng)構(gòu)建模式(也稱為體系結(jié)構(gòu)模式),是軟件系統(tǒng)設(shè)計人員,在長期開發(fā)某類型軟件過程中,摸索到該類軟件的一些規(guī)律性的東西,經(jīng)過提煉總結(jié),得到的具有普遍性的構(gòu)建模式。通過對這些模式的分析討論可以比較它們各自的優(yōu)缺點,從而在開發(fā)軟件系統(tǒng)時選擇合適的體系結(jié)構(gòu)。
軟件體系結(jié)構(gòu)模式軟件體系結(jié)構(gòu)設(shè)計中,抽象出了許多常見的系統(tǒng)構(gòu)軟件體系結(jié)構(gòu)模式MVC模式管道過濾器模式PAC模式層次模式元層次模式軟件體系結(jié)構(gòu)模式MVC模式33/83軟件體系結(jié)構(gòu)的風(fēng)格與模式相同點:一個體系結(jié)構(gòu)風(fēng)格定義了一個由組件和連接類型描述的詞匯集合,和一個如何將這些組件和連接類型結(jié)合的約束集合。體系結(jié)構(gòu)模式也認(rèn)為軟件體系結(jié)構(gòu)是由組件及它們之間的連接構(gòu)成的,但更強(qiáng)調(diào)它是軟件設(shè)計活動的產(chǎn)物。設(shè)計模式通常更關(guān)注兩方面的問題:一是每個模式規(guī)定了一個特定的結(jié)構(gòu),即構(gòu)成組件的空間配置,也就是組件和它們關(guān)系的靜態(tài)約束;二是每個模式規(guī)定了它運行時的行為,即模式的參與者是如何協(xié)作、如何組織和如何通信的,它反映了模式的動態(tài)行為。
33/83軟件體系結(jié)構(gòu)的風(fēng)格與模式相同點:34/83軟件體系結(jié)構(gòu)風(fēng)格與模式不同點:體系結(jié)構(gòu)風(fēng)格只描述應(yīng)用系統(tǒng)的整體結(jié)構(gòu)框架,而軟件體系結(jié)構(gòu)模式存在于規(guī)模不同的范疇中。體系結(jié)構(gòu)風(fēng)格之間相互獨立,但模式依賴于它所包含的更小的模式,依賴于相互作用的模式以及包含它的更大的模式。和體系結(jié)構(gòu)風(fēng)格相比,模式更加面向具體問題。體系結(jié)構(gòu)風(fēng)格一般以不依賴于實際設(shè)計環(huán)境的觀點來表現(xiàn)設(shè)計技巧;而模式則非常具體地表示了設(shè)計問題,并針對設(shè)計問題提出解決方案。34/83軟件體系結(jié)構(gòu)風(fēng)格與模式不同點:設(shè)計模式(designpattern)Descriptionofcommunicatingobjectsandclassesthatarecustomizedtosolveageneraldesignprobleminaparticularcontext.設(shè)計模式(designpattern)Descripti設(shè)計模式Command模式Bridge模式Composite模式Decorator模式Strategy模式設(shè)計模式Command模式體系結(jié)構(gòu)設(shè)計方法框架(framework)可以看作是部分完整的子系統(tǒng)。為一個系統(tǒng)族定義體系結(jié)構(gòu)并提供創(chuàng)建它們的基本構(gòu)造塊。它也定義了具體功能特性需要改進(jìn)的地方。體系結(jié)構(gòu)設(shè)計方法框架(framework)軟件體系結(jié)構(gòu)視圖(view)代表一個軟件體系結(jié)構(gòu)的某個方面,用以強(qiáng)調(diào)體系結(jié)構(gòu)的特定屬性。如:全局視圖,概念視圖,模塊視圖,代碼視圖,執(zhí)行視圖軟件體系結(jié)構(gòu)視圖(view)代表一個軟件體系結(jié)構(gòu)的某個方面,39/83體系結(jié)構(gòu)描述語言ADL(ArchitectureDescriptionLanguage)早期主要使用非形式化的、用方框和連線描述體系結(jié)構(gòu)的方法,不能清楚地表述設(shè)計的含義【即:沒有通過理論抽象與統(tǒng)一的形式化描述】,因此不能形式化地分析一致性、完整性和正確性。
對體系結(jié)構(gòu)進(jìn)行描述和規(guī)范的方法;對體系結(jié)構(gòu)的理論認(rèn)識的形式化描述。形式化理論的重點:通過形式化語言,對結(jié)構(gòu)設(shè)計給出準(zhǔn)確的描述。ADL為軟件體系結(jié)構(gòu)特征既提供了概念性框架,也提供了描述的具體語法,同時提供解析、顯示、編譯、分析或者仿真體系結(jié)構(gòu)描述的工具。39/83體系結(jié)構(gòu)描述語言ADL(Architecture40/83體系結(jié)構(gòu)文檔化只有對體系結(jié)構(gòu)文檔化,程序員和系統(tǒng)分析員等才能更好地理解體系結(jié)構(gòu),從而完成對體系結(jié)構(gòu)地設(shè)計。體系結(jié)構(gòu)文檔化的過程就是用一個或者多個視圖來描述一個系統(tǒng)結(jié)構(gòu)的過程。文檔化的好處:軟件開發(fā)過程中各種角色之間交流設(shè)計思想的媒介進(jìn)行上層分析的基礎(chǔ),在此基礎(chǔ)上可以驗證體系結(jié)構(gòu)設(shè)計方案,精煉或改變必要的方案讓別人理解系統(tǒng)的第一手資料40/83體系結(jié)構(gòu)文檔化只有對體系結(jié)構(gòu)文檔化,程序員和系統(tǒng)分41/83小結(jié)軟件體系結(jié)構(gòu)概念軟件開發(fā)過程中的作用及重要性軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)模式設(shè)計模式軟件體系結(jié)構(gòu)設(shè)計方法軟件體系結(jié)構(gòu)描述語言41/83小結(jié)軟件體系結(jié)構(gòu)概念軟件體系結(jié)構(gòu)概述軟件體系結(jié)構(gòu)概述提綱背景與發(fā)展歷史軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)的作用體系結(jié)構(gòu)風(fēng)格體系結(jié)構(gòu)模式設(shè)計模式體系結(jié)構(gòu)設(shè)計方法體系結(jié)構(gòu)描述語言提綱背景與發(fā)展歷史44/83背景軟件危機(jī)的表現(xiàn)成本、進(jìn)度、質(zhì)量軟件危機(jī)的原因需求、規(guī)模、復(fù)雜度如何克服軟件危機(jī)軟件工程:過程、方法與工具3/83背景軟件危機(jī)的表現(xiàn)軟件體系結(jié)構(gòu)的出現(xiàn)軟件體系結(jié)構(gòu)是軟件系統(tǒng)的新概念軟件工程中一個新興的研究課題為了應(yīng)對日益復(fù)雜的系統(tǒng)的設(shè)計與構(gòu)造問題,描述大型復(fù)雜系統(tǒng)結(jié)構(gòu)的需要對于大規(guī)模的復(fù)雜軟件系統(tǒng)來說,對總體的系統(tǒng)結(jié)構(gòu)設(shè)計和規(guī)格說明比起對計算的算法和數(shù)據(jù)結(jié)構(gòu)的選擇已變得明顯重要得多為了理解、構(gòu)造大型、復(fù)雜的軟件系統(tǒng)的更有效的方法,作為設(shè)計抽象的自然演化而出現(xiàn)并發(fā)展的。軟件體系結(jié)構(gòu)在軟件開發(fā)過程中的位置:需求分析之后,軟件設(shè)計之前。軟件體系結(jié)構(gòu)的出現(xiàn)軟件體系結(jié)構(gòu)是46/83軟件體系結(jié)構(gòu)的定義許多專家學(xué)者從不同角度和不同側(cè)面對軟件體系結(jié)構(gòu)進(jìn)行了刻畫;軟件體系結(jié)構(gòu)(SoftwareArchitecture)對子系統(tǒng)、軟件系統(tǒng)組件以及他們之間關(guān)系的描述。子系統(tǒng)和組件一般定義在不同的視圖內(nèi),以顯示軟件系統(tǒng)的相關(guān)功能屬性和非功能屬性。5/83軟件體系結(jié)構(gòu)的定義許多專家學(xué)者從不同角度和不同側(cè)面對軟件體系結(jié)構(gòu)的定義WiKiThesoftwarearchitectureofaprogramorcomputingsystemisthestructureorstructuresofthesystem,whichcomprisesoftwarecomponents,theexternallyvisiblepropertiesofthosecomponents,andtherelationshipsbetweenthem.Thetermalsoreferstodocumentationofasystem'ssoftwarearchitecture.Documentingsoftwarearchitecturefacilitatescommunicationbetweenstakeholders,documentsearlydecisionsabouthigh-leveldesign,andallowsreuseofdesigncomponentsandpatternsbetweenprojects./wiki/Software_architecture軟件體系結(jié)構(gòu)的定義WiKihttp://en.wikiped48/83軟件體系結(jié)構(gòu)的定義PerryandWolf,1992:Asetofarchitectural(or,ifyouwill,design)elementsthathaveaparticularform.PerryandWolfdistinguishbetweenprocessingelements,dataelements,andconnectingelements,andthistaxonomybyandlargepersiststhroughmostotherdefinitionsandapproaches.軟件體系結(jié)構(gòu)是具有一定形式的結(jié)構(gòu)化元素,即構(gòu)件的集合,包括處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件。處理構(gòu)件負(fù)責(zé)對數(shù)據(jù)進(jìn)行加工,數(shù)據(jù)構(gòu)件是被加工的信息,連接構(gòu)件把體系結(jié)構(gòu)的不同部分組組合連接起來。這一定義注重區(qū)分處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件,這一方法在其他的定義和方法中基本上得到保持。7/83軟件體系結(jié)構(gòu)的定義PerryandWolf,149/83軟件體系結(jié)構(gòu)的定義GarlanandShaw,1993:...beyondthealgorithmsanddatastructuresofthecomputation;designingandspecifyingtheoverallsystemstructureemergesasanewkindofproblem.Structuralissuesincludegrossorganizationandglobalcontrolstructure;protocolsforcommunication,synchronization,anddataaccess;assignmentoffunctionalitytodesignelements;physicaldistribution;compositionofdesignelements;scalingandperformance;andselectionamongdesignalternatives."軟件體系結(jié)構(gòu)是軟件設(shè)計過程中的一個層次,這一層次超越計算過程中的算法設(shè)計和數(shù)據(jù)結(jié)構(gòu)設(shè)計。體系結(jié)構(gòu)問題包括總體組織和全局控制、通訊協(xié)議、同步、數(shù)據(jù)存取,給設(shè)計元素分配特定功能,設(shè)計元素的組織,規(guī)模和性能,在各設(shè)計方案間進(jìn)行選擇等。軟件體系結(jié)構(gòu)處理算法與數(shù)據(jù)結(jié)構(gòu)之上關(guān)于整體系統(tǒng)結(jié)構(gòu)設(shè)計和描述方面的一些問題,如全局組織和全局控制結(jié)構(gòu)、關(guān)于通訊、同步與數(shù)據(jù)存取的協(xié)議,設(shè)計構(gòu)件功能定義,物理分布與合成,設(shè)計方案的選擇、評估與實現(xiàn)等。8/83軟件體系結(jié)構(gòu)的定義GarlanandShaw,50/83軟件體系結(jié)構(gòu)的定義西門子的Soni、Nord和Hofmeister指出,軟件體系結(jié)構(gòu)有四個角度,它們從不同方面對系統(tǒng)進(jìn)行描述:概念角度描述系統(tǒng)的主要構(gòu)件及它們之間的關(guān)系;模塊角度包含功能分解與層次結(jié)構(gòu);運行角度描述了一個系統(tǒng)的動態(tài)結(jié)構(gòu);代碼角度描述了各種代碼和庫函數(shù)在開發(fā)環(huán)境中的組織。概念體系結(jié)構(gòu)ConceptualArchitecture組件、連接器、性能應(yīng)用問題的分解和劃分。模塊體系結(jié)構(gòu)ModuleArchitecture子系統(tǒng)、模塊、引入(Import)、引出(Exports)、模塊的界面、管理、控制和一致性等代碼體系結(jié)構(gòu)CodeArchitecture文件、目錄、庫、包含(includes)、軟件的配置管理、系統(tǒng)建造等運行體系結(jié)構(gòu)ExecutionArchitecture任務(wù)、線程、進(jìn)程、性能、調(diào)度、動態(tài)分配和不同執(zhí)行系統(tǒng)之間的接口等9/83軟件體系結(jié)構(gòu)的定義西門子的Soni、Nord和Hof51/83軟件體系結(jié)構(gòu)的定義HayesRoth則認(rèn)為軟件體系結(jié)構(gòu)是一個抽象的系統(tǒng)規(guī)范,主要包括用其行為來描述的功能構(gòu)件和構(gòu)件之間的相互連接、接口和關(guān)系。DavidGarlan和DewnePerry于1995年在IEEE軟件工程學(xué)報上又采用如下的定義:軟件體系結(jié)構(gòu)是一個程序/系統(tǒng)各構(gòu)件的結(jié)構(gòu)、它們之間的相互關(guān)系以及進(jìn)行設(shè)計的原則和隨時間進(jìn)化的指導(dǎo)方針。1997年,Bass,Ctements和Kazman在《軟件構(gòu)架實踐》一書中給出如下的定義:一個程序或計算機(jī)系統(tǒng)的軟件體系結(jié)構(gòu)包括一個或一組軟件構(gòu)件、軟件構(gòu)件的外部的可見特性及其相互關(guān)系。其中,"軟件外部的可見特性"是指軟件構(gòu)件提供的服務(wù)、性能、特性、錯誤處理、共享資源使用等。10/83軟件體系結(jié)構(gòu)的定義HayesRoth則認(rèn)為軟件體52/83軟件體系結(jié)構(gòu)的定義軟件體系結(jié)構(gòu)的研究正在發(fā)展,軟件體系結(jié)構(gòu)的定義不斷演化精簡GarlanandShaw的定義為:體系結(jié)構(gòu)=組件+連接(件)+設(shè)計約束Architecture=Components+Relationship(Connectors)+Constrains11/83軟件體系結(jié)構(gòu)的定義軟件體系結(jié)構(gòu)的研究正在發(fā)展,軟件組件組件(component)組件可以理解為軟件系統(tǒng)的一個組成部分。組件通過一定接口組成復(fù)雜的軟件系統(tǒng)。從系統(tǒng)構(gòu)成角度:在系統(tǒng)運行中承擔(dān)一定功能、發(fā)揮一定作用的軟件體從程序設(shè)計角度:模塊、類、對象、函數(shù)或者一個相關(guān)功能集合組件組件(component)組件組件分類(作用)控制組件:負(fù)責(zé)系統(tǒng)運行管理協(xié)調(diào)組件:負(fù)責(zé)組件間協(xié)作關(guān)系連接組件:負(fù)責(zé)組件間鏈接作用和轉(zhuǎn)換服務(wù)提供組件:為其他組件提供特定服務(wù)功能信息控制組件 :負(fù)責(zé)安全檢查和信息轉(zhuǎn)接傳遞構(gòu)造組件:完成對象的產(chǎn)生和撤銷組件組件分類(作用)55/83組件的實現(xiàn)形式組件無行為能力 簡單數(shù)據(jù)有行為能力 內(nèi)部結(jié)構(gòu)+操作行為組件的基本實現(xiàn)形式就是對象層次模型中組件的概念是在基本的組件形式上經(jīng)過復(fù)合和概念提升而產(chǎn)生的e.g.數(shù)組、樹;注冊表;瀏覽器14/83組件的實現(xiàn)形式組件56/83組件的表達(dá)形式具有操作接口定義的抽象數(shù)據(jù)類型描述組成內(nèi)部數(shù)據(jù)結(jié)構(gòu)及其操作對外提供的操作方法集合按照訪問目的對操作方法進(jìn)行劃分,得到組件的多個操作接口接口:Interface(Java)15/83組件的表達(dá)形式具有操作接口定義的抽象數(shù)據(jù)類型描述57/83組件的類別概念層次基礎(chǔ)組件、中層組件、高層組件應(yīng)用
通用組件、專用組件功能
數(shù)據(jù)服務(wù)組件、功能服務(wù)組件、邏輯處理組件、界面組件、控制組件、連接組件、體系結(jié)構(gòu)組件等運行特性
調(diào)度和非調(diào)度組件、中斷和非中斷組件、多客戶服務(wù)組件。16/83組件的類別概念層次58/83組件的特性組件的接口特性完備性 使用者可以用它完成組件應(yīng)該能夠完成的一切工作。最小性 組件接口或界面中任一操作,都不能由其他操作組合而實現(xiàn)。正交性 設(shè)法使兩個不同的操作交叉重復(fù)部分達(dá)到最小。方便性 提供用戶歡迎的操作??赡軙茐淖钚⌒院驼恍砸笮?接口操作的執(zhí)行效率17/83組件的特性組件的接口特性59/83組件的特性組件的運行特性中斷處理 實時系統(tǒng):消息機(jī)制/中斷處理并行調(diào)度 考慮進(jìn)程的產(chǎn)生、撤銷、通信和調(diào)度管理多用戶服務(wù) 組件具有事件觸發(fā)和多線程運行的能力18/83組件的特性組件的運行特性60/83組件的特性組件的遠(yuǎn)程服務(wù)特性提供數(shù)據(jù)和功能服務(wù)網(wǎng)絡(luò)的分布計算環(huán)境的要求19/83組件的特性組件的遠(yuǎn)程服務(wù)特性61/83組件的特性組件的關(guān)聯(lián)特性:組件與相關(guān)聯(lián)組件所建立的聯(lián)系和聯(lián)系的方式
e.g.向其他組件請求信息或服務(wù)動態(tài)/靜態(tài)處理聯(lián)系連接的實現(xiàn)形式影響組件的設(shè)計與實現(xiàn)e.g.同步調(diào)用/異步調(diào)用20/83組件的特性組件的關(guān)聯(lián)特性:組件與相關(guān)聯(lián)組件所建立的62/83組件的特性組件的動態(tài)特性運行調(diào)度 運行環(huán)境資源的分配和多任務(wù)的并行執(zhí)行生存期管理 組件運行實例的產(chǎn)生和撤銷,包括由組件負(fù)責(zé)的其他類型組件的產(chǎn)生和撤銷。21/83組件的特性組件的動態(tài)特性63/83連接連接(Relationship)組件與組件之間建立和維持行為關(guān)聯(lián)和信息傳遞的途徑連接的本質(zhì)在于: 實現(xiàn)機(jī)制和信息交換協(xié)議,簡稱機(jī)制和協(xié)議機(jī)制 連接得以發(fā)生和維持的機(jī)制
e.g.參數(shù)調(diào)用方式/串口通訊協(xié)議 連接的規(guī)約,是正確進(jìn)行信息交換的規(guī)則,是實現(xiàn)有意義連接的保證22/83連接連接(Relationship)64/83連接的特性連接的方向性連接的角色 連接雙方的地位(調(diào)用方和被調(diào)用方)連接的激發(fā) 引起連接行為的方式連接的響應(yīng)特性
“從動方”對連接請求的處理特性。 實時性、時間、方式(同步/異步)、并發(fā)處理的能力。23/83連接的特性連接的方向性65/83連接件(Connector)實現(xiàn)組件之間聯(lián)系的特殊機(jī)制或特殊組件。連接組件與一般組件一般組件:軟件功能設(shè)計和實現(xiàn)的承載體連接件:負(fù)責(zé)完成組件之間信息交換和行為聯(lián)系的專用組件24/83連接件(Connector)實現(xiàn)組件之間聯(lián)系的特殊屬性約束功能屬性(functionalproperty)用來處理系統(tǒng)功能性的特定方面,并且通常與特定的功能需求相關(guān)。非功能屬性(non-functionalproperty)定義了沒有被功能屬性描述覆蓋的系統(tǒng)特征。包括:易修改性,互操作性,效率,可靠性,可測試性,可重用性屬性約束功能屬性(functionalproperty)67/83軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)便于涉眾交流
涉眾包括客戶、用戶、項目經(jīng)理、系統(tǒng)構(gòu)架師、程序員、測試人員等;涉眾分別關(guān)注應(yīng)用系統(tǒng)體系結(jié)構(gòu)的不同特征;軟件體系結(jié)構(gòu)便成為涉眾表述自己的需求,協(xié)商找尋一個合理開方案的研究對象,并進(jìn)行交流的手段。26/83軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)便于涉眾交流68/83軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)是軟件開發(fā)過程中的管理明確了對系統(tǒng)實現(xiàn)的約束條件,能夠支持系統(tǒng)的質(zhì)量屬性實現(xiàn)??尚行苑治鰰r避免方向性錯誤制定工程進(jìn)度和投資計劃的依據(jù),決定了開發(fā)組織的組織結(jié)構(gòu),保障項目順利進(jìn)行的關(guān)鍵軟件開發(fā)過程的關(guān)鍵里程碑27/83軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)是軟件開發(fā)過程中的軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)支持復(fù)用產(chǎn)品線構(gòu)件(庫)軟件框架軟件體系結(jié)構(gòu)是需求和代碼之間的橋梁,為開發(fā)提供了建設(shè)的藍(lán)圖,也是測試、維護(hù)和升級的依據(jù)。軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)支持復(fù)用軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格(architecturalstyle)定義了avocabularyofcomponentsandconnectortypesasetofconstraintsonhowtheycanbecombined.Maybeoneormoresemanticmodelsthatspecifyhowtodetermineasystem’soverallpropertiesfromthepropertiesofitsparts.e.g.
Client/Server軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格(architectural軟件體系結(jié)構(gòu)風(fēng)格主程序與子過程(MainProgram/Subroutine)數(shù)據(jù)抽象與面向?qū)ο蠼M織(DataAbstractionandObject-OrientedOrganization)管道-過濾器(PipesandFilters)事件驅(qū)動與隱式調(diào)用(Event-Based,ImplicitInvocation)層次系統(tǒng)(LayeredSystems)黑板系統(tǒng)(Blackboard)過程控制(ProcessControl)解釋器/虛擬機(jī)(Interpreters)客戶/服務(wù)器(Client/Server)微核(MicroKernal)COM/DCOM組件軟件體系結(jié)構(gòu)風(fēng)格主程序與子過程(MainProgram/S軟件體系結(jié)構(gòu)模式軟件體系結(jié)構(gòu)設(shè)計中,抽象出了許多常見的系統(tǒng)構(gòu)建模式(Pattern),這些系統(tǒng)構(gòu)建模式(也稱為體系結(jié)構(gòu)模式),是軟件系統(tǒng)設(shè)計人員,在長期開發(fā)某類型軟件過程中,摸索到該類軟件的一些規(guī)律性的東西,經(jīng)過提煉總結(jié),得到的具有普遍性的構(gòu)建模式。通過對這些模式的分析討論可以比較它們各自的優(yōu)缺點,從而在開發(fā)軟件系統(tǒng)時選擇合適的體系結(jié)構(gòu)。
軟件體系結(jié)構(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年02月湖北2024漢口銀行荊門分行招考筆試歷年參考題庫附帶答案詳解
- 2025年度互聯(lián)網(wǎng)數(shù)據(jù)中心服務(wù)合同約定乙方甲方數(shù)據(jù)丟失賠償規(guī)定4篇
- 2025年度潔具環(huán)保技術(shù)引進(jìn)合同范本共10套2篇
- 可調(diào)式散裝電容剪腳機(jī)行業(yè)深度研究報告
- 供應(yīng)鏈挑戰(zhàn)與解決方案
- 2025版錨具產(chǎn)品安全檢測服務(wù)合同范本4篇
- 2025年度林業(yè)權(quán)屬爭議調(diào)解與林權(quán)登記服務(wù)合同4篇
- 4三月桃花水(說課稿)2023-2024學(xué)年統(tǒng)編版語文四年級下冊
- 西雙版納云南西雙版納州民族宗教事務(wù)局公益性崗位招聘筆試歷年參考題庫附帶答案詳解
- 2023-2024學(xué)年粵教版(2019)高中信息技術(shù)必修一《數(shù)據(jù)與計算》第五章第二節(jié)《數(shù)據(jù)的采集》說課稿
- 2022年湖北省武漢市中考數(shù)學(xué)試卷含解析
- TLFSA 003-2020 危害分析與關(guān)鍵控制點(HACCP)體系調(diào)味面制品生產(chǎn)企業(yè)要求
- LY/T 2244.3-2014自然保護(hù)區(qū)保護(hù)成效評估技術(shù)導(dǎo)則第3部分:景觀保護(hù)
- 紀(jì)律教育月批評與自我批評五篇
- GB/T 26480-2011閥門的檢驗和試驗
- GB/T 13342-2007船用往復(fù)式液壓缸通用技術(shù)條件
- 藥店員工教育培訓(xùn)資料
- GB 20371-2016食品安全國家標(biāo)準(zhǔn)食品加工用植物蛋白
- 【英語手寫體】26英文字母手寫體描紅書寫字帖
- 實習(xí)護(hù)生壓瘡相關(guān)知識掌握情況及預(yù)防態(tài)度的調(diào)查問卷
- 《駱駝祥子》第(9、10、11、12)章檢測題
評論
0/150
提交評論