【文章內(nèi)容簡介】
體系結(jié)構(gòu)與 UML ◇ UML簡介 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ UML簡介 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ UML簡介 Use Case Diagrams Use Case Diagrams 用例圖 Scenario Diagrams Scenario Diagrams 協(xié)作圖 State Diagrams State Diagrams 構(gòu)件圖 Component Diagrams Component Diagrams 部署圖 State Diagrams State Diagrams 對象圖 Scenario Diagrams Scenario Diagrams 狀態(tài)圖 Use Case Diagrams Use Case Diagrams 順序圖 State Diagrams State Diagrams 類圖 活動圖 UML 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 用例圖 用于顯示若干角色以及這些角色與系統(tǒng)提供的用例之間的連接關(guān)系。用例是系統(tǒng)提供的功能的描述。 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 類圖 表示系統(tǒng)中的類和類與類之間的關(guān)系,它是對系統(tǒng)靜態(tài)結(jié)構(gòu)的描述。 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 順序圖 用來反映若干個對象之間的動態(tài)協(xié)作關(guān)系,也就是隨著時間的推移,對象之間是如何交互的 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 協(xié)作圖 描述對象間的協(xié)作關(guān)系,協(xié)作圖跟順序圖相似,顯示對象間的動態(tài)合作關(guān)系。 如果強調(diào)時間和順序,則使用順序圖;如果強調(diào)上下級關(guān)系,則選擇協(xié)作圖。這兩種圖合稱為交互圖。 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 狀態(tài)圖 描述類的對象所有可能的狀態(tài)以及事件發(fā)生時狀態(tài)的轉(zhuǎn)移條件。通常,狀態(tài)圖是對類圖的補充 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 活動圖 描述滿足用例要求所要進行的活動以及活動間的約束關(guān)系,有利于識別并行活動 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 構(gòu)件圖 描述代碼構(gòu)件的物理結(jié)構(gòu)及各構(gòu)件之間的依賴關(guān)系 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 部署圖 部署圖定義系統(tǒng)中軟硬件的物理體系結(jié)構(gòu) 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 直接使用 UML建模 元 元模型元模型模型用戶對象UML的四層元模型體系結(jié)構(gòu) 。 元 元模型層定義了元模型層的規(guī)格說明語言; 元模型 層為給定的建模語言定義規(guī)格說明; 模型層用來定義特定軟件系統(tǒng)的模型; 用戶對象用來構(gòu)建給定模型的特定實例 。 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 直接使用 UML建模 ◎ 語義約束 由對象約束語言 OCL表示 , OCL基于一階謂詞邏輯 ,每一個 OCL表達式都處于一些 UML模型元素的背景下 ( 由“ self”引用 ) , 可使用該元素的屬性和關(guān)系作為其項( term) , 同時 OCL定義了在集合 ( sets) 、 袋 (bags)等上的公共操作集和遍歷建模元素間關(guān)系的構(gòu)造 , 因此 ,其它建模元素的屬性也可以作為它的項 。 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 直接使用 UML建模 ◎ UML中的通用表示 ( 1) 字符串:表示有關(guān)模型的信息; ( 2) 名字:表示模型元素; ( 3) 標(biāo)號:不同于編程語言中的標(biāo)號 , 是用于表示或說明圖形符號的字符串; ( 4) 特殊字符串:表示某一模型元素的特性; ( 5) 類型表達式:聲明屬性 、 變量及參數(shù) , 含義同編程語言中的類型表達式; ( 6) 實體類型:它是 UML的擴充機制 , 運用實體類型可定義新類型的模型元素; ( 7) 語義部分是對 UML的準(zhǔn)確表示 , 由三部分組成 。 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 直接使用 UML建模 ◎ UML語義部分 ◇ 通用元素:主要描述 UML中各元素的語義 。 通用元素是 UML中的基本構(gòu)造單位 , 包括模型元素和視圖元素 , 模型元素用來構(gòu)造系統(tǒng) , 視圖元素用來構(gòu)成系統(tǒng)的表示成分; ◇ 通用機制:主要描述使 UML保持簡單和概念上一致的機制的語義 。 包括定制 、 標(biāo)記值 、 注記 、 約束 、 依賴關(guān)系 、 類型 實例 、 類型 類的對應(yīng)關(guān)系等機制; ◇ 通用類型:主要描述 UML中各種類型的語義 。 這些類型包括布爾類型 、 表達式類型 、 列表類型 、 多重性類型 、 名字類型 、 坐標(biāo)類型 、 字符串類型 、 時間類型 、 用戶自定義類型等 。 三部分不是相互獨立的 , 而是相互交叉重疊 、 緊密相連 , 共同構(gòu)成了 UML的完整語義 。 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 直接使用 UML建模 ◎ 會議安排系統(tǒng)的類圖 P e r s o nI m p o r t a n tA t t e n d e eA t t e n d e eL o c a t i o nM e e t i n gI n i t i a t o rD a t eM e e t i n gS t r o n g l y C o n f l i c t s W i t hC o n f l i c t s W i t h0 . . *0 . . *0 . . *0 . . *P r o f e r s1 1111110 . . *0 . . *121 . . * 1 . . * 0 . . *P r o f e r sI n v i t e sP r o p o s e sE x c l u d e s0 . . *第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 直接使用 UML建模 ◎ 會議安排系統(tǒng)類接口 i n t e r f a c e M t g I n i tG e t P r e f S e t ( ) 。G e t E x c l S e t ( ) 。R e m o v e E x c l S e t ( ) 。R e q u e s t W i t h d r a w a l ( A t t e n d e e ) 。A d d P r e f D a t e s ( ) 。 i n t e r f a c e I m p o r t a n t M t g I n i tG e t L o c P r e f s ( ) 。 i n t e r f a c e M t g A t t e n dP r e f S e t ( d a t e _ m g ) 。E x c l S e t ( d a t e _ m g ) 。E q u i p R e q t s ( e q u i p _ t y p e ) 。 i n t e r f a c e I m p o r t a n t M t g A t t e n dL o c P r e f s ( l o c _ t y p e ) 。第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 直接使用 UML建模 ◎ C2連接件模型 AttConnGetPrefSet()。GetExclSet()。RemoveExclSet()。RequestWithdrawal(Attendee)。AddPrefDates()。PrefSet(date_mg)。ExclSet(date_mg)。EquipReqts(equip_type)。ImportantAttConnGetLocPrefs()。LocPrefs(loc_type)。MainConn第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 直接使用 UML建模 ◎ 細(xì)化的類圖 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 直接使用 UML建模 ◎ 會議安排系統(tǒng)的協(xié)作圖 :Attendee :ImportantAttendee:MainConn:MeetingInitiator:ImportantAttConn:AttConn1:GetPrefSet()10:PrefSet(date_mg)9:PrefSet(date_mg)8:PrefSet(date_mg)7:PrefSet(date_mg)6:PrefSet(date_mg)5:GetPrefSet()3:GetPrefSet()4:GetPrefSet()2:GetPrefSet()11:PrefSet(date_mg)第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)與 UML ◇ 使用 UML擴展機制 自學(xué) 第四章 軟件體系結(jié)構(gòu)描述 可擴展標(biāo)記語言 ◇ XML語言簡介 XML(extensible markup language) 可擴展標(biāo)記語言 XML結(jié)合了 SGML和 HTML的優(yōu)點并消除了其缺點。 XML是用來描述數(shù)據(jù)的;用戶可以創(chuàng)建自己需要的標(biāo)記,當(dāng)需要時,告訴瀏覽器如何顯示這些標(biāo)記就可以了。另外,XML標(biāo)記描述的是文檔的結(jié)構(gòu)和意義,不描述頁面元素的格式化。文檔本身只說明文檔包括什么標(biāo)記,而不是說明文檔看起來是什么樣的。 第四章 軟件體系結(jié)構(gòu)描述 可擴展標(biāo)記語言 ◇ XML相關(guān)技術(shù)簡介 XML主要是一種數(shù)據(jù)描述方法。 XML相關(guān)的技術(shù)有很多,但主要有三個: Schema、 XSL和 XLL。 ◎ DTD與 Schema ◎ CSS和 XSL ◎ Xpath, Xpointer與 Xlink ◎ XML名字空間 ◎ XML查詢語句 ◎ 資源描述框架 ◎ DOM、 SAX和 XML解析器 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)的設(shè)計 ◇ 概述 當(dāng)前,對軟件體系結(jié)構(gòu)設(shè)計的共識之一是,體系結(jié)構(gòu)設(shè)計應(yīng)當(dāng)支持對軟件系統(tǒng)質(zhì)量的需求(非功能特性的需求)。這是因為,軟件體系結(jié)構(gòu)包括了早期的設(shè)計決定,體現(xiàn)了系統(tǒng)的全局結(jié)構(gòu),對于整個系統(tǒng)的質(zhì)量有著決定性的影響。為了確保各種質(zhì)量因素,大家都認(rèn)為正確地對體系結(jié)構(gòu)設(shè)計進行抽象很有必要。但是,正如軟件體系結(jié)構(gòu)的其他概念和方法一樣,對于體系結(jié)構(gòu)設(shè)計人們也沒有形成統(tǒng)一的認(rèn)識。 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)的設(shè)計 ◇ 體系結(jié)構(gòu)設(shè)計的原則 ◎ 抽象 ◎ 分而治之 ◎ 封裝和信息隱蔽 ◎ 模塊化 ◎ 高內(nèi)聚和低耦合 ◎ 關(guān)注點分離 ◎ 策略和實現(xiàn)的分離 ◎ 接口和實現(xiàn)的分離 基本原則: 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)的設(shè)計 ◇ 體系結(jié)構(gòu)設(shè)計的原則 抽象是人們用來處理復(fù)雜性問題的基本原理之一。抽象有幾種形式,如數(shù)據(jù)抽象、對象抽象、實體抽象、行為抽象、過程抽象、虛擬機抽象等。數(shù)據(jù)、實體的抽象使得軟件操作的對象和參數(shù)是針對邏輯結(jié)構(gòu),而非存儲結(jié)構(gòu)的。行為、過程的抽象使得操作的指派是依據(jù)標(biāo)識而非地址,由此產(chǎn)生了操作的接口和動態(tài)約束描述。在處理系統(tǒng)復(fù)雜性方面,抽象起到了重要作用。減少部件耦合、接口與實現(xiàn)的分離等,都得益于抽象。 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)的設(shè)計 ◇ 體系結(jié)構(gòu)設(shè)計的原則 抽象的一個重要特性就是可替換性。對象的抽象把具有相同基類的導(dǎo)出類看作是同類,加上過程抽象帶來的在過程名稱下的“偷梁換柱”,因此實現(xiàn)了動態(tài)約束,使面向抽象問題而不是實際結(jié)構(gòu)的抽象程序設(shè)計得以實現(xiàn)。大量的結(jié)構(gòu)模式和應(yīng)用問題都是基于這個思想而得到實現(xiàn)的。 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)的設(shè)計 ◇ 體系結(jié)構(gòu)設(shè)計的原則 這條原理是眾所周知的,它來自古時的政治,也來自諸如歸并分類的組合算法。在軟件體系結(jié)構(gòu)中該原理得到大量應(yīng)用。例如,自上而下設(shè)計將一個任務(wù)或部件分成可以獨立設(shè)計的更小的部分。該原理經(jīng)常被用來作為實現(xiàn)注意點分離的方法。 第四章 軟件體系結(jié)構(gòu)描述 軟件體系結(jié)構(gòu)的設(shè)計 ◇ 體系結(jié)構(gòu)設(shè)計的原則 封裝是將構(gòu)成抽象的屬性和行為結(jié)合在一起,并區(qū)分不同抽象的方法。封裝為不同抽象之間提供了明確的界限。封裝有利于非功能特性實現(xiàn),例如可變性和可重用性。 封裝包括內(nèi)部構(gòu)