《軟件體系結(jié)構(gòu)》課件 李青山 01-緒論- 08-可用性_第1頁
《軟件體系結(jié)構(gòu)》課件 李青山 01-緒論- 08-可用性_第2頁
《軟件體系結(jié)構(gòu)》課件 李青山 01-緒論- 08-可用性_第3頁
《軟件體系結(jié)構(gòu)》課件 李青山 01-緒論- 08-可用性_第4頁
《軟件體系結(jié)構(gòu)》課件 李青山 01-緒論- 08-可用性_第5頁
已閱讀5頁,還剩288頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件體系結(jié)構(gòu)Software

Architecture2課程簡介

軟件體系結(jié)構(gòu)的主題是針對復(fù)雜軟件系統(tǒng)的高層結(jié)構(gòu)、組織單元之間的相互關(guān)系的描述,以及圍繞這種描述開展的各項(xiàng)活動,如設(shè)計、評估、實(shí)現(xiàn)、管理等。

《軟件體系結(jié)構(gòu)》課程是軟件工程專業(yè)核心課程,在該課程32學(xué)時的學(xué)習(xí)中,同學(xué)們將學(xué)習(xí)軟件體系結(jié)構(gòu)的基本概念、原則和方法。同時,通過實(shí)際軟件項(xiàng)目設(shè)計任務(wù)驅(qū)動學(xué)生運(yùn)用理論知識主動思考架構(gòu)方案,引導(dǎo)學(xué)生應(yīng)用輔助工具完成系統(tǒng)架構(gòu)設(shè)計、評估和實(shí)現(xiàn)。體驗(yàn)軟件架構(gòu)師在軟件項(xiàng)目全生命周期的任務(wù)、角色,搭建軟件體系結(jié)構(gòu)“學(xué)與用”的橋梁。任務(wù)導(dǎo)向以面引點(diǎn)案例驅(qū)動體驗(yàn)探究3課程大綱軟件體系結(jié)構(gòu)緒論軟件體系結(jié)構(gòu)風(fēng)格數(shù)據(jù)流體系結(jié)構(gòu)風(fēng)格調(diào)用/返回體系結(jié)構(gòu)風(fēng)格以數(shù)據(jù)為中心體系結(jié)構(gòu)風(fēng)格虛擬機(jī)體系結(jié)構(gòu)風(fēng)格事件系統(tǒng)體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)建模和文檔化質(zhì)量屬性及質(zhì)量屬性策略可用性及其策略性能及其策略可修改性及其策略安全性及其策略可測試性及其策略易用性及其策略軟件體系結(jié)構(gòu)評估綜合應(yīng)用案例總結(jié)及展望4課程大綱軟件體系結(jié)構(gòu)1.緒論軟件體系結(jié)構(gòu)風(fēng)格2.數(shù)據(jù)流體系結(jié)構(gòu)風(fēng)格3.調(diào)用/返回體系結(jié)構(gòu)風(fēng)格4.以數(shù)據(jù)為中心體系結(jié)構(gòu)風(fēng)格5.虛擬機(jī)體系結(jié)構(gòu)風(fēng)格6.事件系統(tǒng)體系結(jié)構(gòu)風(fēng)格7.軟件體系結(jié)構(gòu)建模和文檔化質(zhì)量屬性及質(zhì)量屬性策略8.可用性及其策略9.性能及其策略10.可修改性及其策略11.安全性及其策略12.可測試性及其策略13.易用性及其策略14.軟件體系結(jié)構(gòu)評估15.綜合應(yīng)用案例16.總結(jié)及展望5課程目標(biāo)理解體系結(jié)構(gòu)定義熟悉體系結(jié)構(gòu)風(fēng)格準(zhǔn)確描述一個體系結(jié)構(gòu)制定、選擇體系結(jié)構(gòu)方案為特定應(yīng)用定制體系結(jié)構(gòu)利用現(xiàn)有工具加速開發(fā)過程構(gòu)建滿足特定體系結(jié)構(gòu)要求的中等規(guī)模軟件系統(tǒng)6軟件體系結(jié)構(gòu)

讓我們開始

軟件體系結(jié)構(gòu)(Software

Architecture)……緒論Introduction8

什么是Architecture?Architecture的辭典定義Architecture9Architecture圣·瑪利亞百花大教堂

構(gòu)建Architecture?瑞典的瓦薩戰(zhàn)艦10案例一圣·瑪利亞百花大教堂1296年,佛羅倫薩開始動工修建一座“具有無與倫比之華美和尊榮的圣殿,足以使任何教堂都相形見絀”的圣·瑪利亞百花大教堂。然而,大教堂在蓋好本體后,圓頂部分依然空了50年無法完工。直到1418年,這座夢想中的建筑仍未完成。WHY?沒有鋼筋、混凝土等現(xiàn)代建材的時代,如何筑成全世界最巨大的石砌磚造圓頂?少了鷹架和電動吊車,該怎么把37000噸的大理石安穩(wěn)放置在50米的高空中?沒人提供的巨大拱頂和圓頂,以及其中設(shè)備的設(shè)計方案。以當(dāng)時的經(jīng)驗(yàn),面對這類建筑體系結(jié)構(gòu),設(shè)計師無法在美觀和安全之間做出任何妥協(xié)。需求建筑體系結(jié)構(gòu)11案例二瑞典瓦薩戰(zhàn)艦

1620年代,瑞典與波蘭交戰(zhàn)。瑞典國王下令建造一艘巨型戰(zhàn)艦,長70m,載員300人,兩層甲板,64門重炮,以盡快結(jié)束戰(zhàn)爭。建造期間,國王得知了丹麥建成雙層炮艦的消息,于是在戰(zhàn)艦骨架已經(jīng)基本搭好之后,他又決定,為原計劃修建單層炮艦的“瓦薩”號增加一個槍械甲板,把它改建成“雙層”炮艦,使得“瓦薩”號擁有了雙排、64門艦炮,全長達(dá)到了69米,成為當(dāng)時裝備最齊全、武裝程度最高的戰(zhàn)船。1628年,Vasa戰(zhàn)艦建造完成,在下水鳴放了幾響禮炮之后,很快沉入水中。WHY?雖然Vasa戰(zhàn)艦制造工藝精良,但船體比例嚴(yán)重失調(diào),體系結(jié)構(gòu)存在致命缺陷。設(shè)計師在無前人設(shè)計經(jīng)驗(yàn)的基礎(chǔ)上,既要執(zhí)行暴躁國王的“功能性”需求,又要考慮“非功能性”要求(如安全性、可靠性、造價等)。面對諸多相互沖突的約束條件,做出了錯誤的權(quán)衡,對一些不可能實(shí)現(xiàn)的要求做了妥協(xié)。需求建筑體系結(jié)構(gòu)12軟件體系結(jié)構(gòu)的動機(jī)建筑體系結(jié)構(gòu)軟件體系結(jié)構(gòu)需求復(fù)雜、變化頻繁功能模塊規(guī)模大功能性/非功能性要求高總體的系統(tǒng)結(jié)構(gòu)設(shè)計比計算算法和數(shù)據(jù)結(jié)構(gòu)的選擇更為重要大規(guī)模復(fù)雜軟件系統(tǒng)13本節(jié)內(nèi)容軟件體系結(jié)構(gòu)的發(fā)展史1軟件體系結(jié)構(gòu)定義2軟件體系結(jié)構(gòu)的研究活動3軟件體系結(jié)構(gòu)的作用414~60年代70~80年代90年代2000年代2010年代高級語言編譯器出現(xiàn);C語言誕生;COBOL語言誕生集成開發(fā)環(huán)境出現(xiàn);軟件工程誕生面向過程開發(fā)結(jié)構(gòu)化程序出現(xiàn);程序驗(yàn)證方法出現(xiàn)形式化方法出現(xiàn)面向服務(wù)開發(fā)軟件構(gòu)件化出現(xiàn);J2EE誕生,CORBA誕生搜狐、阿里等成立智能化軟件開發(fā)程序自動生成;軟件庫挖掘協(xié)作化工業(yè)化工程化時代特征時期開發(fā)模式個人小組企業(yè)眾包面向?qū)ο箝_發(fā)C++/Java/C#誕生;UML出現(xiàn);軟件質(zhì)量管控體系(COCOMO);互聯(lián)網(wǎng)誕生現(xiàn)代云與移動服務(wù)開發(fā)云計算出現(xiàn)并流行智能機(jī)流行,移動服務(wù)出現(xiàn)系統(tǒng)=子程序+子程序構(gòu)件+連接對象+對象服務(wù)+服務(wù)總線算法+數(shù)據(jù)結(jié)構(gòu)軟件體系結(jié)構(gòu)的發(fā)展史15~60年代70~80年代90年代2000年代2010年代高級語言編譯器出現(xiàn);C語言誕生;COBOL語言誕生集成開發(fā)環(huán)境出現(xiàn);軟件工程誕生面向過程開發(fā)結(jié)構(gòu)化程序出現(xiàn);程序驗(yàn)證方法出現(xiàn)形式化方法出現(xiàn)面向服務(wù)開發(fā)軟件構(gòu)件化出現(xiàn);J2EE誕生,CORBA誕生搜狐、阿里等成立智能化軟件開發(fā)程序自動生成;軟件庫挖掘協(xié)作化工業(yè)化工程化時代特征時期開發(fā)模式個人小組企業(yè)眾包面向?qū)ο箝_發(fā)C++/Java/C#誕生;UML出現(xiàn);軟件質(zhì)量管控體系(COCOMO);互聯(lián)網(wǎng)誕生現(xiàn)代云與移動服務(wù)開發(fā)云計算出現(xiàn)并流行智能機(jī)流行,移動服務(wù)出現(xiàn)理論完善及普及應(yīng)用“無體系結(jié)構(gòu)”概念和理論體系形成系統(tǒng)=子程序+子程序構(gòu)件+連接對象+對象服務(wù)+服務(wù)總線算法+數(shù)據(jù)結(jié)構(gòu)軟件體系結(jié)構(gòu)的發(fā)展史16軟件體系結(jié)構(gòu)的發(fā)展史1968北大西洋公約組織(NATO)會議上第一次出現(xiàn)詞語“Software

