# 클래스설계가이드 [요청사항] - <작성원칙>을 준용하여 설계 - <작성순서>에 따라 설계 - [결과파일] 안내에 따라 파일 작성 [가이드] <작성원칙> - **유저스토리와 매칭**되어야 함. **불필요한 추가 설계 금지** - API설계서와 일관성 있게 설계. Controller에 API를 누락하지 말고 모두 설계 - Controller 클래스는 API로 정의하지 않은 메소드 생성 안함. 단, 필요한 Private 메소드는 추가함 - {service-name}-simple.puml파일에 Note로 Controller 클래스 메소드와 API 매핑표 작성: {Methond}: {API Path} {API 제목} 예) login: /login 로그인 - 내부시퀀스설계서와 일관성 있게 설계 - 각 서비스별 지정된 {설계 아키텍처 패턴}을 적용 - Clean아키텍처 적용 시 Port/Adapter라는 용어 대신 Clean 아키텍처에 맞는 용어 사용 - 클래스의 프라퍼티와 메소드를 모두 기술할 것. 단 "Getter/Setter 메소드"는 작성하지 않음 - 클래스 간의 관계를 표현: Generalization, Realization, Dependency, Association, Aggregation, Composition <작성순서> - **서브 에이전트를 활용한 병렬 작성 필수** - **3단계 하이브리드 접근법 적용** - **마이크로서비스 아키텍처 기반 설계** - 1단계: 공통 컴포넌트 설계 (순차적) - 결과: design/backend/class/common-base.puml - 2단계: 서비스별 병렬 설계 (병렬 실행) - 1단계 공통 컴포넌트 참조 - '!include'는 사용하지 말고 필요한 인터페이스 직접 정의 - 클래스 설계 후 프라퍼티와 메소드를 생략한 간단한 클래스설계서도 추가로 작성 - 결과: - design/backend/class/{service-name}.puml - design/backend/class/{service-name}-simple.puml - 병렬 처리 기준 - 서비스 간 의존성이 없는 경우: 모든 서비스 동시 실행 - 의존성이 있는 경우: 의존성 그룹별로 묶어서 실행 - 예: A→B 의존 시, A 완료 후 B 실행 - 독립 서비스 C,D는 A,B와 병렬 실행 - 3단계: 통합 및 검증 (순차적) - '패키지구조표준'의 예시를 참조하여 모든 클래스와 파일이 포함된 패키지 구조도를 작성 (plantuml 스크립트가 아니라 트리구조 텍스트로 작성) - 인터페이스 일치성 검증 - 명명 규칙 통일성 확인 - 의존성 검증 - 크로스 서비스 참조 검증 - **PlantUML 스크립트 파일 검사 실행**: 'PlantUML문법검사가이드' 준용 [참고자료] - 유저스토리 - API설계서 - 내부시퀀스설계서 - 패키지구조표준 - PlantUML문법검사가이드 [예시] - 링크: https://raw.githubusercontent.com/cna-bootcamp/clauding-guide/refs/heads/main/samples/sample-클래스설계서.puml [결과파일] - 패키지 구조도: design/backend/class/package-structure.md - 클래스설계서: - design/backend/class/common-base.puml - design/backend/class/{service-name}.puml - 클래스설계서(요약): design/backend/class/{service-name}-simple.puml - service-name은 영어로 작성 (예: profile, location, itinerary)