UML Webシステムの例

分析レベル

画面遷移図

@startuml

state 商品追加 #ddd
state 商品削除 #ddd
state 商品変更 #ddd

[*]->商品一覧
商品一覧-->商品追加 :追加ボタン
商品一覧-->削除確認 :削除リンク
削除確認-->商品削除 :削除ボタン
商品一覧-->変更入力 :変更リンク
変更入力-->商品変更 :変更ボタン
商品一覧-->商品別売上 :売上リンク

@enduml

シーケンス図

@startuml
title 商品の追加
autonumber "#."

actor ユーザ
boundary 商品一覧画面
control  商品追加
database 商品管理
entity 商品

ユーザ -> 商品一覧画面 :商品名入力
ユーザ -> 商品一覧画面 :単価入力
ユーザ -> 商品一覧画面 :追加ボタン押下
商品一覧画面 -> 商品追加 :遷移
商品追加 -> 商品 :生成
商品追加 -> 商品管理 :追加(商品)
商品追加 -> 商品一覧画面 :遷移
商品一覧画面 -> ユーザ :表示
@enduml
@startuml
title 商品の削除

autonumber "#."

actor ユーザ
boundary 商品一覧画面
control 商品削除
database 商品管理
entity 商品

ユーザ -> 商品一覧画面:削除リンク
商品一覧画面 -> 商品削除:遷移
商品削除 -> 商品管理:検索(商品ID)
商品管理 -> 商品:生成
商品管理 --> 商品削除:商品
商品削除 --> ユーザ:確認画面表示
ユーザ -> 商品削除:削除ボタン
商品削除 -> 商品管理:削除(商品ID)
商品削除 -> 商品一覧画面:遷移
商品一覧画面 --> ユーザ:表示
@enduml

クラス図

※画面はサーブレットに対応しているので、メソッドは最大2つ(GETとPOST)しかない

@startuml
left to right direction
package 画面{
	class 商品一覧画面{
		+ 一覧表示()
	}
	class 商品追加画面{
		+ 商品追加()
	}
	class 商品削除画面{
		+ 削除確認()
		+ 商品削除()
	}
	class 商品変更画面{
		+ 変更入力()
		+ 商品変更()
	}
	class 商品別売上画面{
		+ 商品別表示()
	}
}
package DB {
	class 商品{
		-商品ID
		-商品名
		-単価
	}
	class 商品管理{
		+全検索():商品のリスト
		+検索(商品ID):商品
		+追加(商品)
		+変更(商品)
		+削除(商品ID)
	}
	
	class 売上{
		-売上ID
		-商品ID
		-個数
		-売上日付
	}
	class 売上管理{
		+検索(商品ID):売上のリスト
	}
}
商品管理 o-- 商品
売上管理 o-- 売上
売上->商品

商品一覧画面..>商品管理
商品追加画面..>商品管理
商品削除画面..>商品管理
商品変更画面..>商品管理

商品別売上画面..>商品管理
商品別売上画面..>売上管理

@enduml

詳細レベル

シーケンス図

@startuml
title 削除確認画面 /del GET

autonumber "#."

actor ユーザ
boundary "/slist"
control DelServlet
database ShouhinDAO
entity Shouhin
participant request 
participant del.jsp 

ユーザ -> "/slist":削除リンク
"/slist" -> DelServlet:sid
DelServlet -> ShouhinDAO:生成
DelServlet -> ShouhinDAO:findBySid(sid)
ShouhinDAO -> Shouhin:生成
ShouhinDAO --> DelServlet:shouhin
DelServlet -> request :shouhin
DelServlet -> del.jsp:フォワード
del.jsp --> ユーザ:表示
@enduml

クラス図

@startuml
left to right direction
package servlet{
	class ShouhinListServlet{
		+doGet()
	}
	class DelServlet{
		+doGet()
		+doPost()
	}
	class InsertServlet{
		+doPost()
	}
	class UpdateServlet{
		+doGet()
		+doPost()
	}
	class UriageShouhinServlet{
		+doGet()
	}
}
package db{
	class ShouhinDAO{
		+findAll():List
		+findBySid(int sid):Shouhin
		+insert(Shouhin dto)
		+update(Shouhin dto)
		+delete(int sid)
	}
	class Shouhin{
		-sid : int
		-sname : String
		-tanka : int
	}
	class UriageDAO{
		+findBySid(int sid):List
	}
	class Uriage{
		-uid : int
		-sid : int
		-mid : int
		-kosu : int
		-hi : Timestamp
	}
}
ShouhinListServlet..>ShouhinDAO
DelServlet..>ShouhinDAO
UpdateServlet..>ShouhinDAO
InsertServlet..>ShouhinDAO
UriageShouhinServlet..>ShouhinDAO
UriageShouhinServlet..>UriageDAO

ShouhinDAO o-- Shouhin
UriageDAO o-- Uriage
Uriage->Shouhin

@enduml