-
Notifications
You must be signed in to change notification settings - Fork 227
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2단계 - 요구 사항 정리 #820
base: wishoon
Are you sure you want to change the base?
2단계 - 요구 사항 정리 #820
Changes from all commits
bc4c091
67ef7a5
d7f79cb
d1c8b43
8af8f12
7ded8c1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
@@ -9,10 +9,107 @@ docker compose -p kitchenpos up -d | |||||||||
|
||||||||||
## 요구 사항 | ||||||||||
|
||||||||||
### 상품 (판매되는 상품) | ||||||||||
|
||||||||||
- [ ] 상품은 '상품명', '상품 가격' 정보를 가진다. | ||||||||||
- [ ] 상품의 '상품명'은 필수값이며 공백을 허용하지 않는다. | ||||||||||
- [ ] 상품의 '상품명'은 비속어를 허용하지 않는다. | ||||||||||
- [ ] 상품의 '상품 가격'은 0 이상이여야 한다. | ||||||||||
|
||||||||||
- [ ] 상품은 주어진 정보를 기반으로 '상품'을 생성할 수 있다. | ||||||||||
- [ ] 상품은 '상품명', '상품 가격' 정보를 기반으로 상품을 생성할 수 있다. | ||||||||||
|
||||||||||
- [ ] 상품은 주어진 정보를 기반으로 '상품'을 수정할 수 있다. | ||||||||||
- [ ] '상품명'을 변경할 수 있다. | ||||||||||
- [ ] '상품 가격'을 변경할 수 있다. | ||||||||||
|
||||||||||
### 메뉴 그룹 (현재 판매되는 메뉴의 상위 집합) | ||||||||||
|
||||||||||
- [ ] 메뉴 그룹은 '메뉴 그룹명' 정보를 가진다. | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 메뉴 그룹이라는게 어떤건지 가볍게 설명이나 예시를 추가해줘도 좋을 것 같아요. 😃 |
||||||||||
- [ ] 메뉴 그룹의 '메뉴 그룹명'은 필수값이며 공백을 허용하지 않는다. | ||||||||||
|
||||||||||
- [ ] 메뉴 그룹은 주어진 정보를 기반으로 '메뉴 그룹'을 생성할 수 있다. | ||||||||||
- [ ] 메뉴 그룹은 '메뉴 그룹명' 정보를 기반으로 메뉴 그룹을 생성할 수 있다. | ||||||||||
|
||||||||||
### 메뉴 (현재 판매되는 상품의 묶음) | ||||||||||
|
||||||||||
- [ ] 메뉴는 '메뉴명', '메뉴 가격', '메뉴 그룹', '메뉴 상품 목록', '메뉴 노출 여부' 정보를 가진다. | ||||||||||
- [ ] 메뉴의 '메뉴명'은 필수값이며 공백을 허용하지 않는다. | ||||||||||
- [ ] 메뉴의 '메뉴명'은 비속어를 허용하지 않는다. | ||||||||||
- [ ] 메뉴의 '메뉴 가격'은 0 이상이여야 한다. | ||||||||||
- [ ] 메뉴의 '메뉴 상품 목록'의 '메뉴 상품'은 '수량', '가격' 정보를 가진다. | ||||||||||
- [ ] 메뉴 상품의 '수량'은 0 이상이여야 한다. | ||||||||||
- [ ] 메뉴 상품의 '가격'은 0 이상이여야 한다. | ||||||||||
- [ ] 메뉴 상품의 '가격'은 '수량'의 값을 기반으로 총합을 계산하였을 때, 메뉴의 '메뉴 가격' 값과 동일하거나 초과할 수 있다. | ||||||||||
|
||||||||||
- [ ] 메뉴는 주어진 정보를 기반으로 '메뉴'를 생성할 수 있다. | ||||||||||
|
||||||||||
- [ ] 메뉴는 주어진 정보를 기반으로 '메뉴'를 수정할 수 있다. | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 메뉴를 수정하는 기능이있었나요? 🤔 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 아하 보통 저는 요구사항을 작성할 때 대분류, 소분류로 나눠서 작성하는 것을 선호하긴 합니다. 예를 들면, A 도메인에 상품을 생성하고 가격을 수정하는 기능이 있다고 한다면, 대분류를 생성(C), 수정(U)으로 1차 분류합니다. 이후, 수정이라는 분류 중에서 가격을 수정하고, 전시 여부를 수정하는 하위 요구사항을 서술하는 편이긴 합니다! 추가적으로 제가 메뉴 가격 수정 요구사항을 빠트렸네요;; 이 이유 때문에 요구사항이 더 애매하게 보였던 것 같긴하네영 ㅎㅎ (혹시 위 부분에 대해서는 어떻게 생각하시나요 ㅎㅎ 경록님 팀에서는 요구사항 작성 시 포멧을 따로 가져가시는지 궁금하네여) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 방식도 괜찮은 것 같아요! 또 마이너하지만 전체적으로 뎁스가 하나씩 추가되는건데, 뎁스가 깊어지다보니 가독성이 조금 떨어질 수 있을 것 같다는 생각이들기는해요. |
||||||||||
- [ ] 메뉴는 '메뉴 노출 여부'를 수정할 수 있다. | ||||||||||
- [ ] 다른 특별한 조건 없이 숨김 상태로 수정할 수 있다. | ||||||||||
- [ ] 메뉴의 '메뉴 가격'이 메뉴의 '메뉴 상품'과 연관된 상품의 '상품 가격'의 총합을 초과하지 않은 경우, 노출 상태로 변경할 수 있다. | ||||||||||
- [ ] 메뉴의 '메뉴 상품'과 연관된 상품의 '상품 가격'의 변경으로 인해 메뉴의 '메뉴 상품'들의 총합이 메뉴의 '메뉴 가격'의 금액을 초과하는 경우, 숨김 상태로 변경해야 한다. | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 사소할 수 있겠지만 개인적으로 연관된보다는 |
||||||||||
- [ ] 메뉴는 '메뉴 가격'을 수정할 수 있다. | ||||||||||
|
||||||||||
### 가게 테이블 (가게 내 식사를 위한 테이블) | ||||||||||
|
||||||||||
- [ ] 가게 테이블은 '테이블 이름', '테이블 사용 인원', '테이블 사용 유무' 정보를 가진다. | ||||||||||
- [ ] 가게 테이블의 '테이블 이름'은 공백이거나 없을 수 없다. | ||||||||||
- [ ] 가게 테이블의 '테이블 사용 인원'은 0 미만일 수 없다. | ||||||||||
|
||||||||||
- [ ] 가게 테이블은 주어진 정보를 기반으로 '가게 테이블'을 생성할 수 있다. | ||||||||||
- [ ] 가게 테이블의 '테이블 사용 인원'은 최초 생성 시 0 값을 가져야 한다. | ||||||||||
- [ ] 가게 테이블의 '테이블 사용 유무'는 최초 생성 시 미사용 상태를 가져야 한다. | ||||||||||
|
||||||||||
- [ ] 가게 테이블은 주어진 정보를 기반으로 '가게 테이블'을 수정할 수 있다. | ||||||||||
- [ ] 가게 테이블은 '테이블 사용 인원'을 수정할 수 있다. | ||||||||||
- [ ] 가게 테이블의 '테이블 사용 유뮤'가 사용 상태가 아닌 경우 수정할 수 없다. | ||||||||||
- [ ] 가게 테이블은 '테이블 주문 상태'가 주문 완료인 경우, 0으로 수정할 수 있다. | ||||||||||
- [ ] 가게 테이블은 '테이블 사용 유무'를 수정할 수 있다. | ||||||||||
- [ ] 주문의 '주문 상태'가 주문 완료인 경우, 미사용 상태로 수정할 수 있다. | ||||||||||
|
||||||||||
### 주문 (사용자가 주문한 메뉴) | ||||||||||
|
||||||||||
- [ ] 주문은 '주문 유형', '주문 상태', '주문 시간', '주문 상품 목록', '주문 배송지', '가게 테이블' 정보를 가진다. | ||||||||||
- [ ] 주문의 '주문 유형'은 DELIVERY(배달), TAKEOUT(포장), EAT_IN(매장 식사) 3가지 종류가 있다. | ||||||||||
- [ ] 주문의 '주문 상태'는 WAITING(주문 대기), ACCEPTED(주문 수락), SERVED(서빙 완료), DELIVERING(배달 중), DELIVERED(배달 완료), COMPLETED(주문 완료) 6가지 종류가 있다. | ||||||||||
- [ ] 주문의 '주문 상품 목록'은 '주문 유형'이 배달 또는 포장인 경우 0 미만일 수 없다. | ||||||||||
- [ ] 주문의 '주문 상품 목록'은 연관된 메뉴의 갯수와 동일한 갯수를 가져야 한다. | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이게 무슨 말인지 잘 이해하지 못했는데 어떤 의미인지 설명해주실 수 있을까요? |
||||||||||
- [ ] 주문의 '주문 상품 목록'의 '주문 상품'은 '주문 상품 메뉴 정보', '주문 상품 수량', '주문 상품 가격' 정보를 가진다. | ||||||||||
- [ ] 주문의 '주문 배송지'는 주문 유형이 배달인 경우, 필수 값이다. | ||||||||||
- [ ] 주문의 '가게 테이블'은 주문 유형이 매장 식사인 경우, 필수 값이다. | ||||||||||
|
||||||||||
- [ ] 주문은 주어진 정보를 기반으로 '주문'을 생성할 수 있다. | ||||||||||
- [ ] 주문의 '주문 상태'는 최초 생성 시 대기 상태여야 한다. | ||||||||||
- [ ] 주문의 '주문 상품 목록'은 연관된 메뉴의 '메뉴 가격'과 '상품 가격'이 일치해야 한다. | ||||||||||
- [ ] 주문의 '주문 상품 목록'은 연관된 메뉴의 '메뉴 상품'의 '메뉴 노출 여부'가 모두 노출 상태여야 한다. | ||||||||||
- [ ] 주문의 '주문 유형'이 매장 식사 인 경우, 주문의 '가게 테이블'은 현재 사용 상태여야 한다. | ||||||||||
|
||||||||||
- [ ] 주문은 주어진 정보를 기반으로 기존 주문을 수정할 수 있다. | ||||||||||
- [ ] 주문은 '주문 상태'를 수정할 수 있다. | ||||||||||
- [ ] 주문은 '주문 상태'를 주문 수락으로 수정할 수 있다. | ||||||||||
- [ ] 주문의 '주문 상태'가 주문 대기가 아닐 경우, 주문의 '주문 상태'를 주문 수락으로 수정할 수 없다. | ||||||||||
- [ ] 주문의 '주문 유형'이 배달인 경우, 라이더에게 배달 요청을 전달해야 한다. | ||||||||||
- [ ] 주문은 '주문 상태'를 서빙 완료로 수정할 수 있다. | ||||||||||
- [ ] 주문의 '주문 상태'가 주문 수락이 아닐 경우, 주문의 '주문 상태'를 서빙 완료로 수정할 수 없다. | ||||||||||
- [ ] 주문은 '주문 상태'를 배달 중으로 수정할 수 있다. | ||||||||||
- [ ] 주문의 '주문 상태'가 서빙 완료가 아닐 경우, 주문의 '주문 상태'를 배달 중으로 수정할 수 없다. | ||||||||||
- [ ] 주문의 '주문 유형'이 배딜이 아닐 경우, 주문의 '주문 상태'를 배달 중으로 수정할 수 없다. | ||||||||||
- [ ] 주문은 '주문 상태'를 배달 완료로 수정할 수 있다. | ||||||||||
- [ ] 주문의 '주문 유형'이 배딜이 아닐 경우, 주문의 '주문 상태'를 배달 완료로 수정할 수 없다. | ||||||||||
- [ ] 주문은 '주문 상태'를 주문 완료로 수정할 수 있다. | ||||||||||
- [ ] 주문의 '주문 유형'이 배달이면서 주문의 '주문 상태'가 배달 완료가 아닌 경우, 주문의 '주문 상태'를 주문 완료로 수정할 수 있다. | ||||||||||
- [ ] 주문의 '주문 유형'이 포장 또는 매장식사 이면서 주문의 '주문 상태'가 서빙 완료가 아닌 경우, 주문의 '주문 상태'를 주문 완료로 수정할 수 없다. | ||||||||||
Comment on lines
+101
to
+102
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
예시로 아래와 같이 변경해볼 수도 있지 않을까요? 😃
Suggested change
'주문 상태 수정'쪽 외에도 요구사항의 길이가 긴 내용들은 한번쯤 같이 더 개선할 방법이 없는지 같이 확인해주시면 좋을 것 같아요. |
||||||||||
|
||||||||||
|
||||||||||
## 용어 사전 | ||||||||||
|
||||||||||
| 한글명 | 영문명 | 설명 | | ||||||||||
| --- | --- | --- | | ||||||||||
| | | | | ||||||||||
| 상품 | Product | 판매되는 상품 | | ||||||||||
| 메뉴 그룹 | MenuGroup | 현재 판매되는 메뉴의 상위 그룹 | | ||||||||||
| 메뉴 | Menu | 현재 판매되는 상품의 묶음 | | ||||||||||
| 가게 테이블 | OrderTable | 가게 내 식사를 위한 테이블 | | ||||||||||
| 주문 | Order | 사용자가 주문한 메뉴 | | ||||||||||
|
||||||||||
|
||||||||||
## 모델링 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
상품 수정 시에 상품 외에는 영향가는 곳이 없을까요? 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
상품 수정 시 메뉴에 영향이 가게 됩니다!
제가 상품 쪽에 요구사항을 적지 않고 메뉴 쪽에 요구사항을 작성한 이유는 상품이 메뉴의 도메인을 알 필요가 없다고 생각해서 입니다. 상품은 정보를 변경할 뿐, 변경된 이벤트를 바탕으로 메뉴가 변경이 되는 것이 더 자연스러운 흐름이라고 생각하게 되어 메뉴 쪽에 요구사항을 작성했습니다