精品一区二区中文在线,无遮挡h肉动漫在线观看,国产99视频精品免视看9,成全免费高清大全

UML建模風格之狀態圖UML -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【salifelink.com - 電腦資料】

    UML狀態圖描述一個實體基于事件反應的動態行為,顯示了該實體如何根據當前所處的狀態對不同的時間做出反應的,

UML建模風格之狀態圖UML

。通常我們創建一個UML狀態圖是為了以下的研究目的:研究類、角色、子系統、或組件的復雜行為。建模實時系統。 通用準則 當行為的改變和狀態有關時

    UML狀態圖描述一個實體基于事件反應的動態行為,顯示了該實體如何根據當前所處的狀態對不同的時間做出反應的。通常我們創建一個UML狀態圖是為了以下的研究目的:研究類、角色、子系統、或組件的復雜行為。建模實時系統。

    通用準則

    當行為的改變和狀態有關時才創建狀態圖。

    敏捷建模( AM) ( Ambler 2002)的原則--最大化項目干系人的投資--建議你只有當模型能夠提供正面價值的時候才創建模型。 如果一個實體,比如一個類或組件,表示的行為的順序和當前的狀態無關,那么畫一個UML狀態圖可能是沒有什么用處的。例如一個SurfaceAddress類就很簡單,表示了那些你將會在系統中顯示和操作的數據,因此一個UML狀態圖就沒有任何相關之處。而一個Seminar對象就非常的復雜,學生注冊這樣一個事件將會根據它的當前狀態有不同的反應,就像你在圖1中看到的。

    圖⒈班級注冊的一個UML狀態圖。

    javascript.:if(this.width>498)this.style.width=498;' nmousewheel = 'javascript.:return big(this)' src="http://www.ltesting.net/uploads/2007/06/8_2007061117015411.gif" width=600>

    把初始狀態放置在左上角。

    如你在圖1所見的,初始狀態被建模成一個實心圈,把初始狀態放在左上角反映西方人的閱讀文化的習慣。

    把最終狀態放置在右下角。

    如你在圖1所見,最終狀態被建模為一個帶邊界的實心圓。把最終狀態放右下角反映了西方的文化的從左到右,從上到下的閱讀習慣。

    狀態指南

    狀態是一個實體的行為模式的某個階段。 狀態的表示是通過實體的屬性值。 例如,在圖1中,當seminar被標記為open,并且存在空位的時候,seminar就處于Open For Enrollment的狀態。

    狀態名稱要簡單但應具有描述性。

    象Open For Enrollment和Proposed這種的狀態名稱很容易理解,從而提高了圖⒈的溝通價值。理論上狀態名稱應該是現在時,但是用過去式寫成的諸如Proposed的名稱要比用現在時寫成的諸如Is Proposed的名稱好的多。

    避免"黑洞"狀態。

    黑洞狀態是那種只有變換進來但沒有任何變換發出的狀態,這種情況要么由于該狀態是一個最終狀態,要么就是你已經錯過了一個或多個變換變換。

    避免"奇跡"狀態。

    奇跡狀態是那種只有變換發出但沒有任何變換進來的狀態,這種情況要么由于該狀態是一個起點,要么就是你已經錯過了一個或多個變換變換。

    子狀態建模指南

    為復雜的目標建模子狀態。

    圖1中展示的UML狀態圖是不完整的,因為它沒有建模Seminar的post - enrollment(注冊后)狀態。 圖2建模了一個Seminar的完整的生命周期,把圖1描述為一個新的包括子狀態集合的Enrollment的復合狀態,也稱作超狀態。 注意按理說你會像圖1的模型那樣處理標記,但為了簡化起見在原先變換上的標記都沒有包括在內。當一個現有狀態表現出復雜的行為時,建模子狀態就是有意義的,從而促使你來研究它的子狀態。 當幾個現有狀態共用一個通用的入口條件或出口條件( Douglass 1999)時,引入超狀態是有意義的,在圖1中你可以看到所有的狀態共用一個通用的closed變換,以到達最終狀態。

    圖⒉Seminar的完整生命周期

    498)this.style.width=498;' nmousewheel = 'javascript.:return big(this)' height=270 src="http://www.ltesting.net/uploads/2007/06/8_2007061117015412.gif" width=600>

    把通用的子狀態變換放在一起

    和圖1中每一個子狀態都擁有一個cancelled變換不同,在圖2中你可以看到cancelled變換僅用于描述Enrollment超狀態,這使圖形得到簡化。 如果子狀態都共享一個入口變換或出口變換,都可以使用一個同樣的方法。 變換上的警戒點和動作(如果有)也應該使相等的。

    為復雜的實體創建一個分層的狀態圖

    雖然這種表現子狀態的方法是很好使的,但是最終的圖可能變得相當復雜--我們只要設想一下如果Being Taught狀態也有子狀態的話,圖2會變成什么樣就知道了。 一個替代的方法是創建一個分層的UML狀態圖。 例如,圖3表示高階視圖,而圖1描述了一個細節視圖。這種方法的好處是如果需要的話,馬上就可以建立一張詳圖來研究Being Taught狀態。

    圖⒊Seminar的高階狀態圖。

    498)this.style.width=498;' nmousewheel = 'javascript.:return big(this)' height=309 src="http://www.ltesting.net/uploads/2007/06/8_2007061117015413.gif" width=600>

    最高階的狀態圖總有初始態和最終態

    一個高階的UML狀態圖,例如圖2描述的這樣,應該表示實體的完整的生命周期,包括"出生"和最后的"死亡"。 低階的圖未必包含初始狀態和最終狀態,特別是那些建模一個實體的生命周期的"中間狀態"的圖。

    變換和動作

    變換是從一種狀態到另一種狀態的序列,它可能是通過一個事件觸發的,

