UML과 4+1 뷰 모델 - 정처기 실기 대비 주관식 문제 포함
요약
정처기 실기 단골 문제인 UML(Unified Modeling Language)의 기본 개념부터 다양한 다이어그램 종류, 그리고 소프트웨어 아키텍처 4+1 뷰 모델을 알아봅니다. 정처기 대비를 위한 외우는 방법과 주관식 문제가 포함되어 있습니다.
💡 정처기 실기 대비를 위한 주관식 문제는 내용 중간마다 Wrap up 형식으로 추가되었습니다. 또한 포스팅 마지막에 정처기 실전 문제와 함께 중간 문제를 다시 한 번 풀어볼 수 있습니다.
UML 다이어그램 요약표
구분 | 다이어그램 | 키워드 |
---|---|---|
구조 다이어그램 (정적 모델) | 클래스 | 시스템의 정적 구조, 클래스, 속성, 관계 |
객체 | 특정 시점의 인스턴스, 실제 예시 | |
컴포넌트 | 물리적 컴포넌트, 의존성 | |
배치 | 컴포넌트 종속성 , 물리적 요소 위치 | |
복합체 구조 | 클래스 내부 구조, 협력 관계 | |
패키지 | 관련된 요소들의 그룹화 |
구분 | 다이어그램 | 키워드 |
---|---|---|
행위 다이어그램 (동적 모델) | 유스케이스 | 사용자 관점, 시스템 기능, 상호작용 |
시퀀스 | 시간 흐름 , 메시지 흐름 | |
커뮤니케이션 | 객체 간의 관계와 메시지 교환 에 집중 | |
상태 | 하나의 객체가 겪는 상태 변화 | |
활동 | 작업의 흐름, 처리 로직, 처리 흐름 | |
타이밍 | 시간 제약 에 따른 객체 상태 변화 |
🤔 UML이란 무엇일까요?
소프트웨어를 개발하는 과정은 마치 멋진 건물을 짓는 것과 같아요. 🏗️ 고객의 요구사항을 듣고(도출), 그게 정말 가능한지 분석하고(분석), 설계도를 그리고(명세화), 설계도대로 잘 지어졌는지 확인(검증)하는 단계를 거치죠.
이 과정에서 요구사항을 분석하고 설계도를 그리는 단계에서 사용하는 핵심 도구가 바로 UML(Unified Modeling Language) 입니다.
UML은 이름 그대로 '통합 모델링 언어'예요. 복잡한 시스템을 이해하기 쉬운 그림(다이어그램)으로 표현하는 표준화 약속이죠. 📜 코드를 작성하기 전에 시스템의 구조와 동작을 시각적으로 설계하고, 개발자들끼리 "우리 이렇게 만들자!"라고 명확하게 소통할 수 있게 도와주는 청사진 📐 역할을 합니다.
🎨 UML 다이어그램의 종류
UML에는 여러 종류의 다이어그램이 있어요. 크게 구조 다이어그램(Structure Diagram) 과 행위 다이어그램(Behavior Diagram) 으로 나뉩니다.
1. 구조 다이어그램 (정적 모델) 🏛️
시스템의 뼈대, 즉 정적인 구조를 보여줍니다.
- 클래스 다이어그램: 시스템을 구성하는 클래스와 그들 간의 관계(상속, 연관 등)를 보여주는 가장 대표적인 다이어그램입니다.
클래스 다이어그램 예시 보기
- 객체 다이어그램: 특정 시점의 객체와 그 관계를 보여줍니다. 클래스 다이어그램의 실제 예시(인스턴스)라고 할 수 있죠.
객체 다이어그램 예시 보기
- 컴포넌트 다이어그램: 시스템을 구성하는 물리적인 컴포넌트(모듈, 파일)와 그 의존성을 보여줍니다.
컴포넌트 다이어그램 예시 보기
- 배치 다이어그램: 컴포넌트 사이의 종속성을 표현하고 소프트웨어가 어떤 하드웨어(서버, 장비)에 어떻게 배치되는지 보여줍니다.
배치 다이어그램 예시 보기
- 복합체 구조 다이어그램: 클래스의 내부 구조와 그 클래스가 다른 클래스들과 어떻게 협력하는지를 보여줍니다. 클래스 다이어그램이 "무엇이 있는가?"를 보여준다면, 복합체 구조 다이어그램은 "그것들이 어떻게 함께 작동하는가?"를 보여줍니다.
복합체 구조 다이어그램 예시 보기
- 패키지 다이어그램: 관련된 요소들을 그룹화한 패키지들의 관계를 보여줍니다.(폴더와 비슷하게 생겼습니다.)
패키지 다이어그램 예시 보기
2. 행위 다이어그램 (동적 모델) 💃
시스템이 실제로 어떻게 동작하는지, 시간의 흐름에 따른 변화를 보여줍니다.
-
유스케이스 다이어그램: 사용자의 관점에서 시스템이 제공하는 기능과 상호작용을 보여줍니다.
유스케이스 다이어그램 예시 보기
-
시퀀스 다이어그램: 객체들이 메시지를 주고받으며 상호작용하는 순서를 시간의 흐름 에 따라 보여줍니다.
시퀀스 다이어그램 예시 보기
-
커뮤니케이션 다이어그램: 시퀀스 다이어그램과 유사하지만, 시간 순서보다는 객체들 간의 관계와 메시지 교환에 중점을 둡니다. 객체들이 어떻게 연결되어 있고 어떤 메시지를 주고받는지를 보여줍니다.
커뮤니케이션 다이어그램 예시 보기
-
상태 다이어그램: 하나의 객체가 특정 이벤트에 따라 상태가 어떻게 변하는지를 보여줍니다.
상태 다이어그램 예시 보기
-
활동 다이어그램: 작업의 흐름이나 프로세스를 순서도로 표현합니다.
활동 다이어그램 예시 보기
-
타이밍 다이어그램: 시간의 흐름에 따른 객체의 상태 변화와 상호작용을 타임라인으로 표현합니다. 실시간 시스템이나 임베디드 시스템에서 시간 제약사항을 모델링할 때 유용합니다.
타이밍 다이어그램 예시 보기
🧠 UML 다이어그램 외우는 방법
두음법칙을 적용하면 이미지를 남기는데 도움이 될 수 있습니다.
아래 이미지는 닥터 스트레인지(베네딕트 컴배 비치)가 젤다의 전설의 시커 스톤을 들고 있는 이미지입니다.

