기능을 설계해봅시다!!

Yellta·2024년 9월 16일
0
post-custom-banner

현재 코드의 설계

  • 회원

    • 회원은 가입하고 조회할 수 있다.
    • 회원은 일반과 VIP두 가지 등급이 있다.
    • 회원 데이터는 자체 DB를 구축할 수 있고 외부시스템과 연동할 수도 있다.(방법이 2개라는 뜻 자체DB, 외부시스템 연동방법)
  • 주문과 할인 정책
    - 회원은 상품을 주문할 수 있다.
    - 회원 등급에 따라 할인 정책을 적용할 수 있다.
    - 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액을 적용해달라(나중에 변경될 수 있음)
    - 할인 정책은 변경 가능성이 높다. 회사의 기본 정책을 못정했고 나중에 얼마든지 바뀔 수있다.(미확정임)

개발전 설계 시간에 생각해야할 것

1. 도메인 설계

어떤 기능의 요구사항이 요구하는 도메인을 설계한다.
위의 그림에서는 회원서비스 기능이다.

회원 서비스
1. 회원 가입
2. 회원 조회
두 가지의 기능이 들어가야한다고 하자.

그렇다면 MemberService는 2가지 기능을 수행한다. 회원 가입과 회원 조회이다.
그리고 해당 데이터를 저장할 저장소를 선택한다. 이때 저장소는 DB일수도 메모리일수도, 혹은 외부시스템일 수도 있다. 이는 결정되지 않았다고 가정한다.

2. 구현하려는 역할 클래스의 다이어그램 그리기

위의 그림에서는 회원 역할을 하는 클래스의 다이어그램을 그린 것이다.
MemberService라는 역할을 상속받아 구현하고 구현체는 DB와 통신하기 위한 MemberRepository에 의존한다. 이때 MemberRepository의 구현체는 설계상 두 가지가 될 수 있다.

3. 객체 다이어그램 그리기

각각의 역할들이 어떤 객체를 구현했고, 그에 따른 연결관계를 그린 것이다.

위의 그림에서 MemberRepository라고 그렸지만 해당 그림에서는 메모리회원저장소를 구현체로 선택한 것이다.


앞으로 기억할 것

설계가 들어갈 땐

1. 도메인 설계

역할이 어떤 기능을 가지는지 정의하고 그에 따라 필요한 의존성이 어떤 것이 있는지 설계해보자
에를 들면 주문 역할은 주문 DB, 주문 정책에 의존적이다.
회원은 회원 DB에 의존적이다.

2. 클래스다이어그램 그리기

해당 역할의 도메인을 설계했다면 실제 구현체로 어떤게 들어갈건지 설게해본다.
이때 사용하는건 실제 Class의 이름을 사용하는 것이다.

3. 객체 다이어그램 그리기

각각의 역할들이 실제 어떤 객체로 구현되어 있는지 그려보는 시간
이는 실제 기능을 담당하게 될 객체들을 그려넣는다.


해당 문서는 Spring을 공부하다가 알게된 사실을? 적은 것입니다! 김영한님의 강의를 참조했어요!

깃험 소스코드 링크

profile
Yellta가 BE개발해요! 왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜 가 제일 중요하죠
post-custom-banner

0개의 댓글