暢談UML靜態(tài)建模機(jī)制
本文和大家重點(diǎn)討論一下UML靜態(tài)建模機(jī)制,它主要包括用例圖(Usecasediagram)、類圖(Classdiagram)、對(duì)象圖(Objectdiagram)、包(Package)、構(gòu)件圖(Componentdiagram)和配置圖(Deploymentdiagram)。
UML靜態(tài)建模機(jī)制
任何建模語(yǔ)言都以靜態(tài)建模機(jī)制為基礎(chǔ),標(biāo)準(zhǔn)建模語(yǔ)言UML也不例外。UML的靜態(tài)建模機(jī)制包括用例圖(Usecasediagram)、類圖(Classdiagram)、對(duì)象圖(Objectdiagram)、包(Package)、構(gòu)件圖(Componentdiagram)和配置圖(Deploymentdiagram)。
用例圖
用例模型(Usecasemodel)
長(zhǎng)期以來(lái),在面向?qū)ο箝_(kāi)發(fā)和傳統(tǒng)的軟件開(kāi)發(fā)中,人們根據(jù)典型的使用情景來(lái)了解需求。但是,這些使用情景是非正式的,雖然經(jīng)常使用,卻難以建立正式文擋。用例模型由IvarJacobson在開(kāi)發(fā)AXE系統(tǒng)中首先使用,并加入由他所倡導(dǎo)的OOSE和Objectory方法中。用例方法引起了面向?qū)ο箢I(lǐng)域的極大關(guān)注。自1994年IvarJacobson的著作出版后,面向?qū)ο箢I(lǐng)域已廣泛接納了用例這一概念,并認(rèn)為它是第二代面向?qū)ο蠹夹g(shù)的標(biāo)志。
UML靜態(tài)建模中用例模型描述的是外部執(zhí)行者(Actor)所理解的系統(tǒng)功能。用例模型用于需求分析階段,它的建立是系統(tǒng)開(kāi)發(fā)者和用戶反復(fù)討論的結(jié)果,表明了開(kāi)發(fā)者和用戶對(duì)需求規(guī)格達(dá)成的共識(shí)。
首先,它描述了待開(kāi)發(fā)系統(tǒng)的功能需求;
其次,它將系統(tǒng)看作黑盒,從外部執(zhí)行者的角度來(lái)理解系統(tǒng);
第三,它驅(qū)動(dòng)了需求分析之后各階段的開(kāi)發(fā)工作,不僅在開(kāi)發(fā)過(guò)程中保證了系統(tǒng)所有功能的實(shí)現(xiàn),而且被用于驗(yàn)證和檢測(cè)所開(kāi)發(fā)的系統(tǒng),從而影響到開(kāi)發(fā)工作的各個(gè)階段和UML的各個(gè)模型。在UML中,一個(gè)用例模型由若干個(gè)用例圖描述,用例圖主要元素是用例和執(zhí)行者。
用例(usecase)
從本質(zhì)上講,一個(gè)用例是用戶與計(jì)算機(jī)之間的一次典型交互作用。以字處理軟件為例,“將某些正文置為黑體”和“創(chuàng)建一個(gè)索引”便是兩個(gè)典型的用例。在UML靜態(tài)建模中,用例被定義成系統(tǒng)執(zhí)行的一系列動(dòng)作,動(dòng)作執(zhí)行的結(jié)果能被指定執(zhí)行者察覺(jué)到。
在UML中,用例表示為一個(gè)橢圓。圖1顯示了一個(gè)金融貿(mào)易系統(tǒng)的用例圖。其中,“風(fēng)險(xiǎn)分析”,“交易估價(jià)”,“進(jìn)行交易”,“設(shè)置邊界”,“超越邊界的交易”,“評(píng)價(jià)貿(mào)易”,“更新帳目”等都是用例的實(shí)例。概括地說(shuō),用例有以下特點(diǎn):
◆用例捕獲某些用戶可見(jiàn)的需求,實(shí)現(xiàn)一個(gè)具體的用戶目標(biāo)。
◆用例由執(zhí)行者激活,并提供確切的值給執(zhí)行者。
◆用例可大可小,但它必須是對(duì)一個(gè)具體的用戶目標(biāo)實(shí)現(xiàn)的完整描述。
圖1金融貿(mào)易系統(tǒng)用例
執(zhí)行者(Actor)
執(zhí)行者是指用戶在系統(tǒng)中所扮演的角色。其圖形化的表示是一個(gè)小人。圖1中有四個(gè)執(zhí)行者:貿(mào)易經(jīng)理、營(yíng)銷人員、售貨員和記帳系統(tǒng)。在某些組織中很可能有許多營(yíng)銷人員,但就該系統(tǒng)而言,他們均起著同一種作用,扮演著相同的角色,所以用一個(gè)執(zhí)行者表示。一個(gè)用戶也可以扮演多種角色(執(zhí)行者)。例如,一個(gè)高級(jí)營(yíng)銷人員既可以是貿(mào)易經(jīng)理,也可以是普通的營(yíng)銷人員;一個(gè)營(yíng)銷人員也可以是售貨員。在處理執(zhí)行者時(shí),應(yīng)考慮其作用,而不是人或工作名稱,這一點(diǎn)是很重要的。
圖1中,不帶箭頭的線段將執(zhí)行者與用例連接到一起,表示兩者之間交換信息,稱之為通信聯(lián)系。執(zhí)行者觸發(fā)用例,并與用例進(jìn)行信息交換。單個(gè)執(zhí)行者可與多個(gè)用例聯(lián)系;反過(guò)來(lái),一個(gè)用例可與多個(gè)執(zhí)行者聯(lián)系。對(duì)同一個(gè)用例而言,不同執(zhí)行者有著不同的作用:他們可以從用例中取值,也可以參與到用例中。
需要注意的是執(zhí)行者在用例圖中是用類似人的圖形來(lái)表示,盡管執(zhí)行的,但執(zhí)行者未必是人。例如,執(zhí)行者也可以是一個(gè)外界系統(tǒng),該外界系統(tǒng)可能需要從當(dāng)前系統(tǒng)中獲取信息,與當(dāng)前系統(tǒng)有進(jìn)行交互。在圖1中,我們可以看到,記帳系統(tǒng)是一個(gè)外界系統(tǒng),它需要更新帳目。
通過(guò)實(shí)踐,我們發(fā)現(xiàn)執(zhí)行者對(duì)提供用例是非常有用的。面對(duì)一個(gè)大系統(tǒng),要列出用例清單常常是十分困難。這時(shí)可先列出執(zhí)行者清單,再對(duì)每個(gè)執(zhí)行者列出它的用例,問(wèn)題就會(huì)變得容易很多。
使用和擴(kuò)展(UseandExtend)
圖1中除了包含執(zhí)行者與用例之間的連接外,還有另外兩種類型的連接,用以表示用例之間的使用和擴(kuò)展關(guān)系。UML靜態(tài)建模中使用和擴(kuò)展是兩種不同形式的繼承關(guān)系。當(dāng)一個(gè)用例與另一個(gè)用例相似,但所做的動(dòng)作多一些,就可以用到擴(kuò)展關(guān)系。例如圖1中,基本的用例是"進(jìn)行交易"。交易中可能一切都進(jìn)行得很順利,但也可能存在擾亂順利進(jìn)行交易的因素。其中之一便是超出某些邊界值的情況。例如,貿(mào)易組織會(huì)對(duì)某個(gè)特定客戶規(guī)定***貿(mào)易量,這時(shí)不能執(zhí)行給定用例提供的常規(guī)動(dòng)作,而要做些改動(dòng)。我們可在"進(jìn)行交易"用例中做改動(dòng)。但是,這將把該用例與一大堆特殊的判斷和邏輯混雜在一起,使正常的流程晦澀不堪。圖1中將常規(guī)的動(dòng)作放在"進(jìn)行交易"用例中,而將非常規(guī)的動(dòng)作放置于"超越邊界的交易"用例中,這便是擴(kuò)展關(guān)系的實(shí)質(zhì)。當(dāng)有一大塊相似的動(dòng)作存在于幾個(gè)用例,又不想重復(fù)描述該動(dòng)作時(shí),就可以用到使用關(guān)系。例如,現(xiàn)實(shí)中風(fēng)險(xiǎn)分析和交易估價(jià)都需要評(píng)價(jià)貿(mào)易,為此可單獨(dú)定義一個(gè)用例,即"評(píng)價(jià)貿(mào)易",而"風(fēng)險(xiǎn)分析"和"交易估價(jià)"用例將使用它。
請(qǐng)注意擴(kuò)展與使用之間的相似點(diǎn)和不同點(diǎn)。它們兩個(gè)都意味著從幾個(gè)用例中抽取那些公共的行為并放入一個(gè)單獨(dú)用例中,而這個(gè)用例被其他幾個(gè)用例使用或擴(kuò)展。但使用和擴(kuò)展的目的是不同的。
用例模型的獲取
幾乎在任何情況下都會(huì)使用用例。用例用來(lái)獲取需求,規(guī)劃和控制項(xiàng)目。用例的獲取是需求分析階段的主要任務(wù)之一,而且是首先要做的工作。大部分用例將在項(xiàng)目的需求分析階段產(chǎn)生,并且隨著工作的深入會(huì)發(fā)現(xiàn)更多的用例,這些都應(yīng)及時(shí)增添到已有的用例集中。用例集中的每個(gè)用例都是一個(gè)潛在的需求。
獲取執(zhí)行者
UML靜態(tài)建模中獲取用例首先要找出系統(tǒng)的執(zhí)行者。可以通過(guò)用戶回答一些問(wèn)題的答案來(lái)識(shí)別執(zhí)行者。以下問(wèn)題可供參考:
◆誰(shuí)使用系統(tǒng)的主要功能(主要使用者)。
◆誰(shuí)需要系統(tǒng)支持他們的日常工作。
◆誰(shuí)來(lái)維護(hù)、管理使系統(tǒng)正常工作(輔助使用者)。
◆系統(tǒng)需要操縱哪些硬件。
◆系統(tǒng)需要與哪些其它系統(tǒng)交互,包含其它計(jì)算機(jī)系統(tǒng)和其它應(yīng)用程序。
◆對(duì)系統(tǒng)產(chǎn)生的結(jié)果感興趣的人或事物。
【編輯推薦】
- UML靜態(tài)建模:類和對(duì)象
- UML輕松入門(mén)--UML靜態(tài)建模:用例
- 深入學(xué)習(xí)UML建模流程
- UML建模工具在微軟VisualStudio2005使用
- UML建模中繪制UML用例圖行之有效的辦法