Architecture(軟件體系結(jié)構(gòu)/軟件架構(gòu))”體系結(jié)構(gòu)出現(xiàn)(1968)概念體系和理論體系形成理論完善和普及應(yīng)用17軟件體系結(jié)構(gòu)的發(fā)展史1968北大西洋公約組織(NATO)會議上第一次出現(xiàn)詞語“Software

Architecture(軟件體系結(jié)構(gòu)/軟件架構(gòu))”軟件體系結(jié)構(gòu)的定義逐漸明確;相關(guān)體系結(jié)構(gòu)書籍出版;體系結(jié)構(gòu)風(fēng)格、描述方法、演化及重用等研究方向成為軟件工程領(lǐng)域的研究熱點(diǎn)。體系結(jié)構(gòu)出現(xiàn)(1968)概念體系和理論體系形成理論完善和普及應(yīng)用18軟件體系結(jié)構(gòu)的發(fā)展史1968北大西洋公約組織(NATO)會議上第一次出現(xiàn)詞語“Software

Architecture(軟件體系結(jié)構(gòu)/軟件架構(gòu))”軟件體系結(jié)構(gòu)的定義逐漸明確;相關(guān)體系結(jié)構(gòu)書籍出版;體系結(jié)構(gòu)風(fēng)格、描述方法、演化及重用等研究方向成為軟件工程領(lǐng)域的研究熱點(diǎn)。體系結(jié)構(gòu)出現(xiàn)(1968)概念體系和理論體系形成理論完善和普及應(yīng)用1999年,1st

IFIP軟件架構(gòu)會議召開;Markup架構(gòu)描述語言提出,支持廣泛的架構(gòu)模型共享;軟件產(chǎn)品線被提出,吸引了大量的大型企業(yè)的關(guān)注;IEEE1471-2000發(fā)布,為軟件架構(gòu)的普及應(yīng)用制定了標(biāo)準(zhǔn)化規(guī)范。19本節(jié)內(nèi)容軟件體系結(jié)構(gòu)的發(fā)展史1軟件體系結(jié)構(gòu)定義2軟件體系結(jié)構(gòu)的研究活動3軟件體系結(jié)構(gòu)的作用4系統(tǒng)草圖構(gòu)件集合設(shè)計決策…定義駁雜多端組成派決策派組成派關(guān)注于軟件本身,將軟件體系結(jié)構(gòu)看做構(gòu)件和交互的集合。有哪些部分組成,如何組成,強(qiáng)調(diào)整體結(jié)構(gòu)和配置決策派關(guān)注于軟件架構(gòu)中的實(shí)體(人),將軟件體系結(jié)構(gòu)視為一系列重要設(shè)計決策的集合。人員意志和決策,注重架構(gòu)風(fēng)格和模式的選擇軟件體系結(jié)構(gòu)定義1992年,DE.Perry與AL.Wolf對軟件架構(gòu)進(jìn)行了闡述,認(rèn)為軟件體系結(jié)構(gòu)是具有一定形式的結(jié)構(gòu)化元素。這一定義在大多數(shù)定義中被廣泛繼承。【PerryandWolf,1992】

Asetofarchitectural(or,ifyouwill,design)elementsthathaveaparticularform.PerryandWolfdistinguishbetween

processingelements,dataelements,andconnectingelements,andthistaxonomybyandlargepersiststhroughmostotherdefinitionsandapproaches.

元素(elements)是指具有一定形式的結(jié)構(gòu)化元素。包括處理元素(processingelements)、數(shù)據(jù)元素(dataelements)和連接元素(connectingelements)。處理元素負(fù)責(zé)對數(shù)據(jù)進(jìn)行加工數(shù)據(jù)元素是被加工的信息連接元素把體系結(jié)構(gòu)的不同部分組合連接起來軟件體系結(jié)構(gòu)定義-組成派定義1993年,DGarlan,MShaw提出軟件架構(gòu)包括component、connector和constraint三大要素?!?/p>

DGarlan,MShaw,1993】...beyondthealgorithmsanddatastructuresofthecomputation;designingandspecifyingtheoverallsystemstructureemergesasanewkindofproblem.Structuralissuesincludegrossorganizationandglobalcontrolstructure;protocolsforcommunication,synchronization,anddataaccess;assignmentoffunctionalitytodesignelements;

physicaldistribution;

composition

ofdesignelements;scalingandperformance;andselection

amongdesignalternatives.“

軟件設(shè)計過程中的一個層次,超越了計算過程中的算法設(shè)計和數(shù)據(jù)結(jié)構(gòu)設(shè)計。組件(component)可以是一組代碼,也可以是獨(dú)立的程序;連接件(connector)用于表示組件之間的相互關(guān)系,可以是過程調(diào)用、管道和消息等;約束(constraint)為組件連接時的條件。軟件體系結(jié)構(gòu)定義-組成派定義

2011年,ISO/IEC/IEEE標(biāo)準(zhǔn)中定義軟件架構(gòu)是某一系統(tǒng)的基本組織結(jié)構(gòu),其內(nèi)容包括軟件構(gòu)件,構(gòu)件間的聯(lián)系,構(gòu)件與其環(huán)境間的聯(lián)系,以及指導(dǎo)上述內(nèi)容設(shè)計與演化的原理。。。【ISO/IEC/IEEE,2011】ABSTRACTISO/IEC/IEEE42010:2011addressesthecreation,analysisandsustainmentofarchitecturesofsystemsthroughtheuseofarchitecturedescriptions.Aconceptualmodelofarchitecturedescriptionisestablished.Therequiredcontentsofanarchitecturedescriptionarespecified.Architectureviewpoints,architectureframeworksandarchitecturedescriptionlanguagesareintroducedforcodifyingconventionsandcommonpracticesofarchitecturedescription.Therequiredcontentofarchitectureviewpoints,architectureframeworksandarchitecturedescriptionlanguagesisspecified.AnnexesprovidethemotivationandbackgroundforkeyconceptsandterminologyandexamplesofapplyingISO/IEC/IEEE42010:2011.

軟件體系結(jié)構(gòu)定義-組成派定義

1999年,

Booch,RumbaughandJacobson從另一個角度對軟件架構(gòu)的概念進(jìn)行了全新的詮釋,認(rèn)為架構(gòu)是一系列重要決策的集合?!綛ooch,1999】Anarchitectureisthesetofimportant

