당니의 개발자 스토리

비즈니스 요구사항과 설계 본문

스프링/스프링 핵심 원리 - 기본편

비즈니스 요구사항과 설계

clainy 2024. 1. 16. 12:23

비즈니스 요구사항과 설계

이번 시간에는 비즈니스 요구사항과 설계를 들어가 보겠습니다.

먼저 회원, 주문, 할인정책 이렇게 3가지 요구사항이 있어요.

회원 요구사항 먼저 들어볼게요.

여러분이 개발자고 기획자가 와서 막 요구사항을 내는 거예요.

회원을 가입하고 조회할 수 있다. 이 두 가지 기능이 있어야 되고, 회원에는 등급이 있대요.

회원은 일반VIP 두 가지 등급이 있다. 그리고 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. 그러니까 자체적으로 DB를 가지고 회원 시스템을 구축할 수도 있고, 아니면 뭔가 이 기능을 외주를 주거나, 회사 외부에 있는 시스템에서 만들어둔 회원 시스템을 그대로 활용할 수도 있는 거예요. 이거에 대해서 아직 결정이 안 된 거예요. 뭔가 미확정 상태죠. 하지만 우리는 걱정이 없죠.

왜죠? 인터페이스, 즉 역할과 구현으로 구분을 하면 되죠.

그 다음에 주문과 할인 정책에 대한 요구사항이 있어요.

우선 회원은 상품을 주문 할 수가 있어요.

그런데 회원에는 일반과 VIP가 있다고 했는데, 회원 등급에 따라 할인 정책을 적용할 수가 있대요. 그래서 할인 정책은 모든 VIP는 1,000원을 할인해주는 고정금액 할인을 적용해달래요. VIP는 무조건 1,000원씩 할인이래요. 근데 이 요구사항이 나중에 변경될 수는 있다고 합니다.

그 다음에 할인 정책은 변경 가능성이 되게 높은 사항이에요. 회사가 아직 이 프로젝트를 오픈한 게 아니란 말이에요. 그래서 회사의 기본 할인 정책을 아직 못 정했어요. 왜냐면 이런 할인 정책은 되게 신중하게 고민해야 되거든요. 그래서 오픈 직전까지 고민을 미루고 싶대요. 최악의 경우에는 할인 정책을 적용하지 않을 수도 있대요. 미확정이라고 합니다. 하지만 우리는 걱정이 없죠?

역할과 구현을 구분하면 되니까요.

그래서 요구사항을 보면 지금 회원 데이터 할인 정책, 이 부분을 지금 결정하기가 어려운 부분이에요. 그렇다고 해서 이런 정책이 결정이 될 때까지 개발을 무기한 연기할 수는 없죠. 일정은 정해져 있으니까요.

그래서 우리는 앞에서 배운 객체지향 설계 방법 있잖아요. 역할과 구현을 나누고, 인터페이스랑 구현 객체를 만드는 그 그림을 개발자가 생각을 한거죠.

그렇게 해서 인터페이스를 만들고 구현체를 언제든지 갈아끼울 수 있도록 설계를 하면 되는 거예요.

그렇게 해서 일단 시작을 해봅시다.

참고로 프로젝트 환경 설정을 편리하게 하려고 스프링 부트를 사용한 거에요. 지금은 스프링이 전혀 없는 순수한 자바로만 만들고, 순수한 자바로만 실행을 할 거에요.

여러분이 스프링 없이 쌩으로 맨바닥에서 세팅을 하셔서 실행해도 돌아갑니다.

그래서 전혀 스프링과 관련된 코드를 사용하지 않는다는 점, 또 전혀 스프링 프레임워크를 쓰지 않는다는 거를 기억해주시면 좋겠습니다. 스프링 관련된 내용은 한참 뒤에 나올 거에요.


자 이렇게 해서 요구사항과 설계를 했구요. 다음 시간부터 회원 도메인 설계부터 들어가보겠습니다.