第8章軟件體系結構_第1頁
第8章軟件體系結構_第2頁
第8章軟件體系結構_第3頁
第8章軟件體系結構_第4頁
第8章軟件體系結構_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第八講軟件體系結構教師姓名電子郵件學校個人主頁目錄1.什么是軟件體系結構?2.為什么要研究軟件體系結構?3.軟件體系結構的研究角度;4.基本的軟件體系結構風格;5.基于體系結構的軟件開發(fā)模式;6.異構體系結構;7.軟件體系結構的當前研究熱點。什么是軟件體系結構?DewaynePerry和AlexanderWolf于1992年正式提出軟件體系結構的概念:軟件體系結構是具有一定形式的結構化元素。結構化元素包括:進程元素、數(shù)據(jù)元素和連接元素。MaryShaw和DavidGarlan于1993年提出:軟件體系結構是軟件設計過程中的一個層次,這一層次超越計算過程中的算法設計和數(shù)據(jù)結構設計。設計和說明總體系統(tǒng)結構作為一個新問題正式提出來了。什么是軟件體系結構?DewaynePerry和DavidGalan于1995年IEEE軟件工程學報上定義:軟件體系結構是一個程序/系統(tǒng)各部件的結構、它們之間的相互關系、進行設計的原則和隨時間演進的指導方針。南加州大學軟件工程中心的BarryBoehm指出:一個軟件體系結構包括:(1)一個軟件和系統(tǒng)部件、互聯(lián)及約束的集合;(2)一個系統(tǒng)需求說明的集合;(3)一個基本原理用以說明這一部件、互聯(lián)和約束能夠滿足系統(tǒng)的需求。什么是軟件體系結構?1997年,Bass,Clements和Kazman在《使用軟件體系結構》一書中的定義:一個程序或計算機系統(tǒng)的軟件體系結構包括一個或一組軟件部件、軟件部件的外部可見特性及其相互關系?!巴獠靠梢娞匦浴笔侵杠浖考峁┑姆?、性能、特性、錯誤處理、共享資源使用等。這一定義強調軟件體系結構必須從系統(tǒng)中抽象出某些信息。什么是軟件體系結構?

對軟件體系結構定義的總結分析:軟件體系結構定義了軟件部件(Component),包括部件間交互的定義,特別強調省略和部件相互關系無關的內容信息(contentinformation)。軟件體系結構并不說明什么是部件、什么是部件的相互關系。每一個軟件系統(tǒng)都有自身的體系結構,即由軟件部件及其相互關系組成。軟件體系結構中每一部件的行為是體系結構的一部分,反映部件間如何進行交互。軟件體系結構的基本元素是部件,部件的描述信息包括:(1)計算功能:部件所實現(xiàn)的整體功能;(2)額外功能特性:描述部件的執(zhí)行效率、處理能力、環(huán)境假設和整體特性;(3)結構特性:描述部件如何與其他部件集成在一起,以構成系統(tǒng)信息;(4)家族特性:描述了相同或相關部件之間的關系。什么是軟件體系結構?表1:普通部件及其支持的相互作用目錄1.什么是軟件體系結構?2.為什么要研究軟件體系結構?3.軟件體系結構的研究角度;4.基本的軟件體系結構風格;5.基于體系結構的軟件開發(fā)模式;6.異構體系結構;7.軟件體系結構的當前研究熱點。為什么要研究軟件體系結構?1.系統(tǒng)體系結構的發(fā)展是與計算機抽象技術的發(fā)展同步的;2.大規(guī)模復雜軟件系統(tǒng)的性能與質量對軟件工程技術提出了新的要求;3.軟件體系結構研究的重要性。為什么要研究軟件體系結構?----計算機抽象技術的發(fā)展抽象數(shù)據(jù)類型數(shù)據(jù)結構與算法軟件結構研究的開始高級程序設計語言程序族軟件體系結構匯編語言、宏替換;高級語言編譯器、數(shù)據(jù)類型。程序=數(shù)據(jù)結構+算法(算法抽象)軟件劃分與構造,方便系統(tǒng)的開發(fā)與維護。(模塊抽象)數(shù)據(jù)類型抽象、封裝、信息隱藏、多態(tài)性等。一個家族的程序,在信息隱藏和軟件結構設計上具有相同的模式。(設計模式抽象)軟件體系結構可以看作是要把程序族中的成員的結構化信息組織起來,使系統(tǒng)在體系結構級達到重用。(體系結構抽象)為什么要研究軟件體系結構?----軟件工程技術發(fā)展的要求程序設計階段早期軟件工程階段手工作坊軟件危機1.軟件開發(fā)無計劃性;2.軟件需求不充分;3.軟件開發(fā)過程無規(guī)范;4.軟件開發(fā)產品無評測手段。如何更多、更好、更方便、更快地開發(fā)軟件?工程化管理軟件開發(fā)以滿足功能需求為主問題定義;需求分析;概要設計;詳細設計;編碼;測試;維護瀑布模型;演化模型;螺旋模型;噴泉模型;增量模型;原型模型;組裝可重用構件模型。為什么要研究軟件體系結構?----軟件工程技術發(fā)展的要求?1.