decisionsabouttheorganizationofasoftwaresystem,theselectionofthestructuralelementsandtheirinterfacesbywhichthesystemiscomposed,togetherwiththeirbehaviorasspecifiedinthecollaborationsamongthoseelements,thecompositionofthesestructuralandbehavioralelementsintoprogressivelylargersubsystems,andthe

architecturalstyle

thatguidesthisorganizationcomposition.—theseelementsandtheirinterfaces,theircollaborations,andtheircomposition.

一系列重要決策的集合關(guān)于:軟件系統(tǒng)的組織;組成系統(tǒng)的結(jié)構(gòu)元素和它們之間的接口,及這些元素相互協(xié)作時所體現(xiàn)的行為;如何組合這些元素,使它們逐漸合成為更大的子系統(tǒng);指導(dǎo)這一軟件系統(tǒng)組織的架構(gòu)風(fēng)格。軟件體系結(jié)構(gòu)定義-決策派定義【Anton,2005】軟件架構(gòu)是架構(gòu)層次上所有設(shè)計決策的集合體,這些設(shè)計決策與以下內(nèi)容有關(guān):架構(gòu)改造的影響、原理、設(shè)計準(zhǔn)則、設(shè)計約束以及附加需求。

【Kruchten,2006】軟件體系結(jié)構(gòu)是設(shè)計決策+設(shè)計(設(shè)計決策的推理過程)。

軟件體系結(jié)構(gòu)定義-決策派定義在Booch定義的基礎(chǔ)上,其他決策派定義產(chǎn)生。VivekKhare認(rèn)為軟件架構(gòu)是設(shè)計和構(gòu)建軟件應(yīng)用的科學(xué)和藝術(shù),這些軟件應(yīng)用滿足生命周期中用戶的各種需求。

AakashAhmad認(rèn)為軟件架構(gòu)是包含設(shè)計、演化、構(gòu)建配置的推理和構(gòu)件互連關(guān)系的高層抽象結(jié)構(gòu)。

AndreasRausch認(rèn)為軟件架構(gòu)是一個針對軟件改變的框架。

MuthuRajagopal認(rèn)為軟件架構(gòu)是能夠有效組合在一起的軟件和硬件構(gòu)件的集合,這些構(gòu)件組合后能滿足預(yù)期需求。

軟件體系結(jié)構(gòu)定義-其他定義業(yè)界還存在一些其他觀點(diǎn),從獨(dú)特的角度詮釋軟件體系結(jié)構(gòu)【CMU,2018】

基于DGarlan,MShaw的定義,我們可將軟件體系結(jié)構(gòu)的定義理解為:

軟件體系結(jié)構(gòu)=組件+連接件+約束

