第07章uml建模-2_第1頁
已閱讀1頁,還剩82頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第7章 基于UML的系統分析與設計-2,7.1.2系統分析,面向對象系統分析的基本任務是:運用面向對象方法,對問題域和系統責任進行分析和理解,對其中的事物和它們之間的關系產生正確的認識,找出描述問題域以及系統責任所需的類及對象,定義這些對象的屬性和澡作,以及它們之間的靜態(tài)和動態(tài)關系。最終產生一個符合用戶需求,并能夠直接反應問題域和系統責任的問題域模型及其詳細說明。,系統分析,具體來說,分析階段的活動主要是:識別對象;為對象分類;

2、確定類的屬性和操作;確定類之間的關系:確定對象之間的交互:確定對象的狀態(tài)變化等。,1.識別對象,識別對象并不是從零開始的工作,應該最大限度地利用已有的勞動成果。比較典型的可利用的資料有。用例模型和用例描述。術語表。權威的術語定義集合。,課程注冊系統的術語表,課程 課程目錄職員 財務系統年級 教授學期成績單

3、 名冊學生 教學日歷,發(fā)現對象,從用例模型和用例描述中找出名詞來。但名詞可能是參與者、對象和對象屬性,所以還要區(qū)別它們。參與者通常比較容易區(qū)別,區(qū)別對象和對象屬性可以通過分析是否有行為,對象是有行為的,而屬性只是單純的信息。,三種對象類型,分析模型中最常用的三種對象類型,它們是:實體(Entity)邊界(Bountary)控制(Control),⑴實體對象,實體

4、對象主要的任務是裝載信息,同時也具有相關的行為,但是這部分行為主要包括那些和實體對象自身信息直接相關的操作。,可以找到實體對象的幾個辦法,①考慮解決問題所需要的全部數據和行為,然后將數據按相關性分組。②識別出重要的名詞,并將它們作為實體對象,然后確定每一個實體對象包含的數據和行為。③列出所有的數據、行為以及聽起來很重要的名詞,然后將數據和行為分配到不同類型的實體對象中。,識別實體對象可參考下列問題:,識別實體對象可參考下列問題:該

5、對象是否是某個問題中的重要的名詞?該對象是否包含用來解決系統問題的重要的信息?該對象是否包含可以解決系統問題的計算或者驗證邏輯?,⑵邊界對象,邊界對象用于描述擬建系統內部運作與外部環(huán)境之間的交互。邊界對象主要用于描述三種類型的內容:擬建系統和用戶的界面,擬建系統和外部系統的接口擬建系統與設備的接口。,⑵邊界對象,通過檢查在用例圖中的參與者與用例之間的關系,我們可以識別出邊界對象。通常,在分析模型中,每一對參與者/用例都構

6、成了一個邊界對象。,識別邊界對象的可參考下列問題:,識別邊界對象的可參考下列問題:該對象是否描述了必須顯示的信息以及必須提供的服務?該對象是否包含所有的接口設計細節(jié)?該對象是否描述了與外部系統的交互?,⑶控制對象,控制對象用于描述對一個用例所特有的事件流的控制行為。控制對象相當于協調人它自己通常不處理具體的任務,但它知道那些類有能力完成具體的任務。通常一個用例對應一個控制類。,識別控制對象可參考下列問題:,是否對業(yè)務邏輯進行

7、控制?是否將業(yè)務邏輯提交給實體對象?,順序圖中的邊界對象,控制對象和實體對象,2.描述對象的協作關系,我們還需要詳細了解對象在系統中的行為和責任。責任是響應消息的能力。消息被要求者提出,責任由響應者承擔。確定責任主要根據責任和消息的簡明對應關系,所謂找出責任是根據消息的要求定義責任,即用責任滿足消息所提出的要求。,對象的行為,對象的行為是通過系統中對象之間的交互以及對象內部狀態(tài)的轉化來表現的。對象間通過發(fā)送消息而產生交互。

