分辨UML各種圖形的表達焦點和語言特點
本文和大家重點討論一下UML各種圖形的表達焦點和語言特點,用例圖的目的并不是表達流程,而是系統對外服務的門,而狀態圖的焦點在一個對象上,每種圖形都有各自的特點。下面請看本文的詳細介紹吧。
分辨UML各種圖形的表達焦點和語言特點
用例圖:
正像嘉文所說,用例圖的目的并不是表達流程,而是系統對外服務的門。是系統存在的真正價值所在。所以,它的焦點是用戶和它的意圖(價值目標)。但是,為什么在用例場景中有時要表達那些系統內部的并不外現的內容呢?說到底,那是表達了用戶在實現這個目標的過程中涉及到了其它相關利益者。雖然它們不在場,但是它們的互交契約仍在起作用。所以,用例圖進一步表達了人物之間的契約關系,可以視為是靜態關系,而不是流程(不含真正的時間序列)。
狀態圖:
焦點在一個對象上,一個對象響應多個動詞(消息),可以表達實時性。
協作圖:
UML各種圖形中協作圖的焦點在一個動詞(腳本),多個對象圍繞一個動詞,即可表達靜態協作關系,也可以更進一步表達各個角色的協作順序關系。
順序圖:
多個對象之間的交互關系。多個對象,多個動詞。提供最完整的對象模型:刺激響應等待模型,無頭無尾,是一個全局表達模式。
刺激響應模型是在表達順序呢還是在表達間斷呢?我看更在表達等待中的間斷狀態。
所以說是個等待響應的模型。正是在這里,它與流程方法關注的不同,它不是自動執行到底的,或者說凡是可以自動執行到底的活動腳本并不是我們表達的重點,那是DFD流程圖的重點。我們可以反過來問,為什么不繼續執行活動了呢?因為我們在等待信號。這也是個對象適應環境刺激的模型。
DFD數據流圖:
表達了一個動詞的內在含義,即定義了傳遞函數:將輸入轉換為輸出的算法。
活動圖:
以一個完整業務中多個動詞之間的起始終止關系為焦點,是真正意義上的業務流程圖。因為它可以表達活動的轉移條件,并行活動。特別重視一個活動的起始與終止。與DFD數據流程圖相比,它關注的是單個活動外部之間的邏輯關系,而不是這個活動的內部含義。所以它適合作為工作流的描述模型。特別是活動圖同時也畫出活動的發起者,即所謂的泳道圖,這正是工作流的元語言模型所要求的。
健壯圖:
UML各種圖形中健壯圖在反映業務需求的用例圖和系統實現的順序圖之間。也就是把每個用例落實為所謂三層結構:邊界對象,控制對象和實體對象(數據庫)。
這就是嘉文所說的軟件對象。軟件對象與業務對象是兩個不同的概念,軟件對象中有許多不符合自然語言的東西。比如,一個表單是個對象,它常把對它的操作動作定義為它的行為方法,比如所謂的CUDI等,這是顛倒了主語與賓語,混淆了主動與被動,特別讓業務人員別扭,是要去對象化的重要原因。真正的業務需求分析語言,應該去掉這些中間對象,留下外部對象,如人物,還原實體對象的被動性。現在的工作流模型元語言就區分為:動作提供者,動作活動,輸入輸出數據(被處理對象),動作控制信息四個部分。
比較系統論的狀態方程
UML各種圖形中如果把對象主動發出的控制信息(消息)與對象被動狀態相聯系,同時關注多個對象的狀態轉移圖,從而形成封閉的面向對象的刺激反應模型,把狀態圖,順序圖和DFD數據流程圖表達的有機融為一體。
這個模型就是有限自動機模型,也就是系統論中大名鼎鼎的狀態方程。在這里,狀態轉移函數既表達了DFD的傳遞函數,也表達了對象的狀態圖,而多個對象之間的刺激響應的封閉關系,則表達了順序圖面向對象的總體模型。
附錄:
有限自動機的數學定義(就是狀態方程的離散形式):
一個有限自動機M是指一個五元組:M=(Q,I,O,δ,F),
其中Q表示狀態,I是輸入,O為輸出,δ是狀態轉移函數,
F是狀態到輸出O的映射函數。
則有:
Qn+1=δ(Qn,In),即下一時刻的狀態值Qn+1由前一時刻的狀態Qn與前一時刻的
輸入In共同決定。
比如一般可用矩陣來表達δ轉移函數:Qn+1=Qn×In。
On=F(Qn),即此刻的輸出值是由此刻的狀態值惟一決定,注意與當前的輸入值并無直接關系。
【編輯推薦】