소프트웨어 공학의 모든 것 , 최은만 , 생능
5장 요구 모델링
연습문제 서술형
1. 모델링은 어떤 작업이며 모델링 작업과 도메인 지식의 관계는 무엇인가 (모델링 작업과 도메인 지식)
모델링은 현실 세계의 문제 영역을 추상화하여 시각적 또는 수학적 표현으로 시스템을 설계하고 분석하는 작업이다. 모델링 작업에서는 도메인 지식이 매우 중요한데, 도메인 지식은 특정 문제 영역에 대한 전문적 이해와 관련된 정보를 의미한다. 이를 통해 모델링 작업이 문제를 정확히 반영하고 적합한 해결 방안을 제시할 수 있도록 한다. 모델링은 도메인 지식을 바탕으로 요구사항을 정리하고 시스템의 구조와 동작을 구체화하여, 결과적으로 프로젝트 이해 관계자들이 문제를 명확히 이해하고 해결 방안을 효과적으로 구현할 수 있도록 돕는다.
2. UML을 이용한 모델링 작업과 도메인 지식의 관계는 무엇인가 (UML 모델링과 도메인 지식)
UML(통합 모델링 언어)을 이용한 모델링 작업은 객체 지향 시스템을 시각화하고 명확하게 표현하는 도구로, 시스템의 요구사항과 구조를 UML 다이어그램으로 표기하는 것이다. 도메인 지식은 UML 모델링 작업의 기초가 되며, 이를 통해 시스템의 각 요소가 도메인 요구를 충실히 반영할 수 있다. UML은 도메인 지식을 바탕으로 클래스 다이어그램, 시퀀스 다이어그램 등을 통해 객체, 속성, 행위 등을 모델링하여 시스템의 이해도를 높이고 개발자와 이해 관계자 간의 원활한 소통을 가능하게 한다.
3. UML을 이용하여 객체 지향 시스템을 모델링하는 과정 설명하라 (객체 지향 모델링 과정)
UML을 이용한 객체 지향 시스템 모델링 과정은 다음과 같다:
- 요구 분석 단계에서는 시스템의 기능적 요구와 비기능적 요구를 파악하고, 이를 UML 다이어그램으로 시각화한다.
- 클래스 다이어그램을 사용하여 시스템에서 필요한 클래스와 그들 간의 관계를 정의하고, 각 클래스의 속성 및 메서드를 식별한다.
- 시퀀스 다이어그램을 통해 객체 간의 상호작용과 메시지 흐름을 모델링하여 시스템의 동적 동작을 표현한다.
- 상태 다이어그램을 사용하여 각 객체의 상태 변화와 트랜지션을 모델링한다.
- 마지막으로, 설계된 UML 다이어그램을 바탕으로 코드 구현에 필요한 정보를 도출하여 실제 객체 지향 코드로 작성한다.
4. 다음 나열한 것을 클래스가 될 것과 객체가 될 것을 구별하라 그 이유는 무엇인가 (클래스와 객체 구별)
- 휴대폰의 받은 문자함: 클래스 - 문자 메시지를 관리하는 구조로, 개별 메시지를 포함하는 상위 개념이다.
- 어제 아침 홍길동에게서 받은 문자: 객체 - 특정 시점에 받은 하나의 문자 메시지로, 특정한 인스턴스이기 때문이다.
- 휴대폰 전화번호부에 있는 전화번호: 클래스 - 전화번호 정보를 저장하고 관리하는 추상적 구조이다.
- 전화번호 삭제: 클래스 - 전화번호 삭제 작업을 수행하는 기능적 개념으로, 특정 객체가 아닌 행위나 기능을 나타낸다.
- 휴대폰에 저장한 일정: 객체 - 특정 시간과 내용을 가지는 개별 일정으로, 특정 인스턴스를 의미한다.
5. 문장에 담긴 의미를 클래스 다이어그램으로 모델링하라. 이 모델이 왜 적합한지 그 이유를 쓰라 (클래스 다이어그램 모델링 및 적합성)
- “파일은 레코드로 구성된다”와 “디렉토리는 일반 파일과 같다”라는 문장을 기반으로 다음 클래스 다이어그램이 적합하다:
- 파일 클래스는 여러 레코드 객체를 포함할 수 있는 집합 관계(aggregation)로 표현된다.
- 디렉토리 클래스는 일반 파일과 동일한 속성과 행동을 가지므로 일반 파일의 상위 개념으로 표현될 수 있다.
이 모델이 적합한 이유는, 파일과 레코드의 구성 관계와 디렉토리가 일반 파일과 동일한 속성 및 행위를 공유하는 계층 구조를 정확히 반영하여 시스템의 구조적 관계를 명확히 표현하기 때문이다.
7. 현금 자동인출기를 위한 시스템의 클래스를 찾아라 (현금 자동인출기 클래스 식별)
현금 자동인출기 시스템에서 고려해야 할 클래스는 다음과 같다:
- ATM: 사용자와 상호작용하는 장치로, 현금 인출, 잔액 조회 등의 기능을 담당한다.
- 사용자: ATM을 사용하는 고객으로, 계좌 접근과 거래 수행을 위해 인증이 필요하다.
- 계좌: 사용자 계좌 정보와 잔액을 관리하는 클래스로, 입금과 출금 거래 시 잔액을 업데이트한다.
- 은행 서버: 거래를 승인하고 계좌 정보를 검증하며, ATM과 연결된 시스템에서 계좌 인증과 거래 처리를 담당한다.
- 카드 리더기: 사용자의 카드를 읽어 정보를 검증하고, 사용자 계정을 확인하는 장치를 나타낸다.
- 현금 저장 장치: 인출을 위한 현금을 보관하고 현금 출금 시 이를 관리한다.
이러한 클래스들은 현금 자동인출기 시스템에서 요구되는 주요 기능과 관련된 객체들을 모델링하여 ATM 시스템의 전체 구조와 기능을 체계적으로 설계할 수 있도록 한다.
'[ Computer Science ] > SW Engineering' 카테고리의 다른 글
[소프트웨어공학] 소프트웨어 아키텍처 패턴 (3) | 2024.11.20 |
---|---|
[SW Engineering] 소프트웨어 공학의 모든 것 연습문제 6장 서술형 (1) | 2024.10.28 |
[SW Engineering] 소프트웨어 공학의 모든 것 연습문제 4장 서술형 (2) | 2024.10.28 |
[SW Engineering] 소프트웨어 공학의 모든 것 연습문제 3장 서술형 (5) | 2024.10.28 |
[SW Engineering] 소프트웨어 공학의 모든 것 연습문제 2장 서술형 (1) | 2024.10.28 |
[SW Engineering] 소프트웨어 공학의 모든 것 연습문제 1장 서술형 (7) | 2024.10.28 |