為什么專家和新手在使用軟件開發(fā)模型和軟件工程方法時,表現(xiàn)出來的軟件效率和效果不一樣?專家的經驗應用環(huán)境問題要求空間問題求解空間如:設計模式框架注意:經驗的抽取與表達獨立于具體的功能要求。為什么要研究軟件體系結構?----軟件工程技術發(fā)展的要求?2.

為什么應用軟件開發(fā)模型和軟件工程方法解決大規(guī)模、復雜問題時,軟件系統(tǒng)的質量和效率無法得到保證?非功能性需求1.系統(tǒng)性能要求,可用性要求;2.系統(tǒng)可適應性和可移植性要求;3.系統(tǒng)可靠性和安全保密性要求;4.系統(tǒng)可重用性要求等。解決方法:在系統(tǒng)的局部算法結構設計之前,著重進行系統(tǒng)的整體結構設計。軟件體系結構設計為什么要研究軟件體系結構?----軟件工程技術發(fā)展的要求軟件概要設計的主要任務就是進行系統(tǒng)結構設計,是不是就是軟件體系結構設計?概要設計結構化設計面向對象設計注意:以往的概要設計中的功能實體(構件)的設計是首位的,也是顯式的,構件間的連接并沒有單獨作為實體顯式地設計,而是作為構件的附屬形式出現(xiàn)。而軟件體系結構設計將部件、部件連接、連接規(guī)范和原則單獨作為實體顯式定義。為什么要研究軟件體系結構?----軟件體系結構研究的重要性1.軟件體系結構是系統(tǒng)開發(fā)中不同參與者進行交流和信息傳播的媒介。注意:軟件體系結構代表了系統(tǒng)的公共的高層次的抽象。為什么要研究軟件體系結構?----軟件體系結構研究的重要性2.軟件體系結構代表了早期的設計決策成果。早期的決策最難處理、最難于改變、影響范圍也最大。軟件體系結構給予開發(fā)人員一種實現(xiàn)的約束。(部件劃分、部件交互)軟件體系結構支配了開發(fā)和維護項目的組織結構。(系統(tǒng)結構支配了項目組織結構)軟件體系結構關系著系統(tǒng)的目標質量。(好的體系結構是系統(tǒng)成功的必要條件)通過研究軟件體系結構可能預測軟件的某些質量。軟件體系結構是系統(tǒng)的高層次概述,因此可以作為新項目成員培訓的基礎。軟件體系結構可以幫助管理層適應變化。(改動的時間、風險、后果、優(yōu)先級等)軟件變化種類1.局部的:修改單個部件本身;2.非局部的:要修改幾個部件,但不影響基礎體系結構的變動;3.體系結構級的:改動會影響各部分的相互關系,甚至整個系統(tǒng)。為什么要研究軟件體系結構?----軟件體系結構研究的重要性3.軟件體系結構可以作為一種可變換的模型。軟件體系結構決策能在具有相似需求的多個系統(tǒng)中發(fā)生影響。通過體系結構的抽象可以使設計者能夠對一些經過實踐證明是非常有效的體系結構部件進行復用,從而提高設計的效率和可靠性。軟件體系結構有利于形成完整的軟件生產線,并共享公共的軟件體系結構??梢砸M大量的外部開發(fā)的部件來構造系統(tǒng),只要這些部件是與確定的體系結構相容。體系結構可以使部件的功能與其互連機制分離,從而可以分散注意焦點,有利于處理問題。體系結構有利于面向模式、面向部件的開發(fā)。因此:軟件體系結構體現(xiàn)了一個相對來說比較小又可理解的模型軟件體系結構講座提綱1.什么是軟件體系結構?2.為什么要研究軟件體系結構?3.軟件體系結構的研究角度;4.基本的軟件體系結構風格;5.基于體系結構的軟件開發(fā)模式;6.異構體系結構;7.軟件體系結構的當前研究熱點。軟件體系結構的研究角度1.軟件角度從不同角度分析軟件的體系結構。2.軟件風格(style)角度

