第二周-什么是軟件構(gòu)架_第1頁
第二周-什么是軟件構(gòu)架_第2頁
第二周-什么是軟件構(gòu)架_第3頁
第二周-什么是軟件構(gòu)架_第4頁
第二周-什么是軟件構(gòu)架_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

提綱最早軟件構(gòu)架的提出構(gòu)架的概念構(gòu)架模式、參考模型和參考構(gòu)架構(gòu)架為何如此重要構(gòu)架結(jié)構(gòu)和視圖1.最早的軟件構(gòu)架最早在軟件開發(fā)領域,構(gòu)架(Architecture)這個詞用來指適用于多個系統(tǒng)的計算機系統(tǒng)的描述1969年,F(xiàn)redBrooks和KenInverson把構(gòu)架描述為“程序員所看到的….計算機的概念結(jié)構(gòu)”。之前,Blaauw最先提出構(gòu)架一詞,他認為“構(gòu)架說明了做什么,而系統(tǒng)實現(xiàn)說明了怎么做”從這些描述中我們可以看到,構(gòu)架實際上是同類系統(tǒng)的抽象1.1Parnas提出的關于構(gòu)架的原則70年代,DavidParnas對軟件構(gòu)架的許多基本原則進行了深入研究,包括:信息隱藏原則[Parnas72]關于只允許通過接口使用元素的原則[72]強調(diào)對軟件系統(tǒng)中的不同結(jié)構(gòu)進行考察,不得混淆這些結(jié)構(gòu)[74]在基于組件開發(fā)的系統(tǒng)中錯誤處理和檢驗的原則[72,76]1.1Parnas提出的關于構(gòu)架的原則將每個程序都看作是某個程序族中的一員[Parnas76]認識到系統(tǒng)的結(jié)構(gòu)影響到系統(tǒng)的質(zhì)量[76]引入使用結(jié)構(gòu),該原則控制各元素之間的連接,以增強系統(tǒng)的可擴展性[79]Parnas等人的工作為軟件構(gòu)架理論的建立創(chuàng)造了基礎2軟件構(gòu)架的概念下面是一個水下聲學模擬系統(tǒng)的簡單線框圖描述,這個圖是系統(tǒng)的構(gòu)架嗎?我們從中得到了什么?又有哪些我們所關心的問題我們并不能從中知曉

控制處理(CP)

特征損失模型(MODP)回響模型(MODR)噪音模型(MODN)2.1構(gòu)架的引入我們無法從上面的圖形獲取的信息這些元素本身的實質(zhì)是什么?這些元素在系統(tǒng)中的作用又是什么?圖中的連線代表什么意義?各個元素在圖中的分布意義是什么,或者說他們的層次關系是什么?我們都無法從該線框圖上了解,因此,這不是一個完整的構(gòu)架2.2構(gòu)架的各種定義構(gòu)架的定義大體上可以分為兩大類:決策派的定義 一組決策的集合組成派的定義 元素+元素的關系2.2.1決策派定義的代表Booch、Rumbaugh和Jacobson的定義

構(gòu)架是一系列重要決策的集合,這些決策與以下內(nèi)容相關:軟件的組織、構(gòu)成系統(tǒng)的結(jié)構(gòu)元素及其接口的選擇,這些元素在相互協(xié)作中明確表現(xiàn)的行為,這些結(jié)構(gòu)元素和行為元素進一步組合所構(gòu)成的更大規(guī)模的子系統(tǒng),以及如何組織這些元素Woods的定義

軟件構(gòu)架是一系列設計決策,如果作了不正確的決策,你的項目可能最終會被取消2.2.2組成派定義的代表Garlan和Shaw的定義

構(gòu)架包括組件(Component)、連接器(Connector)和約束(Constrain)三大要素Boehmn的定義

軟件構(gòu)架包括系統(tǒng)組件、連接件和約束的集合,反映不同涉眾需求的集合和原理的集合IEEE620.12-1990定義

