본문 바로가기

코딩 학원(국비지원)/코딩 팀프로젝트

게시판 시퀀스 다이어그램, 유즈케이스 다이어그램 PlantUML로 만들기

반응형

PlantUML로 시퀀스 다이어그램, 유즈케이스 다이어그램을 그려보자

PlantUML은 텍스트 기반의 다이어그램 작성 도구로, UML(Unified Modeling Language)을 포함한 다양한 다이어그램을 생성할 수 있는 오픈 소스 도구다. PlantUML은 간단한 텍스트 기반의 문법을 사용하여 다이어그램을 정의하고, 해당 정의를 기반으로 그래픽 다이어그램을 자동으로 생성한다.PlantUML을 이용하여 빠르고 쉽게 다이어그램을 작성할 수 있다. 

 

 

시퀀스 다이어그램 코드

1. 게시글 작성

@startuml
 !theme minty
<style>
root {
    FontName 나눔고딕
    FontSize 15
    FontColor salmon
}

title {
    FontSize 30
    FontColor white
}

participant {
    FontName 나눔고딕 ExtraBold
    FontSize 20
    FontColor white
}

group  {
    BackgroundColor white
    LineThickness 2
    LineStyle 0
    padding 50
    margin 50
}

groupHeader {
    FontSize 15
    FontColor white
    LineColor MediumAquaMarine
}
</style>

participant User as U
participant "Web" as W
participant "Controller" as C
participant "DB" as D

title 게시글 작성 

U -> W : 1. 게시글 작성 버튼 클릭
activate U
activate W
group 로그인 체크
W -> W
end group
W --> U : 2. 게시글 작성 화면 제공
deactivate W

group 사진 첨부
U -> W : 3. 사진 첨부하기 
activate W
W -> D : 4. 사진 정보 저장
activate D
W <-- D : 5. 사진 정보 저장 완료  
deactivate D   
W --> U : 6. 사진 첨부 완료
deactivate W 
end group

U -> W : 7. 게시글 등록 버튼 클릭
activate W 
W -> W : 8. 사용자 입력 칸 유효성 검증
W -> D : 9. 게시글 정보 저장 
activate D 
D --> W : 10. 게시글 정보 저장 완료
deactivate D
W --> U : 11. 게시글 등록 완료 팝업
deactivate W
@enduml

 

2. 게시글 수정 

@startuml
 !theme minty
<style>
root {
    FontName 나눔고딕
    FontSize 15
    FontColor salmon
}

title {
    FontSize 30
    FontColor white
}

participant {
    FontName 나눔고딕 ExtraBold
    FontSize 20
    FontColor white
}

group  {
    BackgroundColor white
    LineThickness 2
    LineStyle 0
    padding 50
    margin 50
}

groupHeader {
    FontSize 15
    FontColor white
    LineColor MediumAquaMarine
}
</style>

participant User as U
participant "Web" as W
participant "Controller" as C
participant "DB" as D

title 게시글 수정

U -> D : 1. 게시글 수정 버튼 클릭
activate U
activate D
D --> W : 2. 원본 게시글 정보 제공
deactivate D
activate W
W --> U : 3. 게시글 수정 화면 제공
deactivate W

group 사진 첨부
U -> W : 4. 사진 첨부하기 
activate W
W -> D : 5. 사진 정보 저장
activate D
D -> D : 6. 원본 게시글 사진 삭제
W <-- D : 7. 사진 정보 저장 완료  
deactivate D
W --> U : 8. 사진 첨부 완료
deactivate W
end group

U -> W : 9. 게시글 등록 버튼 클릭
activate W 
W -> W : 10. 사용자 입력 칸 유효성 검증
W -> D : 11. 게시글 수정 내용 저장 
activate D 
D --> W : 12. 게시글 정보 수정 완료
deactivate D 
W --> U : 13. 게시글 수정 완료 팝업
deactivate W
@enduml

 

3. 게시글 삭제

@startuml
 !theme minty
<style>
root {
    FontName 나눔고딕
    FontSize 15
    FontColor salmon
}

title {
    FontSize 30
    FontColor white
}

participant {
    FontName 나눔고딕 ExtraBold
    FontSize 20
    FontColor white
}

group  {
    BackgroundColor white
    LineThickness 2
    LineStyle 0
    padding 50
    margin 50
}

groupHeader {
    FontSize 15
    FontColor white
    LineColor MediumAquaMarine
}
</style>

participant User as U
participant "Web" as W
participant "Controller" as C
participant "DB" as D

title 게시글 삭제

U -> W : 1. 게시글 삭제 버튼 클릭
activate W

group 게시글 삭제 경고창에서 '아니오'를 클릭
activate U
W --> U : 2 - 1. 게시글 조회 화면 제공
deactivate W
end group

group 게시글 삭제 경고창에서 '예'를 클릭
activate U
U -> D : 2 - 2. 게시글 정보 삭제
activate D
D --> W : 3. 게시글 정보 삭제 완료
deactivate D
activate W
W --> U : 4. 게시글 삭제 완료 팝업
deactivate W
end group
@enduml

 