描述了對軟件設計成分如何進行整理和安排,并且對這些整理和安排加以限制,從而形成一種設計軟件的特定模式。每一種軟件體系結構風格均有自己的組織原則和基本成分,它們決定了風格的形成。軟件體系結構研究角度----軟件角度

從多個不同的角度描述一個軟件系統(tǒng)的整體結構,能全面、清晰地反映軟件系統(tǒng)的全貌,也能滿足不同參與者的需求。目前常用的“4+1”角度模式:支持軟件的功能需求(系統(tǒng)的功能抽象)支持模塊的組織與管理(軟件的靜態(tài)結構)系統(tǒng)的并發(fā)與同步等控制結構,支持系統(tǒng)的非功能性需求。描述軟件和硬件的映射問題對系統(tǒng)中的重要活動的抽象,使四個角度有機地聯(lián)系起來。軟件體系結構研究角度----軟件風格角度軟件體系結構風格:能重復使用的軟件體系模式。有原則使用結構風格的益處:促進了對體系結構設計的復用;帶來顯著的代碼復用。體系結構風格不變部分可以共享同一個實現(xiàn)代碼;只要系統(tǒng)是使用常用的、規(guī)范的方法來組織,就可使別的設計者很容易地理解系統(tǒng)的體系結構;對標準風格的使用也支持了互操作性。CORBA與基于事件機制的集成;結構風格通常允許進行特殊的和風格有關的分析,這與連接件的特性有關;通常有可能對特定的風格提供可視化手段(visualization)。注意:結構風格的使用幾乎完全是特化的,必須根據(jù)特定項目的具體特點進行分析比較后確定。軟件體系結構研究角度----軟件風格角度軟件體系結構風格的四種基本要素:1.提供一個詞匯表:定義與設計元素有關的部件、連接件類型等。2.定義一套配置規(guī)則或系統(tǒng)的拓撲限制:明確設計元素的合法組成方式。3.定義一套語義解釋原則:使得設計元素的組成可以適當?shù)丶s束于配置規(guī)則之中,并具有清晰的含義。4.定義可以對基于這種風格建立的系統(tǒng)進行的分析。如:Client/Server結構風格的實時處理過程的可調度性。軟件體系結構講座提綱1.什么是軟件體系結構?2.為什么要研究軟件體系結構?3.軟件體系結構的研究角度;4.基本的軟件體系結構風格;5.基于體系結構的軟件開發(fā)模式;6.異構體系結構;7.軟件體系結構的當前研究熱點?;镜能浖w系結構風格出發(fā)點:側重于軟件體系結構的結構模型,即觀察軟件部件、連接件、部件及連接件組合的約束條件。1.

管道和過濾器(pipesandfilters)2.數(shù)據(jù)抽象和面向對象組織(dataabstractionandOO-organization)3.基于事件的隱式調用(event-based,implicitinvocation)4.分層系統(tǒng)(layeredsystems)5.倉庫系統(tǒng)(repositories)6.表格驅動的解釋器(tabledriveninterpreters)7.其它類型的體系結構基本的軟件體系結構風格----管道/過濾器(pipesandfilters)計算過濾器計算過濾器管道過濾器:對輸入數(shù)據(jù)進行局部變換,并采用漸進式計算方法,在未處理完所有輸入數(shù)據(jù)以前,就可以產生部分計算結果,并將其送到輸出端口。管道:各過濾器之間的連接器將一個過濾器的輸出傳到下一過濾器的輸入端。特征:1.過濾器一定是獨立的實體,即各過濾器之間不能共享狀態(tài);

2.過濾器與其連接的上下游的過濾器互相獨立。過濾器只能涉及限制哪類數(shù)據(jù)可以出現(xiàn)在它的輸入管道中,可以保證它將輸出何種類型的計算結果,但不能識別與其相連的管道的另一邊的過濾器?;镜能浖w系結構風格----管道/過濾器(pipesandfilters)1.系統(tǒng)的整體行為可以理解為各獨立過濾器行為的簡單合成。

