🏕 내일배움캠프/[Assignment] Ch2-2

[Ch 2][숫자 야구 게임] 1. 요구사항 분석 및 정의 (1) - 필수 기능(Lv 2까지)

레이제로 2024. 9. 19. 21:03

1. 요구사항 분석 및 정의

 A. 문제

  • 숫자 야구 게임 (Bulls and Cows)
    : 컴퓨터가 생성한 3자리 숫자를 플레이어가 맞추는 게임으로, 각 시도에 대해 '스트라이크'와 '볼'의 개수를 출력하여 플레이어가 숫자를 맞힐 수 있도록 유도합니다.
    • 스트라이크 : 입력값과 정답을 비교해 같은 자리에 같은 숫자가 있는 경우
    • 볼 : 숫자는 같지만, 자리는 다른 경우
    • 아웃 : 숫자도, 자리도 다른 경우
    • 3 스트라이크 : 정답

 

 B. 배경 지식

  • 'Java 문법 종합반' 강의를 참고하였습니다.
더보기
  1. Java 문법
    • 변수/상수의 선언과 값 저장
    • 연산자
    • 조건문, 반복문
    • 형 변환
    • 배열
    • Method
  2. Java 자료구조 
    • Collection - List, Queue, Set, Map
  3. 객체지향 프로그래밍
    • 클래스
    • 상속
    • 인터페이스
  4. 예외 처리
  5. Generic
  • 책 '객체지향 소프트웨어 공학'과 '객체지향의 사실과 오해'를 참고하였습니다.

 

 C. 환경 및 시스템 모델

  • 사용자의 인터페이스(UI; User Interface) 방식: CLI(Command Line Interface)

 

 D. 기능적 요구

  • 발제의 '게임 설명' 부분과 '필수 기능 가이드', '도전 기능 가이드'에서 요구사항을 분석하여 정의하였습니다.
  1. 정답 숫자
    • 서로 다른 세 자리 숫자로, 각 자리는 1부터 9 사이의 숫자입니다.
    • 즉, 정답 숫자는 중복되지 않는 세 자리 숫자입니다.
  2. 입력
    • 서로 다른 세 자리 숫자만 입력 가능합니다.
    • 숫자만 입력 가능하며, 문자는 작성할 수 없습니다.
  3. 게임 로직
    • 정답과 입력값을 비교하여, 힌트를 “볼, 스트라이크, 아웃”으로 표시합니다.
      • 스트라이크 : 입력값과 정답을 비교해 같은 자리에 같은 숫자가 있는 경우
      • 볼 : 숫자는 같지만, 자리는 다른 경우
      • 아웃 : 숫자도, 자리도 다른 경우
    • 정답을 맞힐 때까지 계속 시도할 수 있습니다.
    • 입력한 세 자리 숫자가 정답과 같은 경우, 게임이 종료됩니다.
      • 3 스트라이크 : 정답
  4. 출력
    • 힌트/정답 표시
      • 힌트: '스트라이크'와 '볼'의 개수
      • 정답: 축하 메시지
    • 올바르지 않은 입력값에 대한 오류 문구
      • 입력값이 요구사항에 부합하지 않는 경우
      • 즉, 입력의 유효성 체크에서 유효하지 않다고 판단된 경우, “올바르지 않은 입력값입니다.” 오류 문구 출력
    • 게임 이어서 하기
      • 정답을 맞힐 때까지 계속해서 시도할 수 있습니다.
  5. 입력의 유효성 체크
    • 세 자리 수인가요? → 자릿수 검사
    • 중복된 숫자가 없나요? →  중복 숫자 검사
    • 입력값에 숫자만 포함되어 있나요? → 타입 검사
  6. 출력 개선 [Lv 2]
    • 프로그램을 시작할 때, 안내문구를 출력합니다.
      발제 - Lv 2의 출력 개선 예시

      • 1을 입력하면, 아래 예시처럼 게임이 진행됩니다.
        발제 - 필수 기능 예시

      • “2. 게임 기록 보기”는 Lv 3에서 제시됩니다. 아직 구현하지 않습니다.
      • 3을 입력하면, 게임이 종료됩니다.
    • 정답을 맞히는 경우, 프로그램 시작할 때의 안내문구를 다시 출력합니다.

 

 E. 비기능적 요구

  1. 기능이 추가되거나 개선되어도 기존 코드의 수정은 최소화로 이루어져야 합니다.
  2. 역할별 구조와 기능 추가 및 개선 파악이 쉽도록 해야 합니다. → package로 분류해줍니다.
  3. 플랫폼:
    • 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 이상
  4. 프로그래밍 언어: Java
  5. 사용하는 개발 프로세스(방법론)
    • 발제의 요구사항과 기능 가이드를 기반으로 개선해 나가는 점증적 모델
    • 해당 방법론으로 진행하는 이유:
      '명세 → 개발 → 검증' 과정의 반복으로 불분명한(미완성된) 요구사항을 보완하며 점차 명확한 요구사항 도출하기 위해서입니다.
  6. 제출 기한2024년 09월 24일(화) 14시까지