版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
軟件體系結(jié)構(gòu)(1)軟件體系結(jié)構(gòu)概述胡軍副教授湖南大學(xué)SoftwareArchitecture目錄課程簡介1軟件體系結(jié)構(gòu)的定義和發(fā)展綜述2軟件體系結(jié)構(gòu)的發(fā)展方向32授課教師簡歷胡軍浙江大學(xué)計算機學(xué)院計算機科學(xué)與技術(shù)專業(yè)工學(xué)博士聯(lián)合國大學(xué)軟件研究所訪問學(xué)者英國南安普頓大學(xué)電子與計算機學(xué)院訪問學(xué)者主要研究方向為:多主體系統(tǒng);人工智能;軟件工程聯(lián)系方式辦公室:工會樓510or基地204Telmail:hujun111@QQ:478856953課程介紹教材及參考書張友生等編著,軟件體系結(jié)構(gòu)原理、方法與實踐,清華大學(xué)出版社,2009。覃征等,軟件體系結(jié)構(gòu)(第二版),清華大學(xué)出版社,2008。Ericfreeman,etc著,HeadFirst設(shè)計模式(中文版),中國電力出版社,2007。ErichGamma等著,設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ),機械工業(yè)出版社,2000。4教材5教材6課程介紹課程目標(biāo)掌握軟件體系結(jié)構(gòu)的概念、組成和相關(guān)領(lǐng)域國內(nèi)外研究現(xiàn)狀。明確軟件體系結(jié)構(gòu)劃分標(biāo)準(zhǔn)、設(shè)計原則。學(xué)習(xí)軟件體系結(jié)構(gòu)構(gòu)建模型、軟件體系結(jié)構(gòu)風(fēng)格與模式、軟件體系結(jié)構(gòu)形式化描述方法、軟件體系結(jié)構(gòu)評估方法、加強學(xué)生的面向?qū)ο笤O(shè)計開發(fā)思想、理解設(shè)計模式的概念、掌握常用的設(shè)計模式的使用方法,并掌握在實際系統(tǒng)開發(fā)過程中分析、設(shè)計、應(yīng)用軟件體系結(jié)構(gòu)思想的技能。7課程介紹課程安排(軟件體系結(jié)構(gòu)部分)第一講:軟件體系結(jié)構(gòu)概述第二講:軟件體系結(jié)構(gòu)風(fēng)格與模式第三講:軟件體系結(jié)構(gòu)描述語言第四講:動態(tài)軟件體系結(jié)構(gòu)第五講:基于體系結(jié)構(gòu)的軟件開發(fā)、分析與測試第六講:軟件體系結(jié)構(gòu)評估第七講:軟件產(chǎn)品線體系結(jié)構(gòu)第八講:軟件體系結(jié)構(gòu)研究的展望8課程介紹課程安排(軟件設(shè)計模式部分)第一講:設(shè)計模式入門、策略模式第二講:工廠方法和裝飾者模式第三講:模版方法和迭代器模式第四講:組合和抽象工廠模式第五講:生成器、單件、代理和中介模式第六講:適配器、橋接、觀察著和責(zé)任鏈模式第七講:備忘錄、MVC和命令模式第八講:狀態(tài)、解釋器和外觀模式第九講:原型、訪問者和享元模式9課程體系10軟件體系結(jié)構(gòu)與設(shè)計軟件體系結(jié)構(gòu)概念、描述軟件體系結(jié)構(gòu)風(fēng)格和模式軟件設(shè)計模式基于設(shè)計模式的軟件設(shè)計基于軟件體系結(jié)構(gòu)的軟件開發(fā)軟件體系結(jié)構(gòu)還有什么研究問題目錄課程簡介1軟件體系結(jié)構(gòu)的定義和發(fā)展綜述2軟件體系結(jié)構(gòu)的發(fā)展方向311研究背景什么是軟件軟件一般認(rèn)為由三部分組成:程序:在運行時,能提供所希望的功能和性能的指令集。數(shù)據(jù)結(jié)構(gòu):使程序能夠正確運行的數(shù)據(jù)結(jié)構(gòu)。文檔:描述程序研制過程、方法及使用的文檔。12研究背景軟件的特點抽象性:邏輯實體,可記錄,但看不到可復(fù)制性:與開發(fā)成本相比,復(fù)制成本很低無折舊受硬件制約未完全擺脫手工工藝開發(fā)費用高13研究背景計算機軟件發(fā)展的三個時期早期時代(60年代中期之前)程序設(shè)計階段硬件通用,軟件專用;程序規(guī)模小,編寫者和使用者為同一人(同組人)。第二代(60年代中期-70年代中期)
程序系統(tǒng)階段出現(xiàn)“軟件作坊”、產(chǎn)品軟件;“個體化”開發(fā)方法。第三代(70年代中期之后)軟件工程階段軟件開發(fā)成為一門新興的工程學(xué)科——軟件工程。14研究背景15程序設(shè)計程序系統(tǒng)軟件工程軟件范疇程序程序及說明書產(chǎn)品軟件(項目軟件)主要程序設(shè)計語言匯編及機器語言高級語言高級語言系統(tǒng)軟件工作范圍程序編寫設(shè)計、測試軟件生存期需求者程序設(shè)計者本人少數(shù)用戶市場用戶計算機軟件發(fā)展的三個時期及特點研究背景16程序設(shè)計程序系統(tǒng)軟件工程維護責(zé)任者程序設(shè)計者開發(fā)小組專職維護人員硬件特征價高、存儲量小、穩(wěn)定性差價低、速度、容量、穩(wěn)定性明顯提高向超高速、大容量、微型化發(fā)展軟件特征完全不受重視軟件技術(shù)的發(fā)展不滿足需要,出現(xiàn)軟件危機開發(fā)技術(shù)有進步,但未獲得突破性進展,軟件危機沒有完全擺脫計算機軟件發(fā)展的三個時期及特點研究背景我們需要的是軟件符合質(zhì)量要求??!軟件需求是進行“質(zhì)量”度量的基礎(chǔ),與需求不符就是質(zhì)量不高。通常有一組“隱含需求(implicitrequirements)”是不被提及的(如對維護性的需求)。如果軟件符合了明確的需求卻沒有滿足隱含需求,軟件質(zhì)量仍然值得懷疑。17性能Performance可用性Usability可靠性Availability可擴展性Extensibility安全性Security功能性Functionality為什么需要軟件體系結(jié)構(gòu)
隨著社會的巨大進步,計算機系統(tǒng)的整體發(fā)展,新技術(shù)的不斷涌現(xiàn),使計算機應(yīng)用的需求迅速增加。而軟件費用的增加,高可靠性能下降,維護工作量增大,出現(xiàn)了嚴(yán)重的“軟件危機”。軟件危機已經(jīng)持續(xù)了三十多年,表現(xiàn)為:軟件的產(chǎn)品質(zhì)量難以保障軟件的開發(fā)效率難以提高18為什么需要軟件體系結(jié)構(gòu)19軟件失敗SoftwareFailure最常見錯誤形式:變量取值超過允許范圍用戶使用軟件超載(Overload)現(xiàn)代系統(tǒng)的復(fù)雜性往往集中于軟件部分(complexity)代碼正確,設(shè)計錯誤(DesignError)其他軟件開發(fā)者不參與情況下操作系統(tǒng)以及硬件改變軟件失敗的原因2023/2/6研究背景解決問題的想法更好的管理(Bettermanagement)出眾的團隊組織(Differentteamorganizations)更好的語言和工具(Betterlanguages&tools)統(tǒng)一的編程規(guī)范(Uniformcodingconventions)
必須意識到:“軟件”≠編程,它有自己的生命周期(lifecycle)。大型軟件系統(tǒng)的開發(fā)與其它工程項目如建造橋梁、制造飛機、輪船等的開發(fā)是同理的。20研究背景21軟件質(zhì)量問題對經(jīng)濟的影響:美國NIST(國家商業(yè)標(biāo)準(zhǔn)和技術(shù))報告,“由于軟件bug的普遍存在,使美國經(jīng)濟每年損失$590.5億美元”,而Standish組織的數(shù)據(jù)是每年2000億美元改進軟件質(zhì)量已經(jīng)成為取得高投資回報率的直接途徑,質(zhì)量低的公司只會被遺忘軟件質(zhì)量問題對生命安全的威脅:1963年,美國金星探測火箭飛行失敗,造成經(jīng)濟損失達一千萬美元,因為控制程序中的一個極小的錯誤,即將一逗號誤寫為一小數(shù)點!由于著陸系統(tǒng)的高度報警程序問題部分導(dǎo)致了1997年發(fā)生在關(guān)島的韓國客機空難,228人遇難。1996年,歐洲耗資高達7億美元的Ariane5火箭發(fā)射后解體爆炸,究其原因是慣性參考系統(tǒng)中的一個軟件設(shè)計錯誤,并由于認(rèn)為這個軟件不會發(fā)生錯誤而缺乏充分的測試。......研究背景如果有什么東西可以在軟件開發(fā)之前用于描述軟件,并能進行質(zhì)量分析,從而保證軟件質(zhì)量就好了~軟件體系結(jié)構(gòu)22軟件體系結(jié)構(gòu)起源23結(jié)構(gòu)設(shè)計師:設(shè)計圖紙管理人員:施工計劃施工人員:建造建筑物軟件體系結(jié)構(gòu)思想來源于建筑業(yè)2023/2/6軟件體系結(jié)構(gòu)起源24建立模型2023/2/6軟件體系結(jié)構(gòu)起源25站點外表結(jié)構(gòu)服務(wù)空間計劃結(jié)構(gòu)設(shè)計2023/2/6軟件體系結(jié)構(gòu)起源26最終的建筑2023/2/6鳥巢更多的建筑源自于體系結(jié)構(gòu)設(shè)計27瑪雅阿茲特克金字塔瑞士保險公司大樓2023/2/6如果建筑的復(fù)雜度還不夠高,那么一個城市呢?282023/2/6軟件體系結(jié)構(gòu)的本意29對于大規(guī)模的,分布的,需要協(xié)作的,需要交互的,需要監(jiān)測的,需要擴展的,需要演化的復(fù)雜軟件系統(tǒng)的規(guī)劃。2023/2/6軟件體系結(jié)構(gòu)發(fā)展簡史程序設(shè)計語言的進化——抽象級別(Abstract
Level)30面向代碼段面向問題空間面向機器面向機器
是一種針對如何直接操作機器指令來使用計算機資源的抽象級別。面向代碼段將可復(fù)用的功能代碼總結(jié)和包裝以保證重用。如基本的數(shù)值計算,過程控制等。面向問題空間
是這樣一種抽象級別。它直接將問題空間中的實體以及實體的關(guān)系表達出來。如利用“類”來表示物理世界的實物。軟件體系結(jié)構(gòu)發(fā)展簡史軟件開發(fā)的進化——關(guān)注點(Concern)311靈活使用機器使用的底層指令和數(shù)據(jù)(Primitiveinstructionsanddata)2提高開發(fā)效率、代碼可讀性、易維護性(Efficiencyandconvenience
incodereadingandmaintenance)3實現(xiàn)軟件產(chǎn)品線式生產(chǎn)(Software
Product
Line)軟件體系結(jié)構(gòu)發(fā)展簡史1960年代,軟件危機爆發(fā)1968年,軟件工程被提出NATOsoftwareengineeringconference1968年,軟件體系結(jié)構(gòu)思想被提出“TheStructureofthe‘THE’MultiprogrammingSystem”authoredbyEdsgerDijkstra(艾德勒戴克斯加,荷蘭)1975年,軟件體系結(jié)構(gòu)思想被升華“Architectureisthecompleteanddetailedspecificationoftheuserinterface”
byFrederick
Brooks(弗蘭德里克布魯克斯,美國)32EdsgerDijkstraFrederickP.Brooks軟件體系結(jié)構(gòu)發(fā)展簡史1972~1976年,現(xiàn)代軟件開發(fā)思想被提出informationhidingandusageofinterface(Parnas,1972)structureseparation
(Parnas,
1974)therelationshipsbetweensoftwarestructureanditsquality(Parnas,1976)戴維帕納斯,美國1991年,”SoftwareArchitecture”在正式文獻中被使用SoftwareArchitecture:IntegratingProcessandTechnology
authoredWalkerE.RoyceandWinstonW.Royce沃克羅伊斯;溫斯頓羅伊斯,美國33
DavidParnasWalkerE.Royce軟件體系結(jié)構(gòu)發(fā)展簡史1993年,SoftwareArchitecture被定義,此定義成為軟件體系結(jié)構(gòu)研究的公認(rèn)基礎(chǔ)AnIntroductiontoSoftwareArchitectureauthoredbyDavidGarlanandMaryShaw20世紀(jì)90年代,軟件體系結(jié)構(gòu)描述語言(ADL)興盛Darwin,Wright,C2,Rapide,MetaH,ACME,…20世紀(jì)90年代,軟件體系結(jié)構(gòu)評估方法興起SAAM,ATAM,…2000年,IEEE1471-2000標(biāo)準(zhǔn)IEEERecommendedpracticeforarchitecturaldescriptionofsoftware-intensivesystems
34軟件體系結(jié)構(gòu)發(fā)展簡史2000年,SoftwareArchitecture
Product
LineTheDesignandUseofSoftwareArchitectureauthoredbyBosch2003年,UML2.0發(fā)布2000年至今,動態(tài)軟件體系結(jié)構(gòu)π-ADL,LIME,dynamic
Wright,…
35一些經(jīng)典的文獻列表M.ShawandD.Garlan,“AnIntroductiontoSoftwareArchitecture,”V.AmbriolaandG.Tortora,eds.,AdvancesinSoftwareEngineeringandKnowledgeEngineering,vol.2,WorldScientificPublishing,1993,pp.1–39D.E.PerryandA.L.Wolf,“FoundationsfortheStudyofSoftwareArchitecture,”ACMSoftwareEng.Notes,vol.17,no.4,1992,pp.40–52.D.L.Parnas,“OntheCriteriatoBeUsedinDecomposingSystemsintoModules,”Comm.ACM,vol.15,no.12,1972,pp.1053–1058.D.L.Parnas,“OntheDesignandDevelopmentofProgramFamilies,”IEEETrans.SoftwareEng.,vol.2,no.1,1976,pp.1–9.D.L.Parnas,P.Clements,andD.M.Weiss,“TheModularStructureofComplexSystems,”IEEETrans.SoftwareEng.,vol.11,no.3,1985,pp.259–266.F.DeRemerandH.Kron,“Programming-in-the-LargeversusProgramming-in-the-Small,”Proc.Int’lConf.ReliableSoftware,ACMPress,1975,pp.114–121.
36一些經(jīng)典的文獻列表D.Soni,R.Nord,andC.Hofmeister,“SoftwareArchitectureinIndustrialApplications,”Proc.17thInt’lConf.SoftwareEng.(ICSE95),ACMPress,1995,pp.196–207.P.Kruchten,“The4+1ViewModelofArchitecture,”IEEESoftware,vol.12,no.6,1995,pp.45–50.B.W.Lampson,“HintsforComputerSystemDesign,”O(jiān)peratingSystemsRev.,vol.15,no.5,1983,pp.33–48;reprintedinIEEESoftware,vol.1,no.1,1984,pp.11–28.J.A.Mills,“APragmaticViewoftheSystemArchitect,”Comm.ACM,vol.28,no.7,1985,pp.708–717.W.E.RoyceandW.Royce,“SoftwareArchitecture:IntegratingProcessandTechnology,”TRWQuest,vol.14,no.1,1991,pp.2–15.M.ShawandP.Clements,“AFieldGuidetoBoxology:PreliminaryClassificationofArchitecturalStylesforSoftwareSystems,”Proc.21stInt’lComputerSoftwareandApplicationsConf.(COMPSAC97),IEEECSPress,1997,pp.6–13.M.Shaw,“TheComing-of-AgeofSoftwareArchitectureResearch,”Proc.23rdInt’lConf.SoftwareEng.(ICSE01),IEEECSPress,2001,pp.656–664a.37軟件體系結(jié)構(gòu)發(fā)展簡史38MaryShaw瑪麗娋FrederickBrooks弗蘭德里克布魯克斯BarryBoehm拜瑞波姆CarlissBaldwin卡利斯鮑德溫NSF2007ScienceofDesignPrincipalInvestigators'(PI)Meeting軟件體系結(jié)構(gòu)發(fā)展簡史39萌芽期發(fā)展期成熟期2023/2/6軟件體系結(jié)構(gòu)發(fā)展簡史402023/2/6那么……41什么是軟件體系結(jié)構(gòu)?汽車傳動系統(tǒng)設(shè)計42Xbox
360使用的三核處理器設(shè)計43波音787設(shè)計44航空母艦設(shè)計概念圖45操作系統(tǒng)體系結(jié)構(gòu)(以Ubuntu
Linux為例)46軟件體系結(jié)構(gòu)Lightning
Framework47軟件體系結(jié)構(gòu)概述自NATO于1968年提出軟件工程概念以來,軟件工程界已經(jīng)提出了一系列的理論、方法、語言和工具,解決了軟件開發(fā)過程中的若干問題.但是,軟件固有的復(fù)雜性、易變性和不可見性,使得軟件開發(fā)周期長、代價高和質(zhì)量低的問題依然存在.大量實踐統(tǒng)計表明:大系統(tǒng)軟件開發(fā)中70%的錯誤是由需求和軟件設(shè)計階段引入的;而且錯誤在系統(tǒng)中存在的時間愈長則愈難發(fā)現(xiàn),解決這些錯誤的代價也愈高.為了提高軟件需求和軟件設(shè)計的質(zhì)量,軟件工程界提出了需求分析工程技術(shù)和各種軟件建模技術(shù).但是在需求與設(shè)計之間仍存在一條很難逾越的鴻溝,即缺乏能夠反映做決策的中間過程,從而很難有效地將需求轉(zhuǎn)換為相應(yīng)的設(shè)計.為此,軟件體系結(jié)構(gòu)概念應(yīng)運而生,并試圖在軟件需求與軟件設(shè)計之間架起一座橋梁,著重解決軟件系統(tǒng)的結(jié)構(gòu)和需求向?qū)崿F(xiàn)平坦地過渡的問題.48軟件體系結(jié)構(gòu)概述軟件體系結(jié)構(gòu)基本概念就體系結(jié)構(gòu)的本意而言,它是指建立系統(tǒng)時的構(gòu)造范型、構(gòu)造風(fēng)格和構(gòu)造模式,軟件體系結(jié)構(gòu)對于軟件系統(tǒng)的構(gòu)造所起的是指導(dǎo)性的作用,它拋開了軟件系統(tǒng)的功能細節(jié),著重于討論軟件系統(tǒng)的總體框架。49開發(fā)了5年,投入資金達300多億美元,歷史上代碼量最大,達到5000萬行,僅核心工程師就有9000人團隊的龐大軟件開發(fā)項目基于軟件體系結(jié)構(gòu)的分析、評估、計劃、組織、開發(fā)、測試軟件體系結(jié)構(gòu)概述對于一個軟件開發(fā)單位來說,選擇合適的體系結(jié)構(gòu)是最重要的決策之一.良好的體系結(jié)構(gòu)可以維系軟件系統(tǒng)的完整性,使得開發(fā)和維護工作不至于雜亂無章;還可以簡化軟件系統(tǒng)復(fù)雜性,讓眾多的開發(fā)單位的軟件工程師們能以并行方式開展工作.50軟件體系結(jié)構(gòu)概述軟件體系結(jié)構(gòu)基本概念廣義而言,軟件系統(tǒng)結(jié)構(gòu)涉及多方面的內(nèi)容:軟件的成份及系統(tǒng)框架;軟件成份的選擇,各成分之間的相互作用,軟件成份的進一步復(fù)合以及指導(dǎo)軟件復(fù)合過程的總體模式;系統(tǒng)的功能、性能、設(shè)計以及從多種方案及選項中進行選擇的決策??梢?,軟件體系結(jié)構(gòu)更為關(guān)注的是系統(tǒng)結(jié)構(gòu)及其成份,而方法論更關(guān)心系統(tǒng)的開發(fā)過程51軟件體系結(jié)構(gòu)概述Perry和Wolf根據(jù)軟件生命周期各階段相應(yīng)的實體、屬性、關(guān)系、主要產(chǎn)品和評估標(biāo)準(zhǔn),將軟件開發(fā)過程分為如下階段:需求分析:主要根據(jù)用戶的需求,決定軟件的功能;體系結(jié)構(gòu)設(shè)計:選擇構(gòu)件、構(gòu)件間相互關(guān)系以及對它們的約束,并以此為框架,為詳細設(shè)計奠定基礎(chǔ);詳細設(shè)計:主要對系統(tǒng)進行模塊化和描述各個構(gòu)件間的詳細接口、算法和數(shù)據(jù)結(jié)構(gòu)類型等;實現(xiàn):使用程序設(shè)計語言實現(xiàn)設(shè)計方案的要求。52軟件體系結(jié)構(gòu)概述軟件體系結(jié)構(gòu)研究與傳統(tǒng)軟件工程方法學(xué)的不同之處在于:所關(guān)心的問題不同描述的著眼點不同抽象層次不同53從不同角度看太陽軟件體系結(jié)構(gòu)的研究方法學(xué)院派測重于軟件體系結(jié)構(gòu)形式化理論研究。注重抽象、規(guī)約和演算。實踐派將軟件體系結(jié)構(gòu)設(shè)計、描述與表示同傳統(tǒng)的軟件系統(tǒng)建模視為一體,以體系結(jié)構(gòu)作為整個軟件開發(fā)過程的核心。結(jié)合派試圖將以上二者結(jié)合以來,將形式化理論應(yīng)用于實際項目中。54軟件體系結(jié)構(gòu)定義長期以來,CMU-SEI在其網(wǎng)站上公開征集軟件體系結(jié)構(gòu)的定義至今已有百余種。最近較有影響力的定義有:
卡耐基梅隆大學(xué)Bass等人于2003年在軟件構(gòu)架實踐一書中提出,軟件體系結(jié)構(gòu)為系統(tǒng)的結(jié)構(gòu)(structureorstructures),包含軟件元素、軟件元素外部可見的屬性以及這些軟件元素之間的關(guān)系。55軟件體系結(jié)構(gòu)定義軟件體系結(jié)構(gòu)定義的發(fā)展演變IEEE610.12
,1990Vestal,1993Garlan,1993Gacek,1995Bosch,2000Perry,2000
IEEEStd1471-2000,200056軟件體系結(jié)構(gòu)定義IEEE610.12(1990年)軟件工程標(biāo)準(zhǔn)詞匯定義:SA={component,connector,environment,
principle}.體系結(jié)構(gòu)是以構(gòu)件、構(gòu)件之間的關(guān)系、構(gòu)件與環(huán)境之間的關(guān)系為內(nèi)容的某一系統(tǒng)的基本組織結(jié)構(gòu),以及指導(dǎo)上述內(nèi)容設(shè)計與演化的原理。57Honeywell實驗室的Vestal在1993年提出了如下模型:SA={component,idioms/styles,commonpatternsofinteraction}.軟件由構(gòu)件組成,構(gòu)件之間通過通用的互操作模式相連。體系結(jié)構(gòu)風(fēng)格描述了一種通用的設(shè)計模式,可滿足特定系列的應(yīng)用需求。58軟件體系結(jié)構(gòu)定義卡耐基梅隆大學(xué)的Garlan于1993年對軟件體系結(jié)構(gòu)做出了如下定義:
SA={Components,Connectors,Constraints}構(gòu)件(Components)是功能單元,執(zhí)行預(yù)定義的服務(wù)并且與其他構(gòu)件交互。連接器(Connectors)定義交互協(xié)議與策略。約束(Constraints)定義了系統(tǒng)必須服從的規(guī)則。59軟件體系結(jié)構(gòu)定義而南加州大學(xué)的軟件工程研究中心的Gacek于1995年,提出了如下的概念:SA={Components,Connections,Constraints,StakeholderNeeds,Rationale}60軟件體系結(jié)構(gòu)定義在此定義中,構(gòu)件(component)與連接(connection)的設(shè)計將依照涉眾(Stakeholder)的需求。涉眾(Stakeholder)指參與軟件系統(tǒng)項目的人員,包括項目經(jīng)理,程序員,市場營銷人員,消費者與使用者等。理念(Rationale)指權(quán)衡存在下的策略。該定義反映了對運行時結(jié)構(gòu)的實際影響因素,是為了使軟件體系結(jié)構(gòu)研究能將學(xué)術(shù)與實際應(yīng)用聯(lián)系起來。61軟件體系結(jié)構(gòu)定義瑞典Blekinge技術(shù)學(xué)院的Bosch在2000年則對軟件體系結(jié)構(gòu)給出了如下的定義:Thearchitectureofasoftwaresystemisconcernedwiththetop-leveldecompositionofthesystemintoitsmaincomponents.
軟件系統(tǒng)的體系結(jié)構(gòu)是對系統(tǒng)從頂層分解為主要構(gòu)件的考量。decomposition62軟件體系結(jié)構(gòu)定義在該定義中,軟件體系結(jié)構(gòu)被認(rèn)為是系統(tǒng)結(jié)構(gòu)的唯一部署,僅關(guān)注單一的靜態(tài)結(jié)構(gòu)。此外需要注意的是,這里的術(shù)語component的涵義有所不同,可以被認(rèn)為是模塊——基本的執(zhí)行單元。63軟件體系結(jié)構(gòu)定義2000年Texas大學(xué)的Perry&Wolf模型如下:SA={elements,form,rational}.64軟件體系結(jié)構(gòu)定義該模型中,軟件體系結(jié)構(gòu)是由一組元素(elements)構(gòu)成。這組元素分成3類:處理元素(processingelements)、數(shù)據(jù)元素(dataelements)和連接元素(connectingelements)。軟件體系結(jié)構(gòu)形式(form)是由專有特性(properties)和關(guān)系(relationship)組成。專有特性用于限制軟件體系結(jié)構(gòu)元素的選擇,關(guān)系用于限制軟件體系結(jié)構(gòu)元素組合的拓撲結(jié)構(gòu)。在多個體系結(jié)構(gòu)方案中選擇合適的體系結(jié)構(gòu)方案往往基于一組準(zhǔn)則(rational)。65軟件體系結(jié)構(gòu)定義同樣在2000年發(fā)布的IEEEStd1471-2000,則對軟件體系結(jié)構(gòu)做出了如下定義:軟件系統(tǒng)的基本組織,包含構(gòu)件、構(gòu)件之間、構(gòu)件與環(huán)境之間的關(guān)系,以及相關(guān)的設(shè)計與演化原則等。不僅如此,該標(biāo)準(zhǔn)還對軟件體系結(jié)構(gòu)所涉及的相關(guān)概念做出了詳細定義,例如需求者,架構(gòu)師,系統(tǒng)涉眾等等。66IEEEStd1471-2000中的若干概念獲取者(acquirer):
Anorganizationthatprocuresasystem,softwareproduct,orsoftwareservicefromasupplier.(Theacquirercouldbeabuyer,customer,owner,user,orpurchaser.)軟件系統(tǒng)或軟件產(chǎn)品的接收方架構(gòu)(architecting):
Theactivitiesofdefining,documenting,maintaining,improving,andcertifyingproperimplementationofanarchitecture.定義,編檔,維護,改進和驗證體系結(jié)構(gòu)正確實現(xiàn)的一組活動67IEEEStd1471-2000中的若干概念架構(gòu)師(architect):
Theperson,team,ororganizationresponsibleforsystemsarchitecture.負責(zé)軟件系統(tǒng)體系結(jié)構(gòu)的個人,團隊或者組織體系結(jié)構(gòu)描述(architecturaldescription):Acollectionofproductstodocumentanarchitecture.一組記錄軟件體系結(jié)構(gòu)的文檔體系結(jié)構(gòu)(architecture):Thefundamentalorganizationofasystemembodiedinitscomponents,theirrelationshipstoeachother,andtotheenvironment,andtheprinciplesguidingitsdesignandevolution.軟件系統(tǒng)中構(gòu)件,構(gòu)件之間的關(guān)系,構(gòu)件與環(huán)境之間的關(guān)系,以及指導(dǎo)設(shè)計和演化的基本組織。68IEEEStd1471-2000中的若干概念生命周期模型(lifecyclemodel):Aframeworkcontainingtheprocesses,activities,andtasksinvolvedinthedevelopment,operation,andmaintenanceofasoftwareproduct,whichspansthelifeofthesystemfromthedefinitionofitsrequirementstotheterminationofitsuse.圍繞整個軟件開發(fā)過程進行的一組過程和活動,以周而復(fù)始的方式存在軟件系統(tǒng)(system):Acollectionofcomponentsorganizedtoaccomplishaspecificfunctionorsetoffunctions.組織起來完成某些特定功能的一組構(gòu)件69IEEEStd1471-2000中的若干概念系統(tǒng)涉眾(systemstakeholder):Anindividual,team,ororganization(orclassesthereof)withinterestsin,orconcernsrelativeto,asystem.系統(tǒng)利益相關(guān)者視圖(view):
Arepresentationofawholesystemfromtheperspectiveofarelatedsetofconcerns.整個系統(tǒng)某個特定角度的表示70如何理解軟件體系結(jié)構(gòu)71體系結(jié)構(gòu)模型視圖2023/2/6軟件體系結(jié)構(gòu)視角72DecompositionPerspectiveRuntimePerspective構(gòu)件/連接器視圖73實現(xiàn)視圖742023/2/6部署視圖752023/2/6行為視圖76SequenceDiagram(UML)2023/2/6行為視圖77ActivityDiagram(UML)2023/2/6行為視圖78State
Diagram
(UML)2023/2/6用例視圖792023/2/6軟件體系結(jié)構(gòu)的意義體系結(jié)構(gòu)是風(fēng)險承擔(dān)者進行交流的手段軟件體系結(jié)構(gòu)代表了系統(tǒng)的公共的高層次的抽象。這樣,系統(tǒng)的大部分有關(guān)人員(即使不是全部)能把它作為建立一個互相理解的基礎(chǔ),形成統(tǒng)一認(rèn)識,互相交流。體系結(jié)構(gòu)提供了一種共同語言來表達各種關(guān)注和協(xié)商,進而對大型復(fù)雜系統(tǒng)能進行理智的管理。這對項目最終的質(zhì)量和使用有極大的影響。80軟件體系結(jié)構(gòu)的意義體系結(jié)構(gòu)是早期設(shè)計決策的體現(xiàn)軟件體系結(jié)構(gòu)明確了對系統(tǒng)實現(xiàn)的約束條件軟件體系結(jié)構(gòu)決定了開發(fā)和維護組織的組織結(jié)構(gòu)軟件體系結(jié)構(gòu)制約著系統(tǒng)的質(zhì)量屬性通過研究軟件體系結(jié)構(gòu)可能預(yù)測軟件的質(zhì)量軟件體系結(jié)構(gòu)使推理和控制更改更簡單軟件體系結(jié)構(gòu)有助于循序漸進的原型設(shè)計軟件體系結(jié)構(gòu)可以作為培訓(xùn)的基礎(chǔ)81軟件體系結(jié)構(gòu)的意義軟件體系結(jié)構(gòu)是可傳遞和可重用的模型軟件體系結(jié)構(gòu)級的重用意味著體系結(jié)構(gòu)的決策能在具有相似需求的多個系統(tǒng)中發(fā)生影響,這比代碼級的重用要有更大的好處。82軟件產(chǎn)品生產(chǎn)線軟件工廠是一個以計算機為依托,并由計算機控制的程序編制環(huán)境,程序的制作、檢查和使用都應(yīng)當(dāng)在此環(huán)境中,并運用其中的工具來實現(xiàn)。建設(shè)軟件工廠是軟件工程化生產(chǎn)的大趨勢。其實現(xiàn)依賴于對體系結(jié)構(gòu)、模型、方法、工具的研究。83軟件產(chǎn)品線84軟件生命周期(SoftwareLifeCycle)軟件生命周期軟件從開發(fā)啟動啟動開始到被放棄為止的過程85要經(jīng)過若干迭代的過程軟件體系結(jié)構(gòu)建模軟件體系結(jié)構(gòu)建模的種類結(jié)構(gòu)模型框架模型動態(tài)模型過程模型功能模型
86軟件體系結(jié)構(gòu)建模軟件體系結(jié)構(gòu)建模的種類結(jié)構(gòu)模型這是一個最直觀、最普遍的建模方法。這種方法以體系結(jié)構(gòu)的構(gòu)件、連接件和其他概念來刻畫結(jié)構(gòu),并力圖通過結(jié)構(gòu)來反映系統(tǒng)的重要語義內(nèi)容,包括系統(tǒng)的配置、約束、隱含的假設(shè)條件、風(fēng)格、性質(zhì)等。研究結(jié)構(gòu)模型的核心是體系結(jié)構(gòu)描述語言。87軟件體系結(jié)構(gòu)建模軟件體系結(jié)構(gòu)建模的種類框架模型框架模型與結(jié)構(gòu)模型類似,但它不太側(cè)重描述結(jié)構(gòu)的細節(jié)而更側(cè)重于整體的結(jié)構(gòu)??蚣苣P椭饕砸恍┨厥獾膯栴}為目標(biāo)建立只針對和適應(yīng)該問題的結(jié)構(gòu)。
88軟件體系結(jié)構(gòu)建模軟件體系結(jié)構(gòu)建模的種類動態(tài)模型動態(tài)模型是對結(jié)構(gòu)或框架模型的補充,研究系統(tǒng)的“大顆?!钡男袨樾再|(zhì)。例如,描述系統(tǒng)的重新配置或
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版服務(wù)器系統(tǒng)備份與恢復(fù)維護服務(wù)合同范本3篇
- 2024年奶茶店員工勞動合同終止合同模板2篇
- 2024年度廣告制作服務(wù)與廣告位長期租賃合同3篇
- 財務(wù)部員工崗位職責(zé)總則(2篇)
- 2024年挖掘機維護保養(yǎng)規(guī)程(二篇)
- 皮帶工、破碎工安全操作規(guī)程模版(3篇)
- 美容院圣誕節(jié)活動策劃方案(2篇)
- 電器設(shè)備安全操作規(guī)程(3篇)
- 2024年商場檔口出租與體育健身項目合作運營合同3篇
- 2024年度保險合同(含責(zé)任保險)
- JC-T 940-2004 玻璃纖維增強水泥 (GRC)裝飾制品
- 國家開放大學(xué)《供應(yīng)鏈管理》形考作業(yè)1-4參考答案
- 科研倫理與學(xué)術(shù)規(guī)范
- 學(xué)校人事工作個人總結(jié)
- SGS 質(zhì)量檢驗報告
- 水庫蓄水安全鑒定報告
- 5000立方油罐基礎(chǔ)專項施工方案
- 勞務(wù)中介介紹費合同范本
- 2022年10月2022四川涼山州木里藏族自治縣衛(wèi)生健康局考調(diào)專業(yè)技術(shù)人員13人筆試參考題庫含答案解析
- 小咖啡大世界知到章節(jié)答案智慧樹2023年上海商學(xué)院
- 高等數(shù)理統(tǒng)計知到章節(jié)答案智慧樹2023年浙江大學(xué)
評論
0/150
提交評論