ROONTAMS
ROONTAMS
ROONTAMS
전체 방문자
오늘
어제
  • 분류 전체보기 (13)
    • Unity : 개발 (0)
    • 강의 (12)
      • iOS개발 강의 (6)
      • React 강의 (1)
      • 컴퓨터 구조 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ROONTAMS

ROONTAMS

강의/iOS개발 강의

Week4_가위바위보 게임

2025. 9. 23. 18:01
가위바위보 게임 - 요구사항 명세서 v1.0

🎮 가위바위보 배틀 게임

소프트웨어 요구사항 명세서 (Software Requirements Specification)
Version 1.0 | 2025 Fall Figma Prototype

📈 프로젝트 현황

11
기능 요구사항
6
비기능 요구사항
8
사용자 스토리
3시간
예상 개발시간

🎯 프로젝트 목표

본 프로젝트는 SwiftUI를 활용하여 iOS 플랫폼에서 동작하는 가위바위보 게임 애플리케이션을 개발하는 것을 목표로 한다. 사용자는 컴퓨터와 가위바위보 대결을 진행하며, 실시간으로 점수를 확인하고 게임 통계를 관리할 수 있다. 3주차까지의 학습 내용을 바탕으로 @State를 활용한 상태 관리, UI 컴포넌트 조합, 사용자 인터랙션 구현을 학습한다.

🛠 기술 스택

🍎
iOS
17.0+
📱
SwiftUI
5.0+
🔧
Xcode
15.0+
🦉
Swift
5.9

⚙️ 기능 요구사항 (Functional Requirements)

FR-001 🔥 필수
플레이어 선택 기능
플레이어는 가위(✌️), 바위(✊), 보(✋) 중 하나를 버튼을 통해 선택할 수 있어야 한다.
FR-002 🔥 필수
컴퓨터 랜덤 선택
컴퓨터는 가위, 바위, 보 중 하나를 무작위로 선택해야 한다. Int.random(in:)을 활용한다.
FR-003 🔥 필수
승부 판정 로직
가위바위보 규칙에 따라 승부를 판정한다. 바위>가위, 가위>보, 보>바위의 관계를 구현한다.
FR-004 🔥 필수
점수 기록 시스템
플레이어와 컴퓨터의 점수를 각각 기록하고 실시간으로 화면에 표시한다.
FR-005 🔥 필수
결과 메시지 표시
각 라운드 종료 후 승리/패배/무승부 결과를 텍스트로 표시한다. 이모지를 활용하여 직관성을 높인다.
FR-006 🔥 필수
게임 초기화
새 게임 버튼을 통해 모든 점수와 상태를 초기값으로 리셋할 수 있어야 한다.
FR-007 ⭐ 권장
연속 승리 카운터
플레이어의 연속 승리 횟수를 추적하고 표시한다. 패배 시 0으로 초기화된다.
FR-008 ⭐ 권장
승률 계산
총 게임 수 대비 승리 횟수를 백분율로 계산하여 표시한다.
FR-009 💡 선택
다시하기 기능
전체 리셋이 아닌 현재 라운드만 다시 시작할 수 있는 기능을 제공한다.
FR-010 💡 선택
게임 통계 표시
총 게임 수, 승/무/패 횟수 등 상세 통계를 제공한다.
FR-011 💡 선택
선택 내역 표시
플레이어와 컴퓨터의 선택을 시각적으로 표시한다.

📐 비기능 요구사항 (Non-Functional Requirements)

NFR-001 🔥 필수
반응 속도
사용자 입력에 대한 응답 시간은 0.1초 이내여야 한다. 결과 표시는 서스펜스를 위해 0.7초 지연을 둔다.
NFR-002 🔥 필수
사용성
UI는 직관적이어야 하며, 별도의 설명 없이도 게임을 진행할 수 있어야 한다. 버튼 크기는 터치하기 쉽게 최소 44pt 이상이어야 한다.
NFR-003 ⭐ 권장
시각적 피드백
버튼 터치, 결과 표시 등 모든 인터랙션에 시각적 피드백을 제공한다. 색상과 애니메이션을 활용한다.
NFR-004 ⭐ 권장
호환성
iOS 17.0 이상의 모든 iPhone 기기에서 정상 동작해야 한다. 다양한 화면 크기에 대응한다.
NFR-005 💡 선택
접근성
VoiceOver를 지원하여 시각 장애인도 게임을 즐길 수 있도록 한다.
NFR-006 💡 선택
성능
앱 실행 시간은 1초 이내, 메모리 사용량은 50MB 이하를 유지한다.

👥 사용자 스토리 (User Stories)

