🏕 내일배움캠프/[Assignment] Ch2-1
[Ch 2][계산기 과제] 1. 요구사항 분석 및 정의 & 2. 설계
레이제로
2024. 9. 10. 03:53
1. 요구사항 분석 및 정의
A. 문제
- 클래스를 활용한 계산기
- 클래스를 사용하지 않는 계산기
B. 배경 지식
- 'Java 문법 종합반' 강의를 참조하였습니다.
더보기
- Java 문법
- 변수/상수의 선언과 값 저장
- 연산자
- 조건문, 반복문
- 형 변환
- 배열
- Method
- Java 자료구조
- Collection - List, Queue, Set, Map
- 객체지향 프로그래밍
- 클래스
- 상속
- 인터페이스
- 예외 처리
- Generic
C. 환경 및 시스템 모델
- 사용자의 인터페이스(UI; User Interface) 방식: CLI(Command Line Interface)
D. 기능적 요구
- 발제의 '필수 기능 가이드'와 '도전 기능 가이드'에서 요구사항을 분석하였습니다.
- 입력: 피연산자 2개, 연산자 1개(사칙연산 기호: +, -, *, /)
- 출력: 연산 결과값, 에러
- 연산 결과값 저장:
- 클래스를 적용한 계산기: List
- 요구사항
- Collection 타입
- 가장 먼저 저장된 데이터를 삭제 → 순서 필요, 중복 가능(연산 결과값이므로), 삭제에 용이
- 요구사항
- 클래스를 적용한 계산기: List
- 입력의 적합성 체크
- 연산자 타입에 의해 연산 기능 결정 [도전 기능]
- 사칙연산 기능
E. 비기능적 요구
- 유지보수성이 좋아야 합니다.
- 높은 응집도
- 낮은 결합도
- 플랫폼:
- 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월 11일(수) 14시까지
2. 설계 - 클래스를 적용한 계산기
A. 클래스 다이어그램
1) 초기 Calculator 클래스 다이어그램
• 문제점: 추상화 클래스인 Caculator 클래스는 인스턴스 생성을 할 수 없습니다.
• 해결 방안: 책임 분배를 세분화하여, 연산 기능 담당 추상 클래스인 AbstractOperation을 생성합니다.
2) 수정한 Calculator 클래스 다이어그램 (1)
• 문제점: setter와 getter의 역할이 애매하게 지정된 것 같습니다.
• 해결 방안: setter와 getter의 역할을 재정의하고, 추가와 삭제 기능 담당 메서드를 추가 생성합니다.
3) 수정한 Calculator 클래스 다이어그램 (2)
B. 기능 분해
1) 입력의 적합성 체크
• 피연산자: 0을 포함한 양의 정수
• 연산자: 사칙연산 기호(+, -, *, /)
• 나눗셈 연산에서 두번째 피연산자: 0은 불가
2) 연산자 타입
• + : 덧셈 연산자
• - : 뺄셈 연산자
• * : 곱셈 연산자
• / : 나눗셈 연산자
3) 사칙 연산 기능
• 덧셈 연산
• 뺄셈 연산
• 곱셈 연산
• 나눗셈 연산: 나눗셈 연산 결과값은 일반적으로 많이 생각하는 소숫점을 포함한 숫자 형태로 출력합니다.