工學(xué)軟體系結(jié)構(gòu)南理工概述_第1頁
工學(xué)軟體系結(jié)構(gòu)南理工概述_第2頁
工學(xué)軟體系結(jié)構(gòu)南理工概述_第3頁
工學(xué)軟體系結(jié)構(gòu)南理工概述_第4頁
工學(xué)軟體系結(jié)構(gòu)南理工概述_第5頁
已閱讀5頁,還剩42頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件體系結(jié)構(gòu)1.緒論趙學(xué)龍“建筑體系結(jié)構(gòu)”2020/1/22“計(jì)算機(jī)體系結(jié)構(gòu)”定義是1964年C.M.Amdahl在介紹IBM360系統(tǒng)時提出的:計(jì)算機(jī)體系結(jié)構(gòu)是程序員所看到的計(jì)算機(jī)的屬性,即概念性結(jié)構(gòu)與功能特性?!败浖w系結(jié)構(gòu)”的概念是20世紀(jì)90年代中期DavidGarlan和MaryShaw在《AnIntroductiontoSoftwareArchitecture》中提到的。2020/1/23軟件體系結(jié)構(gòu)是一個軟件系統(tǒng)的高層結(jié)構(gòu),它高度抽象,超越了算法和數(shù)據(jù)結(jié)構(gòu),基本著眼點(diǎn)是系統(tǒng)結(jié)構(gòu)和需求與實(shí)現(xiàn)之間的交互,是一個用于理解系統(tǒng)級目標(biāo)的框架。MaryShaw和DavidGarlan認(rèn)為,軟件體系結(jié)構(gòu)是軟件設(shè)計(jì)過程中,超越計(jì)算中的算法設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的一個層次。體系結(jié)構(gòu)問題包括各方面的組織和全局控制結(jié)構(gòu),通信協(xié)議同步,數(shù)據(jù)存取,給設(shè)計(jì)元素分配特定功能,設(shè)計(jì)元素的組織,規(guī)模和性能,在各設(shè)計(jì)方案間進(jìn)行選擇等。2020/1/24軟件體系結(jié)構(gòu)對軟件生命周期中的各個階段以及項(xiàng)目的管理有著重要的影響。體系結(jié)構(gòu)設(shè)計(jì)是基于需求分析的一個迭代的過程,這就不可避免地會與需求分析階段進(jìn)行交互。體系結(jié)構(gòu)的設(shè)計(jì)又是后續(xù)階段詳細(xì)設(shè)計(jì)的基礎(chǔ)。在開發(fā)階段,開發(fā)人員正確地理解系統(tǒng)的體系結(jié)構(gòu)是開發(fā)工作順利進(jìn)行的前提。在測試階段,體系結(jié)構(gòu)對測試起指導(dǎo)作用。在維護(hù)階段,維護(hù)中的大量時間都花費(fèi)在對現(xiàn)存代碼的理解上,如果原始的設(shè)計(jì)結(jié)構(gòu)能夠得到清楚和明確的表達(dá),特別是高層次的表達(dá),就可以大大減少花在這方面的時間,而如果不知道系統(tǒng)的體系結(jié)構(gòu)則使維護(hù)工作很難進(jìn)行。對于一些已經(jīng)存在但是不知其體系結(jié)構(gòu)的系統(tǒng),甚至有必要進(jìn)行體系結(jié)構(gòu)重構(gòu)。另外,體系結(jié)構(gòu)對于項(xiàng)目的組織管理也具有重要的意義,合理的體系結(jié)構(gòu)設(shè)計(jì)還有利于開發(fā)任務(wù)在開發(fā)人員之間的分配,有利于開發(fā)人員之間關(guān)系的協(xié)調(diào)。2020/1/25綜上所述,軟件體系結(jié)構(gòu)是整個軟件設(shè)計(jì)成功的基礎(chǔ)和關(guān)鍵所在:支持軟件體系結(jié)構(gòu)是軟件開發(fā)中各種角色之間進(jìn)行交流的手段軟件體系結(jié)構(gòu)是早期設(shè)計(jì)決策的體現(xiàn)軟件體系結(jié)構(gòu)制約著軟件的質(zhì)量屬性軟件體系結(jié)構(gòu)是可重用的模型軟件體系結(jié)構(gòu)影響著開發(fā)和維護(hù)組織的組織結(jié)構(gòu)軟件體系結(jié)構(gòu)為軟件系統(tǒng)的整個開發(fā)過程都提供了有力的2020/1/261、軟件體系結(jié)構(gòu)研究的主要內(nèi)容軟件體系結(jié)構(gòu)描述語言體系結(jié)構(gòu)描述構(gòu)造與表示體系結(jié)構(gòu)的設(shè)計(jì)、分析與驗(yàn)證體系結(jié)構(gòu)發(fā)現(xiàn)、演化與重用基于體系結(jié)構(gòu)的軟件開發(fā)方法特定領(lǐng)域的軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)支持工具軟件產(chǎn)品線體系結(jié)構(gòu)2020/1/27(1)軟件體系結(jié)構(gòu)描述語言軟件體系結(jié)構(gòu)描述語言(ArchitectureDescriptionLanguage,簡稱為ADL)是一種形式化語言,它在底層語義模型的支持下,為軟件系統(tǒng)的概念體系結(jié)構(gòu)建模提供了具體的語法和概念框架?;诘讓诱Z義的工具為軟件體系結(jié)構(gòu)的表示、分析、演化、細(xì)三個基本構(gòu)件、連接件和約束化、設(shè)計(jì)過程等提供支持,包括元素。主要的體系結(jié)構(gòu)描述語言有C2,UniCon,MetaH,Aesop,SADL,Rapide,Wright等。ADL的目的就是提供一種規(guī)范化的體系結(jié)構(gòu)描述,以便與人交流,并能夠用提供的工具對許多實(shí)例進(jìn)行分析。2020/1/28(2)體系結(jié)構(gòu)描述構(gòu)造與表示按照一定的描述方法,用體系結(jié)構(gòu)描述語言對體系結(jié)構(gòu)進(jìn)行說明的結(jié)果則稱為體系結(jié)構(gòu)的表示,而將描述體系結(jié)構(gòu)的過程稱為體系結(jié)構(gòu)構(gòu)造。在體系結(jié)構(gòu)描述方面,Kruchten提出的“4+1”模型是當(dāng)今軟件體系結(jié)構(gòu)描述的一個經(jīng)典范例,該模型由邏輯視圖、開發(fā)視圖、過程視圖和物理視圖組成,并通過場景將這四種視圖有機(jī)地結(jié)合起來,比較細(xì)致地描述了需求和體系結(jié)構(gòu)之間的關(guān)系。而Booch從UML的角度出發(fā)給出了一種由設(shè)計(jì)視圖、過程視圖、實(shí)現(xiàn)視圖和部署視圖,再加上一個用例視圖構(gòu)成的體系結(jié)構(gòu)描述模型。IEEE于1995年成立了體系結(jié)構(gòu)工作組,綜合了體系結(jié)構(gòu)描述研究的成果,并參考業(yè)界的體系結(jié)構(gòu)描述的實(shí)踐,起草了體系結(jié)構(gòu)描述標(biāo)準(zhǔn)IEEEP1471。2020/1/29(3)體系結(jié)構(gòu)的設(shè)計(jì)、分析與驗(yàn)證生成一個滿足軟件需求的體系結(jié)構(gòu)的過程即為體系結(jié)構(gòu)設(shè)計(jì)。體系結(jié)構(gòu)設(shè)計(jì)的本質(zhì)在于:將系統(tǒng)分解成相應(yīng)的組成成分,并將這些成分重新組裝成一個系統(tǒng)。軟件體系結(jié)構(gòu)設(shè)計(jì)是軟件設(shè)計(jì)中非常重要的一個環(huán)節(jié),軟件開發(fā)過程中只要需求和體系結(jié)構(gòu)確定之后,這個軟件基本上也就定型了。體系結(jié)構(gòu)設(shè)計(jì)有過程驅(qū)動方法和問題列表驅(qū)動方法。體系結(jié)構(gòu)設(shè)計(jì)研究的重點(diǎn)內(nèi)容之一是體系結(jié)構(gòu)風(fēng)格,體系結(jié)構(gòu)風(fēng)格在本質(zhì)上反映了一些特定的元素按照特定的方式組成一個特定的結(jié)構(gòu),該結(jié)構(gòu)應(yīng)有利于上下文環(huán)境中的特定問題的解決。體系結(jié)構(gòu)是對系統(tǒng)的高層抽象,并只對感興趣的屬性進(jìn)行建模。由于體系結(jié)構(gòu)是在軟件開發(fā)過程之初產(chǎn)生的,因此好的體系結(jié)構(gòu)可以減少和避免軟件錯誤的產(chǎn)生和維護(hù)階段的高昂代價。體系結(jié)構(gòu)是系統(tǒng)集成的藍(lán)本、系統(tǒng)驗(yàn)收的依據(jù),體系結(jié)構(gòu)本身需要分析與測試,以確定這樣的體系結(jié)構(gòu)是否滿足需求。比較重要的體系結(jié)構(gòu)分析(評估)方法有體系結(jié)構(gòu)權(quán)衡分析方法(ArchitectureTradeoffAnalysisMethod,簡稱為ATAM)、軟件體系結(jié)構(gòu)分析方法(SoftwareArchitectureAnalysisMethod,簡稱為SAAM)和中間設(shè)計(jì)積極評審法(ActiveReviewsforIntermediateDesign,簡稱為ARID)。2020/1/210(4)體系結(jié)構(gòu)發(fā)現(xiàn)、演化與重用對于一個已經(jīng)存在但是不知道其體系結(jié)構(gòu)的軟件系統(tǒng),對其進(jìn)行維護(hù)是一件很困難的事情,這時可以通過體系結(jié)構(gòu)發(fā)現(xiàn)來解決這個問題。體系結(jié)構(gòu)發(fā)現(xiàn)就是從己經(jīng)存在的軟件系統(tǒng)中提取出軟件體系結(jié)構(gòu),這可以幫助維護(hù)人員理解系統(tǒng),保證維護(hù)工作的順利進(jìn)行。由于系統(tǒng)需求、技術(shù)、環(huán)境、分布等因素的變化而最終導(dǎo)致軟件體系結(jié)構(gòu)的變動,稱為軟件體系結(jié)構(gòu)演化。而體系結(jié)構(gòu)重用是屬于比代碼重用更高級的設(shè)計(jì)重用。重用是軟件工程領(lǐng)域所倡導(dǎo)的有效技術(shù)之一,體系結(jié)構(gòu)級的重用會導(dǎo)致大批構(gòu)件的重用,不僅極大地提高了軟件開發(fā)的效率、降低了軟件開發(fā)的成本,而且對于提高多種軟件質(zhì)量都有很大的作用。2020/1/211(5)基于體系結(jié)構(gòu)的軟件開發(fā)方法在本質(zhì)上,軟件體系結(jié)構(gòu)是對軟件需求的一種抽象解決方案。在引入了體系結(jié)構(gòu)的軟件開發(fā)之后,應(yīng)用系統(tǒng)的構(gòu)造過程變?yōu)椤皢栴}定義——軟件需求——軟件體系結(jié)構(gòu)——軟件實(shí)現(xiàn)”,可以認(rèn)為軟件體系結(jié)構(gòu)架起了軟件需求和軟件設(shè)計(jì)之間的一座橋梁。在基于構(gòu)件和軟件體系結(jié)構(gòu)的軟件開發(fā)逐漸成為主流的開發(fā)方法的情況下,已經(jīng)出現(xiàn)了基于構(gòu)件的軟件工程。2020/1/212(6)特定領(lǐng)域的軟件體系結(jié)構(gòu)特定領(lǐng)域的軟件體系結(jié)構(gòu)(DomainSpecificSoftwareArchitecture,簡稱為DSSA)是一門以軟件重用為核心,研究軟件應(yīng)用框架的獲取、表示和應(yīng)用等問題的軟件方法學(xué)。DSSA將軟件體系結(jié)構(gòu)理論應(yīng)用到具體領(lǐng)域,因?yàn)樘囟I(lǐng)域的應(yīng)用具有相似的特征,所以可以借鑒領(lǐng)域中己經(jīng)成熟的軟件體系結(jié)構(gòu)。通過特定領(lǐng)域的軟件體系結(jié)構(gòu),可以實(shí)現(xiàn)解決方法在某個領(lǐng)域內(nèi)的重用。2020/1/213(7)軟件體系結(jié)構(gòu)支持工具幾乎每一種軟件體系結(jié)構(gòu)描述語言都有相應(yīng)的支持工具,如Unicon,Aesop等體系結(jié)構(gòu)支持環(huán)境,C2的支持環(huán)境ArchStudio等。除了軟件體系結(jié)構(gòu)描述語言的支持工具外,還有一些基于軟件體系結(jié)構(gòu)的開發(fā)方法的支持工具,例如ABC(architecture-basedcomponentcomposition)是一種基于軟件體系結(jié)構(gòu)面向構(gòu)件的軟件開發(fā)方法,ABC-Tool就是ABC方法的支持工具。另外還有一些支持體系結(jié)構(gòu)靜態(tài)分析的工具、體系結(jié)構(gòu)性能仿真工具等,但是與其他成熟的軟件開發(fā)環(huán)境相比,體系結(jié)構(gòu)的支持工具還不是很實(shí)用。2020/1/214(8)軟件產(chǎn)品線體系結(jié)構(gòu)軟件體系結(jié)構(gòu)的開發(fā)是大型軟件系統(tǒng)開發(fā)的關(guān)鍵環(huán)節(jié),對于軟件產(chǎn)品線的開發(fā)來說更是具有至關(guān)重要的作用。在這種開發(fā)生產(chǎn)中,基于同一個軟件體系結(jié)構(gòu),可以創(chuàng)建具有不同功能的多個系統(tǒng)。在軟件產(chǎn)品族之間共享體系結(jié)構(gòu)和一組可重用的構(gòu)件,可以降低開發(fā)和維護(hù)的成本。2020/1/2152SA的定義“Thereisnostandard,universally-accepteddefinitionoftheterm,forsoftwarearchitectureisafieldinitsinfancy,althoughitsrootsrundeepinsoftwareengineering.”ns.html軟件體系結(jié)構(gòu)尚處在發(fā)展期,對于其定義,目前學(xué)術(shù)界尚未形成統(tǒng)一意見,不同學(xué)者有不同看法。2020/1/216SA的定義Booch,Rumbaugh,andJacobson,1999:Anarchitectureisthesetofsignificantdecisionsabouttheorganizationofasoftwaresystem,theselectionofthestructuralelementsandtheirinterfacesbywhichthesystemiscomposed,togetherwiththeirbehaviorasspecifiedinthecollaborationsamongcompositionofthesestructuralandbehavioralthoseelements,thearchitectural,andthesubsystemsintoprogressivelylargerelementsstylethatguidesthisorganization---theseelementsandtheirinterfaces,theircollaborations,andtheircomposition(TheUMLModelingLanguageUserGuide,Addison-Wesley,1999).體系結(jié)構(gòu)是一系列重要決策的集合,這些決策與以下內(nèi)容相關(guān):軟件的組織,構(gòu)成系統(tǒng)的結(jié)構(gòu)元素及其接口的選擇,這些元素在相互協(xié)作中明確表現(xiàn)出的行為,這些結(jié)構(gòu)元素和行為元素進(jìn)一步組合構(gòu)成的更大規(guī)模的子系統(tǒng),和引導(dǎo)這一組織——包括這些元素及其接口、它們的協(xié)作、它們的組合——的體系結(jié)構(gòu)風(fēng)格。2020/1/217SA的定義定義1:(Booch&Rumbaugh&Jacobson定義)軟件體系結(jié)構(gòu)={組織,元素,子系統(tǒng),風(fēng)格}2020/1/218SA的定義定義2:(Bass定義)Bass等人在《SoftwareArchitectureinPractice》一書中提到,程序或計(jì)算系統(tǒng)的軟件體系結(jié)構(gòu)是系統(tǒng)的一個或多個結(jié)構(gòu),包括軟件構(gòu)件(components)、構(gòu)件的外部可視屬性(propenies)和構(gòu)件之間的關(guān)系。這里的外部可視屬性,是指其他構(gòu)件認(rèn)為該構(gòu)件所具備的特征,如所提供的服務(wù)、具有的性能特點(diǎn)、錯誤處理機(jī)制、共享資源的用法等。要注意的是,此定義中,特意未指明什么是構(gòu)件,什么是關(guān)系。構(gòu)件既可以是對象,也可以是進(jìn)程,還可以是函數(shù)庫,或是數(shù)據(jù)庫。2020/1/219在處理系統(tǒng)復(fù)雜性方面,抽象起到了重要的作用。軟件體系結(jié)構(gòu)={構(gòu)件,連接件,約束}。備的特征,如所提供的服務(wù)、具有的性能特點(diǎn)、錯誤處理小結(jié):關(guān)于SA的定義(考點(diǎn))代碼的理解上,如果原始的設(shè)計(jì)結(jié)構(gòu)能夠得到清楚和明確的表達(dá),也可以說策略和實(shí)現(xiàn)的分離強(qiáng)依據(jù),體系結(jié)構(gòu)本身需要分析與測試,以確定這樣的體系結(jié)構(gòu)是否滿足需求?!皢栴}定義——軟件需求——軟件體系結(jié)構(gòu)——軟件實(shí)現(xiàn)”,允許獨(dú)立于其他構(gòu)件的應(yīng)用而實(shí)現(xiàn)一個構(gòu)件的功能。學(xué)術(shù)界尚未形成統(tǒng)一意見,不同學(xué)者有不同看法。規(guī)范化的體系結(jié)構(gòu)描述,以便與人交流,并能夠用提供的工具最差的形式是偶然內(nèi)聚,這種形式將毫耦合和內(nèi)聚最初是作為結(jié)構(gòu)化設(shè)計(jì)方法的部分原理而提出的。ModelingLanguageUserGuide,Addison-Wesley,1999).模塊化與封裝原理的聯(lián)系非常密切。SA的定義定義3:(Shaw定義)在第一屆軟件系統(tǒng)體系結(jié)構(gòu)國際討論會上,MaryShaw對于當(dāng)時術(shù)語使用的混亂情況予以了澄清。從會議論文中,Shaw整理出他們的定義和觀點(diǎn),并對當(dāng)時的各種觀點(diǎn)作了如下的分類:結(jié)構(gòu)模型;框架模型;動態(tài)模型;過程模型。2020/1/220SA的定義(1)結(jié)構(gòu)模型結(jié)構(gòu)模型認(rèn)為,軟件體系結(jié)構(gòu)由構(gòu)件、構(gòu)件之間的連接和一些其他方面組成。這些方面包括如下幾類:●配置,風(fēng)格?!窦s束,語義?!穹治觯瑢傩??!裨?,需求。(2)框架模型框架模型的觀點(diǎn)與結(jié)構(gòu)模型相似,但其重點(diǎn)在于整個系統(tǒng)的連貫結(jié)構(gòu)(這種結(jié)構(gòu)通常是唯一的),這與重視其組成恰好相反??蚣苣P统3R阅撤N特定領(lǐng)域或某類問題為目標(biāo)。2020/1/221SA的定義(3)動態(tài)模型動態(tài)模型強(qiáng)調(diào)系統(tǒng)的行為質(zhì)量?!皠討B(tài)”可以有多種含意。它可以是指整個系統(tǒng)配置的變化也可以是指禁止預(yù)先激活了的通信或交互,還可以是指計(jì)算中表現(xiàn)中的動態(tài)特性,如改變數(shù)據(jù)的值。(4)過程模型過程模型關(guān)注系統(tǒng)結(jié)構(gòu)的構(gòu)建及其步驟和過程。在這一觀點(diǎn)下,體系結(jié)構(gòu)是所進(jìn)行的一系列過程的結(jié)果。2020/1/222SA的定義GarlanandShaw,1993:...beyondthealgorithmsanddatastructuresofthecomputation;designingandspecifyingtheoverallsystememergesasanewkindofproblem.Structuralissuesstructure;grossorganizationandglobalcontrolstructureincludeprotocolsforcommunication,synchronization,anddataaccess;assignmentoffunctionalitytodesignelements;physicalscalinganddistribution;compositionofdesignelements;selectionamongdesignalternatives.performance;and“MaryShaw和DavidGarlan認(rèn)為,軟件體系結(jié)構(gòu)是軟件設(shè)計(jì)過程中,超越計(jì)算中的算法設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的一個層次。體系結(jié)構(gòu)問題包括各方面的組織和全局控制結(jié)構(gòu),通信協(xié)議同步,數(shù)據(jù)存取,給設(shè)計(jì)元素分配特定功能,設(shè)計(jì)元素的組織,規(guī)模和性能,在各設(shè)計(jì)方案間進(jìn)行選擇等。2020/1/223SA的定義定義4:(Garlan&Shaw模型)軟件體系結(jié)構(gòu)={構(gòu)件,連接件,約束}。其中:1)構(gòu)件(component):可以是一組代碼,如程序的模塊;也可以是一個獨(dú)立的程序,如數(shù)據(jù)庫服務(wù)器。構(gòu)件是相關(guān)對象的集合,運(yùn)行后實(shí)現(xiàn)某計(jì)算邏輯。它們或是結(jié)構(gòu)相關(guān)(如嵌套對象,其中的被嵌對象是嵌套對象的一部分)或是邏輯相關(guān)(若干聚集對象完成某功能)。構(gòu)件相對獨(dú)立,僅通過接口與外部相互作用,可作為獨(dú)立單元嵌入到不同應(yīng)用系統(tǒng)中。構(gòu)件的定制和規(guī)范化對于實(shí)現(xiàn)構(gòu)件的復(fù)用有重要意義。2020/1/224SA的定義定義4:(Garlan&Shaw模型)軟件體系結(jié)構(gòu)={構(gòu)件,連接件,約束}。其中:2)連接件(connector):可以是過程調(diào)用、管道、遠(yuǎn)程過程調(diào)用等,用于表示構(gòu)件之間的相互作用。連接件是構(gòu)件的粘合劑,它把不同的構(gòu)件連接起來構(gòu)成體系結(jié)構(gòu)的一部分。連接件也是一組對象。它一般表現(xiàn)為框架式對象或轉(zhuǎn)換式對象(調(diào)用遠(yuǎn)程構(gòu)件資源),例如“樁”,“代理”對象等。2020/1/225SA的定義定義4:(Garlan&Shaw模型)軟件體系結(jié)構(gòu)={構(gòu)件,連接件,約束}。其中:3)約束(constrain):約束一般為對象連接時的規(guī)則,或指明構(gòu)件連接的勢態(tài)和條件。例如,上層構(gòu)件可要求下層構(gòu)件的服務(wù),反之不行:兩對象不得遞歸地發(fā)消息;代碼復(fù)制遷移的一致性約束;在什么條件下此種連接無效等。2020/1/226SA的定義PerryandWolf,1992:Asetofarchitectural(or,ifyouwill,design)elementsthathave.PerryandWolfdistinguishbetweenaparticularform,processingelements,dataelements,andconnectingelementsandthistaxonomybyandlargepersiststhroughmostotherdefinitionsandapproaches.軟件體系結(jié)構(gòu)是一組具有特定形式的體系結(jié)構(gòu)元素(elements)。這組元素分為3類:負(fù)責(zé)完成數(shù)據(jù)加工的處理元素(processingelements)、作為被加工的信息的數(shù)據(jù)元素(dataelements)和連接元素(connectingelements)。連接元素用于把體系結(jié)構(gòu)的不同部分組合連接到一起。2020/1/227SA的定義定義5:(Perry&Wolf模型)軟件體系結(jié)構(gòu)={元素,形式,準(zhǔn)則}。軟件體系結(jié)構(gòu)形式(form)由專有特性(properties)和關(guān)系組成。專有特性用于限制軟件體系結(jié)構(gòu)元素的選擇,關(guān)系用于限制軟件體系結(jié)構(gòu)元素組合的拓?fù)浣Y(jié)構(gòu)。而在多個體系結(jié)構(gòu)方案中選擇合適的體系結(jié)構(gòu)方案往往基于一組準(zhǔn)則。2020/1/228SA的定義其他有影響的定義:定義6:Garlan&Perry定義DavidGarlan和DewnePerry于1995年在IEEE軟件工程學(xué)報(bào)上所做的特約評論中,采用了如下的定義:軟件體系結(jié)構(gòu)是一個程序/系統(tǒng)各構(gòu)件的結(jié)構(gòu)、它們的相互關(guān)系,以及進(jìn)行設(shè)計(jì)的原則和指導(dǎo)方針,這些原則和方針隨時間變化而變化。2020/1/229SA的定義定義7:Soni&Nord&Hofmeister定義西門子公司研究院的Soni,Nord和Hofmeister研究了軟件行業(yè)的開發(fā)項(xiàng)目中的常用和主要結(jié)構(gòu)。在此工作的基礎(chǔ)上,他們認(rèn)為,軟件體系結(jié)構(gòu)至少有4個不同的具體形態(tài)。它們中的每一個形態(tài)都從不同的角度來描述系統(tǒng)。概念體系結(jié)構(gòu)使用其主要設(shè)計(jì)元素和它們的相互關(guān)系來描述系統(tǒng)。模塊互連體系結(jié)構(gòu)包含兩個正交的結(jié)構(gòu):功能分解和分層。執(zhí)行體系結(jié)構(gòu)描述了系統(tǒng)的動態(tài)結(jié)構(gòu)。代碼體系結(jié)構(gòu)描述了開發(fā)環(huán)境中的源程序、二進(jìn)制代碼和函數(shù)庫等是怎樣被組織的。2020/1/230SA的定義定義8:Boehm模型軟件體系結(jié)構(gòu)={構(gòu)件,連接件,約束,不同人員的需求,準(zhǔn)則}。BarryBoehm和他的學(xué)生提出,軟件體系結(jié)構(gòu)包括系統(tǒng)構(gòu)件、連接件、約束的集合,反應(yīng)不同人員需求的集合,以及準(zhǔn)則的集合。其中,這些準(zhǔn)則能夠說明由構(gòu)件、連接件和約束所定義的系統(tǒng)在實(shí)現(xiàn)時是如何滿足系統(tǒng)不同人員需求的。2020/1/231小結(jié):關(guān)于SA的定義(考點(diǎn))2020/1/232小結(jié):關(guān)于SA的定義(考點(diǎn))2020/1/233小結(jié):關(guān)于SA的定義(考點(diǎn))2020/1/234SA之重要好的軟件體系結(jié)構(gòu),是好的軟件的必要條件?!癎oodarchitecturaldesignhasalwaysbeenamajorfactorindeterminingthesuccessofasoftwaresystem.”2020/1/2352SA在SE中的地位GuidetotheSoftwareEngineeringBodyofKnowledge(SWEBOK)from?IEEE2020/1/236SoftwareStructureandArchitecture2020/1/2374軟件體系結(jié)構(gòu)的理論基礎(chǔ)軟件體系結(jié)構(gòu)是軟件工程的一個重要的研究和實(shí)踐領(lǐng)域,也是軟件工程的一個新的發(fā)展階段。軟件體系結(jié)構(gòu)今天的輝煌離不開軟件技術(shù)和軟件工程幾十年來的發(fā)展。軟件體系結(jié)構(gòu)的理論基礎(chǔ)其實(shí)有很多在多年以前就已經(jīng)為人所知。它們主要是在20世紀(jì)70年代為結(jié)構(gòu)化程序設(shè)計(jì)研究而提出的,并伴隨著面向?qū)ο蟪绦蛟O(shè)計(jì)和構(gòu)件等技術(shù)的發(fā)展而發(fā)展。這些理論對于成功地進(jìn)行軟件開發(fā)是十分重要的,而對于這種重要性的認(rèn)識越是當(dāng)人們感到軟件開發(fā)困難的時候認(rèn)識得越深刻。軟件體系結(jié)構(gòu)一些重要的理論基礎(chǔ)有抽象、封裝、數(shù)據(jù)隱藏、模塊化、注意分離點(diǎn)、耦合和內(nèi)聚、充分性、完備性和簡單性、策略和實(shí)現(xiàn)的分離、接口和實(shí)現(xiàn)的分離、分而制之、層次性。這些理論并不是一個個分離的個體,而是緊密聯(lián)系在一起的一個整體,共同構(gòu)成軟件體系結(jié)構(gòu)的理論基礎(chǔ)。2020/1/238(1)抽象抽象是人們用來處理復(fù)雜問題的基本原理之一。抽象有幾種形式,如數(shù)據(jù)抽象、對象抽象、實(shí)體抽象、行為抽象、過程抽象等。數(shù)據(jù)、實(shí)體的抽象使得軟件操作的對象和參數(shù)是針對邏輯結(jié)構(gòu),而非存儲結(jié)構(gòu)。行為、過程的抽象使得操作的指派是依據(jù)標(biāo)識而非地址,由此產(chǎn)生了操作的接口和動態(tài)約束描述。在處理系統(tǒng)復(fù)雜性方面,抽象起到了重要的作用。減少構(gòu)件耦合、接口與實(shí)現(xiàn)的分離等,都得益于抽象。(2)封裝在面向?qū)ο蟪绦蛟O(shè)計(jì)當(dāng)中,封裝是一種重要的機(jī)制。所謂對象的概念就是屬性(數(shù)據(jù))及其操作(行為)的封裝體。但封裝的機(jī)制并不局限于面向?qū)ο箢I(lǐng)域,在結(jié)構(gòu)化程序設(shè)計(jì)中,封裝在函數(shù)和子程序當(dāng)中也得到了體現(xiàn)。封裝有利于提高抽象的層次,有利于結(jié)構(gòu)和實(shí)現(xiàn)的分離,最終提高了軟件的可維護(hù)性、可重用性和可靠性。2020/1/239(1)信息隱藏信息隱藏是軟件工程的最基本和最重要的原理之一。信息隱藏對用戶隱藏了構(gòu)件的實(shí)現(xiàn)細(xì)節(jié),用來更好地處理系統(tǒng)的復(fù)雜性和減少各構(gòu)件之間的耦合。為了更好地應(yīng)用,用戶不需要知道的細(xì)節(jié)都應(yīng)該由構(gòu)件封裝起來。封裝原理經(jīng)常被用來作為實(shí)現(xiàn)信息隱藏的方法,信息隱藏也可以通過接口與實(shí)現(xiàn)分離的原理來實(shí)現(xiàn)。(4)模塊化模塊化主要關(guān)心的是如何將一個軟件系統(tǒng)分解成子系統(tǒng)和構(gòu)件,其主要任務(wù)就是決定怎樣將構(gòu)成應(yīng)用的邏輯結(jié)構(gòu)物理地分割成代碼實(shí)體。模塊化的主要做法,就是在一個系統(tǒng)內(nèi)引入具有良好定義的分界,依次來處理系統(tǒng)的復(fù)雜性。模塊化與封裝原理的聯(lián)系非常密切。模塊化帶來了復(fù)雜系統(tǒng)資源管理、維護(hù)和應(yīng)用的邏輯和條理性,增加了應(yīng)用設(shè)計(jì)的靈活性。另外,它對于系統(tǒng)的運(yùn)行設(shè)計(jì)和管理調(diào)度也提供了方便。2020/1/240(5)注意分離點(diǎn)不同和無關(guān)聯(lián)的責(zé)任應(yīng)該在軟件系統(tǒng)中分離開來,讓它們出現(xiàn)在不同的構(gòu)件中。相互協(xié)作完成某一個特定任務(wù)的構(gòu)件應(yīng)該和其他任務(wù)中執(zhí)行計(jì)算的構(gòu)件分離開來。如果一個構(gòu)件在不同的環(huán)境下扮演不同的角色,在構(gòu)件中這些角色應(yīng)該獨(dú)立且相互分離。例如,在多層體系結(jié)構(gòu)的組件設(shè)計(jì)中,在多種應(yīng)用場景中擔(dān)任不同角色的同一組件,需要并且可以使用不同的接口定義。這樣,對某一角色開發(fā)的只是與角色相關(guān)的信息和服務(wù),避免了過多暴露所造成對應(yīng)用設(shè)計(jì)的負(fù)擔(dān)和混亂,并保證了組件運(yùn)行的可靠和安全。2020/1/241(6)耦合和內(nèi)聚耦合和內(nèi)聚最初是作為結(jié)構(gòu)化設(shè)計(jì)方法的部分原理而提出的。耦合強(qiáng)調(diào)模塊之間的特性,而內(nèi)聚強(qiáng)調(diào)模塊內(nèi)部的特性。耦合是用來衡量一個模塊同另一個模塊的聯(lián)系的緊密程度的。緊密的耦合就會使系統(tǒng)變得復(fù)雜,因?yàn)槿绻粋€模塊和另外的模塊有很密切關(guān)聯(lián)的話,這個模塊就很難理解、調(diào)試、維護(hù)。通過弱耦合構(gòu)件的設(shè)計(jì)可以降低系統(tǒng)的復(fù)雜性。內(nèi)聚用來衡量單一模塊內(nèi)功能和元素間聯(lián)系的緊密程度。內(nèi)聚有幾種形式,最期望獲得的是功能內(nèi)聚,它說明一個模塊或者構(gòu)件內(nèi)的所有元素都共同來完成具有良好邊界的行為。最差的形式是偶然內(nèi)聚,這種形式將毫無聯(lián)系的抽象放置到同一模塊之中。其他形式的內(nèi)聚還有:偶然內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和不規(guī)則內(nèi)聚。2020/1/2

溫馨提示

  • 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

提交評論