構(gòu)架是以組件、組件之間的關系、組件與環(huán)境之間的關系為內(nèi)容的某一系統(tǒng)的基本組織結(jié)構(gòu),以及指導上述內(nèi)容設計與演化的原理2.2.3本書的定義某個軟件或計算機系統(tǒng)的軟件構(gòu)架是該系統(tǒng)的一個或多個結(jié)構(gòu),他們由軟件元素,這些元素之間的外部可見屬性和這些元素之間的關系組成這個概念闡述了以下幾方面的意義2.2.4構(gòu)架概念的展開構(gòu)架定義了軟件元素 構(gòu)架中包含了關于各個元素如何彼此相關的信息,但省略了各個元素中與交互無關的信息,因此不考慮元素的細節(jié),對系統(tǒng)進行了抽象系統(tǒng)可能而且確實由多個結(jié)構(gòu)組成,但其中的任何一個結(jié)構(gòu)都不等同于構(gòu)架 構(gòu)架中的不同結(jié)構(gòu)有不同的側(cè)重點,有些考慮功能的分解,有些考慮元素在運行時的交互關系等等

2.2.4.1構(gòu)架的邏輯結(jié)構(gòu)2.2.4.2構(gòu)架的物理結(jié)構(gòu)2.2.4構(gòu)架概念的展開具有軟件的每個計算機系統(tǒng)都有一個軟件構(gòu)架 每個系統(tǒng)都具有元素及其之間的交互,因此都具有構(gòu)架,但是,并不是所有的人都能夠知道這個構(gòu)架的存在某個元素的行為可以從其它元素的角度觀察到或區(qū)分開,則這個元素的行為就是構(gòu)架的內(nèi)容構(gòu)架的定義中并沒有包含對構(gòu)架的評價3.構(gòu)架模式、參考模型和