4. 게시글 검색 

@startuml
 !theme minty
<style>
root {
    FontName 나눔고딕
    FontSize 15
    FontColor salmon
}

title {
    FontSize 30
    FontColor white
}

participant {
    FontName 나눔고딕 ExtraBold
    FontSize 20
    FontColor white
}

group  {
    BackgroundColor white
    LineThickness 2
    LineStyle 0
    padding 50
    margin 50
}

groupHeader {
    FontSize 15
    FontColor white
    LineColor MediumAquaMarine
}
</style>

participant User as U
participant "Web" as W
participant "Controller" as C
participant "DB" as D

title 게시글 검색

group 카테고리 검색
activate U
U -> W : 1. 해당 카테고리 클릭
activate W
W -> D : 2. 해당 카테고리의 게시글 조회
activate D
D --> W : 3. 해당 카테고리의 게시글 정보 제공
deactivate D
W --> U : 4. 카테고리 검색 결과 제공
deactivate W
end group

group 일반 검색
activate U
U -> W : 5. 검색 종류(제목, 내용, 닉네임) 선택 및 검색 키워드 작성
activate W
W -> D : 6. 해당 검색 종류와 검색 키워드 조회
activate D
D --> W : 3. 해당 게시글 정보 제공
deactivate D
W --> U : 4. 게시글 검색 결과 제공
deactivate W
end group
@enduml

 

5. 게시글 조회 

@startuml
 !theme minty
<style>
root {
    FontName 나눔고딕
    FontSize 15
    FontColor salmon
}

title {
    FontSize 30
    FontColor white
}

participant {
    FontName 나눔고딕 ExtraBold
    FontSize 20
    FontColor white
}

group  {
    BackgroundColor white
    LineThickness 2
    LineStyle 0
    padding 50
    margin 50
}

groupHeader {
    FontSize 15
    FontColor white
    LineColor MediumAquaMarine
}
</style>

participant User as U
participant "Web" as W
participant "DB" as D

title 게시글 조회

activate U
U -> W : 1. '댕댕커뮤' 메뉴 클릭
activate W
W -> D : 2. 전체 게시글 정보 조회
activate D
D --> W : 3. 전체 게시글 정보 제공
deactivate D
W --> U : 4. 게시글 목록 페이지 제공
deactivate W
U -> W : 5. 게시글 제목 클릭
activate W
W -> D : 6. 해당 게시글 정보 조회
activate D
D --> W : 7. 해당 게시글 정보 제공
deactivate D
W --> U : 8. 클릭한 게시글 화면 제공
deactivate W

group 댓글
U -> W : 9. 댓글 작성
activate W

end group
@enduml

 

시퀀스 다이어그램 

 





 

 

유즈케이스 다이어그램 코드

@startuml
left to right direction
actor 사용자 as u

rectangle 게시판 {
  usecase "게시물을 작성한다" as UC1
  usecase "게시물을 수정한다" as UC2
  usecase "게시물을 삭제한다" as UC3
  usecase "게시물을 조회한다" as UC4
  usecase "게시물을 검색한다" as UC5  
}

u --> UC1
u --> UC2
u --> UC3
u --> UC4
u --> UC5

rectangle 사용자인증1 {
  usecase "사용자를 인증한다" as UC6
}

UC1 .[#red].> UC6 : <<include>> 
UC2 .[#red].> UC6 : <<include>>
UC3 .[#red].> UC6 : <<include>>

usecase "글등록" as UC7

UC6 -right-> UC7

usecase "제목을 입력한다" as UC8
usecase "카테고리를 입력한다" as UC9
usecase "내용을 입력한다" as UC10
usecase "파일을 첨부한다" as UC11

UC7 ..> UC8 : <<include>>
UC7 ..> UC9 : <<include>>
UC7 ..> UC10 : <<include>>
UC7 <.. UC11 : <<extend>>

rectangle 검색 {
  usecase "닉네임으로 검색한다" as UC12
  usecase "제목으로 검색한다" as UC13
  usecase "내용으로 검색한다" as UC14
}
 
UC12 -up-|> UC5
UC13 -up-|> UC5
UC14 -down-|> UC5

rectangle 댓글 {
  usecase "댓글을 작성한다" as UC15
  usecase "댓글을 수정한다" as UC16
  usecase "댓글을 삭제한다" as UC17
}

rectangle 사용자인증2 {
  usecase "사용자를 인증한다" as UC0
}

UC4 --> UC15 
UC4 --> UC16 
UC4 --> UC17 

UC15 .[#red].> UC0 : <<include>>
UC16 .[#red].> UC0 : <<include>>
UC17 .[#red].> UC0 : <<include>>

UC14 -[hidden]-> UC7

@enduml

 

유즈케이스 다이어그램


로그인 체크에 대한 부분을 controller와 연결시켜주려고 새롭게 만들었다. 시퀀스 다이어그램은 아직 미완성이다. 

 

 

 

반응형