UML核心技術學習 三

2021-04-13 12:57:41 字數 3267 閱讀 4463

用例模型是把應滿足使用者需求的基本功能(集)聚合起來表示的強大工具

用例模型的基本組成部件是用例、角色和系統。用例用於描述系統的功能;角色是與系統進行互動的外部實體,可以是系統使用者、也可以是其它系統或硬體裝置;系統的邊界線以內的區域(即用例的活動區域)則抽象表示系統能夠實現的所有基本功能

引入用例的主要目的:l

確定系統應具備哪些功能,這些功能是否滿足系統的需求(開發者與使用者協商達成共識的東西)

l為系統提供清晰一致的描述,以便為後續的開發工作打下良好的交流基礎,方便開發人員傳遞需求的功能

l為系統的驗證工作打下基礎,通過驗證最終實現的系統能夠執行的功能是否與最初需求的功能相一致,保證系統的實用性

l從需求的功能(用例)出發,提供跟蹤進入系統中具體實現的類和方法,檢查其是否正確的能力

用例圖中包含了系統、角色和用例三種模型元素,要畫出三種模型,還要畫出三種模型之間的各種關係(通用化、關聯、依賴)

系統是用例模型的乙個組成部分,代表的是一部機器或乙個商務活動等,而不是真正實現的軟體系統。系統的邊界用來說明構建的用例模型的應用範圍

角色(actor

)是與系統互動的人或事。所謂「與系統互動」指的是角色向系統傳送訊息,從系統中接收訊息,或是在系統中交換資訊。只要使用用例,與系統相互交流的任何人和事都是角色。

角色分為幾個等級:主要角色(

primary actor

)指的是執行系統主要功能的角色;次要角色(

secondary actor

)指的是使用系統的次要功能的角色,次要功能是指一般完成維護系統的功能;將角色分級的主要的目的是,保證把系統的所有功能表示出來,而主要功能是使用系統的角色最關心的部分

角色也可以分成主動角色和被動角色,主動角色可以初始化用例,而被動角色不能,僅僅參與乙個或多個用例,在某個時刻與用例通訊

l使用系統主要功能的人是誰(即主要角色)

l需要借助於系統完成日常工作的人是誰

l誰來維護、管理系統(次要角色),保證系統正常工作

l系統控制的硬體裝置有哪些

l系統需要與哪些其它系統互動

l對系統產生的結果感興趣的人或事是哪些

在完成了角色識別工作後,建模者就可以建立系統或與系統互動的實體(

entities

)了,即可以從角色的角度出發,考慮角色需要系統完成什麼樣的功能,從而建立角色需要的用例

uml中的角色是具有版類《角色》的類,該類的名字用角色的名字命名,用以反映角色的行為。角色類包含具有屬性、行為和描述角色的文件性質。

兩種圖示法:右邊的一般用在用例圖中

在用例圖中,只用通用化關係描述若干個角色之間的行為

通用化關係的含義是:把某些角色的共同行為(原角色中的部分行為),抽取出來表示成通用行為,且把它們描述成為超類(

superclass

)用例代表的是乙個完整的功能。

uml中的用例是動作步驟地集合。動作(

action

)是系統的一次執行(能夠給某個角色輸出結果值)

用例具有以下特徵:

l用例總由角色初始化

l用例為角色提供值

l用例具有完全性:只有產生了返回給角色的結果值,才能說明用例執行完畢

用例和角色之間也有連線關係,用例和角色之間的關係屬於關聯(

association

),又稱為通訊關聯(

communication association);

l角色需要從系統中獲得哪種功能

?角色需要做什麼

?

l角色需要讀取、產生、刪除、修改或儲存系統中的某種資訊嗎

?

l系統中發生的事件需要通知角色嗎

?或者角色需要通知系統某件事嗎

?這些事件(功能)能幹些什麼

?

l如果用系統的新功能處理角色的日常工作是簡單化了,還是提高了工作效率

?

l還有一些與當前角色可能無關的問題,也能幫助建模者發現用例,如:系統需要的輸入

