分辨UML各種圖形的表達(dá)焦點(diǎn)和語(yǔ)言特點(diǎn)
本文和大家重點(diǎn)討論一下UML各種圖形的表達(dá)焦點(diǎn)和語(yǔ)言特點(diǎn),用例圖的目的并不是表達(dá)流程,而是系統(tǒng)對(duì)外服務(wù)的門,而狀態(tài)圖的焦點(diǎn)在一個(gè)對(duì)象上,每種圖形都有各自的特點(diǎn)。下面請(qǐng)看本文的詳細(xì)介紹吧。
分辨UML各種圖形的表達(dá)焦點(diǎn)和語(yǔ)言特點(diǎn)
用例圖:
正像嘉文所說(shuō),用例圖的目的并不是表達(dá)流程,而是系統(tǒng)對(duì)外服務(wù)的門。是系統(tǒng)存在的真正價(jià)值所在。所以,它的焦點(diǎn)是用戶和它的意圖(價(jià)值目標(biāo))。但是,為什么在用例場(chǎng)景中有時(shí)要表達(dá)那些系統(tǒng)內(nèi)部的并不外現(xiàn)的內(nèi)容呢?說(shuō)到底,那是表達(dá)了用戶在實(shí)現(xiàn)這個(gè)目標(biāo)的過(guò)程中涉及到了其它相關(guān)利益者。雖然它們不在場(chǎng),但是它們的互交契約仍在起作用。所以,用例圖進(jìn)一步表達(dá)了人物之間的契約關(guān)系,可以視為是靜態(tài)關(guān)系,而不是流程(不含真正的時(shí)間序列)。
狀態(tài)圖:
焦點(diǎn)在一個(gè)對(duì)象上,一個(gè)對(duì)象響應(yīng)多個(gè)動(dòng)詞(消息),可以表達(dá)實(shí)時(shí)性。
協(xié)作圖:
UML各種圖形中協(xié)作圖的焦點(diǎn)在一個(gè)動(dòng)詞(腳本),多個(gè)對(duì)象圍繞一個(gè)動(dòng)詞,即可表達(dá)靜態(tài)協(xié)作關(guān)系,也可以更進(jìn)一步表達(dá)各個(gè)角色的協(xié)作順序關(guān)系。
順序圖:
多個(gè)對(duì)象之間的交互關(guān)系。多個(gè)對(duì)象,多個(gè)動(dòng)詞。提供最完整的對(duì)象模型:刺激響應(yīng)等待模型,無(wú)頭無(wú)尾,是一個(gè)全局表達(dá)模式。
刺激響應(yīng)模型是在表達(dá)順序呢還是在表達(dá)間斷呢?我看更在表達(dá)等待中的間斷狀態(tài)。
所以說(shuō)是個(gè)等待響應(yīng)的模型。正是在這里,它與流程方法關(guān)注的不同,它不是自動(dòng)執(zhí)行到底的,或者說(shuō)凡是可以自動(dòng)執(zhí)行到底的活動(dòng)腳本并不是我們表達(dá)的重點(diǎn),那是DFD流程圖的重點(diǎn)。我們可以反過(guò)來(lái)問(wèn),為什么不繼續(xù)執(zhí)行活動(dòng)了呢?因?yàn)槲覀冊(cè)诘却盘?hào)。這也是個(gè)對(duì)象適應(yīng)環(huán)境刺激的模型。
DFD數(shù)據(jù)流圖:
表達(dá)了一個(gè)動(dòng)詞的內(nèi)在含義,即定義了傳遞函數(shù):將輸入轉(zhuǎn)換為輸出的算法。
活動(dòng)圖:
以一個(gè)完整業(yè)務(wù)中多個(gè)動(dòng)詞之間的起始終止關(guān)系為焦點(diǎn),是真正意義上的業(yè)務(wù)流程圖。因?yàn)樗梢员磉_(dá)活動(dòng)的轉(zhuǎn)移條件,并行活動(dòng)。特別重視一個(gè)活動(dòng)的起始與終止。與DFD數(shù)據(jù)流程圖相比,它關(guān)注的是單個(gè)活動(dòng)外部之間的邏輯關(guān)系,而不是這個(gè)活動(dòng)的內(nèi)部含義。所以它適合作為工作流的描述模型。特別是活動(dòng)圖同時(shí)也畫出活動(dòng)的發(fā)起者,即所謂的泳道圖,這正是工作流的元語(yǔ)言模型所要求的。
健壯圖:
UML各種圖形中健壯圖在反映業(yè)務(wù)需求的用例圖和系統(tǒng)實(shí)現(xiàn)的順序圖之間。也就是把每個(gè)用例落實(shí)為所謂三層結(jié)構(gòu):邊界對(duì)象,控制對(duì)象和實(shí)體對(duì)象(數(shù)據(jù)庫(kù))。
這就是嘉文所說(shuō)的軟件對(duì)象。軟件對(duì)象與業(yè)務(wù)對(duì)象是兩個(gè)不同的概念,軟件對(duì)象中有許多不符合自然語(yǔ)言的東西。比如,一個(gè)表單是個(gè)對(duì)象,它常把對(duì)它的操作動(dòng)作定義為它的行為方法,比如所謂的CUDI等,這是顛倒了主語(yǔ)與賓語(yǔ),混淆了主動(dòng)與被動(dòng),特別讓業(yè)務(wù)人員別扭,是要去對(duì)象化的重要原因。真正的業(yè)務(wù)需求分析語(yǔ)言,應(yīng)該去掉這些中間對(duì)象,留下外部對(duì)象,如人物,還原實(shí)體對(duì)象的被動(dòng)性?,F(xiàn)在的工作流模型元語(yǔ)言就區(qū)分為:動(dòng)作提供者,動(dòng)作活動(dòng),輸入輸出數(shù)據(jù)(被處理對(duì)象),動(dòng)作控制信息四個(gè)部分。
比較系統(tǒng)論的狀態(tài)方程
UML各種圖形中如果把對(duì)象主動(dòng)發(fā)出的控制信息(消息)與對(duì)象被動(dòng)狀態(tài)相聯(lián)系,同時(shí)關(guān)注多個(gè)對(duì)象的狀態(tài)轉(zhuǎn)移圖,從而形成封閉的面向?qū)ο蟮拇碳し磻?yīng)模型,把狀態(tài)圖,順序圖和DFD數(shù)據(jù)流程圖表達(dá)的有機(jī)融為一體。
這個(gè)模型就是有限自動(dòng)機(jī)模型,也就是系統(tǒng)論中大名鼎鼎的狀態(tài)方程。在這里,狀態(tài)轉(zhuǎn)移函數(shù)既表達(dá)了DFD的傳遞函數(shù),也表達(dá)了對(duì)象的狀態(tài)圖,而多個(gè)對(duì)象之間的刺激響應(yīng)的封閉關(guān)系,則表達(dá)了順序圖面向?qū)ο蟮目傮w模型。
附錄:
有限自動(dòng)機(jī)的數(shù)學(xué)定義(就是狀態(tài)方程的離散形式):
一個(gè)有限自動(dòng)機(jī)M是指一個(gè)五元組:M=(Q,I,O,δ,F),
其中Q表示狀態(tài),I是輸入,O為輸出,δ是狀態(tài)轉(zhuǎn)移函數(shù),
F是狀態(tài)到輸出O的映射函數(shù)。
則有:
Qn+1=δ(Qn,In),即下一時(shí)刻的狀態(tài)值Qn+1由前一時(shí)刻的狀態(tài)Qn與前一時(shí)刻的
輸入In共同決定。
比如一般可用矩陣來(lái)表達(dá)δ轉(zhuǎn)移函數(shù):Qn+1=Qn×In。
On=F(Qn),即此刻的輸出值是由此刻的狀態(tài)值惟一決定,注意與當(dāng)前的輸入值并無(wú)直接關(guān)系。
【編輯推薦】
- UML各種圖形的重要性排行
- UML各種圖形的建立步驟專家指導(dǎo)
- 繪制UML圖時(shí)應(yīng)避免的六大問(wèn)題
- UML部署圖繪制及應(yīng)用說(shuō)明
- 九步實(shí)現(xiàn)UML包圖創(chuàng)建