2.系統(tǒng)維護容易:過濾器可以容易地替換和增加。

3.允許進行如吞吐量和死鎖等性能分析。

4.很自然地支持并發(fā)執(zhí)行。1.過濾器容易被看成提供一個完整的將輸入數(shù)據(jù)轉換成輸出數(shù)據(jù)的模塊。實際上,過濾器是以漸進式處理數(shù)據(jù)的。

2.維護兩個分離但相關的數(shù)據(jù)流時,很難設計這樣的系統(tǒng)。

3.由于管道遵循最一般的數(shù)據(jù)傳輸標準,所以,過濾器必須承擔數(shù)據(jù)語法分析和編碼的額外工作,增加了復雜性,降低了性能。基本的軟件體系結構風格----數(shù)據(jù)抽象和面向對象組織(dataabstractionandOO-organization)部件:對象,或者說是抽象數(shù)據(jù)類型的實例。連接:對象間通過函數(shù)和過程調用發(fā)生相互關系。特征:1.對象負責維持本身的完整性;

2.信息隱藏:對象的結構和方法的實現(xiàn)對其它對象不可見。抽象、封裝、信息隱藏、繼承、多態(tài)性、動態(tài)聯(lián)編等…...一個對象與另一個對象交互時必須知道對方的標識,這種顯式調用使得系統(tǒng)的維護變得較困難?;镜能浖w系結構風格----基于事件的隱式調用(event-based,implicitinvocation)思想:組件不直接調用一個過程,而是觸發(fā)或廣播一個或多個事件。系統(tǒng)中其它組件的過程在一個或多個事件中注冊,當一個事件被觸發(fā),系統(tǒng)自動調用在這個事件中注冊的所有過程。這樣,事件的觸發(fā)就可以隱式調用模塊中的過程。特點:事件的聲明者不用知道哪些部件會被事件影響。部件:模塊,既可以是過程,又可以是事件集合。連接:顯式和隱式過程調用強有力支持軟件復用;系統(tǒng)容易升級。軟件部件放棄了對計算的控制,控制完全由系統(tǒng)完成。數(shù)據(jù)傳遞常常需要依賴一個存儲庫來完成,資源管理成為問題。系統(tǒng)正確性的評判問題。因為過程的調用依賴于調用時的環(huán)境?;镜能浖w系結構風格----分層系統(tǒng)(layeredsystems)內核基本工具有用的系統(tǒng)用戶軟部件:實現(xiàn)在層次結構中的虛擬機連接件:層次與層次之間交互的協(xié)議層次化組織原則:每一層向其上層提供服務,并利用下層的服務?;镜能浖w系結構風格----分層系統(tǒng)(layeredsystems)支持基于抽象程度遞增的系統(tǒng)設計。支持功能擴展、增強。因為功能的改變最多影響相鄰的層次。支持復用。只要提供的服務接口定義不變,同一層的不同實現(xiàn)可以交換使用。并不是每個系統(tǒng)都可以很容易地劃分為分層的模式,有時即使存在邏輯層次結構,但出于對系統(tǒng)性能的考慮,將低層和高層的功能耦合起來。很難找到一個合適的、正確的層次抽象方法?;镜能浖w系結構風格----倉庫系統(tǒng)(repositories)軟件部件表示當前狀態(tài)的中心數(shù)據(jù)結構一組相互獨立的處理中心數(shù)據(jù)的部件部件交互方式根據(jù)輸入數(shù)據(jù)流的事務處理類型決定執(zhí)行哪個處理過程根據(jù)中心數(shù)據(jù)結構的當前狀態(tài)觸發(fā)進行執(zhí)行傳統(tǒng)的數(shù)據(jù)庫系統(tǒng)黑板系統(tǒng)基本的軟件體系結構風格----倉庫系統(tǒng)(repositories)黑板(共享數(shù)據(jù))知識源知識源知識源知識源直接存取:知識源不斷改變黑板的狀態(tài)。按照與應用程序相關的層次組織的問題求解數(shù)據(jù)獨立、分離的與應用程序相關的知識及其處理單元黑板狀態(tài)驅動控制:使用特定的知識?;镜能浖w系結構風格----表格驅動的解釋器(tabledriveninterpreters)工作存儲區(qū)對解釋引擎控制狀態(tài)的表示被解釋程序的當前狀態(tài)的表示解釋引擎輸入輸出計算狀態(tài)機被選數(shù)據(jù)和指令存儲器數(shù)據(jù)存取解釋器基本的軟件體系結構風格----表格驅動的解釋器(tabledriveninterpreters)工作存儲區(qū)規(guī)則庫規(guī)則與數(shù)據(jù)元素選擇規(guī)則解釋引擎輸入輸出計算狀態(tài)機被選數(shù)據(jù)和規(guī)則存儲器數(shù)據(jù)存取事實存儲區(qū)專家系統(tǒng)基本的軟件體系結構風格----其它類型的體系結構分布式系統(tǒng)中最常用的體系結構:客戶/服務器模型服務器:為客戶提供服務;事先并不知道有哪些客戶對其進行訪問。客戶:必須直接或間接知道服務器的標識。遠過程調用注意:結構的層次可以是兩層,也可以是三層(在客戶和服務器之間增加了一個中間層:中間件),三層結構中相鄰兩層仍然保持客戶/服務器的關系?;镜能浖w系結構風格Garlan和Shaw對通用體系結構風格的分類:數(shù)據(jù)流風格:批處理序列;管道/過濾器;過程/調用風格:主程序/子過程;面向對象;分層系統(tǒng);獨立組件風格:進程通訊;基于事件驅動的系統(tǒng);虛擬機風格:表格驅動的解釋器;基于規(guī)則的系統(tǒng);數(shù)據(jù)中心風格:數(shù)據(jù)庫系統(tǒng);超文本系統(tǒng);黑板系統(tǒng)。小結:一個體系結構風格定義了有相同組織結構模式的一系列系統(tǒng),并定義了組件和連接器類型的列表以及一套組件連接的約束。許多體系結構模型還有一個或多個語義模型來指定如何由各部分的屬性決定系統(tǒng)的整體屬性。軟件體系結構講座提綱1.什么是軟件體系結構?2.為什么要研究軟件體系結構?3.軟件體系結構的研究角度;4.基本的軟件體系結構風格;5.基于體系結構的軟件開發(fā)模式;6.異構體系結構;7.軟件體系結構的當前研究熱點?;隗w系結構的軟件開發(fā)模式良好的體系結構可以為軟件開發(fā)和維護帶來好處:識別相似系統(tǒng)的通用結構模式,有助于理解系統(tǒng)高層之間的聯(lián)系,使得新系統(tǒng)可以作為以前系統(tǒng)的變種來構造;合適的體系結構是系統(tǒng)成功的關鍵,而不合適的體系結構可能帶來災難性的后果;對軟件體系結構的理解,可以幫助開發(fā)人員在不同的設計方案中做出理性的選擇;體系結構對于分析和描述復雜系統(tǒng)的高層屬性通常是十分必要的;各種體系結構風格的提煉、描述和普遍采用,便于軟件開發(fā)人員在系統(tǒng)設計中互相交流;在軟件開發(fā)文檔中清晰地記錄系統(tǒng)體系結構,不僅可以顯著地節(jié)省軟件理解的工作量,而且便于在軟件維護的全過程中保持系統(tǒng)的總體結構和特性不變?;隗w系結構的軟件開發(fā)模式提煉特定應用領域的穩(wěn)定需求和易變需求,建立可復用的領域模型。在特定領域模型的基礎上提煉特定應用領域的軟件體系結構。進行體系結構設計分配系統(tǒng)功能到相應的構建和連接件上存放設計模式、對象或其它可重用的設計構件。設計構件和連接件復用/存儲軟件體系結構講座提綱1.什么是軟件體系結構?2.為什么要研究軟件體系結構?3.軟件體系結構的研究角度;4.基本的軟件體系結構風格;5.基于體系結構的軟件開發(fā)模式;6.異構體系結構;7.軟件體系結構的當前研究熱點。異構體系結構1.異構是不可避免的不同的體系結構在處理能力上有不同的優(yōu)缺點,一個系統(tǒng)的體系結構應該根據(jù)實際需要進行選擇,以解決實際問題。同一種體系結構下的可重用的部件和連接件在不同時期可能存在不同的標準,特別是連接件中的通信協(xié)議標準。如果要重用原來系統(tǒng)中遺留下來的代

溫馨提示

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

評論

0/150

提交評論