📌 UML (Unified Modeling Language)
UML(Unified Modeling Language)은 소프트웨어 시스템을 시각적으로 표현하기 위한 표준 모델링 언어이다. 소프트웨어 개발 과정에서 시스템의 구조와 동작을 명확하게 정의하고, 개발자 간 원활한 의사소통을 가능하게 해준다. 또한, UML은 대표적인 객체지향 모델링 언어로 객체지향 설계를 지원하여 다양한 다이어그램을 통해 요구사항을 분석하고 시스템을 설계할 수 있다.
🔴 UML 특징
1️⃣ 가시화 언어(Visualization Language)
- UML은 시스템의 구조와 동작을 시각적으로 표현할 수 있도록 지원한다. 다이어그램을 활용하여 설계 개념을 그림으로 나타내면 누구나 쉽게 이해할 수 있다.
2️⃣ 명세화 언어(Specification Language)
- UML은 소프트웨어 시스템의 구성 요소와 관계를 명확하게 문서화할 수 있다. 이를 통해 개발자는 정확한 요구사항을 정의하고, 체계적인 설계를 수행할 수 있다.
3️⃣ 구축 언어(Construction Language)
- UML을 기반으로 소프트웨어 시스템을 설계하면, 실제 구현 단계에서 개발자가 이를 참고하여 개발을 진행할 수 있다. 따라서 UML은 설계에서 개발로 이어지는 중요한 역할을 한다.
4️⃣ 문서화 언어(Document Language)
- UML 다이어그램은 프로젝트의 산출물로 활용될 수 있으며, 유지보수 및 향후 개선 작업에 유용한 문서 역할을 한다. 개발 이후에도 시스템의 동작과 구조를 파악하는 데 도움을 준다.
🔴 UML 구성 요소
UML(Unified Modeling Language)에서는 시스템을 시각적으로 모델링하기 위해 사물(Things), 관계(Relationships), 다이어그램(Diagrams)**이라는 세 가지 주요 구성 요소를 사용합니다.
1️⃣ 사물
UML 모델에서 나타내고자 하는 객체나 개념
- 구조적 사물(Structural Things): 클래스, 인터페이스, 협력, 컴포넌트, 노드 등.
- 행위적 사물(Behavioral Things): 상호작용, 상태 기계 등.
- 그룹화 사물(Grouping Things): 패키지 등.
- 주석 사물(Annotational Things): 주석 등.
2️⃣ 관계
사물들 간의 연결 및 상호작용을 나타냄
관계는 사물과 사물 사이의 연관성을 나타내며, UML 다이어그램에서 중요한 역할을 합니다. 주요 관계 유형으로는 연관 관계, 집합 관계, 포함 관계, 일반화 관계, 의존 관계, 실체화 관계 등이 있으며, 다양한 유형의 관계를 통해 시스템 내 객체 간의 상호작용을 표현합니다. 각각의 관계는 특정한 의미와 표현 방법을 가지고 있습니다.
1. 연관 관계 (Association)
- 관련된 관계
- 두 개 이상의 사물이 서로 연관되어 있는 관계입니다. 사물 간의 연결을 실선으로 표현하며, 관계의 방향성을 화살표로 나타냅니다.
- 양방향 관계일 경우 화살표를 생략할 수 있습니다. 객체의 개수를 의미하는 다중도는 선 위에 표시합니다.
- 예제 : 사람이 집을 소유하는 관계. 사람쪽에 표기된 다중도가 1이므로 집은 한 사람에 의해서만 소유될 수 있다.
2. 집합 관계 (Aggregation)
- 집홥관계 - 집약관계 : 부분 객체는 독립적
- 한 사물이 다른 사물에 포함된 관계로, 포함하는 쪽(전체)과 포함되는 쪽(부분)은 독립적입니다. 전체에서 부분으로 향하는 속 빈 마름모를 사용하여 표현합니다.
- 하나의 사물이 다른 사물에 포함되어 있는 관계로, 전체와 부분으로 구분되어지며 서로 독립적이다.
- 클래스들 사이의 전체 또는 부분 같은 관계
- 예제 : 프린터(부분)는 컴퓨터 (전체)에 연결해서 사용할 수 있으며, 다른 컴퓨터(전체)에 연결해서 사용할 수도 있다.
3. 포함 관계 (Composition)
- 집홥관계 - 합성관계 : 부분 객체는 의존적
- 포함하는 사물(전체)이 포함되는 사물(부분)에 영향을 미치는 관계입니다. 전체와 부분은 생명주기를 공유하며 독립될 수 없습니다. 부분에서 전체로 향하는 속이 채워진 마름모로 표현합니다.
- 문(전체)을 열 수 있는 키(부분)는 하나이며, 해당 키(부분)로 다른 문(전체)을 열 수 없다. 문(전체)이 없어지면 키(부분)도 더 이상 필요하지 않다
4. 일반화 관계 (Generalization)
- 상속관계
- 한 사물이 다른 사물에 비해 더 일반적이거나 구체적인지를 나타내는 관계입니다. 일반적인 개념을 상위(부모), 구체적인 개념을 하위(자식)으로 구분하며, 하위에서 상위로 향하는 속 빈 화살표로 표현합니다.
- 상위 모듈이 하위 모듈보다 더 일반적인 개념을 가지고 있으며, 하위 모듈이 상위 모듈보다 더 구체적인 개념을 가진다.
- 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 IS-A관계라하며, 일반화 관계로 모델링한다.
- 아메리카노(구체적 개념, 자식)와 에스프레소(구체적 개념, 자식)는 커피(일반적 개념, 부모)이다.
5. 실체화 관계 (Realization)
- 추상 메서드를 오버라이딩
- 사물이 수행할 수 있거나 수행해야 하는 기능에 따라 서로를 그룹화하는 관계입니다. 사물에서 기능 쪽으로 속 빈 점선 화살표를 사용하여 표현합니다.
- 비행기는 날 수 있고 새도 날 수 있다. 그러므로 비행기와 새는 날수 있다는 행위로 그룹화 할 수 있다.
6. 의존 관계 (Dependency)
- 관련된 관계이지만, 짧은 시간만 사용하는 관계
- 사물 사이에 일시적인 연관성을 나타내며, 필요에 따라 짧은 시간 동안만 서로에게 영향을 미치는 관계입니다. 포함 관계와 달리 소유 관계는 아니지만, 한 사물의 변화가 다른 사물에도 영향을 줍니다. 영향 주는 사물이 영향 받는 사물 쪽으로 점선 화살표로 연결됩니다.
- 예시 : 등급(한 사물의 변화)이 높으면 할인율이 적용(다른 사물에도 영향)되고, 등급이 낮으면(한 사물의 변화) 할인율이 적용되지 않는다.(다른 사물에도 영향)
3️⃣ 다이어그램
UML에서 사물과 관계를 시각적으로 표현한 그림으로 UML 다이어그램은 구조적 다이어그램과 행위적 다이어그램 두 가지로 나뉩니다.
🔴 UML 다이어그램 유형
UML 다이어그램은 구조적(정적) 다이어그램과 행위적(동적) 다이어그램으로 구분됩니다.
1️⃣ 구조적 다이어그램 종류(Structure Diagram)
① 클래스 다이어그램 (Class Diagram)
- 시스템의 클래스와 이들 간의 관계를 표현
- 클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현.
- 시스템을 구성하는 클래스들 사이의 관계를 표현한다.
- 객체(Object)들을 클래스로 추상화하여 표현하는 다이어그램으로 대표적인 구조적 다이어그램이다.
클래스는 각각의 객체들이 갖는 속성과 메소드를 표현한 것으로 3개의 구획으로 나눠 이름, 속성, 메소드를 표기한다
🔎 2021년 정보처리기사 실기 3회 기출문제
다음 UML(Unified Modeling Language)에 관한 설명에서 괄호에 들어갈 알맞은 답을 쓰시오.
- (______)는 문제 해결을 위한 도메인 구조를 나타내어 보이지 않는 도메인 안의 개념과 같은 추상적인 개념을 기술하기 위해 나타낸 것이다. 또한 소프트웨어의 설계 혹은 완성된 소프트웨어의 구현 설명을 목적으로 사용할 수 있다.
- (______)는 자기만의 속성(attribute)(멤버 변수)과 일정한 행동(behavior)(메서드)으로 구성되어 있다.
- 서로 연관이나 상속, 의존 관계 등으로 서로 간의 상호 작용을 표현한다.
- 대표적인 구조 다이어그램이다
② 객체 다이어그램 (Object Diagram)
- 시스템 내의 객체와 이들 간의 관계를 표현
- 클래스에 속한 사물(객체)들, 즉 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현.
- 럼바우 객체지향 분석 기법에서 객체 모델링에 활용됨.
- 객체 정보를 보여준다.
③ 컴포넌트 다이어그램 (Component Diagram)
- 시스템의 물리적 구조. 즉, 컴포넌트와 그 상호작용을 표현
- 컴포넌트 구조 사이의 관계를 표현한다.
- 실제 구현 모듈인 컴포넌트 간의 관계나 인터페이스를 표현.
- 구현 단계에서 사용됨.
④ 배치 다이어그램 (Deployment Diagram)
- 시스템의 물리적 배치와 구성요소들 간의 관계를 표현
- 소프트웨어, 하드웨어, 네트워크를 포함한 실행 시스템의 물리 구조를 표현한다.
- 구현 단계에서 사용됨.
⑤ 복합체 구조 다이어그램 (Composite Structure Diagram)
- 시스템 내의 복함 구조를 표현
- 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현.
- 복합 구조의 클레스와 컴포넌트 내부 구조를 표현한다
⑥ 패키지 다이어그램 (Package Diagram)
- 시스템의 패키지와 이들 간의 관계를 표현
- 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현.
- 클래스나 유스 케이스 등을 포함한 여러 모델 요소들을 그룹화하여 패키지를 구성하고 패키지들 사이의 관계를 표현한다.
🔎 2020년 정보처리기사 4회 기출문제
UML을 이용한 다이어그램 중 해당 그림에 해당하는 다이어그램을 쓰시오.
- 논리적으로 관련된 클래스나 요소들을 폴더 모양으로 묶어 하나의 그룹으로 표현합니다. 의존 관계(Dependency)는 패키지 간의 참조나 의존성을 화살표로 나타냅니다. 의존 관계는 한 패키지가 다른 패키지의 기능이나 클래스를 참조하거나 사용한다는 의미입니다.
- 의존 관계 : 결제 패키지가 카드와 계좌이체 패키지에 의존합니다
🔎 2020년 정보처리기사 4회 기출문제
다음은 판매와 관련된 다이어그램이다. 해당 다이어그램의 명칭을 쓰시오.
- 패키지 다이어그램은 폴더 모양으로 패키지를 표현하고, 점선 화살표로 의존 관계를 나타냅니다.
<<import>>라는 스테레오 타입이 사용되었으므로, ordering 패키지가 products 패키지를 가져와 사용하는 의존 관계가 있다는 것을 알 수 있습니다. - <<import>> : 여기서는 ordering 패키지가 products 패키지를 가져와(import) 사용하는 것을 나타냅니다.
- 의존 관계 : ordering 패키지가 products와 pricing 패키지를 의존합니다.
2️⃣ 행위 다이어그램 종류
① 유스케이스 다이어그램 (Use Case Diagram)
- 시스템의 기능과 사용자 간의 상호작용을 표현
- 사용자의 요구를 분석하는 것으로, 기능 모델링 작업에 사용.
- 시스템이 제공해야 할 기능을 사용자의 관점에서 시각화합니다. (사용자 관점에서 시스템 행위를 표현한다.)
- 사용자(Actor)와 사용 사례(Use Case)로 구성됨.
- 유스케이스 다이어그램 구성 요소
- 시스템 및 시스템 범위 :
시스템 내부의 유스케이스들을 사각형으로 묶어 시스템의 범위를 표현합니다. - 액터 :
시스템과 상호작용하는 외부 요소로, 주 액터는 시스템을 사용해 이득을 얻는 대상을 의미하고, 부 액터는 주 액터의 목적 달성을 돕는 외부 시스템입니다. - 유스케이스 :
사용자가 보는 관점에서 시스템이 액터에게 제공하는 서비스나 기능을 나타냅니다. - 관계 :
액터와 유스케이스, 유스케이스와 유스케이스 사이의 연결을 표현합니다.
- 시스템 및 시스템 범위 :
- 유스케이스에서 나타날 수 있는 관계
- 포함 관계 :
두 개 이상의 유스케이스가 공통적으로 수행하는 기능을 별도로 분리하여 새로운 유스케이스를 만든 경우애 포함 관계라 합니다. - 확장 관계 :
기본 유스케이스가 특정 조건을 만족할 때 유스케이스의 기능이 확장될때 원래의 유스케이스와 확장된 유스케이스와의 관계를 확장 관계라고 합니다. - 일반화 관계 :
유사한 액터나 유스케이스를 하나의 그룹으로 묶고 싶을때 그보다 일반적인 상위 개념으로 묶고 액터나 유스케이스를 만들어 이들을 연결하여 표현하는 관계이다.
- 포함 관계 :
② 시퀀스 다이어그램 (Sequence Diagram)
- 객체 간의 상호작용을 시간 순서에 따라 표현
- 상호 작용하는 시스템이나 객체들이 주고받는 메시지를 표현.
③ 커뮤니케이션 다이어그램 (Communication Diagram)
- 객체 간의 상호작용과 통신을 표현
- 동작에 참여하는 객체들이 주고받는 메시지와 객체들 간의 연관 관계를 표현.
④ 상태 다이어그램 (State Diagram)
- 객체의 생명주기 동안의 상태 변화를 표현
- 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지를 표현.
- 객체의 생명주기를 표현한다
- 럼바우 객체지향 분석 기법에서 동적 모델링에 활용됨.
⑤ 활동 다이어그램 (Activity Diagram)
- 시스템의 프로세스 또는 워크플로우를 표현
- 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현.
- 업무 처리 과정이나 연산이 수행되는 과정을 표현한다.
⑥ 상호작용 개요 다이어그램 (Interaction Overview Diagram)
- 시스템의 상호작용을 하나의 고수준 워크플로우로 표현
- 상호작용 다이어그램 간의 제어 흐름을 표현.
⑦ 타이밍 다이어그램 (Timing Diagram)
- 객체의 행동과 시간에 따른 상호작용을 표현
- 객체 상태 변화와 시간 제약을 명시적으로 표현.
2023년 3회 정보처리기사 실기 기출문제
문제
UML관계에 대한 설명이다. 다음 (___1___), (___2___)에 들어갈 알맞은 용어를 쓰시오.
눈에 보이지 않는 것을 개념적으로 표현하는 것이 '추상화'라하며, 이는 실세계의 복잡한 상황을 간결하고 명확하게 개념화(槪念化)하는 것이다.
(___1___)은 클래스들 사이의 전체 또는 부분 같은 관계를 나타내는 것이고,
(___2___)은 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 IS-A관계라하며, 일반화 관계로 모델링한다.
정답
집합 관계 (Aggregation)
일반화 관계 (Generalization)
해설
UML에서 집합 관계(Aggregation) 는 전체와 부분 간의 관계를 나타내며, 부분이 독립적으로 존재할 수 있는 관계를 의미합니다. 예를 들어, "자동차"와 "바퀴"의 관계에서 바퀴는 자동차의 일부이지만, 자동차와 분리되어도 바퀴 자체로 존재할 수 있습니다.
일반화 관계(Generalization) 는 상위 개념(부모 클래스)이 하위 개념(자식 클래스)을 포함하는 관계로, IS-A 관계를 가집니다. 예를 들어, "동물"이란 상위 개념이 있을 때, "개"나 "고양이"는 동물의 하위 개념이 됩니다. 이를 통해 공통된 속성과 동작을 상속받아 코드의 재사용성을 높일 수 있습니다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
'코딩일기 > 자격증' 카테고리의 다른 글
[정보처리기사] 소프트웨어 개발 보안 | 대표적인 보안 공격 기법 | 서비스 공격 유형 | 정보처리기사 실기 기출 문제 (1) | 2024.07.26 |
---|---|
[정보처리기사] 데이터베이스 키의 종류와 개념 (0) | 2024.07.26 |
[정보처리기사] 화이트박스 테스트와 블랙박스 테스트 | 애플리케이션 테스트 유형 (1) | 2024.07.22 |
[정보처리기사] 재귀함수 | 2022년 정보처리기사 실기 (0) | 2024.07.22 |
[정보처리기사] 암호 알고리즘 | 양방향 암호화(대칭 키 암호화와 비대칭 키 함호화)와 단방향 암호화(Hash, 해시) (0) | 2024.07.19 |