
다이어그램 요약
다이어그램은 시스템의 구조나 동작을 시각적으로 표현하여 이해를 돕는 도구입니다. 크게 구조적 다이어그램과 행위 다이어그램으로 나뉩니다.
구조적 다이어그램
구조적 다이어그램은 시스템의 정적인 구조를 표현합니다. 클래스 다이어그램은 클래스 간 관계를, 객체 다이어그램은 인스턴스 간의 관계를 보여주며, 컴포넌트 다이어그램은 시스템의 구성 모듈 간 관계를 나타냅니다. 배치 다이어그램은 실제 시스템의 물리적 배치를, 복합 구조 다이어그램은 클래스 내부 구조를, 패키지 다이어그램은 클래스나 유스케이스를 논리적으로 묶어 보여줍니다.
행위 다이어그램
행위 다이어그램은 시스템의 동작이나 상호작용을 나타냅니다. 유스케이스 다이어그램은 사용자와 시스템 간의 관계를, 순차 다이어그램과 커뮤니케이션 다이어그램은 객체 간 메시지 흐름을 표현합니다. 상태 다이어그램은 객체의 상태 변화를, 활동 다이어그램은 작업 흐름을, 상호작용 개요 다이어그램은 여러 상호작용을 통합해 보여주며, 타이밍 다이어그램은 시간에 따른 상태 변화를 나타냅니다.
다이어그램 기출 문제
2024년 1회
01. UML(Unified Modeling Language)에 대한 설명 중 틀린 것은?해설 보기
정답: ④ UML에서 상태 다이어그램(State Diagram)은 하나의 객체가 가진 상태와 상태 변화에 따른 동작 순서를 나타냅니다. 반면, 시퀀스 다이어그램(Sequence Diagram)은 객체 간의 메시지 교환을 시간 순서대로 표현합니다. 보기 ④는 이 두 개념을 뒤바꿔 설명했기 때문에 틀린 보기입니다. ① Use case Diagram은 사용자 관점에서 기능 요구사항을 표현하는 기능적 모델입니다. ② Class Diagram은 정적인 구조(객체, 속성, 연관관계 등)를 나타내며, 정적 모델에 해당합니다. ③ Sequence, State, Activity Diagram은 모두 동적 모델로, 시스템 내부의 동작 흐름을 표현합니다. |
02. UML 다이어그램 중 정적 다이어그램이 아닌 것은?
해설 보기
정답: ③ UML 다이어그램은 크게 정적 다이어그램과 동적 다이어그램으로 구분됩니다. – 정적 다이어그램: 클래스 다이어그램, 객체 다이어그램, 컴포넌트 다이어그램, 배치 다이어그램, 패키지 다이어그램 등 – 동적 다이어그램: 순차 다이어그램(Sequence), 상태 다이어그램(State), 활동 다이어그램(Activity) 등 순차 다이어그램은 시간의 흐름에 따라 객체 간의 메시지 교환을 시각화하는 동적 모델로, 정적 다이어그램이 아닙니다. |
2024년 1회
03. 다음 중 상태 다이어그램에서 객체 전이의 요인이 되는 요소는?해설 보기
정답: ① UML의 상태 다이어그램(State Diagram)은 객체의 상태 변화 과정을 표현하며, **이벤트(event)**는 이러한 상태 전이(transition)를 유발하는 트리거 역할을 합니다. – ② state는 현재 객체가 머무르고 있는 상태입니다. – ③ message는 시퀀스 다이어그램 등에서 객체 간 통신을 나타낼 때 사용합니다. – ④ transition은 상태 전이 그 자체를 의미하지, 전이의 원인이 되는 요소는 아닙니다. |
다이어그램 부가 설명
시스템을 다양한 시각에서 표현해주는 다이어그램은 모델링의 핵심 요소입니다. 다이어그램을 통해 사람과 사람 사이의 의사소통이 쉬워지고, 시스템을 다각도로 분석할 수 있는 기반이 마련되죠. 특히 정적 모델링과 동적 모델링에 따라 사용하는 다이어그램의 종류가 달라집니다. 정적 모델링에서는 구조를 중점적으로 표현하는 다이어그램을, 동적 모델링에서는 시스템의 동작을 나타내는 행위 중심 다이어그램을 주로 사용하게 됩니다.
구조적 다이어그램
구조적 다이어그램은 시스템의 정적인 구조를 시각화하는 데에 활용됩니다. 주로 클래스, 객체, 컴포넌트 등 물리적·논리적 구조를 표현하는 것이 특징입니다.
클래스 다이어그램(Class Diagram)
클래스 다이어그램은 시스템이 가지고 있는 클래스와 클래스 간의 관계를 도식화한 다이어그램입니다. 시스템의 구조를 파악하고 설계 시 반복되기 쉬운 오류나 구조상의 문제점을 미리 발견할 수 있도록 돕습니다.
객체 다이어그램(Object Diagram)
객체 다이어그램은 클래스에서 파생된 실제 인스턴스 간의 관계를 나타냅니다. 럼바우(Rumbaugh) 방식에서는 객체 기반 설계에 중점을 두며, 클래스 다이어그램보다 구체적인 상황을 설명하는 데 적합합니다.
컴포넌트 다이어그램(Component Diagram)
소프트웨어 시스템을 구성하는 컴포넌트 간의 관계를 나타냅니다. 특히 시스템의 물리적인 구조나 재사용 가능한 모듈 단위로 분석하고자 할 때 효과적입니다.
배치 다이어그램(Deployment Diagram)
배치 다이어그램은 실제로 소프트웨어가 배포되어 실행되는 물리적 환경을 표현합니다. 시스템의 구성 요소들이 어떤 하드웨어에 어떻게 배치되는지를 시각적으로 보여주기 때문에 배포 전략을 수립할 때 유용합니다.
복합 구조 다이어그램(Composite Structure Diagram)
클래스 내부의 구성 요소나 그들의 상호작용을 더 세밀하게 표현할 때 사용됩니다. 단순히 클래스의 속성과 메서드만이 아니라 내부에 포함된 구성 요소들의 연결관계도 명확하게 확인할 수 있죠.
패키지 다이어그램(Package Diagram)
클래스나 유스케이스와 같은 요소들을 논리적인 그룹으로 묶어 표현합니다. 복잡한 시스템을 보다 조직적으로 관리할 수 있도록 돕습니다.
행위 다이어그램
행위 다이어그램은 시스템이 동작하는 방식이나 객체 간의 상호작용을 시간의 흐름에 따라 표현합니다. 시나리오 기반 설계나 유저 행동 예측 등에 적합합니다.
유스케이스 다이어그램(Use Case Diagram)
유스케이스 다이어그램은 시스템이 사용자의 요구를 어떻게 충족시키는지를 표현합니다. 사용자(Actor)와 시스템 간의 관계를 모델링하며, 초기 기능 설계 단계에서 가장 많이 사용됩니다.
순차 다이어그램(Sequence Diagram)
객체들 간에 주고받는 메시지를 시간 순서대로 표현합니다. 기능별로 객체의 상호작용을 이해하는 데 효과적이며, 메서드 호출이나 응답 흐름을 시각화할 수 있어 디버깅이나 유지보수 시에 도움이 됩니다.
커뮤니케이션 다이어그램(Communication Diagram)
메시지를 중심으로 객체들 간의 연결 관계를 시각적으로 보여줍니다. 메시지 흐름과 구조 간의 균형을 동시에 볼 수 있는 다이어그램입니다.
상태 다이어그램(State Diagram)
하나의 객체가 어떤 상태를 가지며 상태 간 전이가 어떤 조건에서 일어나는지를 나타냅니다. 특히 UI나 게임 설계처럼 상태 변화가 중요한 시스템에서 자주 사용됩니다. 객체 전이의 요인: event
활동 다이어그램(Activity Diagram)
업무 프로세스나 논리 흐름을 표현할 때 사용됩니다. 흐름 제어를 시각적으로 확인할 수 있어 업무 자동화, 사용자 행동 흐름 분석 등에 유용합니다.
상호작용 개요 다이어그램(Interaction Overview Diagram)
상호작용을 보다 큰 흐름 속에서 조망하고자 할 때 활용됩니다. 여러 개의 순차 다이어그램을 포함할 수 있어 복잡한 시나리오를 체계적으로 정리하는 데 적합합니다.
타이밍 다이어그램(Timing Diagram)
시간의 흐름에 따른 객체의 상태 변화와 이벤트를 명시적으로 표현합니다. 실시간 시스템이나 임베디드 시스템 개발에서 많이 사용됩니다.