SoftwareArchitecture=Components+Connectors+Constrains組件:具有某種功能的可重用的軟件模塊單元,表示了系統(tǒng)中主要的計算單元和數(shù)據(jù)存儲。連接件:表示了組件之間的交互,簡單的連接件有:管道(pipe)、過程調(diào)用(procedure-call)、事件廣播(eventbroadcast)等。復(fù)雜的連接件有:客戶-服務(wù)器(client-server)通信協(xié)議,數(shù)據(jù)庫和應(yīng)用之間SQL連接等。約束:表示了組件和連接件的拓?fù)溥壿嫼图s束(constraint)。軟件體系結(jié)構(gòu)定義-總結(jié)28軟件體系結(jié)構(gòu)的發(fā)展史1軟件體系結(jié)構(gòu)定義2軟件體系結(jié)構(gòu)的研究活動3軟件體系結(jié)構(gòu)的目標(biāo)與作用4本節(jié)內(nèi)容29軟件體系結(jié)構(gòu)的研究活動-從建筑體系結(jié)構(gòu)看起基本的建筑單元都有哪些?有哪些實(shí)用、美觀、強(qiáng)度、造價合理、可復(fù)用的大粒度建筑單元,使建造出來的建筑更能滿足用戶的需求?建筑模塊怎樣搭配才合理?有哪些典型的建筑風(fēng)格?每種典型建筑(醫(yī)院、工廠、旅館)的典型結(jié)構(gòu)是什么樣子?需要什么樣的構(gòu)件?如何繪制建筑體系結(jié)構(gòu)的圖紙?如何快速節(jié)省的將圖紙變?yōu)閷?shí)物(即施工過程)?建筑完成之后,如何對其進(jìn)行恰當(dāng)程度的修改?重要模塊有了更改后,如何保證整棟建筑質(zhì)量不受影響?如何根據(jù)圖紙進(jìn)行質(zhì)量評估?30軟件體系結(jié)構(gòu)的研究活動-軟件體系結(jié)構(gòu)要解決的問題軟件的基本構(gòu)造單元是什么?這些構(gòu)造單元之間如何連接?最終形成何種樣式的拓?fù)浣Y(jié)構(gòu)?典型應(yīng)用領(lǐng)域的典型體系結(jié)構(gòu)是什么樣子?如何進(jìn)行軟件體系結(jié)構(gòu)的設(shè)計與實(shí)現(xiàn)?如果對已經(jīng)存在的軟件體系結(jié)構(gòu)進(jìn)行修改?使用何種工具來支持軟件體系結(jié)構(gòu)的設(shè)計?如何對軟件體系結(jié)構(gòu)進(jìn)行描述、分析和驗(yàn)證?31軟件體系結(jié)構(gòu)的研究活動-軟件體系結(jié)構(gòu)的研究內(nèi)容軟件體系結(jié)構(gòu)的建模與表示(Architecture

ModelingandDocumenting)軟件體系結(jié)構(gòu)風(fēng)格的研究(SoftwareArchitectureStyles)體系結(jié)構(gòu)描述語言(Architecture

DescriptionLanguage,ADL)軟件體系結(jié)構(gòu)的評價方法(Architecture

Evaluation)軟件產(chǎn)品線及特定領(lǐng)域軟件框架的研究(ProductlineandDSSA)動態(tài)軟件體系結(jié)構(gòu)。。。動態(tài)演化自適應(yīng)體系結(jié)構(gòu)——來源32自適應(yīng)過程面臨瓶頸軟件體系結(jié)構(gòu)1軟件體系結(jié)構(gòu)為考察自適應(yīng)系統(tǒng)提供了全面、系統(tǒng)、易于理解的模型軟件體系結(jié)構(gòu)有助于對自適應(yīng)系統(tǒng)動態(tài)演化的正確和有效評估基于體系結(jié)構(gòu)的軟件自適應(yīng)基于體系結(jié)構(gòu)的自適應(yīng)系統(tǒng)動態(tài)演化,就是將軟件變化映射為體系結(jié)構(gòu)變化。軟件體系結(jié)構(gòu)以實(shí)體顯性表示,作為系統(tǒng)動態(tài)演化的依據(jù)。21現(xiàn)有自適應(yīng)框架調(diào)整層次單一?,F(xiàn)有方法忽略了變化間關(guān)聯(lián)關(guān)系及變化對系統(tǒng)的潛在影響。32現(xiàn)有方法忽略變化特征與系統(tǒng)結(jié)構(gòu)特點(diǎn)。為解決軟件運(yùn)行環(huán)境開放性、動態(tài)性、多變性等引起系統(tǒng)頻繁變化的問題,對軟件提出了自適應(yīng)性要求。軟件體系結(jié)構(gòu)通過實(shí)體關(guān)聯(lián)描述組件間的交互關(guān)系,其被整個運(yùn)行環(huán)境共享,因此可作為觸發(fā)條件驅(qū)動軟件系統(tǒng)自適應(yīng)演化,對整個軟件系統(tǒng)進(jìn)行監(jiān)控,實(shí)現(xiàn)全局的適應(yīng)。軟件體系結(jié)構(gòu)的研究活動-動態(tài)演化自適應(yīng)體系結(jié)構(gòu)動態(tài)演化自適應(yīng)體系結(jié)構(gòu)——過程33基于體系結(jié)構(gòu)的軟件自適應(yīng)需要引入基本體系結(jié)構(gòu)生成器,負(fù)責(zé)從實(shí)際運(yùn)行的系統(tǒng)中不斷提取最新的軟件體系結(jié)構(gòu)信息,把系統(tǒng)自身的動態(tài)調(diào)整在體系結(jié)構(gòu)的抽象層面上得以表達(dá),引入演化執(zhí)行管理器負(fù)責(zé)在實(shí)際系統(tǒng)上執(zhí)行在軟件體系結(jié)構(gòu)層面表述的動態(tài)調(diào)整命令,實(shí)現(xiàn)軟件自適應(yīng)演化。運(yùn)行系統(tǒng)狀態(tài)管理器分析判斷模型管理器規(guī)劃決策器演化執(zhí)行管理器數(shù)據(jù)庫知識管理器基本體系結(jié)構(gòu)用戶管理需求變化自適應(yīng)層系統(tǒng)層用戶層設(shè)計制定或在線擴(kuò)展目標(biāo)知識庫領(lǐng)域信息庫效用信息庫軟件體系結(jié)構(gòu)自適應(yīng)動態(tài)演化軟件體系結(jié)構(gòu)的研究活動-動態(tài)演化自適應(yīng)體系結(jié)構(gòu)典型框架——RAINBOW34Rainbow框架由卡內(nèi)基·梅隆大學(xué)(CMU)的SWCheng團(tuán)隊于2004年提出,使用了基于外部模型的控制閉環(huán)來實(shí)現(xiàn)自適應(yīng)調(diào)整。該方法使用軟件體系結(jié)構(gòu)模型動態(tài)監(jiān)控系統(tǒng),對系統(tǒng)約束規(guī)則及運(yùn)行性能綜合分析,通過系統(tǒng)API重構(gòu)基礎(chǔ)設(shè)施,應(yīng)用于多種典型系統(tǒng)中自適應(yīng)調(diào)整穩(wěn)定性提升明顯。RAINBOW框架架構(gòu)設(shè)計圖體系結(jié)構(gòu)層系統(tǒng)層自適應(yīng)引擎約束評估器自適應(yīng)執(zhí)行模型管理器策略性能操作規(guī)則映射基礎(chǔ)設(shè)施重構(gòu)目標(biāo)系統(tǒng)API在典型系統(tǒng)Znn中自適應(yīng)過程響應(yīng)時間對比圖(右)在Libra視頻會議系統(tǒng)中多客戶自適應(yīng)過程穩(wěn)定性測試圖(左)軟件體系結(jié)構(gòu)的研究活動-動態(tài)演化自適應(yīng)體系結(jié)構(gòu)典型框架——自適應(yīng)軟件體系結(jié)構(gòu)方法35自適應(yīng)軟件體系結(jié)構(gòu)方法(SASA)由北京大學(xué)梅宏院士于2008年提出,該方法首先根據(jù)需求規(guī)約設(shè)計體系結(jié)構(gòu),并依據(jù)需求規(guī)約選擇與自適應(yīng)相關(guān)的質(zhì)量場景,然后按照體系結(jié)構(gòu)分析方法選擇適當(dāng)?shù)恼{(diào)整方案,最后根據(jù)方案對系統(tǒng)進(jìn)行構(gòu)件添加刪除和重配置等調(diào)整,實(shí)現(xiàn)軟件動態(tài)演化??烧{(diào)整的軟件系統(tǒng)自適應(yīng)支撐機(jī)制具有適應(yīng)性的軟件系統(tǒng)適應(yīng)性軟件體系結(jié)構(gòu)應(yīng)用程序體系結(jié)構(gòu)自適應(yīng)策略需求規(guī)約基于場景的自適應(yīng)分析和自適應(yīng)調(diào)整方案的確定體系結(jié)構(gòu)設(shè)計部署分析/調(diào)整SASA框架圖元素動作具體調(diào)整動作構(gòu)件添加和刪除創(chuàng)建或釋放容器實(shí)例替換替換整個構(gòu)件;替換構(gòu)件契約;釋放舊實(shí)例,并且創(chuàng)新新的實(shí)例構(gòu)件的約束添加、刪除、替換相應(yīng)的截取器連接子協(xié)議添加和刪除添加或刪除相應(yīng)的發(fā)送者和接收者,為傳輸層協(xié)議添加刪除傳輸者對協(xié)議的調(diào)整調(diào)整協(xié)議的實(shí)現(xiàn)配置重配置上述調(diào)整的不同組合體系結(jié)構(gòu)層次的調(diào)整軟件體系結(jié)構(gòu)的研究活動-動態(tài)演化自適應(yīng)體系結(jié)構(gòu)未來工作36目前,基于體系結(jié)構(gòu)的自適應(yīng)軟件動態(tài)演化技術(shù)以成功應(yīng)用于多種大型復(fù)雜系統(tǒng)(如電子商務(wù)系統(tǒng)、CPS系統(tǒng)等)。未來,結(jié)合最新理念擴(kuò)寬研究思路,與新興技術(shù)交叉融合實(shí)現(xiàn)廣泛應(yīng)用。電子商務(wù)系統(tǒng)物理信息融和系統(tǒng)擴(kuò)寬研究思路,應(yīng)對不確定性交叉融合新技術(shù),應(yīng)對群體自適應(yīng)強(qiáng)化學(xué)習(xí)統(tǒng)計分析概率理論社群智能數(shù)據(jù)流推理PBAAM框架MADAM框架技術(shù)成熟,應(yīng)用廣泛推動發(fā)展,展望未來應(yīng)用軟件體系結(jié)構(gòu)的研究活動-動態(tài)演化自適應(yīng)體系結(jié)構(gòu)37本節(jié)內(nèi)容軟件體系結(jié)構(gòu)的發(fā)展史1軟件體系結(jié)構(gòu)定義2軟件體系結(jié)構(gòu)的研究活動3軟件體系結(jié)構(gòu)的作用438項(xiàng)目規(guī)劃考慮項(xiàng)目的規(guī)模、復(fù)雜度、可行性等;需求分析利用SA,支持用戶、項(xiàng)目負(fù)責(zé)人、系統(tǒng)架構(gòu)師、程序員、測試人員之間進(jìn)行交流和協(xié)商;從不同視角審查備選的SA,對得出的意見進(jìn)行綜合,找出合理的平衡方案;從用戶角度考慮未來的需求變化,并使SA能夠提前支持這些變化;軟件實(shí)現(xiàn)各開發(fā)團(tuán)隊按照SA規(guī)定的“構(gòu)件及其之間的相互關(guān)系”進(jìn)行開發(fā),保證最終得到的系統(tǒng)與最初的SA一致;維護(hù)與升級把SA文檔作為維護(hù)和升級的重要依據(jù)。軟件設(shè)計參考經(jīng)典SA風(fēng)格,設(shè)計系統(tǒng)體系結(jié)構(gòu)模型,推敲其存在的缺陷和替代方案,并進(jìn)行評估;進(jìn)而逐步細(xì)化SA,并對定型后的SA作文檔化工作;測試與評審根據(jù)SA的約束條件,對軟件的質(zhì)量屬性進(jìn)行測試。軟件生命周期軟件體系結(jié)構(gòu)作用軟件體系結(jié)構(gòu)的作用-軟件生命周期中的作用39軟件體系結(jié)構(gòu)的作用-SAisveryimportant

借用艾茲格·迪科斯徹的話:

“…thelargertheproject,themoreessentialthestructuring!”(1968)

圖靈獎獲得者:EdsgerDijkstra40Reference【PerryandWolf,1992】PerryDE,WolfAL.FoundationsfortheStudyofSoftwareArchitecture[J].ACMSIGSOFTSoftwareEngineeringNotes,1992,17(4):40-52.【DGarlan,MShaw,1993】DGarlan,MShaw.AnintroductiontoSoftwareArchitecture[M].Advancesinsoftwareengineeringandknowledgeengineering,1993:1-39.【ISO/IEC/IEEE,2011】ISO/IEC/IEEE42010:2011

[P42010/D1],Systemsandsoftwareengineering—Architecturedescription,2011.【Booch,1999】GBooch,JRumbaugh,IJacobson.TheUnifiedModelingLanguageUserGuide[M].2nded.AddisonWesley,1999.【Anton,2005】AJanse,JBosch.SoftwareArchitectureasaSetofArchitecturalDesignDecision[C].Proceedingsofthe5thworkingIEEE/IFIPConferenceonSoftwareArchitecture.IEEE,2005:109-120.【Kruchten,2006】P

Kruchten,PLago,etal.Buildingupandreasoningaboutarchitecturalknowledge[C].ProceedingoftheInternationalConferenceontheQualityofSoftwareArchitectures.Springer,Berlin,Heidelberg,2006:43-58.【CMU,2018】CommunitySoftwareArchitectureDefinitions[EB/OL]./architecture/start/community.cfm,201841歡迎各位同學(xué)交流討論計算機(jī)科學(xué)與技術(shù)學(xué)院微信數(shù)據(jù)流體系結(jié)構(gòu)風(fēng)格Data

Flow

Style軟件體系結(jié)構(gòu)課程組本節(jié)內(nèi)容軟件體系結(jié)構(gòu)風(fēng)格1數(shù)據(jù)流體系結(jié)構(gòu)風(fēng)格243批處理體系結(jié)構(gòu)風(fēng)格3管道-過濾器體系結(jié)構(gòu)風(fēng)格444強(qiáng)調(diào)垂直高度和石骨架結(jié)構(gòu)優(yōu)美的彩色玻璃窗畫直刺蒼穹的尖頂叢生的圓柱飛扶壁有龍骨的拱頂尖頂形狀的圓弧拱門強(qiáng)調(diào)雕塑的細(xì)節(jié)軟件體系結(jié)構(gòu)風(fēng)格-從“建筑風(fēng)格”開始哥特式源于12世紀(jì)的法國,并持續(xù)到16世紀(jì)45結(jié)構(gòu)清晰、規(guī)則,遵循簡單的形狀和數(shù)學(xué)比例簡單的圓柱、對稱,區(qū)別于日后不規(guī)則的、復(fù)雜的多面建筑古典風(fēng)格的圓柱、完美的幾何設(shè)計和半球形的屋頂軟件體系結(jié)構(gòu)風(fēng)格-從“建筑風(fēng)格”開始文藝復(fù)興式

發(fā)源于意大利弗洛倫薩,借鑒和發(fā)揚(yáng)了古希臘和古羅馬建筑思想

。軟件體系結(jié)構(gòu)風(fēng)格-從“建筑風(fēng)格”開始46Architecturalstyleconstitutesamodeofclassifyingarchitecturelargelybymorphologicalcharacteristicsintermsofform,techniques,materials,etc.(建筑風(fēng)格等同于建筑體系結(jié)構(gòu)的一種可分類的模式,通過諸如外形、技術(shù)和材料等形態(tài)上的特征加以區(qū)分)。“風(fēng)格”——經(jīng)過長時間的實(shí)踐,被證明具有良好的工藝可行性、性能與實(shí)用性,并可直接用來遵循與模仿(復(fù)用)。軟件體系結(jié)構(gòu)風(fēng)格-回到“軟件體系結(jié)構(gòu)風(fēng)格”47describesaclassofarchitectures(描述一類體系結(jié)構(gòu))independentontheproblems(獨(dú)立于實(shí)際問題,強(qiáng)調(diào)了軟件系統(tǒng)中通用的組織結(jié)構(gòu))foundrepeatedlyinpractice(在實(shí)踐中被多次應(yīng)用)apackageofdesigndecisions(是若干設(shè)計思想的綜合)has

knownpropertiesthatpermitreuse(具有已經(jīng)被熟知的特性,并且可以復(fù)用)Asoftwarearchitecturestyle

(軟件體系結(jié)構(gòu)風(fēng)格)軟件體系結(jié)構(gòu)風(fēng)格-定義48Architecturestyle={

Component/Connectorvocabulary,

Topology,

SemanticConstraints

}描述特定領(lǐng)域中軟件系統(tǒng)家族的組織方式的慣用模式(idiomaticparadigm),反映了領(lǐng)域中眾多系統(tǒng)所共有的結(jié)構(gòu)和語義特性,并指導(dǎo)如何將各個模塊和子系統(tǒng)有效地組織成一個完整的系統(tǒng)。49數(shù)據(jù)流批處理管道-過濾器虛擬機(jī)解釋器基于規(guī)則的系統(tǒng)調(diào)用-返回主程序-子過程OO分層以數(shù)據(jù)為中心倉庫黑板獨(dú)立構(gòu)件事件系統(tǒng)隱式調(diào)用顯式調(diào)用進(jìn)程通信軟件體系結(jié)構(gòu)風(fēng)格-Taxonomy

of

styles本節(jié)內(nèi)容軟件體系結(jié)構(gòu)風(fēng)格1數(shù)據(jù)流體系結(jié)構(gòu)風(fēng)格250批處理體系結(jié)構(gòu)風(fēng)格3管道-過濾器體系結(jié)構(gòu)風(fēng)格4數(shù)據(jù)流體系結(jié)構(gòu)風(fēng)格-直觀理解51數(shù)據(jù)流處理處理:數(shù)據(jù)到達(dá)即被激活,無數(shù)據(jù)時不工作一個直觀實(shí)例:在MSExcel中,改變某個單元格的值,則依賴于該單元格的其他單元格的值也會隨之改變.數(shù)據(jù)流體系結(jié)構(gòu)風(fēng)格-特征52Adataflowsystemisoneinwhichtheavailabilityofdatacontrolsthecomputation(數(shù)據(jù)的可用性決定著處理<計算單元>是否執(zhí)行)thestructureofthedesignisdecidedbyorderlymotionofdatafromprocesstoprocess(系統(tǒng)結(jié)構(gòu)由數(shù)據(jù)在各處理之間的有序移動決定)inapuredataflowsystem,thereisnootherinteractionbetweenprocesses(在純數(shù)據(jù)流系統(tǒng)中,處理之間除了數(shù)據(jù)交換沒有任何其他的交互)數(shù)據(jù)流體系結(jié)構(gòu)風(fēng)格-基本構(gòu)件53<<Trigger>>Components:dataprocessingcomponents(基本構(gòu)件:數(shù)據(jù)處理)Interfacesareinputportsandoutputports(構(gòu)件接口:輸入端口和輸出端口),Inputportsreaddata;outputportswritedataComputationalmodel:readdatafrominputports,compute,writedatatooutputports(計算模型:從輸入端口讀數(shù),經(jīng)過計算/處理,然后寫到輸出端口)DataArrivalIOReadWriteComp輸入端口輸出端口54Connectors:dataflow(stream)(連接件:數(shù)據(jù)流)Unidirectional,usuallyasynchronous,buffered(單向、通常是異步、有緩沖)Interfacesarereaderandwriterroles(接口角色:reader和writer)Computationalmodel(計算模型:把數(shù)據(jù)從一個處理的輸出端口傳送到另一個處理的輸入端口)IOReadWriteComp2IOReadWriteComp1ReaderWriter<<Role>><<databuffering>>數(shù)據(jù)流體系結(jié)構(gòu)風(fēng)格-連接件數(shù)據(jù)流體系結(jié)構(gòu)風(fēng)格-PatternsofDataFlowinSystems55nearlylineardataflowsystems近似線性數(shù)據(jù)流highlyconstrainedcyclicstructures在限度內(nèi)的循環(huán)數(shù)據(jù)流Data

can

flow

in

free

patterns數(shù)據(jù)自由流動√√數(shù)據(jù)流體系結(jié)構(gòu)風(fēng)格-典型數(shù)據(jù)流風(fēng)格56ProcessControl(過程控制)BatchSequential(批處理)Pipe

and

Filter(管道-過濾器)本節(jié)內(nèi)容軟件體系結(jié)構(gòu)風(fēng)格1數(shù)據(jù)流體系結(jié)構(gòu)風(fēng)格257批處理體系結(jié)構(gòu)風(fēng)格3管道-過濾器體系結(jié)構(gòu)風(fēng)格458將用戶輸入的紙帶上的數(shù)據(jù)寫入磁帶將磁帶作為計算設(shè)備的輸入,進(jìn)行計算,得到輸出結(jié)果打印計算結(jié)果批處理體系結(jié)構(gòu)風(fēng)格-直觀結(jié)構(gòu)(1//2)59批處理體系結(jié)構(gòu)風(fēng)格-直觀結(jié)構(gòu)(2//2)批處理體系結(jié)構(gòu)風(fēng)格-定義(1/2)60Components(processingsteps)areindependentprograms

(基本構(gòu)件:獨(dú)立的應(yīng)用程序)Connectorsaresometypeofmedia-traditionallytape(連接件:某種類型的媒質(zhì))Topology:Connectorsdefinedataflowgraph(連接件定義了相應(yīng)的數(shù)據(jù)流圖,表達(dá)拓?fù)浣Y(jié)構(gòu))61Processingstepsareindependentprograms(每個處理步驟是一個獨(dú)立的程序)Eachsteprunstocompletionbeforenextstepstarts(每一步必須在前一步結(jié)束后才能開始)Datatransmittedasawholebetweensteps(數(shù)據(jù)必須是完整的,以整體的方式傳遞)批處理體系結(jié)構(gòu)風(fēng)格-定義(2/2)62批處理體系結(jié)構(gòu)風(fēng)格實(shí)例:基于Eclipse的代碼重復(fù)檢測工具批處理體系結(jié)構(gòu)風(fēng)格-應(yīng)用實(shí)例(1/2)63基于Eclipse的代碼重復(fù)檢測工具批處理體系結(jié)構(gòu)風(fēng)格-應(yīng)用實(shí)例(2/2)本節(jié)內(nèi)容軟件體系結(jié)構(gòu)風(fēng)格1數(shù)據(jù)流體系結(jié)構(gòu)風(fēng)格264批處理體系結(jié)構(gòu)風(fēng)格3管道-過濾器體系結(jié)構(gòu)風(fēng)格465自來水處理中的Pipe-and-Filter結(jié)構(gòu)管道-過濾器體系結(jié)構(gòu)風(fēng)格-直觀結(jié)構(gòu)(1//2)66管道-過濾器體系結(jié)構(gòu)風(fēng)格-直觀結(jié)構(gòu)(2//2)67場境:數(shù)據(jù)源源不斷的產(chǎn)生,系統(tǒng)需要對這些數(shù)據(jù)進(jìn)行若干處理(分析、計算、轉(zhuǎn)換等)。解決方案:把系統(tǒng)分解為幾個序貫的處理步驟,這些步驟之間通過數(shù)據(jù)流連接,一個步驟的輸出是另一個步驟的輸入;每個處理步驟由一個過濾器構(gòu)件(Filter)實(shí)現(xiàn);處理步驟之間的數(shù)據(jù)傳輸由管道(Pipe)負(fù)責(zé)。每個處理步驟(過濾器)都有一組輸入和輸出,過濾器從管道中讀取輸入的數(shù)據(jù)流,經(jīng)過內(nèi)部處理,然后產(chǎn)生輸出數(shù)據(jù)流并寫入管道中。管道-過濾器體系結(jié)構(gòu)風(fēng)格-定義(1//3)68Components:Filters—processdatastreams(構(gòu)件:過濾器,處理數(shù)據(jù)流)Afilterencapsulatesaprocessingstep(algorithmorcomputation)(一個過濾器封裝了一個處理步驟)Datasourceanddataend/sinkareparticularfilters(數(shù)據(jù)源點(diǎn)和數(shù)據(jù)終止點(diǎn)可以看作是特殊的過濾器)Connectors:Apipeconnectsasourceandaendfilter(連接件:管道,連接一個源和一個目的過濾器)PipesmovedatafromafilteroutputtoafilterinputDatamaybeastreamofASCIIcharactersTopology:ConnectorsdefinedataflowgraphStyleinvariants:Filtersareindependent管道-過濾器體系結(jié)構(gòu)風(fēng)格-定義(2//3)69Incrementallytransformdatafromthesourcetothesink(遞增的讀取和消費(fèi)數(shù)據(jù)流),數(shù)據(jù)到來時便被處理,不是收集然后處理,即在輸入被完全消費(fèi)之前,輸出便產(chǎn)生了。管道-過濾器體系結(jié)構(gòu)風(fēng)格-定義(3/3)70Incrementallytransformsomeofthesourcedataintosinkdata(目標(biāo):將源數(shù)據(jù)變換成目標(biāo)數(shù)據(jù))Streamtostreamtransformation(從“數(shù)據(jù)流”→“數(shù)據(jù)流”的變換)Filter(過濾器)管道-過濾器體系結(jié)構(gòu)風(fēng)格-過濾器(1/3)71過濾器對數(shù)據(jù)流的五種變換類型增加/豐富data:adata:a+b刪減/濃縮data:adata:a-b轉(zhuǎn)換data:adata:a’合并data:adata:a+bdata:b分解data:adata:a+bdata:b通過計算和增加信息來豐富數(shù)據(jù)

通過濃縮和刪減來精煉數(shù)據(jù)通過改變數(shù)據(jù)表現(xiàn)方式來轉(zhuǎn)化數(shù)據(jù)將多個數(shù)據(jù)流合并為一個數(shù)據(jù)流將一個數(shù)據(jù)流分解為多個數(shù)據(jù)管道-過濾器體系結(jié)構(gòu)風(fēng)格-過濾器(2/3)72nocontextinprocessingstreams(無上下文信息)nostatepreservationbetweeninstantiations(不保留狀態(tài))noknowledgeofupstream/downstreamfilters(對其他過濾器無任何了解)Filtersareindependententities.管道-過濾器體系結(jié)構(gòu)風(fēng)格-過濾器(3/3)73Onewayflowfromonedatasourcetoonedatasink(單向流)Apipemayimplementabuffer(可能具有緩沖區(qū))Pipesformdatatransmissiongraph(管道形成傳輸圖)不同的管道中流動的數(shù)據(jù)流,可能具有不同的數(shù)據(jù)格式,數(shù)據(jù)在流過每一個過濾器時,被過濾器進(jìn)行了豐富、精練、轉(zhuǎn)換、融合、分解等操作,因而發(fā)生了變化。Pipes:movedatafromafilter'soutputtoafilter'sinput(ortoadeviceorfile).管道-過濾器體系結(jié)構(gòu)風(fēng)格-管道(1/2)74管道-過濾器體系結(jié)構(gòu)風(fēng)格-管道(2/2)75Compiler

(編譯器)Unixpipes(Unix管道)Imageprocessing(圖像處理)Signalprocessing(信號處理)Voiceandvideostreaming(聲音與圖像處理)…管道-過濾器體系結(jié)構(gòu)風(fēng)格-應(yīng)用實(shí)例76使構(gòu)件具有良好的隱蔽性和高內(nèi)聚、低耦合的特點(diǎn),可將整個系統(tǒng)的輸入/輸出行為看成多個過濾器的行為的簡單合成;支持軟件復(fù)用,只要提供適合在兩個過濾器之間傳送的數(shù)據(jù),任何兩個過濾器都可被連接起來系統(tǒng)維護(hù)和增強(qiáng)系統(tǒng)性能簡單,新的過濾器可以添加到現(xiàn)有系統(tǒng)中來,舊的可以被改進(jìn)的過濾器替換掉允許對一些如吞吐量、死鎖等屬性的分析支持并行執(zhí)行:每個過濾器是作為一個單獨(dú)的任務(wù)完成,因此可與其它任務(wù)并行執(zhí)行。管道-過濾器體系結(jié)構(gòu)風(fēng)格-Advantages77不適合處理交互的應(yīng)用在早期對交互應(yīng)用需求不高的情況下提出當(dāng)需要增量地顯示改變時,這個問題尤為嚴(yán)重系統(tǒng)性能不高,并增加了編寫過濾器的復(fù)雜性數(shù)據(jù)傳輸缺乏通用標(biāo)準(zhǔn),每個過濾器都增加了解析和合成數(shù)據(jù)的工作絕大部分處理時間消耗在格式轉(zhuǎn)換上不適用于需要大量共享數(shù)據(jù)的應(yīng)用設(shè)置管道-過濾器體系結(jié)構(gòu)風(fēng)格-Disadvantages78把任務(wù)分解成為一系列固定順序的計算單元&彼此間只通過數(shù)據(jù)傳遞交互批處理VS管道-過濾器79BatchSequentialPipe-and-Filtertotal(整體傳遞數(shù)據(jù))coarsegrained(構(gòu)件粒度較大)highlatency(延遲高,實(shí)時性差)noconcurrency(無并發(fā))incremental(增量)finegrained(構(gòu)件粒度較小)resultsstartsprocessing(實(shí)時性好)concurrencypossible(可并發(fā))批處理VS管道-過濾器8080計算機(jī)科學(xué)與技術(shù)學(xué)院微信軟件體系結(jié)構(gòu)—調(diào)用/返回風(fēng)格軟件體系結(jié)構(gòu)課程組本節(jié)內(nèi)容調(diào)用/返回風(fēng)格1風(fēng)格變種282課程總結(jié)3調(diào)用/返回風(fēng)格主程序/子程序風(fēng)格經(jīng)典的編程范式:功能分解面向?qū)ο?抽象數(shù)據(jù)類型(ADT)信息(表示,方法方法)隱藏層次結(jié)構(gòu)每一層只能與其直接相鄰的鄰居進(jìn)行通信其他客戶端/服務(wù)器……調(diào)用/返回風(fēng)格主程序/子程序風(fēng)格單線程控制,劃分為若干處理步驟功能模塊:把步驟集成至模塊中抽象數(shù)據(jù)類型(ADT)操作和數(shù)據(jù)綁定在一起,隱藏實(shí)現(xiàn)和其他秘密面向?qū)ο蠓椒ǎ▌討B(tài)綁定),多態(tài)(子類),重用(繼承)對象活動于不同的進(jìn)程/線程(分布式對象)CS結(jié)構(gòu)、分層風(fēng)格組件多個接口,二進(jìn)制兼容,高級中間件主程序/子程序風(fēng)格主程序/子程序風(fēng)格Problem:Thispatternissuitableforapplicationsinwhichthecomputationcanappropriatelybedefinedviaahierarchyofproceduredefinitions.Context:Manyprogramminglanguagesprovidenaturalsupportfordefiningnestedcollectionsofproceduresandforcallingthemhierarchically.Theselanguagesoftenallowcollectionsofprocedurestobegroupedintomodules,therebyintroducingname-spacelocality.Theexecutionenvironmentusuallyprovidesasinglethreadofcontrolinasinglenamespace.Solution:Systemmodel:callanddefinitionhierarchy,subsystemsoftendefinedviamodularityComponents:proceduresandexplicitlyvisibledataConnectors:procedurecallsandexplicitdatasharingControlstructure:singlethread模塊分解ParnasHidesecrets.OK,what’sa“secret”?RepresentationofdataPropertiesofadevice,otherthanrequiredpropertiesMechanismsthatsupportpoliciesTrytolocalizefuturechangeHidesystemdetailslikelytochangeindependentlyExposeininterfacesassumptionsunlikelytochangeUsefunctionstoallowforchangeThey’reeasiertochangethanvisiblerepresentation封裝/信息隱藏Parnas:Hidesecrets(notjustrepresentations)Booch:Object’sbehaviorischaracterizedbyactionsthat

