REPORT과 목 명ː담당교수님ː 교수님학 과ː학 번ː이 름ː1.사용자와 체스 게임을 두는 컴퓨터 기반의 시스템을 구축하고 있다고 가정하자. 이 시스템에 적합한 UML 다이어그램은 무엇일까? 또, 그 이유는?게임의 내용이나 방식에 따라 하나의 다이어그램이 필요할 수도 있고 여러 개의 다이어그램이 필요할 수도 있다고 생각한다. 게임에 대한 이벤트 등이 다르기에 하나의 다이어그램으로는 표현이 부족하다고 생각하기 때문이다.우선은 상태 다이어그램(State Diagram)이다. 상태다이어그램은 한 객체가 자신의 생명주기 안에서 취할 수 있는 상태들과 그 상태 간 전이를 일으키는 이벤트들, 그리고 상태 간 변화에서 발생하는 작용들을 표현하는 동적인 뷰 이다. 상태 다이어그램은 사용자의 입력에 따라 컴퓨터의 반응을 나타낼 수 있는데 게임의 내용을 세세하게 다이어그램으로 나타내는 게 아니라 큰 범위의 동작을 나타내는데 사용한다.그리고 유스케이스(Use Case) 다이어그램도 필요하다. 비록 컴퓨터를 기반으로 하고 있다고는 하지만 사용자가 체스게임을 하지 않을시 에는 아무 쓸모없는 프로그램이기에 사용자를 위한 유스케이스 다이어그램을 사용해야한다.또한 컴퓨터 시스템을 명확하게 나타낼 수 있도록 준비된 컴포넌트(Component) 다이어그램과 배포(deployment) 다이어그램도 들수 있다. 특히 팀 단위로 개발한다면 특히나 중요한 것은 컴포넌트다.그 외에도 다른 다이어그램으로도 표현할 수 있는 부분이있다.2.방금 답한 시스템에 대하여, 미래의 사용자(의뢰인)에게 물어볼 질문을 떠올리고, 각각의 이유를 생각해 보자.우선 게임이기 때문에 재미라는 것에 관점을 두어야 할 것 같다. 그렇기 때문에 사용자에게 재미있느냐는 질문을 먼저 할 것이다. 그 뒤에는 이 게임을 하면서 부족하다고 느낀 점 즉 버그나 추가사항들이 추가되었으면 하는 걸 물어볼 것 같다. 이유는 게임의 재미와 오류 및 버그 없는 게임을 만들기 위해서 이다.3.[그림 1.7]의 통신 다이어그램을 살펴보자, [그림 1.5]의 시퀀스 다이어그램과 마찬가지로 완전한 모습으로 완성해 보도록 하자. 어떤 문제가 발생할까?시퀀스 다이어그램처럼 시간의 경과에 따라 보여주는 것이 아니라 메시지에 숫자를 붙여 보여줌으로서 시퀀스 다이어그램보다 훨씬 보기도 불편할 뿐만 아니라 다이어그램 구성 또한 복잡하다.4.[그림 1.5]에서 객체들의 행동들을 살펴보도록 하자. 각 객체가 한 클래스의 인스턴스가 된다고 가정해 보고, 이 클래스들과 행동들을 포함하는 클래스 다이어그램을 그려보도록 하자. 각각의 클래스에 추가할 만한 행동들을 생각해 볼 수 있을까?TimerWaterPipeDrumtimeWaterPipeDrumDrumsendWater()stopFlow()storeWater()rotateBackAndForth()pumpWater()stopRotating()rotateClockwise()timeSoak()timeWash()timeRinse()timeSpin(0Timer Class - 예약세탁WaterPipe class - 냉/온수 선택Drum Class - 헹굼의 횟수 선택, 세탁의 강/약 선택5.연습 문제 4의 클래스들을 세탁기의 복합연관 구조 다이어그램으로 구현해 보자. 또한, 추가할 만한 컴포넌트 클래스에 대해서도 생각해 보도록 하자.하나정도의 클래스가 필요할 것 같다. 그 클래스는 WashingMachine 자신의 클래스로 Timer, WaterPipe, Drum 클래스를 인스턴스로 가지면서, 예외 상황, 예를 들어 물이 안 들어오거나 세탁 중 뚜껑이 열리거나 등의 상황을 제어 할 수 있다.