🏕 내일배움캠프/[Assignment] Ch2-2
[Ch 2][숫자 야구 게임] 1. 요구사항 분석 및 정의 (1) - 필수 기능(Lv 2까지)
레이제로
2024. 9. 19. 21:03
1. 요구사항 분석 및 정의
A. 문제
- 숫자 야구 게임 (Bulls and Cows)
: 컴퓨터가 생성한 3자리 숫자를 플레이어가 맞추는 게임으로, 각 시도에 대해 '스트라이크'와 '볼'의 개수를 출력하여 플레이어가 숫자를 맞힐 수 있도록 유도합니다.- 스트라이크 : 입력값과 정답을 비교해 같은 자리에 같은 숫자가 있는 경우
- 볼 : 숫자는 같지만, 자리는 다른 경우
- 아웃 : 숫자도, 자리도 다른 경우
- 3 스트라이크 : 정답
B. 배경 지식
- 'Java 문법 종합반' 강의를 참고하였습니다.
더보기
- Java 문법
- 변수/상수의 선언과 값 저장
- 연산자
- 조건문, 반복문
- 형 변환
- 배열
- Method
- Java 자료구조
- Collection - List, Queue, Set, Map
- 객체지향 프로그래밍
- 클래스
- 상속
- 인터페이스
- 예외 처리
- Generic
- 책 '객체지향 소프트웨어 공학'과 '객체지향의 사실과 오해'를 참고하였습니다.
C. 환경 및 시스템 모델
- 사용자의 인터페이스(UI; User Interface) 방식: CLI(Command Line Interface)
D. 기능적 요구
- 발제의 '게임 설명' 부분과 '필수 기능 가이드', '도전 기능 가이드'에서 요구사항을 분석하여 정의하였습니다.
- 정답 숫자
- 서로 다른 세 자리 숫자로, 각 자리는 1부터 9 사이의 숫자입니다.
- 즉, 정답 숫자는 중복되지 않는 세 자리 숫자입니다.
- 입력
- 서로 다른 세 자리 숫자만 입력 가능합니다.
- 숫자만 입력 가능하며, 문자는 작성할 수 없습니다.
- 게임 로직
- 정답과 입력값을 비교하여, 힌트를 “볼, 스트라이크, 아웃”으로 표시합니다.
- 스트라이크 : 입력값과 정답을 비교해 같은 자리에 같은 숫자가 있는 경우
- 볼 : 숫자는 같지만, 자리는 다른 경우
- 아웃 : 숫자도, 자리도 다른 경우
- 정답을 맞힐 때까지 계속 시도할 수 있습니다.
- 입력한 세 자리 숫자가 정답과 같은 경우, 게임이 종료됩니다.
- 3 스트라이크 : 정답
- 정답과 입력값을 비교하여, 힌트를 “볼, 스트라이크, 아웃”으로 표시합니다.
- 출력
- 힌트/정답 표시
- 힌트: '스트라이크'와 '볼'의 개수
- 정답: 축하 메시지
- 올바르지 않은 입력값에 대한 오류 문구
- 입력값이 요구사항에 부합하지 않는 경우
- 즉, 입력의 유효성 체크에서 유효하지 않다고 판단된 경우, “올바르지 않은 입력값입니다.” 오류 문구 출력
- 게임 이어서 하기
- 정답을 맞힐 때까지 계속해서 시도할 수 있습니다.
- 힌트/정답 표시
- 입력의 유효성 체크
- 세 자리 수인가요? → 자릿수 검사
- 중복된 숫자가 없나요? → 중복 숫자 검사
- 입력값에 숫자만 포함되어 있나요? → 타입 검사
- 출력 개선 [Lv 2]
- 프로그램을 시작할 때, 안내문구를 출력합니다.
발제 - Lv 2의 출력 개선 예시
- 1을 입력하면, 아래 예시처럼 게임이 진행됩니다.
발제 - 필수 기능 예시 - “2. 게임 기록 보기”는 Lv 3에서 제시됩니다. 아직 구현하지 않습니다.
- 3을 입력하면, 게임이 종료됩니다.
- 1을 입력하면, 아래 예시처럼 게임이 진행됩니다.
- 정답을 맞히는 경우, 프로그램 시작할 때의 안내문구를 다시 출력합니다.
- 프로그램을 시작할 때, 안내문구를 출력합니다.
E. 비기능적 요구
- 기능이 추가되거나 개선되어도 기존 코드의 수정은 최소화로 이루어져야 합니다.
- 역할별 구조와 기능 추가 및 개선 파악이 쉽도록 해야 합니다. → package로 분류해줍니다.
- 플랫폼:
- IDE: IntelliJ IDEA 2024.2.1
- OpenJDK Runtime Environment Temurin-21.0.4+7 (build 21.0.4+7-LTS)
- 시스템 요구사항
- 64비트 버전의 Windows 10 1809 이상 또는 Windows Server 2019 이상
- 2GB 이상의 여유 메모리, 총 8GB 이상의 시스템 메모리
- 3.5GB 하드 디스크 공간, SSD 권장
- 화면 해상도 1024x768 이상
- 프로그래밍 언어: Java
- 사용하는 개발 프로세스(방법론)
- 발제의 요구사항과 기능 가이드를 기반으로 개선해 나가는 점증적 모델
- 해당 방법론으로 진행하는 이유:
'명세 → 개발 → 검증' 과정의 반복으로 불분명한(미완성된) 요구사항을 보완하며 점차 명확한 요구사항 도출하기 위해서입니다.
- 제출 기한: 2024년 09월 24일(화) 14시까지