itsuffersandthatitrequiresPracticallyspeaking:Objecthasstateandoperations,butalsohasresponsibilityfortheintegrityofitsstateObjectisknownbyitsinterfaceObjectisprobablyinstantiatedfromatemplateObjecthasoperationstoaccessandalterstateandperhapsgeneratorTherearedifferentkindsofobjects(e.g.,actor,agent,server)數(shù)據(jù)抽象/面向?qū)ο髷?shù)據(jù)抽象/面向?qū)ο驪roblem:Thispatternissuitableforapplicationsinwhichacentralissueisidentifyingandprotectingrelatedbodiesofinformation,especiallyrepresentationinformation.Context:Numerousdesignmethodsprovidestrategiesforidentifyingnaturalobjects.Newerprogramminglanguagessupportvariousvariationsonthetheme,soifthelanguagechoiceorthemethodologyisfixed,thatwillstronglyinfluencetheflavorofthedecomposition.Solution:Systemmodel:localizedstatemaintenanceComponents:managers(e.g.,servers,objects,abstractdatatypes)Connectors:procedurecallControlstructure:decentralized,usuallysinglethread面向?qū)ο篌w系結(jié)構(gòu)的元素Encapsulation:Restrictaccesstocertaininformation

封裝:限制對某些信息的訪問Interaction:Viaprocedurecallsorsimilarprotocol