電腦資料

UML建模風格之狀態圖UML》(http://salifelink.com)。簡而言之就是被建模的實體的內部或外部的行為。 對一個類來說,變換一般是將會導致狀態的重要改變的操作調用的結果,因此我們需要了解一點,并不是所有的方法調用都會導致變換產生的,這一點非常重要。 一個動作就是某個東西,對類來說就是一個操作,被建模的實體所調用的操作。

    用實現語言的命名規則命名軟件動作

    圖1中的動作遵循Java操作的命名規則( Vermeulen et. 2000),因為系統使用

    用敘述性文字命名角色動作

    UML狀態圖可用于建模非軟件實體的生命周期,特別是UML圖上的角色。 例如學生角色就可能有諸如Aclearcase/" target="_blank" >ccepted、Full Time、Part Time、Graduated、Masters、Doctoral、和Post - Doctoral等狀態,以顯示各人的不同行為。 當你在建,F實世界的角色時,與軟件中Student類不同的是,狀態間的變換最好是使用敘述性文字來描述,例如drop seminar和pay fees,而不是dropSeminar ()和payFees (),因為現實生活中的人是做事情,而不是執行操作。

    只有對所有的入口變換都合適時才注明入口動作

    在圖1中你可以看到Closed To Enrollment狀態的入口中操作notifyInstructor ()都是經由entry/動作標記來調用的。 這暗示著每次進入狀態時都需要調用該操作,如果你不希望每次都發生,那么就把動作關聯到特定的入口變換。 例如,addStudent ()動作是在student enrolled變換到Open For Enrollment變換發生,而在到opened變換則不會發生,這是因為每次你在進入該狀態并不需要增加一個學生。

    只有對所有的出口變換適合時才注明出口動作

    出口動作,用exit/標記來表示,工作方式類似于入口動作。

    只有當你想終止并再進入該狀態時才建模遞歸變換

    一個遞歸的變換是那些兩個端點都擁有相同狀態的變換。 一個重要的暗示是實體從狀態出來,又回到原有的狀態,因此,那些由于entry/或exit/動作標記而被調用的任何一種操作都可能被自動調用。 圖1的Open For Enrollment狀態就是這種遞歸變換的例子,因此當前班級大小就在入口處被記錄下來。

    用過去式命名轉換事件

    圖1中的轉換事件,例如seminar split和cancelled,是使用過去式命名的,反映了這樣一個事實:變換是事件的結果--因為事件發生在變換之前,因此應該用過去式命名。

    把轉換標記放在接近源狀態的地方

    雖然圖1比較復雜,變換標記盡可能放在靠近來源的地方,例如seminar split和student enrolled。 Furthermore, the labels were justified (left and right respectively) to help visually place them close to the source state.

    以轉換方向為基礎放置變換標記

    為了更易于判斷哪個標記和變換是一起的,按照如下的規則來放置變換標記:

    在變換線條上的從左到右。

    在變換線條下的從右到左。

    變換線條右邊的往下。

    變換線條左邊的往上。

    警戒點

    一個警戒點是為了穿過一個轉換而必須為真的一個條件。

    警戒點不應該重疊

    離開狀態的相似變換上的警戒點必須彼此一致。 舉例來說,x <0, x = 0,以及x > 0的警戒點是一致的,而x < = 0和x > = 0的警戒點就不是一致的,因為他們重疊了,它并沒有明確的指出當x為0時將發生什么。在圖1中,你可以看到警界點的一致性,從填寫注冊表活動出發的該學生劃線變換上的警戒點沒有重疊,決策點上的警戒點也一樣。

    為可視化的定位警戒點而引入接合點。

    在圖2中你可以看到從Being Taught觸發student dropped事件存在兩個變換,而圖3中僅有一個,變換被合并了,因此我們需要一個接合點(填滿的圓)。 這種方法的好處是現在圖上的兩個警戒點更彼此接近了,更容易看出警戒點是否重疊。

    警戒點不必配套

    一個狀態的變換警戒點有可能是不完整的。例如,一個bank account對象可能從Open狀態變換到Needs Authorization狀態,這時需要一個大額存款"large deposit"的警戒點?墒,一個帶有"small deposit"的警戒點的deposit變換可能并不需要建模,它是被隱含的,我們遵循了AM的實踐--簡單的描述模型和僅僅包括相關的信息。

    一致的命名警戒點

   

    圖1包含了諸如seat available和no seat available的警戒點,兩個警戒點的描述是一致的。 然而,諸如seats left、no seat left、no seats left、no seats available、seat unavailable之類的描述就是不一致,而且難于理解的。

(責任編輯:銘銘)

    原文轉自:http://www.ltesting.net

最新文章
主站蜘蛛池模板: 中文字幕乱伦视频| 青青青爽在线视频观看| 香港三级日本三级a视频| 亚洲第一成年免费网站| 精品亚洲成A人片在线观看| 国产zzjjzzjj视频全免费| 熟妇的味道HD中文字幕| 丰满少妇又爽又紧又丰满在线观看| 国产精品偷窥熟女精品视频| 小说区 亚洲 校园春色| 国产免费破外女真实出血视频| 精品久久人妻AV中文字幕| _日韩人妻无码一区二区三区| 精品视频一区二区三区中文字幕| 欧美在线看片a免费观看| 亚洲精品高清无码视频| 宅男66LU国产在线观看| 国产综合色在线视频区| 老师今晚让你爽个够| 免费VA人成视频网站全| 国产Α片免费观看在线人| 国产女主播喷水视频在线观看| 97se亚洲综合在线| 国产zzjjzzjj视频全免费| 日本免费人成视频在线观看| 大香区一二三四区2021| 国产小呦泬泬99精品| 国产精品国产三级国产普通话| 亚洲欧美日韩综合一区| 久久综合久久自在自线精品自| 日本大香伊一区二区三区| 国产AV无码专区亚汌A√| 日本少妇被黑人猛cao| 国产成人精品综合在线观看| 午夜福利免费院| 国产精品永久免费| 精品国产三级在线观看| 精品亚洲成a人在线观看| 国产老肥熟XXXX| 国产午夜成人免费看片| 国产VA免费精品观看精品|