8、同時在一個對象的生命周期內也存在狀態(tài)的轉移以及對事件的響應。,⑴系統動態(tài)分析,動態(tài)分析的主要任務包括分析用例的實現過程(要求有詳細的用例描述),從而更好地理解業(yè)務流程以及為發(fā)現類打好基礎;用于進行動態(tài)分析的UML圖包括順序圖、協作圖、活動圖和狀態(tài)圖。,⑴系統動態(tài)分析,建立交互圖交互圖表現的是參與者與系統以及系統內部對象之間的交互,將消息加進交互圖時,是在向接收消息的對象指定職責。,錯誤的順序圖——消息錯誤地標成注釋,錯

9、誤的順序圖——無參與者,錯誤的順序圖——向Actor發(fā)送消息,錯誤的順序圖——數據流中斷,不妥地使用一去一回的消息,順序圖與事件流,用例的事件流中通常有一個基本事件流和多個分支事件流、替代事件流。每個事件流應用一個順序圖描述。,場景和用例,用例中的場景描述可以是形成系統對象圖的一個出發(fā)點。它對于系統中對象的發(fā)現有極大的幫助。每個場景代表了用例的一個實例。,⑵對象狀態(tài)分析,狀態(tài)圖針對單個對象建模,通過分析單個對象的內部狀態(tài)轉換來了

10、解一個對象的行為。對于有多種內部狀態(tài)的對象,狀態(tài)圖可以顯示對象如何從一種狀態(tài)過渡到另外一種狀態(tài),以及對象在不同狀態(tài)中的不同行為。通過分析某一對象的狀態(tài)變化,為設計此對象的操作提供依據。,步驟,分析一個對象的狀態(tài)可采用下列:①首先要確定該對象有那些狀態(tài)是問題域所關心的。當對象處于這些狀態(tài)中時會有哪些動作。當然,我們只識別哪些問題域所關心的對象的狀態(tài)。②分析對象生命周期,確定對象活動“歷程”;③確定對象生命周期劃分策略;④按

11、策略劃分階段描述對象的生命周期;⑤獲取一系列候選狀態(tài);⑥針對每一個候選狀態(tài),分析出對象在此狀態(tài)下的動作。,確定狀態(tài)圖的兩種方法:,檢查類的屬性:考慮一個類的實例在屬性值不同時如何表現,因為如果對象的行為表現不同,則其狀態(tài)也不同。例:某培訓班的人數屬性50人10人,某培訓班狀態(tài)圖,檢查類的關聯,檢查類的關聯:看看關聯多重性中帶0的關聯,0表示這個關聯是可選的。關聯存在和不存在時類的實例是否表現相同?如果不同,則可能有多種狀

12、態(tài)雇員和公司雇員(多重性:0 )——失業(yè)(狀態(tài))雇員(多重性:1 )——有工作(狀態(tài)),狀態(tài)與屬性,⑦最后應對得到的對象進行核查,可從對象的狀態(tài)確定性和狀態(tài)間的互斥性兩個方面進行核查。所謂對象的狀態(tài)確定性是指每個狀態(tài)都可以由對象某些數據屬性的組合來唯一確定。狀態(tài)間的互斥性是指對象的不同狀態(tài)間必須是互斥的,這樣對象的狀態(tài)才具有確定性。,原則,原則上一般只對復雜的類創(chuàng)建狀態(tài)圖。如果類對象有多種狀態(tài),每種狀態(tài)中的表現又大不相

13、同,則可能要對其創(chuàng)建狀態(tài)圖。實際情況是,許多類根本就不需要狀態(tài)圖。狀態(tài)圖僅用于文檔,而不用于生成代碼。從ROSE模型產生代碼時,沒有任何代碼是從狀態(tài)圖的信息中產生的。,3.創(chuàng)建類圖,創(chuàng)建類圖的工作主要包括:創(chuàng)建類標識類之間的關系,分析類的概念,分析模型中的所有類都是”分析類”。從設計視角看待, “分析類”忽略實現細節(jié),相當粗略?!胺治鲱悺笔菫槎x設計類做準備的。,確定“分析類”,這個步驟就是確定一組備選的、能夠執(zhí)行用例中