交互:通過過程調(diào)用或類似的協(xié)議Polymorphism:Choosethemethodatrun-time

多態(tài):在運(yùn)行時選擇具體的操作Inheritance:Shareddefinitionsoffunctionality

繼承:對共享的功能保持唯一的接口Reuseandmaintenance:Exploitencapsulationandlocalitytoincreaseproductivity

復(fù)用和維護(hù):利用封裝和聚合提高生產(chǎn)力面向?qū)ο蠓椒ǖ膯栴}ManagingmanyobjectsVastseaofobjectsrequiresadditionalstructuring

對象的海洋需要額外的結(jié)構(gòu)來容納HierarchicaldesignsuggestedbyBoochandParnasManagingmanyinteractionsSingleinterfacecanbelimiting&unwieldy(hence,“friends”)

單一的接口能力有限并且笨拙(于是,”友元”)Somelanguages/systemspermitmultipleinterfaces(innerclass,interface,multipleinheritance)DistributedresponsibilityforbehaviorMakessystemhardtounderstandInteractiondiagramsnowusedindesignCapturingfamiliesofrelateddesignsTypes/classesareoftennotenoughDesignpatternsasanemergingoff-shoot如何管理大的對象數(shù)據(jù)集PureO-OdesignleadstolargeflatsystemswithmanyobjectsSameoldproblemscanreappearHundredsofmodules=>hardtofindthingsNeedawaytoimposestructureNeedadditionalstructureanddisciplineStructuringoptionsLayers(whicharenotnecessarilyobjects)SupplementalindexHierarchicaldecomposition:bigobjectsandlittleobjects體系結(jié)構(gòu)風(fēng)格變種Client-serverObjectsareprocesses

