문서 편집 역링크 PDF로 내보내기 Fold/unfold all 다음에 공유 ... Google+ Twitter LinkedIn Facebook Pinterest Telegram 목차 PlantUML Editor plantuml 사용법 종합 비교 Sequence Basic examples 주석 Declaring participant Participant creation Use Case Diagram Usecases Actors 확장 노트 화살표 방향 변경 방향 Complete example Class Diagram Relations between classes Label on relations Defining visibility Abstract and Static Advanced class body Packages Splitting large files Activity Activity Beta Component Diagram State Obejct Gantt Diagram deployment diagram 관련 문서 Comment OPEN PlantUML Editor https://plantuml-editor.kkeisuke.com/ plantuml 사용법 홈페이지에 있는 내용입니다. 종합 비교 <uml> A -> B note right : 기본으로 시퀀스가 그려집니다. </uml> AABB기본으로 시퀀스가 그려집니다.SVG | PNG | TXT <uml> :A: -> (B) note left of A : :: 을 사용하여 액터로 표시. note right of B : () 을 사용하여 유즈케이스로 표시. </uml> AB:: 을 사용하여 액터로 표시.() 을 사용하여 유즈케이스로 표시.SVG | PNG | TXT <uml> A -> B B : B클래스 note right of B : : 를 사용하여 클래스로 표시 </uml> ABB클래스: 를 사용하여 클래스로 표시SVG | PNG | TXT <uml> :A; :B; note right : :; 를 사용하여 액티비티로 표시 </uml> A:; 를 사용하여 액티비티로 표시BSVG | PNG | TXT <uml> ()A -> [B] note left of A : () 을 사용하여 인터페이스로 표시. note right of B : [] 을 사용하여 컴포넌트로 표시. </uml> AB() 을 사용하여 인터페이스로 표시.[] 을 사용하여 컴포넌트로 표시.SVG | PNG | TXT <uml> [*] -> A A : A State note right of A : [*] 을 사용하여 스테이트로 표시. </uml> AA State[*] 을 사용하여 스테이트로 표시.SVG | PNG | TXT Sequence Basic examples 화살표 -> 점선 --> <uml> Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response Alice -> Bob: Another authentication Request Alice <-- Bob: another authentication Response </uml> AliceAliceBobBobAuthentication RequestAuthentication ResponseAnother authentication Requestanother authentication ResponseSVG | PNG | TXT 주석 한줄 주석 : ' 로 시작 문단 주석 : /' ……….. '/ 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 Foo1Foo1Foo2Foo2Foo3Foo3Foo4Foo4Foo5Foo5To boundaryTo controlTo entityTo databaseSVG | PNG | TXT 색 지정 <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> BobBobAliceAliceI have a reallylong nameI have a reallylong nameAuthentication RequestAuthentication ResponseLog transactionSVG | PNG | TXT Participant creation <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> BobBobAliceAliceOtherStringhellonewOtherStringYou can also put notes!okSVG | PNG | TXT Use Case Diagram Usecases 괄호를 사용해서 표현 ( ) usecase 키워드 사용 <uml> (First usecase) (Another usecase) as (UC2) usecase UC3 usecase (Last\nusecase) as UC4 </uml> First usecaseAnother usecaseUC3LastusecaseSVG | PNG | TXT Actors 콜론을 사용해서 표현 : : actor 키워드 사용 <uml> :First Actor: :Another\nactor: as Men2 actor Men3 actor :Last actor: as Men4 </uml> First ActorAnotheractorMen3Last actorSVG | PNG | TXT 확장 <|– 심볼 사용 <uml> :Main Admin: as Admin (Use the application) as (Use) User <|-- Admin (Start) <|-- (Use) </uml> Main AdminUse the applicationUserStartSVG | PNG | TXT 노트 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> Main AdminUse the applicationUserStartThis is an example.A note can alsobe on several linesThis note is connectedto several objects.SVG | PNG | TXT 화살표 방향 변경 -- : 수직 연결 - : 수평 연결 .. : 점선 연결 left, right, up or down <uml> :user: -left-> (dummyLeft) :user: -right-> (dummyRight) :user: -up-> (dummyUp) :user: -down-> (dummyDown) </uml> userdummyLeftdummyRightdummyUpdummyDownSVG | PNG | TXT 방향 기본 : top to bottom 변경 : top to bottom <uml> left to right direction user1 --> (Usecase 1) user2 --> (Usecase 2) </uml> user1Usecase 1user2Usecase 2SVG | PNG | TXT 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> checkoutcheckoutpaymenthelpcustomerclerkincludeextendsSVG | PNG | TXT Class Diagram Relations between classes Extension <|-- Composition *-- Agregation o-- <uml> scale 900 width Class01 <|-- Class02 Class03 *-- Class04 Class05 o-- Class06 Class07 .. Class08 Class09 -- Class10 Class11 <|.. Class12 Class13 --> Class14 Class15 ..> Class16 Class17 ..|> Class18 Class19 <--* Class20 </uml> Class01Class02Class03Class04Class05Class06Class07Class08Class09Class10Class11Class12Class13Class14Class15Class16Class17Class18Class19Class20SVG | PNG | TXT Label on relations cardinality : “” label : : <uml> Class01 "1" *-- "many" Class02 : contains Class03 o-- Class04 : agregation Class05 --> "1" Class06 </uml> Class01Class02Class03Class04Class05Class06contains1manyagregation1SVG | PNG | TXT Defining visibility Character Visibility -private #protected ~package private +public <uml> class Dummy { -field1 #field2 ~method1() +method2() } </uml> Dummyfield1field2method1()method2()SVG | PNG | TXT Abstract and Static {abstract} {static} or {classifier} <uml> class Dummy { {static} String id {abstract} void methods() } </uml> DummyString idvoid methods()SVG | PNG | TXT 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> Foo1You can useseveral linesas you wantand groupthings together.You can have as many groupsas you wantEnd of classUsergetName()getAddress()Simple GettersetName()Some setterint ageprivate dataString passwordcryptedSVG | PNG | TXT Packages <uml> package "Classic Collections" #DDDDDD { Object <|-- ArrayList } package net.sourceforge.plantuml { Object <|-- Demo1 Demo1 *- Demo2 } </uml> Classic Collectionsnet.sourceforge.plantumlObjectArrayListDemo1Demo2SVG | PNG | TXT Splitting large files page (hpages)x(vpages) <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> net.dummynet.foonet.unusedPersonMeetingPersonPersonBaseClassSVG | PNG | TXT 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> Servlet ContainerClickServlet.handleRequest()new PagePage.onInit()Process controlsPage.onPost()Page.onRender()Page.onGet()redirect requestForward requestRender page templatePage.onDestroy()Page.onSecurityChecktrueisForward?nocontinue processing?yesnoyesis Post?yesnofalseDo redirect?yesDo Forward?yesnoSVG | PNG | TXT 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> ClickServlet.handleRequest()new pagePage.onInit()Process controlscontinue processing?noisPost?yesnoPage.onPost()Page.onGet()Page.onRender()noisForward?truePage.onSecurityCheckfalsedo redirect?yesredirect processdo forward?yesnoForward requestRender page templateSVG | PNG | TXT Component Diagram State Obejct Gantt Diagram ThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWe2021222324252627282930123456789101112131415161718192021222324September 2018October 2018Prototype designTest prototypeWrite testsHire tests writersInit and write tests report2021222324252627282930123456789101112131415161718192021222324ThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeSeptember 2018October 2018SVG | PNG | TXT deployment diagram http://plantuml.com/deployment-diagram actor actor agent agent artifact artifact boundary boundary card card cloud cloud component component control control database database entity entity file file folder folder frame frame interface interface node node package package queue queue stack stack rectangle rectangle storage storage usecase usecase actoragentartifactboundarycardcloudcomponentcontroldatabaseentityfilefolderframeinterfacenodepackagequeuestackrectanglestorageusecaseSVG | PNG | TXT 관련 문서 OPEN OPEN Comment Please enable JavaScript to view the comments powered by Disqus.