參考構(gòu)架在粗略的線框骨架和包含完整信息的系統(tǒng)構(gòu)架之間,還有很多中間階段。每個階段都是執(zhí)行一組構(gòu)架決策的結(jié)果三個模型構(gòu)架模式參考模型參考構(gòu)架3.1構(gòu)架模式構(gòu)架模式是對元素、元素之間關系以及一組對其使用方式的限制的描述 我們可以把構(gòu)架模式看作是對構(gòu)架的一組制約條件——即對各元素類型及其交互模式的限制條件,而這些制約條件確定了一組或一系列能滿足他們要求的構(gòu)架 構(gòu)架模式最重要的作用是它們展示了已知的質(zhì)量屬性3.1.1客戶服務器-構(gòu)架模式電子商務網(wǎng)站3.1.2客戶服務器-構(gòu)架模式門戶網(wǎng)站3.1.3客戶服務器-構(gòu)架模式搜索引擎網(wǎng)站3.2參考模型參考模型是一種考慮數(shù)據(jù)流的功能劃分 參考模型對已知問題進行分解,分解得到的各個部分相互協(xié)作,構(gòu)成問題的解決方案網(wǎng)絡參考模型3.3參考構(gòu)架參考構(gòu)架是映射到軟件元素及元素之間數(shù)據(jù)流上的參考模型 參考模型實現(xiàn)了系統(tǒng)的功能劃分,而參考構(gòu)架則將這種功能劃分與系統(tǒng)分解對應起來,這種對應一般是一一對應關系,也可能不是參考模型構(gòu)架模式參考構(gòu)架軟件構(gòu)架模型之間的關系4.軟件構(gòu)架為和如此重要我們可以從技術(shù)的角度討論軟件構(gòu)架的重要性構(gòu)架是涉眾之間交流的手段構(gòu)架是系統(tǒng)的早期設計決策構(gòu)架是可傳遞的系統(tǒng)抽象4.1構(gòu)架是涉眾交流的手段涉眾(Stakeholder):我們把與構(gòu)建軟件系統(tǒng)相關的人員稱為涉眾軟件系統(tǒng)的各個涉眾——客戶、最終用戶、市場營銷人員,項目經(jīng)理、程序員、維護人員以及構(gòu)架設計師,他們站在不同的角度考慮系統(tǒng)4.1.1構(gòu)架起到交流作用這些涉眾之間具有不同的知識結(jié)構(gòu),他們?nèi)绾螌ν幌到y(tǒng)進行交流討論?如何相互理解彼此的意思?用自然語言?程序語言還是圖形?構(gòu)架提供了一種共同的語言,有關各方可借助它表達和協(xié)商各自的需求,并理性地找到解決方案4.2構(gòu)架是早期設計決策的體現(xiàn)構(gòu)架明確了對系統(tǒng)實現(xiàn)的約束條件構(gòu)架決定了開發(fā)組織的組織結(jié)構(gòu)架阻止或支持系統(tǒng)的質(zhì)量屬性的實現(xiàn)通過研究構(gòu)架可以預測系統(tǒng)的質(zhì)量構(gòu)架使推理判斷和控制更改更簡單構(gòu)架有助于循序漸進的原型設計可以通過構(gòu)架進行更準確的成本和進度估計4.2.1構(gòu)架明確了對系統(tǒng)實現(xiàn)的約束條件系統(tǒng)實現(xiàn)應該體現(xiàn)構(gòu)架設計的特色,在設計構(gòu)架時首先應該考慮到構(gòu)架的約束條件比如,系統(tǒng)會運行在什么樣的資源環(huán)境下,獨立的PC機,手機還是分布式系統(tǒng)硬件環(huán)境是一個約束條件4.2.2構(gòu)架決定了開發(fā)組織的組織結(jié)構(gòu)構(gòu)架不僅規(guī)定了所開發(fā)軟件系統(tǒng)的結(jié)構(gòu),而且也影響著項目開發(fā)的組織結(jié)構(gòu)建立工作分解結(jié)構(gòu)的一個副作用是,它限定了軟件構(gòu)架的某些方面,比如更改工作小組系統(tǒng)由不同組件構(gòu)成4.2.3架阻止或支持系統(tǒng)的質(zhì)量屬性的實現(xiàn)為了支持高可靠性系統(tǒng),通常采用冗余體系結(jié)構(gòu)為了支持可修改性,會使用分層結(jié)構(gòu),而這又會阻止高性能的實現(xiàn)帶有冗余功能的軟件結(jié)構(gòu)4.2.4構(gòu)架使推理判斷和控制更改更簡單軟件系統(tǒng)的成本大約有80%會花費在初次部署之后的維護階段好的構(gòu)架使修改更加容易,每個構(gòu)架的修改可以分為:本地的、非本地的和構(gòu)架上的,我們應將系統(tǒng)的修改控制在最容易修改的地方4.2.5構(gòu)架有助于循序漸進的原型設計一旦確定了構(gòu)架,就可以對其進行分析,并將其原型構(gòu)造為一個骨架系統(tǒng)在產(chǎn)品生命的早期就能得到一個可執(zhí)行的系統(tǒng),以后使用使用結(jié)構(gòu)對系統(tǒng)進行擴充使系統(tǒng)在早期可執(zhí)行的一個特例就是在產(chǎn)品生命期的早期確定潛在的需求問題4.2.6可以通過構(gòu)架進行更準確的成本和進度估計成本和進度估計是一個重要的管理工具,它能夠使管理人員獲得必要的資源并了解項目開發(fā)中是否遇到困難。與了解整個系統(tǒng)相比,了解系統(tǒng)的某些部分本質(zhì)上可以使成本和進度的估計更加準確4.3構(gòu)架是可傳遞、可重用的模型構(gòu)架的重用為開發(fā)組織帶來巨大的效益產(chǎn)品線共享一個公共的構(gòu)架系統(tǒng)開發(fā)可以使用大型的由其它組織開發(fā)的元素在一定的范圍內(nèi)限制,使構(gòu)架可以獲得更廣泛的重用構(gòu)架使基于模板的開發(fā)成為可能構(gòu)架可以作為培訓的基礎4.3.1產(chǎn)品線共享一個公共的構(gòu)架軟件產(chǎn)品線或家族是一組軟件密集型系統(tǒng),這些系統(tǒng)共享一個公共的、可管理的特性集,滿足了特定市場或任務的具體需要,是按照規(guī)定的方式根據(jù)一組公共的核心資產(chǎn)開發(fā)的在這些核心資產(chǎn)中,主要部分就是設計用來處理整個家族需要的構(gòu)架微軟的Windows操作系統(tǒng)是很好利用產(chǎn)品線開發(fā)的例子4.3.2系統(tǒng)開發(fā)可以使用大型的由其它組織開發(fā)的元素基于構(gòu)架的開發(fā)強調(diào)各元素的組合或裝配,而這些元素很可能已分別甚至是完全獨立地開發(fā)實現(xiàn)了商業(yè)組件、子系統(tǒng)、兼容的通信結(jié)構(gòu)都是基于互換性原則的各種可互換使用的Grid組件4.3.3少就是多,限制構(gòu)架選擇范圍盡管計算機程序可以無限組合,但涉及到程序的協(xié)調(diào)和交互時,有意識地限制選擇可以得到更多的重用比如采用客戶機\服務器模式,可以產(chǎn)生各種不同的實際系統(tǒng)4.3.4構(gòu)架可以作為培訓的基礎在對項目新成員介紹所開發(fā)的系統(tǒng)時,可以首先介紹系統(tǒng)的構(gòu)架,以及對組件之間如何交互從而實現(xiàn)系統(tǒng)需求的高層次描述,這可以更好地培訓新成員5.構(gòu)架結(jié)構(gòu)和視圖現(xiàn)代的軟件系統(tǒng)非常復雜,我們很難一下子就理解他們。正確的做法是任何時刻我們只關注軟件系統(tǒng)的一個或幾個結(jié)構(gòu)。這正如不同的醫(yī)生關注病人的不同部分視圖是構(gòu)架元素內(nèi)聚集的表述,由系統(tǒng)涉眾編寫和閱讀,它由一個元素集合表示和元素之間的關系組成,用于表示構(gòu)架中的某個結(jié)構(gòu)從不同角度看到的人體視圖5.1構(gòu)架結(jié)構(gòu)結(jié)構(gòu)——結(jié)構(gòu)是元素本身的集合,他們存在于軟件和硬件中,比如,模塊結(jié)構(gòu)是系統(tǒng)的模塊和其組織的結(jié)構(gòu),模塊視圖是該結(jié)構(gòu)的表示構(gòu)架結(jié)構(gòu)根據(jù)元素的主要特性可以分為三類模塊結(jié)構(gòu)組件—連接器結(jié)構(gòu)分配結(jié)構(gòu)5.2軟件結(jié)構(gòu)常見的軟件構(gòu)架結(jié)構(gòu)模塊分解類使用分層組件-連接器客戶機/服務器共享數(shù)據(jù)并發(fā)進程分配工作分配實現(xiàn)部署5.2.1模塊結(jié)構(gòu)模塊結(jié)構(gòu)的元素是模塊,模塊表示一種考慮系統(tǒng)的基于功能的劃分模塊結(jié)構(gòu)要回答的問題:分配給每個模塊的主要功能責任允許模塊使用的其它軟件元素它實際使用的其它軟件是什么什么模塊通過泛化和特化(類的繼承)關系與其它模塊相關5.2.1.1分解結(jié)構(gòu)基于模塊的結(jié)構(gòu)包括如下內(nèi)容:分解結(jié)構(gòu)(任務分解) 分解結(jié)構(gòu)通過“是一個子模塊”的關系將彼此關聯(lián)起來,它展示了如何將大的模塊分解為小模塊,直到很容易理解為止 該方法適用于資源分配、項目結(jié)構(gòu)化和規(guī)劃,信息隱藏等5.2.1.2使用結(jié)構(gòu)使用結(jié)構(gòu)(調(diào)用關系) 使用結(jié)構(gòu)也是模塊、過程或模塊結(jié)構(gòu)上的資源,這些單元通過“使用”關系彼此關聯(lián) 該結(jié)構(gòu)單元用于設計子集、設計擴展等,便于系統(tǒng)的增量式開發(fā) 比如,我們?yōu)橐粋€系統(tǒng)設計數(shù)據(jù)處理,我們可能有很多處理被調(diào)用,但開始時我們只完成有限的實際處理單元,然后再擴展5.2.1.3分層結(jié)構(gòu)分層結(jié)構(gòu)(特殊的使用關系)