進(jìn)程就是對象Asymmetric:clientknowsaboutservers,butnotviceversa

不對稱:客戶端知道服務(wù)器,反之則不然TieredElaborationonclient-server

C/S模式的擴(kuò)展Aggregationintorun-timestrata

運(yùn)行時層的結(jié)合Usuallysmallnumberoftiers

通常只有少量的層Components(later)MultipleinterfacesSpecialprotocolsfordynamicreconfiguration

支持動態(tài)配置的專門協(xié)議層次風(fēng)格案例-操作系統(tǒng)硬件OS應(yīng)用應(yīng)用應(yīng)用平臺層次案例-計算機(jī)網(wǎng)絡(luò)層次風(fēng)格Problem:Thispatternissuitableforapplicationsthatinvolvedistinctclassesofservicesthatcanbearrangedhierarchically.Oftentherearelayersforbasicsystem-levelservices,forutilitiesappropriatetomanyapplications,andforspecifictasksoftheapplication.Context:Frequently,eachclassofserviceisassignedtoalayerandseveraldifferentpatternsareusedtorefinethevariouslayers.Layersaremostoftenusedatthehigherlevelsofdesign,usingdifferentpatternstorefinethelayers.Solution:Systemmodel:hierarchyofopaquelayersComponents:usuallycomposites;compositesaremostoftencollectionsofproceduresConnectors:dependsonstructureofcomponents;oftenprocedurecallsunderrestrictedvisibility,mightalsobeclient/serverControlstructure:singlethread層次風(fēng)格參考結(jié)構(gòu)層次風(fēng)格特點(diǎn)每層為上一層提供服務(wù),使用下一層的服務(wù),只能見到與自己鄰接的層適當(dāng)時候(必不得已的時候),可以允許一定的越層操作大的問題分解為若干個漸進(jìn)的小問題,逐步解決,隱藏了很多復(fù)雜度修改一層,最多影響兩層,而通常只能影響上層。接口穩(wěn)固,則誰都不影響上層必須知道下層的身份,不能調(diào)整層次之間的順序?qū)訉酉嗾{(diào),影響性能

服務(wù)器客戶客戶客戶客戶客戶LocalLoopback客戶端/服務(wù)器風(fēng)格兩層C/S結(jié)構(gòu)三層C/S結(jié)構(gòu)B/S結(jié)構(gòu)(瀏覽器/服務(wù)器風(fēng)格)客戶端/服務(wù)器風(fēng)格兩層客戶端/服務(wù)器風(fēng)格C/S軟件體系結(jié)構(gòu)是基于資源不對等,且為實(shí)現(xiàn)共享而提出的,20世紀(jì)90年代成熟起來C/S體系結(jié)構(gòu)有三個主要組成部分:數(shù)據(jù)庫服務(wù)器、客戶應(yīng)用程序和網(wǎng)絡(luò)服務(wù)器(后臺)負(fù)責(zé)數(shù)據(jù)管理,客戶機(jī)(前臺)完成與用戶的交互任務(wù)?!芭挚蛻魴C(jī),瘦服務(wù)器”缺點(diǎn):對客戶端軟硬件配置要求較高,客戶端臃腫客戶端程序設(shè)計復(fù)雜數(shù)據(jù)安全性不好。客戶端程序可以直接訪問數(shù)據(jù)庫服務(wù)器。信息內(nèi)容和形式單一用戶界面風(fēng)格不一,使用繁雜,不利用推廣使用軟件維護(hù)與升級困難。每個客戶機(jī)上的軟件都需要維護(hù)兩層客戶端/服務(wù)器風(fēng)格與二層C/S結(jié)構(gòu)相比,增加了一個應(yīng)用服務(wù)器。整個應(yīng)用邏輯駐留在應(yīng)用服務(wù)器上,只有表示層存在于客戶機(jī)上:“瘦客戶機(jī)”應(yīng)用功能分為表示層、功能層、數(shù)據(jù)層三層表示層是應(yīng)用的用戶接口部分。通常使用圖形用戶界面功能層是應(yīng)用的主體,實(shí)現(xiàn)具體的業(yè)務(wù)處理邏輯數(shù)據(jù)層是數(shù)據(jù)庫管理系統(tǒng)。以上三層邏輯上獨(dú)立。通常只有表示層配置在客戶機(jī)中三層客戶端/服務(wù)器風(fēng)格B/S體系結(jié)構(gòu)是三層C/S體系結(jié)構(gòu)的特例客戶端有http瀏覽器即可為增強(qiáng)功能,往往還需要安裝flash、jvm及一些專用插件使用標(biāo)準(zhǔn)http/https協(xié)議,省卻很多麻煩只能“拉”,不能“推”客戶之間的通信只能通過服務(wù)器中轉(zhuǎn)對客戶機(jī)資源和其他網(wǎng)絡(luò)資源的利用受限B/S結(jié)構(gòu)的安全性較難控制(SQL注入攻擊…)B/S結(jié)構(gòu)的應(yīng)用系統(tǒng)在數(shù)據(jù)查詢等相應(yīng)速度上,要遠(yuǎn)遠(yuǎn)低于C/S體系結(jié)構(gòu)服務(wù)器的負(fù)荷大,客戶機(jī)的資源浪費(fèi)用jvm、flash、ActiveX等客戶端計算技術(shù)解決調(diào)用/返回風(fēng)格總結(jié)主程序/子程序風(fēng)格單線程控制,劃分為若干處理步驟功能模塊:把步驟集成至模塊中抽象數(shù)據(jù)類型(ADT)操作和數(shù)據(jù)綁定在一起,隱藏實(shí)現(xiàn)和其他秘密面向?qū)ο蠓椒ǎ▌討B(tài)綁定),多態(tài)(子類),重用(繼承)對象活動于不同的進(jìn)程/線程(分布式對象)CS結(jié)構(gòu)、分層風(fēng)格組件多個接口,二進(jìn)制兼容,高級中間件107107計算機(jī)科學(xué)與技術(shù)學(xué)院微信數(shù)據(jù)為中心的體系結(jié)構(gòu)風(fēng)格Data-centered