14、行為的“分析類”。在確定“分析類”時,使用三種不同的構造型識別和提取潛在的“分析類”,它們是:實體類、控制類、邊界類。,確定“分析類”,邊界類:每個參與者和用例的交互存在一個對應的邊界類。控制類:一般一個用例對應一個控制類。實體類:這個主要看用例里面用到的持久的數據對象。用到數據庫對象時,可能就使用了實體類。,類的獲取,類的獲取有兩種辦法:從用例模型和用例描述中找出名詞,有4種名詞:參與者、類、類的屬性、其他描述性名

15、詞。能夠找出實體類,類的獲取,另一種是檢查交互圖中的對象,研究對象具有的共同屬性和操作來發(fā)現類。如果采用第二種方法創(chuàng)建類圖,需要先創(chuàng)建交互圖。,獲取邊界類,分析參與者與用例對,找出邊界類,邊界類的復用,控制類的考慮,如果不同用例包含的任務之間有比較緊密的聯系,某些控制類可以參與多個用例實現。當用例事件流非常簡單的情況下,控制類的必要性明顯降低。,實體類的考慮,實體類的適用范圍和生命周期可能超越特定的用例事件流。實體類通常

16、不是某一特定用例所專有的。如果實體類B僅僅被另一個類A,并且實體類B不具有明顯的行為特征,那么,可以考慮將實體類B作為類A的屬性。,無類間關系的分析類圖,4.識別分析類操作,分析類在順序圖里要承擔一定的“職責”“職責”是對其他對象發(fā)送來的消息的響應。也可能是對外部的響應,也可能是維護自身信息所必要的“職責”。這種行為在分析類演化成設計類時,它可能對應一個或多個具體的類的“操作”。,找出分析類的“操作”,通常有兩種方法為類識別

17、操作:第一是責任驅動法第二是通過交互圖,責任驅動法識別類“操作”,責任驅動主要基于兩個概念:第一,一個對象在系統中負有一定的責任,例如它要獲得特定的信息(了解的責任)和為其他對象提供特定的信息(做的責任);第二,一個對象與其他對象合作來提供所要求的服務。,責任驅動法識別類“操作”,1)責任驅動法為類識別“操作” 責任分析的一種有用技術CRC(Class-Responsibility-Collaboration)卡

18、技術。,為類分配操作——CRC卡,CRC卡,用交互圖描述用例來為類識別“操作”,面向對象系統是通過對象間相互發(fā)送消息來完成系統功能的。這些對象間傳遞的消息就可以映射為對象的操作。,消息和操作,消息和操作的概念不同操作”對發(fā)送過來的“消息”的響應,也就是說它要滿足“消息”的具體要求?!跋ⅰ焙汀安僮鳌辈⒉淮嬖谝灰粚年P系,已有的“職責”就可能滿足新的“消息”的要求。,下面幾個問題有助于尋找類的操作:,⑴有哪些類會與該類交互,

19、包括該類本身?⑵該類接收哪些類(包括自己)發(fā)送的消息,收到消息之后進行什么處理?⑶該類向哪些類發(fā)送消息,消息的內容是什么,在發(fā)送之前該類需要做什么處理?⑷該類中需要哪些操作來維持自身屬性的一致性、完整性,以及自身屬性的更新?,簡要標識分析類的“操作”,同樣要給“操作”起一個易于理解的名字,通常要比較簡短,,分析類操作的設計,一個類的操作太多或太少都是不合適的,太多說明這個類過于復雜,這時要特別分析一下這個類是否有很高的內聚,通常情

20、況下應該將過于復雜的類拆成多個較小的類。如果類中的操作太少,有時甚至沒有操作,全部都是屬性,這時應該分析這個類,判斷其是否能夠合并到其他類中。,5.識別分析類屬性,“分析類”要能執(zhí)行相應的操作,它要依賴于兩方面的內容:一方面是利用它自己保存的信息;另一方面是利用其他的類 。類自己所能夠保存的信息就是它的屬性。,獲得屬性的渠道,屬性的來源有許多。獲得屬性的渠道有幾個:⑴通過查看用例文檔,尋找名詞。通常,在用例文檔中用名詞表示

