**이글은 백엔드 공부를 위한 백엔드 프로젝트 설계 구현 과정입니다.
벡엔드 프로젝트 과정에서 어떠한 일을 하고 프로젝트 구성이 어떻게되는지 경험과 공부하기위해 진행하는 과정을 기록하는 것입니다.
프로젝트를 진행하기위해서는 프로젝트의 주제와 목적이 필요하기 때문에 먼저 프로젝트 주제와 목적을 임의로 설정하였습니다. 프로젝트는 제가 실생활에서 가장 가볍고 많이 사용할 수 있었던 쇼핑몰 웹사이트를 주제로 잡았습니다.
프로젝트를 시작하면 설계부분부터 진행하기 때문에 웹사이트를 만드려는 클라이언트의 요구를 명확히알수 있도록 요구사항부터 설계를 진행합니다.
요구사항 정의서란 고객의 요구사항을 정리한 내용입니다. 요구사항 정의서는 제품을 만들거나 업데이트하기 위해 기능을 기획하는 단계에서 요구사항을 개괄적으로 설명하는 문서로, 제품 개발 프로세스 전반에 걸쳐 필수적인 중요 문서입니다. 고객의 요구사항의 명확히 기록하기 위해서 작성하는 문서입니다.
요구사항 정의서에는 기본적으로
1. 구분 (웹/앱/사용자/관리자/공통 등)
2. 요구사항명, 요구사항ID
3. 세부기능명, 세부기능ID
4. 상세설명
5. 비고
등이 필요합니다. 필요에따라 추가하거나 뺄 수 있습니다.
(1) 요구사항 ID
: 고객사와 소통할때, 또는 개발시에 소통을 원활하게 하기 위해 요구사항 ID를 사용합니다. 네이밍은 따로 정해진 규칙은 없습니다.
(2) 요구사항명
: 요구사항을 명시한다. 명사형을 주로 사용하고, 최대한 알아보기 쉽게 작성합니다.
보통 요구사항에서 세부기능을 나누지 않고 요구사항 자체만으로 나열하기도 합니다.
(3) 기능 ID
: 상호간에 소통을 원활하게 하기 위해 기능 ID로 부르는 것으로, 요구사항 ID와 마찬가지로 따로 정해진 네이밍 규칙은 없습니다.
(4) 기능명
: 요구사항에서 한뎁스 더 들어간 세부 기능명을 명시합니다.
리프뎁스 이므로 최대한 자세하게, 명사형으로 기능을 적는 것이 중요합니다.
(5) 상세 설명
: 각 기능에 대한 상세 설명을 서술한다. 비개발자도 이해할 수 있도록 적는 것이 중요합니다.
간단하게 쇼핑몰 프로젝트를 설계하기 위해서 요구사항 정의서 초안을 작성합니다.
- 유니콘 쇼핑몰에 회원으로 가입하려면 회원아이디, 비밀번호, 이름, 나이, 전화번호를 입력해야한다.
- 가입한 회원에게는 등급과 포인트가 부여된다.
- 회원은 중복되지 않은 회원번호가 부여되고 회원아이디는 중복되지 않아야 하고, 회원은 회원번호로 식별한다.
- 상품에 대한 상품번호, 상품명, 재고량, 단가 정보를 유지해야한다.
- 상품은 중복되지 않은 상품번호가 부여되고 상품명은 중복되지 않아야하고, 상품은 상품번호로 식별한다.
- 회원은 여러 상품을 주문할 수 있고, 하나의 상품을 여러 회원이 주문할 수 있다.
- 회원이 상품을 주문하면 주문에 대한 주문번호, 주문수량, 배송지, 주문일자 정보를 유지해야한다.
- 각 상품은 한 제조업체가 여러번 공급할 수 있고, 제조업체 하나는 여러 상품을 공급할 수 있다.
- 제조업체가 상품을 공급하면 상품명, 공급량, 공급일자 정보를 유지해야 한다.
- 제조업체에 대한 제조업체번호, 제조업체명, 전화번호,위치, 담당자 정보를 유지해야한다.
- 제조업체는 중복되지 않은 제조업체번호가 부여되고 제조업체명은 중복되지 않아야한다.
- 회원은 게시글을 여러 개 작성할 수 있고, 게시글 하나는 한 명의 회원만 작성할 수 있다.
- 게시글에 대한 글번호, 글제목, 글내용, 작성일자 정보를 유지해야한다.
- 게시글은 중복되지 않은 게시글번호가 부여되고 글번호로 식별한다.
- 회원은 여러 상품을 찜할 수 있고, 하나의 상품을 여러 회원이 찜할 수 있다.
- 회원이 상품을 찜하면 찜에 대한 찜번호, 찜 일자 정보를 유지해야한다.
- 회원은 여러 상품을 장바구니에 담을 수 있고, 하나의 상품을 여러 회원이 장바구니에 담을 수 있다.
- 회원이 상품을 장바구니에 담으면 장바구니에 대한 장바구니 번호, 수량, 장바구니 일자 정보를 유지해야한다.
위랑 다른 일반적인 고객들이 작성하는 요구사항정의서를 정리해서 작성합니다.
원래 개발자와 그 개발의 원하는 고객의 요구를 명확한 소통을 위해 요구사항 명세서를 작성하지만 저는 혼자 진행하고 백엔드 설계를 위주로 하기 때문에 생략된 부분이 있을 수 있습니다. 저는 위 요구사항 정의서 작성 요령에서 요구사항Id와 기능Id는 거의 소통을 위한 작성법이기 때문에 생량하였습니다.
다음 포스팅에서는 요구사항정의서를 기반으로 데이터베이스 설계를 해보겠습니다.
참고 블로그