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

[Ch 2][계산기 과제] 1. 요구사항 분석 및 정의 & 2. 설계

레이제로 2024. 9. 10. 03:53

1. 요구사항 분석 및 정의

  A. 문제

  1. 클래스를 활용한 계산기
  2. 클래스를 사용하지 않는 계산기

 

  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. 입력: 피연산자 2개, 연산자 1개(사칙연산 기호: +, -, *, /)
  2. 출력: 연산 결과값, 에러
  3. 연산 결과값 저장:
    • 클래스를 적용한 계산기: List
      • 요구사항
        1. Collection 타입
        2. 가장 먼저 저장된 데이터를 삭제 → 순서 필요, 중복 가능(연산 결과값이므로), 삭제에 용이
  4. 입력의 적합성 체크
  5. 연산자 타입에 의해 연산 기능 결정 [도전 기능]
  6. 사칙연산 기능

 

  E. 비기능적 요구

  1. 유지보수성이 좋아야 합니다.
    • 높은 응집도
    • 낮은 결합도
  2. 플랫폼:
    • 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 이상
  3. 프로그래밍 언어: Java
  4. 개발 프로세스
    • 요구사항 분석 및 명세, 설계 단계까지 추구한 방법론: 발제의 기능 가이드를 기반으로 한 점증적 모델
    • 이후 단계부터 변경한 방법론: 반복 진화형 모델
    • 방법론 변경 이유:
      1. 구현을 하면서, 불분명한 요구사항으로부터 미완성된 요구사항 명세를 하였음을 알게 되었습니다.
      2. '명세 → 개발 → 검증' 과정의 반복으로 요구사항을 보완하며 점차 명확한 요구사항 도출하였습니다.
  5. 제출 기한: 2024년 09월 11일(수) 14시까지

 

2. 설계 - 클래스를 적용한 계산기

 A. 클래스 다이어그램

  1) 초기 Calculator 클래스 다이어그램

초기 Calculator 클래스 다이어그램

 

 • 문제점: 추상화 클래스인 Caculator 클래스는 인스턴스 생성을 할 수 없습니다.

 • 해결 방안: 책임 분배세분화하여, 연산 기능 담당 추상 클래스AbstractOperation을 생성합니다.

 

 

  2) 수정한 Calculator 클래스 다이어그램 (1)

수정한 Calculator 클래스 다이어그램 (1)

 

 • 문제점: setter와 getter의 역할이 애매하게 지정된 것 같습니다.

 • 해결 방안: setter와 getter의 역할을 재정의하고, 추가와 삭제 기능 담당 메서드를 추가 생성합니다.

 

 

  3) 수정한 Calculator 클래스 다이어그램 (2)

수정한 Calculator 클래스 다이어그램 (2)

 

 

 B. 기능 분해

  1) 입력의 적합성 체크

    • 피연산자: 0을 포함한 양의 정수

    • 연산자: 사칙연산 기호(+, -, *, /)

    • 나눗셈 연산에서 두번째 피연산자: 0은 불가

 

  2) 연산자 타입

    • + : 덧셈 연산자

    • - : 뺄셈 연산자

    • * : 곱셈 연산자

    • / : 나눗셈 연산자

 

  3) 사칙 연산 기능

    • 덧셈 연산

    • 뺄셈 연산

    • 곱셈 연산

    • 나눗셈 연산: 나눗셈 연산 결과값은 일반적으로 많이 생각하는 소숫점을 포함한 숫자 형태로 출력합니다.