21、屬性,如“圖書的出版社、價格等”。這些名詞中有些是對象;有些是參與者;有些是屬性。確定是對象還是屬性,答案在于要實現的功能。,獲得屬性的渠道,⑵通過查看文檔,發(fā)現系統要收集的信息,這些信息就是類的屬性。如為了下訂單而搜集的供貨商的姓名、電話及銀行帳號等。⑶如果已經定義了數據庫結構,則數據庫表中的字段就是屬性。,認定一個屬性的策略,認定一個屬性的策略有:①按一般常識這個類應該具有哪些屬性?②在當前的問題域中類應該具有什么屬性?

22、 ③根據系統責任的要求,這個類應該具有哪些屬性? ④建立這個類是為了保存和管理哪些信息?⑤類為了在服務中實現其功能,需要增設哪些屬性? ⑥有哪些需要區(qū)別的狀態(tài),是否需要增加一個屬性來區(qū)別這些狀態(tài)?,認定一個屬性的基本原則。,①要確認它相對于相應對象或類的每一個實例都是適用的。②認定的屬性應當是一種相對的原子概念,也就是說,不依賴于并列的其他屬性就可以被理解。,屬性的特點,類的屬性不宜太多,如果某個類的屬性太多,最好將其分解成

23、更小的類。同樣,屬性也不要太少,太少的情況下應進行類的合并。,屬性的類型,屬性的類型指屬性值的類型??梢允腔緮祿愋?,例如整數、實數、布爾型、字符串型等,也可以是用戶自定義的類型。分析階段一般不需要確定屬性的類型,6.描述類之間的關系,類之間的關系有關聯關系、聚合關系、組合關系、泛化關系、依賴關系。通常按照以下步驟對類之間的關聯建模:1)找出關系。有的類只和其他一個類有關系,而有些類同時和其他多個類存在關系。在一個面

24、向對象系統中,不存在完全獨立的類。,類之間的關系,2)命名關系。最好給每個關系取一個名字以標識出類之間的關系。通??梢允褂脛釉~和動詞短語來標識關系。,類之間的關系,3)設置關聯重數。關聯的重數(MulhpliCity)依賴于系統的具體需求,要根據需求文檔的上下文進行分析。在系統分析階段,不必特別地考慮重數。,類之間的關系,4)設置關聯的其他特性。如果需要的話,可以為每個關聯設置關聯角色名、構造型、限定符等細節(jié)。在上述步驟中,

25、最關鍵的是第一步——找出類之間的關聯關系。,尋找關系的具體方法如下:,要尋找關系,可以檢查交互圖,大多數關系信息已經在交互圖中列出。(1)如果一個類向另一個類發(fā)出消息,則它們必有關系,并且通常是關聯或依賴關系。(2)檢查類的整體和部分關系。任何由其他類組成的類都參與聚合.(3)檢查類的泛化關系,尋找相似對象的不同點,將不同的部分下降為特殊的類,將共性的部分上升為基礎類,兩者之間的關系確定為泛化關系。,發(fā)現類關系,,報賬系統順序圖,

26、借以確定類圖關聯關系的協作圖,確定類圖的關聯,發(fā)現類之間的關系,除了上述方法外,判斷兩個類之間到底有沒有關聯關系,要看它們之間是否存在下表中的關系:,判斷兩個類之間到底有無關聯關系,關系查找策略,關系查找的一種策略是從一個用例,找出與這幾個類存在的關系,然后再尋找另外一個用例中的關系,直到窮盡了所有的用例為止。,注意,還有一點需要注意的是,兩個類之間可能同時存在多種不同的關系。不能因為已經找到了兩個類之間的一種關系而忽略了它們存在的

27、其他關系。,關聯關系,對于關聯關系太多的類要特別注意。設計良好的應用系統的目標之一是減少系統中的關聯。關聯關系太多的類很難復用,維護工作量也會很大。如果相關聯的其他某個類改變,則這個類就可能會受到影響。,兩個類的關聯關系,兩個類的關聯關系可以是單向的,也可以是雙向的。相對而言,單向的關聯更容易建立和維護,同時也更有利于類的復用。,表現類之間關系的手段,表現類之間關系的手段是繪制類圖。邏輯上每個用例對應一張完整的類圖。類圖有兩

溫馨提示

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

評論

0/150

提交評論