




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件體系結(jié)構(gòu)概述軟件體系結(jié)構(gòu)概述提綱背景與發(fā)展歷史軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)的作用體系結(jié)構(gòu)風(fēng)格體系結(jié)構(gòu)模式設(shè)計(jì)模式體系結(jié)構(gòu)設(shè)計(jì)方法體系結(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)的新概念軟件工程中一個(gè)新興的研究課題為了應(yīng)對(duì)日益復(fù)雜的系統(tǒng)的設(shè)計(jì)與構(gòu)造問題,描述大型復(fù)雜系統(tǒng)結(jié)構(gòu)的需要對(duì)于大規(guī)模的復(fù)雜軟件系統(tǒng)來說,對(duì)總體的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和規(guī)格說明比起對(duì)計(jì)算的算法和數(shù)據(jù)結(jié)構(gòu)的選擇已變得明顯重要得多為了理解、構(gòu)造大型、復(fù)雜的軟件系統(tǒng)的更有效的方法,作為設(shè)計(jì)抽象的自然演化而出現(xiàn)并發(fā)展的。軟件體系結(jié)構(gòu)在軟件開發(fā)過程中的位置:需求分析之后,軟件設(shè)計(jì)之前。軟件體系結(jié)構(gòu)的出現(xiàn)軟件體系結(jié)構(gòu)是5/83軟件體系結(jié)構(gòu)的定義許多專家學(xué)者從不同角度和不同側(cè)面對(duì)軟件體系結(jié)構(gòu)進(jìn)行了刻畫;軟件體系結(jié)構(gòu)(SoftwareArchitecture)對(duì)子系統(tǒng)、軟件系統(tǒng)組件以及他們之間關(guān)系的描述。子系統(tǒng)和組件一般定義在不同的視圖內(nèi),以顯示軟件系統(tǒng)的相關(guān)功能屬性和非功能屬性。5/83軟件體系結(jié)構(gòu)的定義許多專家學(xué)者從不同角度和不同側(cè)面對(duì)軟件體系結(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é)對(duì)數(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è)計(jì)過程中的一個(gè)層次,這一層次超越計(jì)算過程中的算法設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。體系結(jié)構(gòu)問題包括總體組織和全局控制、通訊協(xié)議、同步、數(shù)據(jù)存取,給設(shè)計(jì)元素分配特定功能,設(shè)計(jì)元素的組織,規(guī)模和性能,在各設(shè)計(jì)方案間進(jìn)行選擇等。軟件體系結(jié)構(gòu)處理算法與數(shù)據(jù)結(jié)構(gòu)之上關(guān)于整體系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和描述方面的一些問題,如全局組織和全局控制結(jié)構(gòu)、關(guān)于通訊、同步與數(shù)據(jù)存取的協(xié)議,設(shè)計(jì)構(gòu)件功能定義,物理分布與合成,設(shè)計(jì)方案的選擇、評(píng)估與實(shí)現(xiàn)等。8/83軟件體系結(jié)構(gòu)的定義GarlanandShaw,9/83軟件體系結(jié)構(gòu)的定義西門子的Soni、Nord和Hofmeister指出,軟件體系結(jié)構(gòu)有四個(gè)角度,它們從不同方面對(duì)系統(tǒng)進(jìn)行描述:概念角度描述系統(tǒng)的主要構(gòu)件及它們之間的關(guān)系;模塊角度包含功能分解與層次結(jié)構(gòu);運(yùn)行角度描述了一個(gè)系統(tǒng)的動(dò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)建造等運(yùn)行體系結(jié)構(gòu)ExecutionArchitecture任務(wù)、線程、進(jìn)程、性能、調(diào)度、動(dòng)態(tài)分配和不同執(zhí)行系統(tǒng)之間的接口等9/83軟件體系結(jié)構(gòu)的定義西門子的Soni、Nord和Hof10/83軟件體系結(jié)構(gòu)的定義HayesRoth則認(rèn)為軟件體系結(jié)構(gòu)是一個(gè)抽象的系統(tǒng)規(guī)范,主要包括用其行為來描述的功能構(gòu)件和構(gòu)件之間的相互連接、接口和關(guān)系。DavidGarlan和DewnePerry于1995年在IEEE軟件工程學(xué)報(bào)上又采用如下的定義:軟件體系結(jié)構(gòu)是一個(gè)程序/系統(tǒng)各構(gòu)件的結(jié)構(gòu)、它們之間的相互關(guān)系以及進(jìn)行設(shè)計(jì)的原則和隨時(shí)間進(jìn)化的指導(dǎo)方針。1997年,Bass,Ctements和Kazman在《軟件構(gòu)架實(shí)踐》一書中給出如下的定義:一個(gè)程序或計(jì)算機(jī)系統(tǒng)的軟件體系結(jié)構(gòu)包括一個(gè)或一組軟件構(gòu)件、軟件構(gòu)件的外部的可見特性及其相互關(guān)系。其中,"軟件外部的可見特性"是指軟件構(gòu)件提供的服務(wù)、性能、特性、錯(cuò)誤處理、共享資源使用等。10/83軟件體系結(jié)構(gòu)的定義HayesRoth則認(rèn)為軟件體11/83軟件體系結(jié)構(gòu)的定義軟件體系結(jié)構(gòu)的研究正在發(fā)展,軟件體系結(jié)構(gòu)的定義不斷演化精簡(jiǎn)GarlanandShaw的定義為:體系結(jié)構(gòu)=組件+連接(件)+設(shè)計(jì)約束Architecture=Components+Relationship(Connectors)+Constrains11/83軟件體系結(jié)構(gòu)的定義軟件體系結(jié)構(gòu)的研究正在發(fā)展,軟件組件組件(component)組件可以理解為軟件系統(tǒng)的一個(gè)組成部分。組件通過一定接口組成復(fù)雜的軟件系統(tǒng)。從系統(tǒng)構(gòu)成角度:在系統(tǒng)運(yùn)行中承擔(dān)一定功能、發(fā)揮一定作用的軟件體從程序設(shè)計(jì)角度:模塊、類、對(duì)象、函數(shù)或者一個(gè)相關(guān)功能集合組件組件(component)組件組件分類(作用)控制組件:負(fù)責(zé)系統(tǒng)運(yùn)行管理協(xié)調(diào)組件:負(fù)責(zé)組件間協(xié)作關(guān)系連接組件:負(fù)責(zé)組件間鏈接作用和轉(zhuǎn)換服務(wù)提供組件:為其他組件提供特定服務(wù)功能信息控制組件 :負(fù)責(zé)安全檢查和信息轉(zhuǎn)接傳遞構(gòu)造組件:完成對(duì)象的產(chǎn)生和撤銷組件組件分類(作用)14/83組件的實(shí)現(xiàn)形式組件無行為能力 簡(jiǎn)單數(shù)據(jù)有行為能力 內(nèi)部結(jié)構(gòu)+操作行為組件的基本實(shí)現(xiàn)形式就是對(duì)象層次模型中組件的概念是在基本的組件形式上經(jīng)過復(fù)合和概念提升而產(chǎn)生的e.g.數(shù)組、樹;注冊(cè)表;瀏覽器14/83組件的實(shí)現(xiàn)形式組件15/83組件的表達(dá)形式具有操作接口定義的抽象數(shù)據(jù)類型描述組成內(nèi)部數(shù)據(jù)結(jié)構(gòu)及其操作對(duì)外提供的操作方法集合按照訪問目的對(duì)操作方法進(jìn)行劃分,得到組件的多個(gè)操作接口接口:Interface(Java)15/83組件的表達(dá)形式具有操作接口定義的抽象數(shù)據(jù)類型描述16/83組件的類別概念層次基礎(chǔ)組件、中層組件、高層組件應(yīng)用
通用組件、專用組件功能
數(shù)據(jù)服務(wù)組件、功能服務(wù)組件、邏輯處理組件、界面組件、控制組件、連接組件、體系結(jié)構(gòu)組件等運(yùn)行特性
調(diào)度和非調(diào)度組件、中斷和非中斷組件、多客戶服務(wù)組件。16/83組件的類別概念層次17/83組件的特性組件的接口特性完備性 使用者可以用它完成組件應(yīng)該能夠完成的一切工作。最小性 組件接口或界面中任一操作,都不能由其他操作組合而實(shí)現(xiàn)。正交性 設(shè)法使兩個(gè)不同的操作交叉重復(fù)部分達(dá)到最小。方便性 提供用戶歡迎的操作。可能會(huì)破壞最小性和正交性要求效率 接口操作的執(zhí)行效率17/83組件的特性組件的接口特性18/83組件的特性組件的運(yùn)行特性中斷處理 實(shí)時(shí)系統(tǒng):消息機(jī)制/中斷處理并行調(diào)度 考慮進(jìn)程的產(chǎn)生、撤銷、通信和調(diào)度管理多用戶服務(wù) 組件具有事件觸發(fā)和多線程運(yùn)行的能力18/83組件的特性組件的運(yùn)行特性19/83組件的特性組件的遠(yuǎn)程服務(wù)特性提供數(shù)據(jù)和功能服務(wù)網(wǎng)絡(luò)的分布計(jì)算環(huán)境的要求19/83組件的特性組件的遠(yuǎn)程服務(wù)特性20/83組件的特性組件的關(guān)聯(lián)特性:組件與相關(guān)聯(lián)組件所建立的聯(lián)系和聯(lián)系的方式
e.g.向其他組件請(qǐng)求信息或服務(wù)動(dòng)態(tài)/靜態(tài)處理聯(lián)系連接的實(shí)現(xiàn)形式影響組件的設(shè)計(jì)與實(shí)現(xiàn)e.g.同步調(diào)用/異步調(diào)用20/83組件的特性組件的關(guān)聯(lián)特性:組件與相關(guān)聯(lián)組件所建立的21/83組件的特性組件的動(dòng)態(tài)特性運(yùn)行調(diào)度 運(yùn)行環(huán)境資源的分配和多任務(wù)的并行執(zhí)行生存期管理 組件運(yùn)行實(shí)例的產(chǎn)生和撤銷,包括由組件負(fù)責(zé)的其他類型組件的產(chǎn)生和撤銷。21/83組件的特性組件的動(dòng)態(tài)特性22/83連接連接(Relationship)組件與組件之間建立和維持行為關(guān)聯(lián)和信息傳遞的途徑連接的本質(zhì)在于: 實(shí)現(xiàn)機(jī)制和信息交換協(xié)議,簡(jiǎn)稱機(jī)制和協(xié)議機(jī)制 連接得以發(fā)生和維持的機(jī)制
e.g.參數(shù)調(diào)用方式/串口通訊協(xié)議 連接的規(guī)約,是正確進(jìn)行信息交換的規(guī)則,是實(shí)現(xiàn)有意義連接的保證22/83連接連接(Relationship)23/83連接的特性連接的方向性連接的角色 連接雙方的地位(調(diào)用方和被調(diào)用方)連接的激發(fā) 引起連接行為的方式連接的響應(yīng)特性
“從動(dòng)方”對(duì)連接請(qǐng)求的處理特性。 實(shí)時(shí)性、時(shí)間、方式(同步/異步)、并發(fā)處理的能力。23/83連接的特性連接的方向性24/83連接件(Connector)實(shí)現(xiàn)組件之間聯(lián)系的特殊機(jī)制或特殊組件。連接組件與一般組件一般組件:軟件功能設(shè)計(jì)和實(shí)現(xiàn)的承載體連接件:負(fù)責(zé)完成組件之間信息交換和行為聯(lián)系的專用組件24/83連接件(Connector)實(shí)現(xiàn)組件之間聯(lián)系的特殊屬性約束功能屬性(functionalproperty)用來處理系統(tǒng)功能性的特定方面,并且通常與特定的功能需求相關(guān)。非功能屬性(non-functionalproperty)定義了沒有被功能屬性描述覆蓋的系統(tǒng)特征。包括:易修改性,互操作性,效率,可靠性,可測(cè)試性,可重用性屬性約束功能屬性(functionalproperty)26/83軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)便于涉眾交流
涉眾包括客戶、用戶、項(xiàng)目經(jīng)理、系統(tǒng)構(gòu)架師、程序員、測(cè)試人員等;涉眾分別關(guān)注應(yīng)用系統(tǒng)體系結(jié)構(gòu)的不同特征;軟件體系結(jié)構(gòu)便成為涉眾表述自己的需求,協(xié)商找尋一個(gè)合理開方案的研究對(duì)象,并進(jìn)行交流的手段。26/83軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)便于涉眾交流27/83軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)是軟件開發(fā)過程中的管理明確了對(duì)系統(tǒng)實(shí)現(xiàn)的約束條件,能夠支持系統(tǒng)的質(zhì)量屬性實(shí)現(xiàn)??尚行苑治鰰r(shí)避免方向性錯(cuò)誤制定工程進(jìn)度和投資計(jì)劃的依據(jù),決定了開發(fā)組織的組織結(jié)構(gòu),保障項(xiàng)目順利進(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)圖,也是測(cè)試、維護(hù)和升級(jí)的依據(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ū)動(dòng)與隱式調(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è)計(jì)中,抽象出了許多常見的系統(tǒng)構(gòu)建模式(Pattern),這些系統(tǒng)構(gòu)建模式(也稱為體系結(jié)構(gòu)模式),是軟件系統(tǒng)設(shè)計(jì)人員,在長(zhǎng)期開發(fā)某類型軟件過程中,摸索到該類軟件的一些規(guī)律性的東西,經(jīng)過提煉總結(jié),得到的具有普遍性的構(gòu)建模式。通過對(duì)這些模式的分析討論可以比較它們各自的優(yōu)缺點(diǎn),從而在開發(fā)軟件系統(tǒng)時(shí)選擇合適的體系結(jié)構(gòu)。
軟件體系結(jié)構(gòu)模式軟件體系結(jié)構(gòu)設(shè)計(jì)中,抽象出了許多常見的系統(tǒng)構(gòu)軟件體系結(jié)構(gòu)模式MVC模式管道過濾器模式PAC模式層次模式元層次模式軟件體系結(jié)構(gòu)模式MVC模式33/83軟件體系結(jié)構(gòu)的風(fēng)格與模式相同點(diǎn):一個(gè)體系結(jié)構(gòu)風(fēng)格定義了一個(gè)由組件和連接類型描述的詞匯集合,和一個(gè)如何將這些組件和連接類型結(jié)合的約束集合。體系結(jié)構(gòu)模式也認(rèn)為軟件體系結(jié)構(gòu)是由組件及它們之間的連接構(gòu)成的,但更強(qiáng)調(diào)它是軟件設(shè)計(jì)活動(dòng)的產(chǎn)物。設(shè)計(jì)模式通常更關(guān)注兩方面的問題:一是每個(gè)模式規(guī)定了一個(gè)特定的結(jié)構(gòu),即構(gòu)成組件的空間配置,也就是組件和它們關(guān)系的靜態(tài)約束;二是每個(gè)模式規(guī)定了它運(yùn)行時(shí)的行為,即模式的參與者是如何協(xié)作、如何組織和如何通信的,它反映了模式的動(dòng)態(tài)行為。
33/83軟件體系結(jié)構(gòu)的風(fēng)格與模式相同點(diǎn):34/83軟件體系結(jié)構(gòu)風(fēng)格與模式不同點(diǎn):體系結(jié)構(gòu)風(fēng)格只描述應(yīng)用系統(tǒng)的整體結(jié)構(gòu)框架,而軟件體系結(jié)構(gòu)模式存在于規(guī)模不同的范疇中。體系結(jié)構(gòu)風(fēng)格之間相互獨(dú)立,但模式依賴于它所包含的更小的模式,依賴于相互作用的模式以及包含它的更大的模式。和體系結(jié)構(gòu)風(fēng)格相比,模式更加面向具體問題。體系結(jié)構(gòu)風(fēng)格一般以不依賴于實(shí)際設(shè)計(jì)環(huán)境的觀點(diǎn)來表現(xiàn)設(shè)計(jì)技巧;而模式則非常具體地表示了設(shè)計(jì)問題,并針對(duì)設(shè)計(jì)問題提出解決方案。34/83軟件體系結(jié)構(gòu)風(fēng)格與模式不同點(diǎn):設(shè)計(jì)模式(designpattern)Descriptionofcommunicatingobjectsandclassesthatarecustomizedtosolveageneraldesignprobleminaparticularcontext.設(shè)計(jì)模式(designpattern)Descripti設(shè)計(jì)模式Command模式Bridge模式Composite模式Decorator模式Strategy模式設(shè)計(jì)模式Command模式體系結(jié)構(gòu)設(shè)計(jì)方法框架(framework)可以看作是部分完整的子系統(tǒng)。為一個(gè)系統(tǒng)族定義體系結(jié)構(gòu)并提供創(chuàng)建它們的基本構(gòu)造塊。它也定義了具體功能特性需要改進(jìn)的地方。體系結(jié)構(gòu)設(shè)計(jì)方法框架(framework)軟件體系結(jié)構(gòu)視圖(view)代表一個(gè)軟件體系結(jié)構(gòu)的某個(gè)方面,用以強(qiáng)調(diào)體系結(jié)構(gòu)的特定屬性。如:全局視圖,概念視圖,模塊視圖,代碼視圖,執(zhí)行視圖軟件體系結(jié)構(gòu)視圖(view)代表一個(gè)軟件體系結(jié)構(gòu)的某個(gè)方面,39/83體系結(jié)構(gòu)描述語言ADL(ArchitectureDescriptionLanguage)早期主要使用非形式化的、用方框和連線描述體系結(jié)構(gòu)的方法,不能清楚地表述設(shè)計(jì)的含義【即:沒有通過理論抽象與統(tǒng)一的形式化描述】,因此不能形式化地分析一致性、完整性和正確性。
對(duì)體系結(jié)構(gòu)進(jìn)行描述和規(guī)范的方法;對(duì)體系結(jié)構(gòu)的理論認(rèn)識(shí)的形式化描述。形式化理論的重點(diǎn):通過形式化語言,對(duì)結(jié)構(gòu)設(shè)計(jì)給出準(zhǔn)確的描述。ADL為軟件體系結(jié)構(gòu)特征既提供了概念性框架,也提供了描述的具體語法,同時(shí)提供解析、顯示、編譯、分析或者仿真體系結(jié)構(gòu)描述的工具。39/83體系結(jié)構(gòu)描述語言ADL(Architecture40/83體系結(jié)構(gòu)文檔化只有對(duì)體系結(jié)構(gòu)文檔化,程序員和系統(tǒng)分析員等才能更好地理解體系結(jié)構(gòu),從而完成對(duì)體系結(jié)構(gòu)地設(shè)計(jì)。體系結(jié)構(gòu)文檔化的過程就是用一個(gè)或者多個(gè)視圖來描述一個(gè)系統(tǒng)結(jié)構(gòu)的過程。文檔化的好處:軟件開發(fā)過程中各種角色之間交流設(shè)計(jì)思想的媒介進(jìn)行上層分析的基礎(chǔ),在此基礎(chǔ)上可以驗(yàn)證體系結(jié)構(gòu)設(shè)計(jì)方案,精煉或改變必要的方案讓別人理解系統(tǒng)的第一手資料40/83體系結(jié)構(gòu)文檔化只有對(duì)體系結(jié)構(gòu)文檔化,程序員和系統(tǒng)分41/83小結(jié)軟件體系結(jié)構(gòu)概念軟件開發(fā)過程中的作用及重要性軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)模式設(shè)計(jì)模式軟件體系結(jié)構(gòu)設(shè)計(jì)方法軟件體系結(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è)計(jì)模式體系結(jié)構(gòu)設(shè)計(jì)方法體系結(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)的新概念軟件工程中一個(gè)新興的研究課題為了應(yīng)對(duì)日益復(fù)雜的系統(tǒng)的設(shè)計(jì)與構(gòu)造問題,描述大型復(fù)雜系統(tǒng)結(jié)構(gòu)的需要對(duì)于大規(guī)模的復(fù)雜軟件系統(tǒng)來說,對(duì)總體的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和規(guī)格說明比起對(duì)計(jì)算的算法和數(shù)據(jù)結(jié)構(gòu)的選擇已變得明顯重要得多為了理解、構(gòu)造大型、復(fù)雜的軟件系統(tǒng)的更有效的方法,作為設(shè)計(jì)抽象的自然演化而出現(xiàn)并發(fā)展的。軟件體系結(jié)構(gòu)在軟件開發(fā)過程中的位置:需求分析之后,軟件設(shè)計(jì)之前。軟件體系結(jié)構(gòu)的出現(xiàn)軟件體系結(jié)構(gòu)是46/83軟件體系結(jié)構(gòu)的定義許多專家學(xué)者從不同角度和不同側(cè)面對(duì)軟件體系結(jié)構(gòu)進(jìn)行了刻畫;軟件體系結(jié)構(gòu)(SoftwareArchitecture)對(duì)子系統(tǒng)、軟件系統(tǒng)組件以及他們之間關(guān)系的描述。子系統(tǒng)和組件一般定義在不同的視圖內(nèi),以顯示軟件系統(tǒng)的相關(guān)功能屬性和非功能屬性。5/83軟件體系結(jié)構(gòu)的定義許多專家學(xué)者從不同角度和不同側(cè)面對(duì)軟件體系結(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é)對(duì)數(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è)計(jì)過程中的一個(gè)層次,這一層次超越計(jì)算過程中的算法設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。體系結(jié)構(gòu)問題包括總體組織和全局控制、通訊協(xié)議、同步、數(shù)據(jù)存取,給設(shè)計(jì)元素分配特定功能,設(shè)計(jì)元素的組織,規(guī)模和性能,在各設(shè)計(jì)方案間進(jìn)行選擇等。軟件體系結(jié)構(gòu)處理算法與數(shù)據(jù)結(jié)構(gòu)之上關(guān)于整體系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和描述方面的一些問題,如全局組織和全局控制結(jié)構(gòu)、關(guān)于通訊、同步與數(shù)據(jù)存取的協(xié)議,設(shè)計(jì)構(gòu)件功能定義,物理分布與合成,設(shè)計(jì)方案的選擇、評(píng)估與實(shí)現(xiàn)等。8/83軟件體系結(jié)構(gòu)的定義GarlanandShaw,50/83軟件體系結(jié)構(gòu)的定義西門子的Soni、Nord和Hofmeister指出,軟件體系結(jié)構(gòu)有四個(gè)角度,它們從不同方面對(duì)系統(tǒng)進(jìn)行描述:概念角度描述系統(tǒng)的主要構(gòu)件及它們之間的關(guān)系;模塊角度包含功能分解與層次結(jié)構(gòu);運(yùn)行角度描述了一個(gè)系統(tǒng)的動(dò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)建造等運(yùn)行體系結(jié)構(gòu)ExecutionArchitecture任務(wù)、線程、進(jìn)程、性能、調(diào)度、動(dòng)態(tài)分配和不同執(zhí)行系統(tǒng)之間的接口等9/83軟件體系結(jié)構(gòu)的定義西門子的Soni、Nord和Hof51/83軟件體系結(jié)構(gòu)的定義HayesRoth則認(rèn)為軟件體系結(jié)構(gòu)是一個(gè)抽象的系統(tǒng)規(guī)范,主要包括用其行為來描述的功能構(gòu)件和構(gòu)件之間的相互連接、接口和關(guān)系。DavidGarlan和DewnePerry于1995年在IEEE軟件工程學(xué)報(bào)上又采用如下的定義:軟件體系結(jié)構(gòu)是一個(gè)程序/系統(tǒng)各構(gòu)件的結(jié)構(gòu)、它們之間的相互關(guān)系以及進(jìn)行設(shè)計(jì)的原則和隨時(shí)間進(jìn)化的指導(dǎo)方針。1997年,Bass,Ctements和Kazman在《軟件構(gòu)架實(shí)踐》一書中給出如下的定義:一個(gè)程序或計(jì)算機(jī)系統(tǒng)的軟件體系結(jié)構(gòu)包括一個(gè)或一組軟件構(gòu)件、軟件構(gòu)件的外部的可見特性及其相互關(guān)系。其中,"軟件外部的可見特性"是指軟件構(gòu)件提供的服務(wù)、性能、特性、錯(cuò)誤處理、共享資源使用等。10/83軟件體系結(jié)構(gòu)的定義HayesRoth則認(rèn)為軟件體52/83軟件體系結(jié)構(gòu)的定義軟件體系結(jié)構(gòu)的研究正在發(fā)展,軟件體系結(jié)構(gòu)的定義不斷演化精簡(jiǎn)GarlanandShaw的定義為:體系結(jié)構(gòu)=組件+連接(件)+設(shè)計(jì)約束Architecture=Components+Relationship(Connectors)+Constrains11/83軟件體系結(jié)構(gòu)的定義軟件體系結(jié)構(gòu)的研究正在發(fā)展,軟件組件組件(component)組件可以理解為軟件系統(tǒng)的一個(gè)組成部分。組件通過一定接口組成復(fù)雜的軟件系統(tǒng)。從系統(tǒng)構(gòu)成角度:在系統(tǒng)運(yùn)行中承擔(dān)一定功能、發(fā)揮一定作用的軟件體從程序設(shè)計(jì)角度:模塊、類、對(duì)象、函數(shù)或者一個(gè)相關(guān)功能集合組件組件(component)組件組件分類(作用)控制組件:負(fù)責(zé)系統(tǒng)運(yùn)行管理協(xié)調(diào)組件:負(fù)責(zé)組件間協(xié)作關(guān)系連接組件:負(fù)責(zé)組件間鏈接作用和轉(zhuǎn)換服務(wù)提供組件:為其他組件提供特定服務(wù)功能信息控制組件 :負(fù)責(zé)安全檢查和信息轉(zhuǎn)接傳遞構(gòu)造組件:完成對(duì)象的產(chǎn)生和撤銷組件組件分類(作用)55/83組件的實(shí)現(xiàn)形式組件無行為能力 簡(jiǎn)單數(shù)據(jù)有行為能力 內(nèi)部結(jié)構(gòu)+操作行為組件的基本實(shí)現(xiàn)形式就是對(duì)象層次模型中組件的概念是在基本的組件形式上經(jīng)過復(fù)合和概念提升而產(chǎn)生的e.g.數(shù)組、樹;注冊(cè)表;瀏覽器14/83組件的實(shí)現(xiàn)形式組件56/83組件的表達(dá)形式具有操作接口定義的抽象數(shù)據(jù)類型描述組成內(nèi)部數(shù)據(jù)結(jié)構(gòu)及其操作對(duì)外提供的操作方法集合按照訪問目的對(duì)操作方法進(jìn)行劃分,得到組件的多個(gè)操作接口接口:Interface(Java)15/83組件的表達(dá)形式具有操作接口定義的抽象數(shù)據(jù)類型描述57/83組件的類別概念層次基礎(chǔ)組件、中層組件、高層組件應(yīng)用
通用組件、專用組件功能
數(shù)據(jù)服務(wù)組件、功能服務(wù)組件、邏輯處理組件、界面組件、控制組件、連接組件、體系結(jié)構(gòu)組件等運(yùn)行特性
調(diào)度和非調(diào)度組件、中斷和非中斷組件、多客戶服務(wù)組件。16/83組件的類別概念層次58/83組件的特性組件的接口特性完備性 使用者可以用它完成組件應(yīng)該能夠完成的一切工作。最小性 組件接口或界面中任一操作,都不能由其他操作組合而實(shí)現(xiàn)。正交性 設(shè)法使兩個(gè)不同的操作交叉重復(fù)部分達(dá)到最小。方便性 提供用戶歡迎的操作??赡軙?huì)破壞最小性和正交性要求效率 接口操作的執(zhí)行效率17/83組件的特性組件的接口特性59/83組件的特性組件的運(yùn)行特性中斷處理 實(shí)時(shí)系統(tǒng):消息機(jī)制/中斷處理并行調(diào)度 考慮進(jìn)程的產(chǎn)生、撤銷、通信和調(diào)度管理多用戶服務(wù) 組件具有事件觸發(fā)和多線程運(yùn)行的能力18/83組件的特性組件的運(yùn)行特性60/83組件的特性組件的遠(yuǎn)程服務(wù)特性提供數(shù)據(jù)和功能服務(wù)網(wǎng)絡(luò)的分布計(jì)算環(huán)境的要求19/83組件的特性組件的遠(yuǎn)程服務(wù)特性61/83組件的特性組件的關(guān)聯(lián)特性:組件與相關(guān)聯(lián)組件所建立的聯(lián)系和聯(lián)系的方式
e.g.向其他組件請(qǐng)求信息或服務(wù)動(dòng)態(tài)/靜態(tài)處理聯(lián)系連接的實(shí)現(xiàn)形式影響組件的設(shè)計(jì)與實(shí)現(xiàn)e.g.同步調(diào)用/異步調(diào)用20/83組件的特性組件的關(guān)聯(lián)特性:組件與相關(guān)聯(lián)組件所建立的62/83組件的特性組件的動(dòng)態(tài)特性運(yùn)行調(diào)度 運(yùn)行環(huán)境資源的分配和多任務(wù)的并行執(zhí)行生存期管理 組件運(yùn)行實(shí)例的產(chǎn)生和撤銷,包括由組件負(fù)責(zé)的其他類型組件的產(chǎn)生和撤銷。21/83組件的特性組件的動(dòng)態(tài)特性63/83連接連接(Relationship)組件與組件之間建立和維持行為關(guān)聯(lián)和信息傳遞的途徑連接的本質(zhì)在于: 實(shí)現(xiàn)機(jī)制和信息交換協(xié)議,簡(jiǎn)稱機(jī)制和協(xié)議機(jī)制 連接得以發(fā)生和維持的機(jī)制
e.g.參數(shù)調(diào)用方式/串口通訊協(xié)議 連接的規(guī)約,是正確進(jìn)行信息交換的規(guī)則,是實(shí)現(xiàn)有意義連接的保證22/83連接連接(Relationship)64/83連接的特性連接的方向性連接的角色 連接雙方的地位(調(diào)用方和被調(diào)用方)連接的激發(fā) 引起連接行為的方式連接的響應(yīng)特性
“從動(dòng)方”對(duì)連接請(qǐng)求的處理特性。 實(shí)時(shí)性、時(shí)間、方式(同步/異步)、并發(fā)處理的能力。23/83連接的特性連接的方向性65/83連接件(Connector)實(shí)現(xiàn)組件之間聯(lián)系的特殊機(jī)制或特殊組件。連接組件與一般組件一般組件:軟件功能設(shè)計(jì)和實(shí)現(xiàn)的承載體連接件:負(fù)責(zé)完成組件之間信息交換和行為聯(lián)系的專用組件24/83連接件(Connector)實(shí)現(xiàn)組件之間聯(lián)系的特殊屬性約束功能屬性(functionalproperty)用來處理系統(tǒng)功能性的特定方面,并且通常與特定的功能需求相關(guān)。非功能屬性(non-functionalproperty)定義了沒有被功能屬性描述覆蓋的系統(tǒng)特征。包括:易修改性,互操作性,效率,可靠性,可測(cè)試性,可重用性屬性約束功能屬性(functionalproperty)67/83軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)便于涉眾交流
涉眾包括客戶、用戶、項(xiàng)目經(jīng)理、系統(tǒng)構(gòu)架師、程序員、測(cè)試人員等;涉眾分別關(guān)注應(yīng)用系統(tǒng)體系結(jié)構(gòu)的不同特征;軟件體系結(jié)構(gòu)便成為涉眾表述自己的需求,協(xié)商找尋一個(gè)合理開方案的研究對(duì)象,并進(jìn)行交流的手段。26/83軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)便于涉眾交流68/83軟件體系結(jié)構(gòu)的重要性軟件體系結(jié)構(gòu)是軟件開發(fā)過程中的管理明確了對(duì)系統(tǒng)實(shí)現(xiàn)的約束條件,能夠支持系統(tǒng)的質(zhì)量屬性實(shí)現(xiàn)??尚行苑治鰰r(shí)避免方向性錯(cuò)誤制定工程進(jìn)度和投資計(jì)劃的依據(jù),決定了開發(fā)組織的組織結(jié)構(gòu),保障項(xiàng)目順利進(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)圖,也是測(cè)試、維護(hù)和升級(jí)的依據(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ū)動(dòng)與隱式調(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è)計(jì)中,抽象出了許多常見的系統(tǒng)構(gòu)建模式(Pattern),這些系統(tǒng)構(gòu)建模式(也稱為體系結(jié)構(gòu)模式),是軟件系統(tǒng)設(shè)計(jì)人員,在長(zhǎng)期開發(fā)某類型軟件過程中,摸索到該類軟件的一些規(guī)律性的東西,經(jīng)過提煉總結(jié),得到的具有普遍性的構(gòu)建模式。通過對(duì)這些模式的分析討論可以比較它們各自的優(yōu)缺點(diǎn),從而在開發(fā)軟件系統(tǒng)時(shí)選擇合適的體系結(jié)構(gòu)。
軟件體系結(jié)構(gòu)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度物流倉儲(chǔ)安全保密協(xié)議合同
- 2025年度旅游企業(yè)單位試用期勞動(dòng)合同規(guī)定
- 二零二五年度離婚后子女教育費(fèi)用及債務(wù)償還合同
- 二零二五年度市場(chǎng)調(diào)研人員勞動(dòng)合同保密及市場(chǎng)信息保護(hù)協(xié)議
- 2025年度私人土地租賃合同(文化創(chuàng)意產(chǎn)業(yè)園)
- 二零二五年度工傷職工康復(fù)與就業(yè)保障合同
- 二零二五年度寵物攝影工作室租賃與銷售合同
- 二零二五年度地方特色小吃連鎖加盟管理合同
- 2025年液壓氣壓剎車系統(tǒng)合作協(xié)議書
- 2025年游泳競(jìng)賽策劃安全防護(hù)協(xié)議
- 全過程造價(jià)咨詢服務(wù)實(shí)施方案
- 實(shí)用參考從合規(guī)到績(jī)效:宋志平談央企學(xué)習(xí)型董事會(huì)建設(shè)
- GB/T 912-2008碳素結(jié)構(gòu)鋼和低合金結(jié)構(gòu)鋼熱軋薄鋼板和鋼帶
- GB/T 26480-2011閥門的檢驗(yàn)和試驗(yàn)
- 中共一大會(huì)址
- 云南省煙草買賣合同(標(biāo)準(zhǔn)版)
- 2023個(gè)人獨(dú)資企業(yè)清算報(bào)告(精選4篇)
- 衛(wèi)生統(tǒng)計(jì)學(xué)(全套課件)
- 2021年6月浙江省高考讀后續(xù)寫課件-高考英語復(fù)習(xí)備考
- 小學(xué)古詩詞80首(硬筆書法田字格)
-
評(píng)論
0/150
提交評(píng)論