구조 다이어그램(정적 모델)의 경우 "클객 컴배 복패" 인데요 닥터 스트레인지의 주인공 베네딕트 '컴배'비치를 떠올리세요. 행위 다이어그램(동적 모델)의 경우 "유 시커 상활타" 입니다. 젤다의 전설에 나오는 '시커'스톤을 떠올리세요.
암기 순서 📝
- UML 다이어그램 종류는 베네딕트 컴배비치가 시커스톤을 손에 올리고 있는 모습
- 구조 다이어그램(정적 모델) = 컴배비치 -> 클객컴배복패
- 행위 다이어그램(동적 모델) = 시커스톤 -> 유시커상활타
- 클객컴배복패 = 클래스, 객체, 컴포넌트, 배치, 복합체, 패키지
- 유시커상활타 = 유스케이스, 시퀀스, 커뮤니케이션, 상태, 활동, 타이밍
문제 | 구조 다이어그램 종류를 모두 쓰시오. |
답변 | |
정답 | 정답 보기 |
문제 | 행위 다이어그램 종류를 모두 쓰시오. |
답변 | |
정답 | 정답 보기 |
🔭 소프트웨어 아키텍처 4+1 뷰 모델
"이렇게 많은 다이어그램을 언제 다 쓰지?" 라는 생각이 드시나요? 🤔 맞아요. 그래서 등장한 것이 바로 4+1 뷰 모델입니다. 복잡한 시스템을 5가지 다른 관점(View)으로 나누어 체계적으로 바라보는 방법론이죠. 각 뷰는 특정 이해관계자(개발자, 설계자, 사용자 등)에게 필요한 정보만 보여줍니다.
1. 유스케이스 뷰 (Use Case View) 🧑💻 (+1)
- 관점: 모든 이해관계자
- 설명: 시스템의 핵심 기능(사용자에 의해 인식되는 기능)을 정의하고 다른 뷰들을 이끌어가는 시나리오입니다. "사용자가 시스템으로 무엇을 할 수 있는가?"에 답합니다.
- 관련 UML 다이어그램: 유스케이스 다이어그램, 활동 다이어그램, 시퀀스 다이어그램
2. 논리 뷰 (Logical View) 🧩
- 관점: 설계자, 개발자
- 설명: 시스템의 기능적 요구사항과 정적인 구조를 보여줍니다. "시스템이 기능적으로 어떻게 구성되는가?"에 답합니다.
- 관련 UML 다이어그램: 클래스 다이어그램, 객체 다이어그램
3. 프로세스 뷰 (Process View) ⚙️
- 관점: 시스템 통합자
- 설명: 시스템의 동적인 동작, 프로세스 간의 통신 및 동시성을 다룹니다.(시스템의 비기능적 요구사항) "시스템이 어떻게 살아 움직이는가?"에 답합니다.
- 관련 UML 다이어그램: 시퀀스 다이어그램, 통신 다이어그램, 활동 다이어그램
4. 구현 뷰 (Implementation View) 👨🔧
- 관점: 프로그래머
- 설명: 실제 개발 환경의 관점에서 소프트웨어 모듈, 컴포넌트 구조를 보여줍니다. "소프트웨어는 어떻게 구현되고 관리되는가?"에 답합니다.
- 관련 UML 다이어그램: 컴포넌트 다이어그램, 패키지 다이어그램
5. 배포 뷰 (Deployment View) 🖥️
- 관점: 시스템 엔지니어
- 설명: 소프트웨어가 어떤 하드웨어(물리적인 아키텍처)에 어떻게 배포되는지를 보여줍니다. "시스템은 어떤 물리적 환경에 놓이는가?"에 답합니다.
- 관련 UML 다이어그램: 배포 다이어그램
이렇게 4+1 뷰 모델을 활용하면 복잡한 시스템의 아키텍처를 다양한 관점에서 명확하게 이해하고, 모든 이해관계자가 효과적으로 소통하며 성공적인 프로젝트를 이끌어갈 수 있습니다! ✨
문제 | 4+1 뷰 모델을 모두 쓰시오. |
답변 | |
정답 | 정답 보기 |
📝 정처기 실기 대비 실전 문제
문제 | 컴포넌트 사이의 종속성을 표현하고, 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현하는 다이어그램 |
답변 | |
정답 | 정답 보기 |
문제 | 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현한 다이어그램 |
답변 | |
정답 | 정답 보기 |
문제 | 소프트웨어 아키텍처 4+1 뷰 중 시스템의 기능적인 요구사항이 어떻게 제공되는지 설명해주는 설계자 및 개발자 관점 뷰는? |
답변 | |
정답 | 정답 보기 |
문제 | 소프트웨어 아키텍처 4+1 뷰 중 시스템의 비기능적인 속성으로서 자원의 효율적인 사용, 병행 실행, 비동기, 이벤트 처리등을 표현한 개발자, 시스템 통합자 관점 뷰는? |
답변 | |
정답 | 정답 보기 |
문제 | 소프트웨어 아키텍처 4+1 뷰 중 개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여주는 뷰로 컴포넌트 구조와 의존성을 보여주고 컴포넌트에 관한 부가적인 정보를 정의하는 뷰는? |
답변 | |
정답 | 정답 보기 |
문제 | 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현하는 다이어그램 |
답변 | |
정답 | 정답 보기 |
문제 | 객체 간 상호 작용을 메시지 흐름으로 표현한 다이어그램으로 객체 간의 동적 상호 작용을 시간적 개념을 중심으로 모델링하는 다이어그램 |
답변 | |
정답 | 정답 보기 |
🔁 복습 문제
문제 | 구조 다이어그램 종류를 모두 쓰시오. |
답변 | |
정답 | 정답 보기 |
문제 | 행위 다이어그램 종류를 모두 쓰시오. |
답변 | |
정답 | 정답 보기 |
문제 | 4+1 뷰 모델을 모두 쓰시오. |
답변 | |
정답 | 정답 보기 |