/輸出是什麼資訊

?這些輸入

/輸出資訊從哪兒來到哪兒去

?系統當前的這種實現方法要解決的問題是什麼(也許是用自動系統代替手工操作)

?

角色與用例之間的關聯關係(通訊關聯關係)用一條直線表示

用例之間有擴充套件、使用、組合三種關係,擴充套件和使用是繼承關係(通用化關係)的另一種體現形式,組合則是把相關的用例打成包(

package

),當作乙個整體看待

擴充套件:乙個用例中加入了一些新的動作後則構成了另乙個用例,這兩個用例之間的關係就是通用化關係,又稱為擴充套件關係;前者稱通用化用例,後者稱為擴充套件用例

使用:乙個用例使用另乙個用例時,這兩個用例之間就構成了使用關係

用例的描述其實是乙個關於角色與系統如何互動的規格說明,該規格說明要清晰明了,沒有二義性,描述用例時,應著重描述系統從外界看來會有什麼樣的行為,而不管該行為在系統內部是如何具體實現的,即只管外部能力,不管內部細節

用例的描述應包含以下幾方面:

l用例的目標

l用例是怎樣被啟動的

l角色和用例之間的訊息流

l用例的多種執行方案

l用例怎樣才算完成並把值傳給了角色

用例可用於測試系統的正確性和有效性;正確性表明系統的實現符合規格說明,有效性保證開發的系統是使用者真正需要的系統

正確性測試方法有兩種:一種是用具體的用例測試系統的行為,稱為「漫遊用例」;另一種是用用例描述本身測試,稱為「定義測試」;前者好一些

實現用例的主要任務是把用例描述中的各個步驟和動作變換為協作中的類、類的操作和類之間的關係,具體說來,就是把用例中每個步驟所完成的工作交給協作中的類來完成。

用例和它的實現(即協作)之間的關係可以用精化關係表示(帶箭頭的點畫線)

三種版類物件類(

sterotype object types):l

邊界物件(

boundary objects

):這種物件類緊靠系統的邊界(雖然仍在系統內部),它負責與系統外部的角色互動,在角色和系統內部的其它物件類之間傳遞訊息

l控制物件(

control objects

):這種物件類控制一組物件之間的互動。控制物件可以是刺激用例啟動的角色,也可以用來實現若干個用例的普通序列。控制物件通常僅存於用例執行階段

l實體物件(

entity objects

):這種物件代表系統控制區域內的區域實體。它是被動物件,本身不能啟動互動。在資訊系統中,實體物件通常是持久化的,儲存在資料庫記憶體中,實體物件也可以出現在多個用例中

用例圖用協作實現,協作描述了類(或物件)、類與類之間的關係和互動(顯示類之間怎樣互動才能實現乙個具體的功能),協作用活**、協作圖和互動圖描述

Canvas 核心技術

最近專案需求中要寫較多h5小遊戲,遊戲本身體量不是很複雜,主要是承載較多業務邏輯,所以決定用canvas來完成遊戲部分。之前只是知道h5中有canvas這個東西,也知道它大概是畫圖的,但具體怎麼用,還是一無所知的。在mdn在看了一些相關資料,一口氣也看了html 5 canvas 核心技術和html...

Canvas 核心技術

最近專案需求中要寫較多h5小遊戲,遊戲本身體量不是很複雜,主要是承載較多業務邏輯,所以決定用canvas來完成遊戲部分。之前只是知道h5中有canvas這個東西,也知道它大概是畫圖的,但具體怎麼用,還是一無所知的。在mdn在看了一些相關資料,一口氣也看了html 5 canvas 核心技術和html...

Docker核心技術

執行在同樣的主機上,docker容器共用乙個container,而虛擬機器則使用自己的作業系統上的container,虛擬機器之間擁有比docker更好的隔離性,但docker相對於虛擬機器來說有更多的優勢,比如虛擬機器作業系統的存在額外占用了更多的計算資源,其次,從空間占用上,虛擬機器基本都是gb...