<uml>
:A: -> (B)
note left of A : :: 을 사용하여 액터로 표시.
note right of B : () 을 사용하여 유즈케이스로 표시.
</uml>
<uml>
:A: → (B)
note left of A : :: 을 사용하여 액터로 표시.
note right of B : () 을 사용하여 유즈케이스로 표시.
</uml>
<uml>
A -> B
B : B클래스
note right of B : : 를 사용하여 클래스로 표시
</uml>
<uml>
A → B
B : B클래스
note right of B : : 를 사용하여 클래스로 표시
</uml>
<uml>
:A;
:B;
note right : :; 를 사용하여 액티비티로 표시
</uml>
<uml>
:A;
:B;
note right : :; 를 사용하여 액티비티로 표시
</uml>
<uml>
()A -> [B]
note left of A : () 을 사용하여 인터페이스로 표시.
note right of B : [] 을 사용하여 컴포넌트로 표시.
</uml>
<uml>
()A → [B]
note left of A : () 을 사용하여 인터페이스로 표시.
note right of B : [] 을 사용하여 컴포넌트로 표시.
</uml>
<uml>
[*] -> A
A : A State
note right of A : [*] 을 사용하여 스테이트로 표시.
</uml>
<uml>
[] → A
A : A State
note right of A : [] 을 사용하여 스테이트로 표시.
</uml>
Sequence
Basic examples
화살표 ->
점선 -->
<uml>
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
</uml>
<uml>
Alice → Bob: Authentication Request
Bob –
> Alice: Authentication Response
A
lice → Bob: Another authentication Request
Alice ←- Bob: another authentication Response
</uml>
주석
한줄 주석 : ' 로 시작
문단 주석 : /' ……….. '/
Declaring participant
actor Foo1
boundary Foo2
control Foo3
entity Foo4
database Foo5
Foo1 -> Foo2 : To boundary
Foo1 -> Foo3 : To control
Foo1 -> Foo4 : To entity
Foo1 -> Foo5 : To database
<uml>
actor Foo1
boundary Foo2
control Foo3
entity Foo4
database Foo5
Foo1 → Foo2 : To boundary
Foo1 → Foo3 : To control
Foo1 → Foo4 : To entity
Foo1 → Foo5 : To database
</uml>
색 지정
<uml>
actor Bob #red
' The only difference between actor
'and participant is the drawing
participant Alice
participant "I have a really\nlong name" as L #99FF99
/' You can also declare:
participant L as "I have a really\nlong name" #99FF99
'/
Alice->Bob: Authentication Request
Bob->Alice: Authentication Response
Bob->L: Log transaction
</uml>
<uml>
actor Bob #red
' The only difference between actor
'and participant is the drawing
participant Alice
participant “I have a really\nlong name” as L #99FF99
/' You can also declare:
participant L as "I have a really\nlong name" #99FF99
'/
<uml>
Bob -> Alice : hello
create Other
Alice -> Other : new
create control String
Alice -> String
note right : You can also put notes!
Alice --> Bob : ok
</uml>
<uml>
Bob → Alice : hello
create Other
Alice → Other : new
create control String
Alice → String
note right : You can also put notes!
Alice –
> Bob : ok
<
/uml>
Use Case Diagram
Usecases
괄호를 사용해서 표현 ( )
usecase 키워드 사용
<uml>
(First usecase)
(Another usecase) as (UC2)
usecase UC3
usecase (Last\nusecase) as UC4
</uml>
<uml>
(First usecase)
(Another usecase) as (UC2)
usecase UC3
usecase (Last\nusecase) as UC4
</uml>
Actors
콜론을 사용해서 표현 : :
actor 키워드 사용
<uml>
:First Actor:
:Another\nactor: as Men2
actor Men3
actor :Last actor: as Men4
</uml>
<uml>
:First Actor:
:Another\nactor: as Men2
actor Men3
actor :Last actor: as Men4
</uml>
확장
<|– 심볼 사용
<uml>
:Main Admin: as Admin
(Use the application) as (Use)
User <|-- Admin
(Start) <|-- (Use)
</uml>
<uml>
:Main Admin: as Admin
(Use the application) as (Use)
User <|– Admin
(Start) <|– (Use)
</uml>
노트
note left of
note right of
note top of
note bottom
.. : 점선연결
<uml>
:Main Admin: as Admin
(Use the application) as (Use)
User -> (Start)
User --> (Use)
Admin ---> (Use)
note right of Admin : This is an example.
note right of (Use)
A note can also
be on several lines
end note
note "This note is connected\nto several objects." as N2
(Start) .. N2
N2 .. (Use)
</uml>
<uml>
:Main Admin: as Admin
(Use the application) as (Use)
User → (Start)
User –
> (Use)
Admin —
> (Use)
note right of Admin : This is an example.
note right of (Use)
A note can also
be on several lines
end note
note “This note is connected\nto several objects.” as N2
(Start) .. N2
N2 .. (Use)
</uml>
<uml>
left to right direction
user1 --> (Usecase 1)
user2 --> (Usecase 2)
</uml>
<uml>
left to right direction
user1 –
> (Usecase 1)
u
ser2 –
> (Usecase 2)
<
/uml>
Complete example
<uml>
left to right direction
skinparam packageStyle rect
actor customer
actor clerk
rectangle checkout {
customer -- (checkout)
(checkout) .> (payment) : include
(help) .> (checkout) : extends
(checkout) -- clerk
}
</uml>
<uml>
left to right direction
skinparam packageStyle rect
actor customer
actor clerk
rectangle checkout {
<uml>
class Dummy {
-field1
#field2
~method1()
+method2()
}
</uml>
<uml>
class Dummy {
-field1
#field2
~method1()
+method2()
}
</uml>
Abstract and Static
{abstract}
{static} or {classifier}
<uml>
class Dummy {
{static} String id
{abstract} void methods()
}
</uml>
<uml>
class Dummy {
{static} String id
{abstract} void methods()
}
</uml>
Advanced class body
--
..
==
__
<uml>
class Foo1 {
You can use
several lines
..
as you want
and group
==
things together.
__
You can have as many groups
as you want
--
End of class
}
class User {
.. Simple Getter ..
+ getName()
+ getAddress()
.. Some setter ..
+ setName()
__ private data __
int age
-- crypted --
String password
}
</uml>
<uml>
class Foo1 {
You can use
several lines
..
as you want
and group
==
things together.
__
You can have as many groups
as you want
--
End of class
}
class User {
.. Simple Getter ..
+ getName()
+ getAddress()
.. Some setter ..
+ setName()
__ private data __
int age
-- crypted --
String password
<uml>
' Split into 4 pages
page 2x2
class BaseClass
namespace net.dummy #DDDDDD {
.BaseClass <|-- Person
Meeting o-- Person
.BaseClass <|- Meeting
}
namespace net.foo {
net.dummy.Person <|- Person
.BaseClass <|-- Person
net.dummy.Meeting o-- Person
}
BaseClass <|-- net.unused.Person
</uml>
<uml>
' Split into 4 pages
page 2×2
class BaseClass
namespace net.dummy #DDDDDD {
.BaseClass <|-- Person
Meeting o-- Person
.BaseClass <|- Meeting
}
namespace net.foo {
net.dummy.Person <|- Person
.BaseClass <|-- Person
net.dummy.Meeting o-- Person
}
BaseClass <|– net.unused.Person
</uml>
Activity
<uml>
title Servlet Container
(*) --> "ClickServlet.handleRequest()"
--> "new Page"
if "Page.onSecurityCheck" then
->[true] "Page.onInit()"
if "isForward?" then
->[no] "Process controls"
if "continue processing?" then
-->[yes] ===RENDERING===
else
-->[no] ===REDIRECT_CHECK===
endif
else
-->[yes] ===RENDERING===
endif
if "is Post?" then
-->[yes] "Page.onPost()"
--> "Page.onRender()" as render
--> ===REDIRECT_CHECK===
else
-->[no] "Page.onGet()"
--> render
endif
else
-->[false] ===REDIRECT_CHECK===
endif
if "Do redirect?" then
->[yes] "redirect request"
--> ==BEFORE_DESTROY===
else
if "Do Forward?" then
-left->[yes] "Forward request"
--> ==BEFORE_DESTROY===
else
-right->[no] "Render page template"
--> ==BEFORE_DESTROY===
endif
endif
--> "Page.onDestroy()"
-->(*)
</uml>
<uml>
title Servlet Container
(*) –
> "ClickServlet.handleRequest()"
-
→ “new Page”
if “Page.onSecurityCheck” then
>[true] “Page.onInit()”
if “isForward?” then
>[no] “Process controls”
if “continue processing?” then
→[yes]
RENDERING
else
→[no]
REDIRECT_CHECK
endif
else
-->[yes] ===RENDERING===
endif
if "is Post?" then
-->[yes] "Page.onPost()"
--> "Page.onRender()" as render
--> ===REDIRECT_CHECK===
else
-->[no] "Page.onGet()"
--> render
endif
else
→[false]
REDIRECT_CHECK
endif
if “Do redirect?” then
→[yes] “redirect request”
–
> ==BEFORE_DESTROY===
e
lse
if “Do Forward?” then
left→[yes] “Forward request”
→
BEFORE_DESTROY
else
right→[no] “Render page template”
→
BEFORE_DESTROY
endif
endif
–
> "Page.onDestroy()"
-
→(*)
</uml>
Activity Beta
<uml>
start
:ClickServlet.handleRequest();
:new page;
if (Page.onSecurityCheck) then (true)
:Page.onInit();
if (isForward?) then (no)
:Process controls;
if (continue processing?) then (no)
stop
endif
if (isPost?) then (yes)
:Page.onPost();
else (no)
:Page.onGet();
endif
:Page.onRender();
endif
else (false)
endif
if (do redirect?) then (yes)
:redirect process;
else
if (do forward?) then (yes)
:Forward request;
else (no)
:Render page template;
endif
endif
stop
</uml>
<uml>
start
:ClickServlet.handleRequest();
:new page;
if (Page.onSecurityCheck) then (true)
:Page.onInit();
if (isForward?) then (no)
:Process controls;
if (continue processing?) then (no)
stop
endif
if (isPost?) then (yes)
:Page.onPost();
else (no)
:Page.onGet();
endif
:Page.onRender();
endif
else (false)
endif
if (do redirect?) then (yes)
:redirect process;
else
if (do forward?) then (yes)
:Forward request;
else (no)
:Render page template;
endif
endif
stop
</uml>
Component Diagram
State
Obejct
Gantt Diagram
<uml>
Project starts the 20th of september 2018
saturday are closed
sunday are closed
[Prototype design] lasts 13 days and is colored in Lavender/LightBlue
[Test prototype] lasts 9 days and is colored in Coral/Green and starts 3 days after [Prototype design]'s end
[Write tests] lasts 5 days and ends at [Prototype design]'s end
[Hire tests writers] lasts 6 days and ends at [Write tests]'s start
[Init and write tests report] is colored in Coral/Green
[Init and write tests report] starts 1 day before [Test prototype]'s start and ends at [Test prototype]'s end
</uml>