🎮 게임 플레이어
"나는 버튼을 터치하여 가위, 바위, 보 중 하나를 선택하고 싶다"
인수 조건
  • 3개의 선택 버튼이 명확하게 표시됨
  • 버튼 터치 시 즉각적인 반응
  • 선택한 항목이 시각적으로 구분됨
🎮 게임 플레이어
"나는 컴퓨터와 공정한 대결을 하고 싶다"
인수 조건
  • 컴퓨터의 선택이 무작위로 결정됨
  • 승부 판정이 정확함
  • 결과가 명확하게 표시됨
🎮 게임 플레이어
"나는 내 점수와 컴퓨터 점수를 실시간으로 확인하고 싶다"
인수 조건
  • 점수가 항상 화면에 표시됨
  • 승부 후 즉시 점수 업데이트
  • 플레이어와 컴퓨터 점수 구분 가능
🎮 게임 플레이어
"나는 게임을 처음부터 다시 시작하고 싶다"
인수 조건
  • 리셋 버튼이 명확히 표시됨
  • 모든 점수와 상태가 초기화됨
  • 확인 없이 즉시 리셋됨
📊 통계 확인자
"나는 내 승률과 연승 기록을 확인하고 싶다"
인수 조건
  • 승률이 백분율로 표시됨
  • 연속 승리 횟수가 표시됨
  • 통계가 실시간 업데이트됨
🎨 UI/UX 중시자
"나는 게임 결과를 즉각적이고 명확하게 알고 싶다"
인수 조건
  • 승/패/무 결과가 색상으로 구분됨
  • 이모지로 결과 강조
  • 결과 메시지가 크고 명확함
🎬 엔터테인먼트 추구자
"나는 게임에 긴장감과 재미를 느끼고 싶다"
인수 조건
  • 결과 공개 전 서스펜스 효과
  • 애니메이션 효과 적용
  • 연승 시 특별한 피드백
🔄 반복 플레이어
"나는 빠르게 여러 게임을 연속으로 진행하고 싶다"
인수 조건
  • 다시하기 버튼 제공
  • 빠른 게임 진행 가능
  • 불필요한 대기 시간 없음

📐 시스템 설계 다이어그램

1. 게임 전체 플로우차트

게임의 시작부터 종료까지 전체 흐름을 보여줍니다.

2. 컴포넌트 구조 다이어그램

SwiftUI View 컴포넌트의 계층 구조를 보여줍니다.

3. 애니메이션 타이밍 시퀀스

사용자 인터랙션부터 UI 업데이트까지의 시간 흐름을 시퀀스 다이어그램으로 표현합니다.

⚠️ 제약사항 및 가정사항

  • 📱 기술적 제약
    iOS 17.0 이상, SwiftUI 5.0 이상 환경에서만 동작. Xcode 15.0 이상 필요.
  • ⏱ 시간 제약
    총 개발 시간 3시간 이내 완성. 각 단계별 시간 제한 준수 필요.
  • 📚 학습 범위 제약
    3주차까지 학습한 내용만 사용. CoreData, Network 등 고급 기능 사용 불가.
  • 🎨 UI 제약
    SwiftUI 기본 컴포넌트만 사용. 외부 라이브러리나 커스텀 폰트 사용 불가.
  • 💾 데이터 제약
    영구 저장 기능 없음. 앱 종료 시 모든 데이터 소실 허용.
  • 🌐 네트워크 제약
    오프라인 전용 앱. 네트워크 기능 불필요.

💡 가정사항

  • 사용자 지식 수준
    사용자는 가위바위보 규칙을 이미 알고 있음. 별도 튜토리얼 불필요.
  • 단일 플레이어
    1인 플레이 전용. 멀티플레이어 기능은 고려하지 않음.
  • 공정한 게임
    컴퓨터는 완전히 무작위로 선택. AI나 패턴 분석 없음.
📅 작성일: 2025년
👤 대상: 소프트웨어학과 3학년
📝 버전: 1.0
⏰ 예상 개발시간: 3시간
© 2025 동서대학교 소프트웨어학과 - 소프트웨어스튜디오2(iOS개발) 담당 : 장문수

'강의 > iOS개발 강의' 카테고리의 다른 글

상태 관리와 MVVM 기초  (0) 2025.09.30
SwiftUI 컴포넌트 가이드  (0) 2025.09.30
SwiftUI - Part2  (1) 2025.09.16
SwitfUI - Part 1  (0) 2025.09.16
2_Swift 기초 문법 완벽 가이드  (0) 2025.09.09
    '강의/iOS개발 강의' 카테고리의 다른 글
    • 상태 관리와 MVVM 기초
    • SwiftUI 컴포넌트 가이드
    • SwiftUI - Part2
    • SwitfUI - Part 1
    ROONTAMS
    ROONTAMS

    티스토리툴바