スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Prev.    Category    Next 

PlantUML - ユースケース図

PlantUML でのユースケース図の記法についての解説です。

UML としては ユースケース図はクラス図の特化したもの であるため、 PlantUML でも クラス図 とほとんど同じように書けます。

  1. ユースケース
  2. アクター
  3. 関係
  4. レイアウト
  5. サブジェクト
  6. 汎化、包含、拡張
  7. 参考
Usecase sample
@startuml{plantuml_usecase_sample.png}
title <size:18>ユースケース図のサンプル</size>
left to right direction

actor :社員: as user
actor :総務: as admin
actor :データベース: as DB
note "次のバージョンで\n対応" as next

user <|-- admin : 汎化

package "勤怠管理システム" <<Rect>>
usecase (<u>勤怠入力</u>\n 拡張点\n 早退、遅刻) as input

user -- (出社)
(出社) -- input
input <.. (早退理由入力) : <<extend>>
(早退理由入力) .. next
(早退理由入力) -- DB
user -- (帰宅)
(帰宅) -- input
input ..> (社員認証) : <<include>>
(社員認証) -- DB
admin -- (勤怠変更)
(勤怠変更) ..> (社員認証) : <<include>>
(勤怠変更) -- DB

end package
@enduml
タイトル(title)HTML タグ に関してはシーケンス図、 ノート(note) に関してはクラス図の説明を参照してください。

ユースケース

ユースケースは ( ) または usecase キーワードで記述します。
(ユースケース名)
usecase ユースケース名
( ) はクオートの役目もしているので、 usecase キーワードを使う場合も記号のような英数字以外の文字を使う場合には ( ) で囲みます。

また、 シーケンス図、クラス図のように別名(as)、ステレオタイプなども使えます。 (ただし、色指定はできません)
@startuml{plantuml_usecase_def.png}

(First usecase)
(機能)
usecase Payment
usecase (Long name\nusecase) as Long
usecase (check in) as ci <<Command>>

@enduml
Define sample
PlantUML では UML ダイアログの指定はありません。 ( ) や usecase などの定義でユースケース図と判断します。

アクター

棒人間を使いたい場合は ( ), usecase ではなく : :, actor を使用します。

: : 省略時もアクターと判断されますが、 ユースケース図と判断できるキーワードは何か入れておく必要があります。
@startuml{plantuml_usecase_actor.png}

:First actor:
:ユーザー:
actor DB
actor :Long name\nactor: as Long
Client as cl <<Human>>

@enduml
Actor sample

関係

ユースケース間の関係を記述は次の形式で記述します。
ユースケース名 -- ユースケース名 [: ラベル]
ユースケース間を結ぶ線には --(実線) 以外にも クラス図で使えるもの と同じものが使用できます。

関係の記述で書いたユースケース、アクターは前述の定義がなくても 自動的に作成されます。
@startuml{plantuml_usecase_relation.png}

(アプリケーションの使用) as use

User - (開始)
User -- use : 関係を表すラベル

:Main Admin: --- use : 複数行の\nラベル

@enduml
Relation sample

レイアウト

線の長さ
関係の線は -, --, --- というようにいくつ書いてもかまいません。 この長さ(文字数)はレイアウトの向きと相対的な長さに使われます。
文字数 向き
1
2
@startuml{plantuml_usecase_line_length.png}

User - (Usecase 1)
User -- (Usecase 2)
User --- (Usecase 3)

@enduml
Line length sample

レイアウトの方向
配置の方向は線の長さで変わるのですが、これ変えるためには以下のキーワードを使用します。
キーワード 方向
left to right direction 水平
top to bottom direction 垂直
ただし、線の文字数が違うものを混ぜているとエラー終了してしまいます。
User -- (Usecase A)
User -- (Usecase B)
left to right direction

User -- (Usecase A)
User -- (Usecase B)
Direction sample  (default) Direction sample
配置の方向
-position- と書く事によって、関係の方向を直接指定することもできます。
position には以下のキーワードが使えます。
方向 キーワード
up, u
down, d, do
left, l, le
right, r, ri
@startuml{plantuml_usecase_line_direction.png}

User -up- (上)
User -do- (下)
User -le- (左) 
User -ri- (右) 

@enduml
Line direction sample

サブジェクト

サブジェクトとは、開発対象であるシステムです。 これを表現するには package キーワードを使用します。
@startuml{plantuml_usecase_subject.png}
left to right direction

actor :利用者: as user
actor :図書館職員: as admin

package "図書館" <<Rect>> {
    user -- (本を借りる)
    (本を借りる) -- admin
    user -- (本を返却する)
    (本を返却する) -- admin
    (本を登録する) -- admin
}
@enduml
Subject sample
パッケージはデフォルトでは Folder スタイルのため、 ステレオタイプで Rect スタイルに変更しています。 これは skinparam を使って指定することもできます。

汎化、包含、拡張

ユースケース図では関連をより特殊化した関係が使われることがあります。
関係 記述
汎化 <|--
包含 依存(<..)、ラベルを <<include>>
拡張 依存(<..)、ラベルを <<extend>>

汎化

クラス図の汎化 と同じで、抽象化(継承の逆)した関係です。
@startuml{plantuml_usecase_generalization.png}

:社員: <|-- :総務:

(本を借りる) <|-- (自動貸し出し)
(本を借りる) <|-- (手動貸し出し)

@enduml
Generalization sample

包含

包含はあるユースケースが他のユースケースを利用する場合に使用します。
@startuml{plantuml_usecase_include.png}

(勤怠入力) .> (社員認証) : <<include>>

@enduml
Include sample

拡張

拡張は包含と違い、ある条件の時だけ利用する場合に使用します。
@startuml{plantuml_usecase_extend.png}

(勤怠入力) .> (早退理由入力) : <<extend>>

@enduml
Extend sample

UML では利用する条件を 拡張点(Extension points) として記入します。 PlantUML では特に拡張点用の記述は用意されていないのですが、 がんばって書くと次のようになります。
@startuml{plantuml_usecase_extend2.png}

usecase (<u>勤怠入力</u>\n拡張点\n早退、遅刻) as input

input .> (早退理由入力) : <<extend>>

@enduml
Extend sample 2

参考

このページの記述には以下のサイトを参考にさせていただきました。

関連記事
スポンサーサイト
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
9位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
3位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

09月 | 2017年10月 | 11月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。