@@ -0,0 +1,100 @@
+# Domain 구현
+
+## 진행 프로세스 (시스템 책임)
+
+1. 게이머는 상대할 보스 몬스터의 HP를 설정한다.
+2. 게이머는 플레이할 플레이어의 이름과 HP, MP를 설정한다.
+3. 게임이 시작된다.
+4. 게임은 턴제이며, 매 턴마다 다음과 같은 행동이 반복된다.
+   1) 보스 몬스터와 플레이어의 현재 상태를 보여준다.
+   2) 플레이어가 공격할 방식을 선택한다.
+   3) 플레이어가 선택된 방식으로 공격한다. (보스 몬스터에게 데미지를 입힘)
+   4) 데미지를 입은 보스 몬스터의 상태를 확인한다.
+   5) 보스 몬스터가 죽었다면 게임이 종료된다.
+   6) 보스 몬스터가 살아있다면 플레이어를 공격한다.
+   7) 데미지를 입은 플레이어의 상태를 확인한다.
+   8) 플레이어가 죽었다면 게임이 종료된다.
+5. 게임 종료 후 승자를 안내한다.
+   - 플레이어가 이겼을 경우 : 진행한 턴 수를 알려준다.
+   - 보스 몬스터가 이겼을 경우 : 플레이어와 보스 몬스터의 현재 상태를 보여준다.
+
+## Domain 객체 선정 및 책임과 협력 할당
+
+1. **Raid Game**
+   - 게임 시작 전 주요 인물에 대해 셋팅할 책임을 가짐
+     - 게임 인물인 **Boss Monster**를 생성할 책임을 가짐
+     - 게임 인물인 **Player**를 생성할 책임을 가짐
+   - 매 턴을 실행할 책임을 가짐
+       - 게임 상태를 확인할 책임을 가짐 (게임 상태가 '종료'일 경우 턴을 실행하지 않음)
+       - 턴 수를 증가시킬 책임을 가짐
+       - **Player**가 **Boss Monster**를 선택된 공격 방식으로 공격하도록 할 책임을 가짐
+         - **Player**의 공격 행동에 대한 결과를 제공받고, **Boss Monster**에게 전달할 책임을 가짐 (**Player**의 공격과 **Boss Monster**의 피해 행동에 대한 협력 필요)
+         - **Boss Monster**의 생존여부에 따라 게임 상태를 변경할 책임을 가짐 (**Boss Monster**의 상태를 제공받는 협력 필요)
+       - **Boss Monster**가 **Player**를 공격하도록 할 책임을 가짐 (**Boss Monster**의 공격과 **Player**의 피해 행동에 대한 협력 필요)
+           - **Boss Monster**의 공격 행동에 대한 결과를 제공받고, **Player**에게 전달할 책임을 가짐 (**Boss Monster**의 공격과 **Player**의 피해 행동에 대한 협력 필요)
+           - **Player**의 생존여부에 따라 게임 상태를 변경할 책임을 가짐 (**Player**의 상태를 제공받는 협력 필요)
+       - 해당 턴에 대한 게임 기록을 생성할 책임을 가짐 (**GameHistory**에게 턴에 대한 기록을 생성하는 협력 필요)
+
+2. **Boss Monster**
+   - 현재 상태를 제공해줄 책임을 가짐 (총 HP, 현재 HP)
+   - 공격 명령을 수행할 책임을 가짐 (0~20의 랜덤 데미지)
+   - 공격 피해 입음을 수행할 책임을 가짐 (현재 HP 감소)
+
+3. **Player**
+   - 현재 상태를 제공해줄 책임을 가짐 (이름, 총 HP, 현재 HP, 총 MP, 현재 MP)
+   - 공격 명령을 수행할 책임을 가짐 (**Attack Type**에 대한 정보를 제공받는 협력 필요, MP 감소)
+   - 공격 피해 입음을 수행할 책임을 가짐 (현재 HP 감소)
+
+4. **Attack Type**
+    - 공격 방식 종류를 제공해줄 책임을 가짐 (공격 변호, 공격 방식 이름)
+    - 공격 방식 수행에 대한 정보를 제공해줄 책임을 가짐 (데미지, MP 소모량, MP 회복량)
+
+5. **Game History**
+   - 매 턴에 대한 기록을 저장할 책임을 가짐
+   - 추후 Controller의 Veiw를 위한 요청에 응답 가능
+
+## 주요 메시지 구성 (공용 인터페이스)
+
+1. 보스 몬스터 설정을 요청
+   - 수신자 : Raid Game
+   - 이름 : Create Boss Monster
+   - 인자 : int hp
+   - 응답 : void, Boss Monster 객체 생성
+
+2. 플레이어 설정을 요청
+    - 수신자 : Raid Game
+    - 이름 : Create Player
+    - 인자 : String name, int hp, int mp
+    - 응답 : void, Player 객체 생성
+
+3. 턴 진행을 요청
+   - 수신자 : Raid Game
+   - 이름 : Start Game
+   - 인자 : -
+   - 응답 : 구성된 턴 로직 실행
+
+4. 게임 상태 확인을 요청
+    - 수신자 : Raid Game
+    - 이름 : Check Game Status
+    - 인자 : -
+    - 응답 : return Game Status (true or False)
+
+5. 턴 횟수 증가를 요청
+    - 수신자 : Raid Game
+    - 이름 : Increase Turns
+    - 인자 : -
+    - 응답 : void, Turn 1 증가
+
+6. 공격 행동 수행을 요청
+   - 수신자 : Player, Boss Monster
+   - 이름 : Attack
+   - 인자 : -
+   - 응답 : return 데미지, 공격 방식에 따라 MP 감소(Player)
+
+7. 공격 피해 전달을 요청
+    - 수신자 : Player, Boss Monster
+    - 이름 : take Damage
+    - 인자 : int damage
+    - 응답 : return 현재 HP
+
+

리뷰: 아직은 기능 목록 문서에 대해서 누군가 본다는 생각보다는 제가 구현에 앞서서 공부한 내용으로 이해하기 쉽게 정리하는 것을 목적으로 작성했었는데요. 개발은 혼자 하는 것이 아니기에 말씀 주신 부분에 대해서도 신경을 쓰면서 작성을 해야 할 것 같습니다. 감사합니다.

제가 밑에서부터 리뷰에 대한 답글을 남겼습니다. 리뷰를 요청하고 받아 보는게 처음이라 이렇게 도움이 많이 되는지 몰랐네요. 아직 공부를 시작한지 얼마 되지 않아 코드 읽기가 많이 힘드셨을텐데 늦은 시간에도 리뷰 해주셔서 감사합니다. 주신 의견들 모두 참고해서 제가 개선해 나가야 할 방향인 것 같습니다. 리뷰 감사드립니다. 좋은 하루 되세요!