510 likes | 622 Views
作業行為塑模. 內容大綱. 導論 狀態圖 狀態圖進階 狀態圖之建構步 驟 與 原 則 狀態圖之建構案例 活動圖 活動圖 之建構步 驟 與 原 則 活動圖 之建構案例 結論. 導論. 在物件導向系統發展過程中,完成了使用個案塑模後,接下來便可進行 物件資料結構塑模、 物件互動行為塑模、 作業行為塑模 等活動以開始架構系統。. 導論 (c.2). 作業行為塑模的工具包含: 狀態圖 (State Diagrams) 活動圖 (Activity Diagrams). 導論 (c.3).
E N D
內容大綱 導論 狀態圖 狀態圖進階 狀態圖之建構步驟與原則 狀態圖之建構案例 活動圖 活動圖之建構步驟與原則 活動圖之建構案例 結論
導論 • 在物件導向系統發展過程中,完成了使用個案塑模後,接下來便可進行 • 物件資料結構塑模、 • 物件互動行為塑模、 • 作業行為塑模 等活動以開始架構系統。
導論(c.2) • 作業行為塑模的工具包含: • 狀態圖(State Diagrams) • 活動圖(Activity Diagrams)
導論 (c.3) • 若某物件或系統在其生命週期(從行為開始到結束)中有較複雜的狀態改變時,而這些改變在互動圖中不易表達,則可以用狀態圖詳細表達其所有狀態與狀態間之轉換。 • 對較單純者,不一定需要用狀態圖表達。
導論 (c.4) • 此外,狀態圖也可用於表達某一使用個案、許多使用個案、子系統、使用者介面等等。 • 除軟體外,也可表達硬體之狀態轉換。
導論 (c.5) • 若物件或系統涉及執行某些較複雜之操作、作業流程或行為時,例如循序的(sequential)或同時的(concurrent)活動等,因為這些活動不易在互動圖中描述清楚,則可以用活動圖表達。 • 此外,也可用於表達某一使用個案、許多使用個案、子系統等之循序或同時的作業流程或行為。
導論 (c.6) • 作業行為塑模應先建構狀態圖或活動圖? • 這問題並無標準答案。 • 應視系統之複雜程度、專案需求、分析師之習慣等因素來決定。 • 物件導向的分析與設計很難一次就完整的完成,常須經歷反覆的設計,才能漸趨完整或完美,因此作業行為塑模亦須反覆進行,才能有較滿意的成果。
狀態圖 • 狀態圖之主要元件包括: • 狀態(states) • 轉換(transitions ) • 被狀態圖描述的東西 ,可視為一部狀態機(state machine),機器內部有狀態及狀態的轉換。
狀態圖(c.2) • 一個狀態是一個被描述者在其生命週期中之一個情況(situation),在此情況中,它滿足某條件,可能正等待某些事件的發生,且可能正在執行某活動。 • 狀態具有名稱,名稱以字串命名,且必須是唯一的。
狀態圖(c.3) • 其運作規則是當轉換發生後,會從 某一狀態(稱來源狀態)進入 另一個狀態(稱目的狀態)。
狀態圖(c.4) • 狀態之轉換: 事件[成立條件]/動作 Event [Guard] / Action 此三個部分是具有選擇性的,不一定要同時都具備。
狀態圖(c.5) • 事件(Event):是一種刺激,能激起狀態的轉換,如訊息的接收、時間的到達、訊號(signals)等等。 • 成立條件(Guard):是一個布林式(Boolean expression)。如果轉換包含有成立條件,該條件就會被判斷為「真」(true)或「假」(false),若結果為真,狀態轉換就會發生;若為假,轉換不會發生。 • 動作(Action);是指一短暫且不能中斷的行為。如果轉換包含有動作,該動作就會被執行,且執行完才會進入目的狀態。
狀態圖(c.6) • 狀態圖包含兩種特殊的狀態: • 開始狀態(Initial States): 表達一狀態機之開始,或一狀態中之起始子狀態。以一實心黑圈表示。 • 結束狀態(Final States):表達一狀態機之結束,或一狀態中之結束子狀態。以一實心黑圈外加一圓圈表示。
狀態圖(c.7) • 描述洗衣機的狀態圖
狀態圖進階 • 一個狀態可以有許多部分: • 名稱、 • 進入/離開之動作、 • 活動、 • 子狀態等。 • 各部分不一定要具備,主要是根據被描述者之複雜度而定。
狀態圖進階(c.2) • 狀態具有名稱,名稱以字串命名,且必須是唯一的。 • 就狀態圖而言: • 「動作」(action) 是指一較短暫且不能中斷的運算行為。 • 「活動」(activity)是指一較長而持續的運算行為,它是一種處理,處理過程中可以被某些事件中斷或暫停。
狀態圖進階(c.3) • 進入動作:一進入狀態時,所要執行的動作。若狀態中有活動,在活動之前執行。 • 離開動作:離開狀態前,所要執行的動作。若狀態中有活動,在活動停止後執行。 • 子狀態(substate):將一狀態細分的結果,就會有一些子狀態。當一狀態包含有子狀態時,即具有深度(depth),稱為超狀態(superstate)或父狀態。
狀態圖進階(c.4) • 狀態可分為幾類: • 開始狀態(Initial States) • 結束狀態(Final States) 3. 一般狀態(States without Depth ) 4. 具有深度的狀態(States with Depth) • 循序組合狀態(Sequential Composite States) • 同步組合狀態(Concurrent Composite States) 5. 歷史狀態(History States)
狀態圖進階(c.5) • 「開始狀態」與「結束狀態」均為虛擬的狀態,沒有名稱、進入/離開之動作、活動、及子狀態等。 • 一般狀態:不具有深度的狀態,也就是裡面沒有子狀態。
狀態圖進階(c.6) • 具有深度的狀態(states with depth) 又稱組合狀態(composit states)。 • 循序組合狀態:是一具有深度的狀態,其內部的子狀態組成一狀態機。進入該狀態,會在子狀態間循序的轉換,也就是在任一時間點,僅處於其中的某一子狀態。
狀態圖進階(c.7) • 延續先前洗衣機的狀態圖,擴充「洗滌」狀態為循序組合狀態,其包含一個狀態機,有兩個子狀態:「攪拌式」、「離心力」,進入動作是「添加洗衣精」,離開動作是「排水」。
狀態圖進階(c.8) • 同步組合狀態:也是一具有深度的狀態,其內部包含有兩個或更多的狀態機。進入該狀態,狀態機會同時的運作,但每個狀態機會各自在其子狀態間循序的轉換。 • 同步組合狀態以虛線分開狀態機。
狀態圖進階(c.9) • 延續先前洗衣機的狀態圖,擴充「洗滌」狀態為同步組合狀態,其包含另一個狀態機,有三個子狀態:「低速」、「中速」、「高速」,無進入動作及離開動作。
狀態圖進階(c.10) • 歷史狀態:是一虛擬狀態,儲存組合狀態中上一次離開時的子狀態,可供返回該組合狀態時,從儲存中的子狀態開始。以圓圈內加一“H”表示。
狀態圖進階(c.11) • 狀態圖元件與表達符號
狀態圖進階(c.12) • 狀態轉換: • 由狀態A,經事件p,進入狀態F的子狀態F1。 • 由狀態B,經事件q,進入狀態F的子狀態F2。 • 在狀態F的子狀態F3,經事件r,進入狀態C。 • 在狀態F的任 一子狀態,經事件s,進入狀態D。 • 在狀態F進入結束狀態後,自動進入狀態E。
狀態圖之建構步驟與原則 • 狀態圖之建構步驟包括 (1)找出狀態 (2)找出狀態間之轉換 (3)繪製狀態圖 (4)精練(Refine)狀態圖。
狀態圖之建構步驟與原則(c.2) • 建構狀態圖可參考下列原則: 1. 從使用個案描述或類別之操作描述,逐一找出狀態圖之狀態與轉換。 2. 狀態之轉換,『事件[成立條件]/動作』,此三個部分是具選擇性的,不一定要同時都具備。 3. 由狀態圖之上方或左上方以"開始" 畫起,從系統的觀點,依被描述者之行為,將其生命週期的活動狀態之順序,逐一畫出所有狀態及轉換。
狀態圖之建構步驟與原則(c.3) 4. 自身轉換的表示法是,箭頭由該狀態伸出,繞一圓弧後,箭頭再指向該狀態,並在適當位置說明『事件[成立條件]/動作』。 5. 繪狀態圖時,其之轉換應儘量避免交叉。
狀態圖之建構案例 訂貨處理狀態圖
狀態圖之建構案例(c.2) • 「訂貨處理」範例有七個狀態,分別為開始、檢查、發送、等待、取消、已運送與結束,狀態間之轉換與運作規則如下: (1) 「開始狀態」,先取第一個項目(動作)。 (2.1)「檢查狀態」,做檢查(活動),若所有庫存項目尚未檢查完(條件),則需繼續取下一個項目(動作),並做檢查(活動),直到所有項目檢查完為止(重複迴圈;自身轉換)。 (2.2)「檢查狀態」,做檢查(活動),若所有項目均已檢查完,且所有項目均在倉庫(條件),則轉換到發送狀態。 (2.3)「檢查狀態」,做檢查(活動),若所有項目均已檢查完,且有某些項目不在倉庫(條件),則轉換到等待狀態。
狀態圖之建構案例(c.3) (3.1)「等待狀態」,收到項目(事件),若所有項目均在倉庫(條件),則轉換到發送狀態。 (3.2)「等待狀態」,收到項目(事件),若有某些項目不在倉庫(條件),則轉換到等待狀態(重複迴圈;自身轉換)。 (4)「發送狀態」,啟動送貨(活動),送貨(動作),完成後轉換至已送貨狀態。 (5)在送貨前之任一狀態(例如檢查、發送、等待狀態),可允許隨時取消訂單(動作),而轉換到「取消狀態」。 (6)在「取消狀態」會馬上自動轉換至「結束狀態」。 (7) 在「已運送狀態」會馬上自動轉換至「結束狀態」。
狀態圖之建構案例(c.4) • 狀態圖塑模的另一重要觀念即是「超狀態」之應用,可讓整個狀態圖較為清楚與簡潔。 • 在已運送狀態之前,我們想要在任何時刻取消訂單,則可從檢查、等待、發送等狀態分別轉換至取消狀態。 • 我們也可以將檢查、等待、發送狀態群集成一個超狀態,再由該超狀態轉換至取消狀態來表現。
狀態圖之建構案例(c.5) 訂貨處理超狀態圖範例
活動圖 • 活動圖是一種塑模工具,它可被用於表達一個物件、一個使用個案(Oestereich, 1999)、許多使用個案間、或一個系統在其生命週期中之循序或同時的操作(Operation)、作業流程(Workflow)或行為,例如在其生命週期中之所有活動及其轉換關係。 • 尤其是當互動圖中無法清楚表達生命週期中之行為時(例如複雜的平行處理、多執行緒處理之行為等),可以用活動圖更詳細的描述之。
活動圖(c.2) • 活動圖之主要元件為 • 活動狀態(Activity States) • 轉換(Transitions) 兩者之關係與表達如下圖。
活動圖(c.3) • 活動圖之元件包括: 1. 開始(Start):開始用予描述一連串活動的起點,以一實心圓形表示。 2. 活動狀態(Activity States):是真實世界的一個處理、一個程序、或是執行一段副程式。活動狀態以一圓角矩形表示,內部說明活動狀態。如同狀態圖,一個活動狀態可以用活動圖描述其細節,所以活動狀態也可以具有深度。 3.轉換(Transitions):與狀態圖的轉換相同,即是當一個活動狀態完成時直接轉換到下一個活動狀態,與狀態圖的轉換不同的是,此轉換只有[成立條件]([guard]) ,以一“箭頭” 旁註[成立條件] 來表示。 [成立條件]是具選擇性的。
活動圖(c.4) 4.分岔(Fork):分岔是用予表達當轉換發生後,有兩個或兩個以上之平行活動狀態發生的情況。分岔之表達符號是以一橫向黑實線條,外加一條流入之垂直箭頭與多條流出之垂直箭頭表示。 5.會合(Join):會合是用予表達平行活動狀態結束之情況,先完成之活動狀態需等待未完成者,直到所有平行活動狀態都完成。表達符號與分岔類似是以一橫向黑實線條,外加多條流入之垂直箭頭與一條流出之垂直箭頭表示。
活動圖(c.5) 6.分支(Branch):分支是用予表達當轉換發生後,有多個選擇路徑,但僅能依條件選擇其中一個路徑執行之。分支之表達符號是以一菱形,外加一條流入菱形之箭頭與多條流出菱形之箭頭表示。 7.合併(Merge):合併是用予表達有多個選擇路徑匯集於某點,之後再往下執行。合併之表達符號與分支相似,是以一菱形外加多條流入菱形之箭頭與一條流出菱形之箭頭表示。
活動圖(c.6) 8.結束(End):結束用予描述一連串活動的結束(或終點),以兩個空心圓表示。 9.責任區(Swimlanes):責任區是用予表達活動圖中,哪些活動狀態是由誰、那個部門、類別或元件負責的一種方式,其表示方式就如同游泳池的水道一樣,每一水道代表一個負責的人、部門、類別或元件。
活動圖(c.7) 活動圖之元件表達符號
活動圖之建構步驟與原則 • 活動圖之建構步驟與狀態圖一樣,包括 (1)找出活動,必要時也需找出執行該活動之 實體, (2)找出活動間之轉換, (3)繪製活動圖, (4)精練活動圖。
活動圖之建構步驟與原則(c.2) • 建構活動圖可參考下列原則︰ 1. 從使用個案描述或類別之操作描述中找出相關的活動狀態與轉換。 2.由活動圖之上方或左上方以“開始” 畫起,接著依物件之操作或行為或系統之作業流程等活動發生之順序,劃出活動及其間之轉換,而在最後的活動狀態之後以“結束” 表達之。 3.遇到有平行處理或多執行緒的活動狀態時以分岔描述之,此時在分岔之前會有一個進入轉換(Incoming Transition),在分岔之後會有數個離開轉換(Outgoing Transition)。
活動圖之建構步驟與原則(c.3) 4. 有分岔就必須有結合,在所有分岔出去的平行處理的活動狀態都執行完畢後需有結合。此時在結合之前會有數個進入轉換,在結合之後會有一個離開轉換。 5. 遇到數個有[成立條件] 的擇一執行活動狀態時,以分派來表達,此時在分派之前會有一個進入轉換,在分派之後,會有數個具有互斥條件的離開轉換。 6. 合併用來描述以分派為開端的條件式活動狀態的結束,此時在合併之前會有數個輸入轉換,在合併之後會有一個輸出轉換。
活動圖之建構步驟與原則(c.4) 7. 可以用責任區方式表達哪些活動狀態是由誰、那個部門、類別或元件負責,並將這些活動狀態放置於同一"水道" 內。
活動圖之建構案例 • 以銷售作業為例,說明活動圖之建構,其銷售作業流程如下: (1)公司接到訂單後便同時進行出貨處理與發票 處理。 (2)出貨處理若屬緊急出貨,則以24小時送貨處 理,若不是,則以一般送貨處理。 (3) 24小時送貨或一般送貨處理完成後需合併。 (4)發票處理後,接著進行收款。 (5)完成收款與出貨(結合)後,這個銷售作業才算 完成。 (6)儲運部負責出貨活動,而營業部負責接訂單、 發票、收款等活動。
活動圖之建構案例(c.2) • 建構步驟如下: • 從上述之描述可知,接訂單、出貨處理、發票處理、24小時送貨處理、一般送貨處理與收款等均是活動狀態。 • 其中,接訂單後可同時處理出貨與發票,因此需用分岔符號;發票處理與收款是循序的,因此用一般轉換;出貨處理後需選擇24小時送貨處理或一般送貨處理之情況,因此先用分派,完成後用合併符號;兩個平行活動皆完成後用結合符號。 • 完成後,分別在最開始之活動前與結束之活動後分別加開始與結束之符號。 • 此外,若有必要可在活動圖上標示水道線,以區分哪些活動屬於哪些類別、實體或部門等。例如,出貨之相關處理屬於儲運部;而訂貨、發票與收款等屬於營業部門。
活動圖之建構案例(c.3) 銷售作業之活動圖