Style軟件體系結(jié)構(gòu)課程組Preview-TaxonomyofStyles109數(shù)據(jù)流批處理管道-過濾器虛擬機(jī)解釋器基于規(guī)則的系統(tǒng)調(diào)用-返回主程序-子過程OO分層以數(shù)據(jù)為中心倉庫黑板獨(dú)立構(gòu)件事件系統(tǒng)隱式調(diào)用顯式調(diào)用進(jìn)程通信本節(jié)內(nèi)容數(shù)據(jù)為中心的體系結(jié)構(gòu)風(fēng)格1倉庫體系結(jié)構(gòu)風(fēng)格2110黑板體系結(jié)構(gòu)風(fēng)格3數(shù)據(jù)為中心的體系結(jié)構(gòu)風(fēng)格-注冊表111注冊表(WindowsRegistry)注冊表中存在著系統(tǒng)的所有硬件和軟件配置信息,如啟動信息、用戶、BIOS、各類硬件、網(wǎng)絡(luò)、INI文件、驅(qū)動程序、應(yīng)用程序等;注冊表信息影響或控制系統(tǒng)/應(yīng)用軟件的行為,應(yīng)用軟件安裝/運(yùn)行/卸載時對其進(jìn)行添加/修改/刪除信息,以達(dá)到改變系統(tǒng)功能和控制軟件運(yùn)行的目的。112注冊表的結(jié)構(gòu)最初,硬件/軟件系統(tǒng)的配置信息均被各自保存在一個配置文件中(.ini);這些文件散落在系統(tǒng)的各個角落,很難對其進(jìn)行維護(hù);引入注冊表的思想,將所有.ini文件集中起來,形成共享倉庫,為系統(tǒng)運(yùn)行起到了集中的資源配置管理和控制調(diào)度的作用。應(yīng)用程序1應(yīng)用程序2硬件樹形注冊表(共享倉庫)App1.iniApp2.iniHardware.ini……數(shù)據(jù)為中心的體系結(jié)構(gòu)風(fēng)格-注冊表113剪貼板(Clipboard):一個用來進(jìn)行短時間的數(shù)據(jù)存儲并在文檔/應(yīng)用之間進(jìn)行數(shù)據(jù)傳遞和交換的軟件程序

剪貼板當(dāng)前數(shù)據(jù)1應(yīng)用1應(yīng)用2應(yīng)用n復(fù)制讀取復(fù)制讀取復(fù)制讀取當(dāng)前數(shù)據(jù)k…用來存儲帶傳遞和交換信息的公共區(qū)域(形成共享倉庫);不同的應(yīng)用程序通過該區(qū)域交換格式化的信息;訪問剪貼板的方式:copy&paste.數(shù)據(jù)為中心的體系結(jié)構(gòu)風(fēng)格-剪貼板114Data-centered

stylearchitecturesinvolveashareddatasourceapproachtoinformationpassing.數(shù)據(jù)為中心的體系結(jié)構(gòu)風(fēng)格-定義本節(jié)內(nèi)容數(shù)據(jù)為中心的體系結(jié)構(gòu)風(fēng)格1倉庫體系結(jié)構(gòu)風(fēng)格2115黑板體系結(jié)構(gòu)風(fēng)格3116Arepository

isacentralplacewheredataisstoredandmaintained.(倉庫是存儲和維護(hù)數(shù)據(jù)的中心場所)Inarepositorystyletherearetwoquitedistinctkindsofcomponents:Acentraldatastructurerepresentingthecurrentstate;(中心數(shù)據(jù)結(jié)構(gòu),表示當(dāng)前數(shù)據(jù)的狀態(tài))Acollectionofindependentcomponentsoperateonthecentraldatastore.(一組對中心數(shù)據(jù)進(jìn)行操作的獨(dú)立構(gòu)件)倉庫體系結(jié)構(gòu)風(fēng)格-基本概念117Connector:Interactionsbetweentherepositoryanditsexternalcomponents.(連接件:倉庫與獨(dú)立構(gòu)件之間的交互)Twomajormechanisms:(存在兩種交互機(jī)制)Database:thetypesoftransactionsinaninputstreamtriggerselectionofprocesstoexecute;(數(shù)據(jù)庫方式:輸入流中的事務(wù)類型觸發(fā)需要執(zhí)行的過程)Blackboard:thecurrentstateofthecentraldatastructureisthemaintriggerforselectingprocessestoexecute.(黑板結(jié)構(gòu):中心數(shù)據(jù)結(jié)構(gòu)的當(dāng)前狀態(tài)觸發(fā)并選擇需要執(zhí)行的過程)倉庫體系結(jié)構(gòu)風(fēng)格-基本概念118Problem:Thispatternissuitableforapplications

溫馨提示

  • 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

提交評論