當以一種特定的方式小心地控制該結(jié)構(gòu)中的使用關系時,就出現(xiàn)了由層組成的系統(tǒng),在該系統(tǒng)中,一個層就是相關功能的一個一致的集合。在一個嚴格的分層結(jié)構(gòu)中,第n層只能使用第n-1層提供的服務 分層結(jié)構(gòu)適用于增量式開發(fā),在“虛擬機”上實現(xiàn)可移植性,操作系統(tǒng)多采用分層結(jié)構(gòu)5.2.1.5類結(jié)構(gòu)類或泛化

該結(jié)構(gòu)中的模塊單元是類,關系是“繼承自”或“是一個實例” 該結(jié)構(gòu)適用于面向?qū)ο蟮木幊讨?,從一個公共的模板中產(chǎn)生快速的、相近的實現(xiàn)5.2.2組件——連接器結(jié)構(gòu)該結(jié)構(gòu)的元素是運行時的組件和連接器該結(jié)構(gòu)回答如下問題:什么是主要的執(zhí)行組件,它們之間如何交互什么是主要的共享數(shù)據(jù)存儲數(shù)據(jù)在系統(tǒng)中經(jīng)過了哪些地方系統(tǒng)的哪些部分可以并行運行系統(tǒng)執(zhí)行時,其結(jié)構(gòu)可能發(fā)生的變化5.2.2.1進程或通信進程進程或通信進程 此處的單元為通過通信、同步和/或排除操作將彼此相連的進程或線程 該結(jié)構(gòu)用于調(diào)度分析;性能分析等順序圖5.2.2.2并發(fā)并發(fā) 該結(jié)構(gòu)能夠使設計師確定并行的機會以及可能出現(xiàn)的資源爭用的位置 單元是組件,連接器是“邏輯線程” 其適用于確定存在資源爭用,線程交叉、連接、被創(chuàng)建或被殺死的位置活動圖5.2.2.3共享數(shù)據(jù)或存貯庫共享數(shù)據(jù)或存貯庫 該結(jié)構(gòu)由創(chuàng)建、存儲和訪問持久數(shù)據(jù)的組件和連接器組成 該結(jié)構(gòu)展示了軟件元素如何產(chǎn)生數(shù)據(jù)和使用數(shù)據(jù),可以使用該結(jié)構(gòu)確保良好的性能和數(shù)據(jù)完整性5.2.2.4客戶機/服務器客戶機/服務器 組件是客戶機和服務器,連接器是協(xié)議以及它們共享來執(zhí)行系統(tǒng)工作的消息 該結(jié)構(gòu)適用于關注點的分離(支持可修改性)、物理分布和負載平衡5.2.3分配結(jié)構(gòu)分配結(jié)構(gòu)展示了軟件元素,創(chuàng)建并執(zhí)行軟件的一個或多個外部環(huán)境中的元素之間的關系它回答如下問題:每個軟件元素在什么處理器上執(zhí)行在開發(fā)、測試和系統(tǒng)構(gòu)建期間,每個元素都存儲在什么文件中分配給開發(fā)小組的軟件元素是什么5.2.3.1部署結(jié)構(gòu)部署 該結(jié)構(gòu)展示了如何將軟件分配給硬件處理和通信元素 該結(jié)構(gòu)的元素是軟件、硬件和通信路徑;關系是“分配給”和“移植到” 該結(jié)構(gòu)用于工程人員對性能、數(shù)據(jù)完整性、可用性和安全性進行推斷5.2.3.2實現(xiàn)結(jié)構(gòu)實現(xiàn) 該結(jié)構(gòu)展示了軟件元素是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論