프로젝트/webflux 채팅서버

시퀀스 다이어그램 기반, 클래스 다이어그램 작성해보기

개발하는 민우 2025. 2. 17. 00:54

개요

피드백을 받은대로 시퀀스 다이어그램 작성이 완료되었다.

시퀀스 다이어그램을 기반으로 PlantUML을 사용하여 클래스 다이어그램도 그려보자!

 

 

코드

@startuml
'class에 대한 주요 요소들을 정의'

class Client {
    - accessToken: String
    - chatRoomPK: String
    - content: String
    + sendChatRequest(): void
}

class ChatServer {
    - database: Database
    - pushServer: PushServer
    - accessToken: String
    - userPK: String
    - chatRoomPK: String
    - content: String
    + validateAccessToken(): boolean
    + processChatRequest(): void
    + storeChatData(): void
    + sendPushNotification(): void
    + logRequest(): void
    + logError(): void
}

class PushServer {
    - deviceId: String
    + sendPushNotification(): void
}

class Database {
    + saveChatRecord(): Chat
    + queryUserChatRoom(): boolean
    + getUserDeviceList(): List<String>
}

class serverLog {
    + logRequest(): void
    + logError(): void
}

class errorLog {
    + logError(): void
}

class Chat {
    - chatPK: String
    - chatRoomFK: String
    - userFK: String
    - chatData: String
}

class User {
    - userPK: String
    - accessToken: String
    - deviceId: String
}

ChatServer "1" *-- "1" Database : interacts with >
ChatServer "1" *-- "1" PushServer : interacts with >
ChatServer "1" *-- "1" serverLog : logs to >
ChatServer "1" *-- "1" errorLog : logs errors to >

Client "1" *-- "1" ChatServer : sends requests to >
PushServer "1" *-- "1" Database : accesses device list from >
Database "1" *-- "*" Chat : stores chat records >

@enduml

 

완성된 클래스 다이어그램

 

느낀 점

정말 설계의 중요성을 알게 되었다. 설계 후, 클래스 다이어그램까지 그리면 코드는 단순히 구현이 쉽다는 것을 알게 되었다.