UML (Unified Modeling Language)
핵심 인사이트 (3줄 요약)
소프트웨어 시스템을 시각화하는 표준 모델링 언어. 구조 다이어그램(클래스·컴포넌트)과 행위 다이어그램(시퀀스·유스케이스·상태)으로 분류. 기술사 시험에서 다이어그램 종류와 목적을 명확히 구분해야 한다.
📝 기술사 모의답안 (2.5페이지 분량)
📌 예상 문제
"UML (Unified Modeling Language)의 개념과 구성 요소를 설명하고, 소프트웨어 품질 및 생산성 향상 측면에서의 적용 방안을 기술하시오."
Ⅰ. 개요
1. 개념
UML이란 소프트웨어 시스템의 구조와 행위를 시각화하고 명세하는 국제 표준(OMG) 그래픽 언어다.
비유: "건축 도면 언어" - 평면도, 배관도, 전기도 등 목적별 다른 도면이 있듯이 UML도 관점별 다이어그램 존재
Ⅱ. 구성 요소 및 핵심 원리
2. UML 다이어그램 분류 (14종)
UML 다이어그램
├── 구조 다이어그램 (7종) - 정적 측면
│ ├── 클래스 다이어그램 ★★★ (가장 중요)
│ ├── 객체 다이어그램
│ ├── 컴포넌트 다이어그램 ★★
│ ├── 배포 다이어그램 ★★
│ ├── 패키지 다이어그램
│ ├── 합성 구조 다이어그램
│ └── 프로파일 다이어그램
│
└── 행위 다이어그램 (7종) - 동적 측면
├── 유스케이스 다이어그램 ★★★
├── 시퀀스 다이어그램 ★★★
├── 협업(통신) 다이어그램
├── 상태 다이어그램 ★★
├── 활동 다이어그램 ★★
├── 타이밍 다이어그램
└── 상호작용 개요 다이어그램
3. 핵심 다이어그램 상세
클래스 다이어그램 (Class Diagram)
┌─────────────────┐ ┌─────────────────┐
│ Animal │ │ Engine │
├─────────────────┤ ├─────────────────┤
│ -name: String │ │ -power: int │
│ -age: int │ ├─────────────────┤
├─────────────────┤ │ +start(): void │
│ +eat(): void │ └─────────────────┘
│ +sleep(): void │ ◆ (합성:Composition)
└────────┬────────┘ │
△ (상속:Inheritance) └─────────────────┐
│ │
┌─────┴──────┐ ┌──────────┴──┐
│ Dog │ │ Car │
├────────────┤ ──────────────→ ├─────────────┤
│ │ (의존:Dependency) │ │
│ +bark() │ │ +drive() │
└────────────┘ └─────────────┘
관계 표기:
──────── 연관 (Association): 일반적 관계
────────▷ 의존 (Dependency): 사용 관계 (점선)
────────◇ 집합 (Aggregation): 포함, 독립 존재 가능
────────◆ 합성 (Composition): 포함, 독립 존재 불가
────────△ 일반화 (Generalization): 상속
────────◁ 실현 (Realization): 인터페이스 구현 (점선)
시퀀스 다이어그램 (Sequence Diagram)
시간의 흐름에 따른 객체 간 메시지 교환
사용자 브라우저 서버 DB
│ │ │ │
│─로그인 폼 요청─►│ │
│◄─────────────────│ │
│─사용자ID/PW 입력─►│ │
│ │─POST /login─►│ │
│ │ │─SELECT * FROM users─►│
│ │ │◄─사용자 정보────────│
│ │◄─200 OK + JWT│ │
│◄─대시보드 이동──│ │ │
│ │ │ │
활성화 박스: 실행 중
점선 화살표: 응답
실선 화살표: 요청
상태 다이어그램 (State Diagram)
주문 상태 전이:
[주문 접수]──결제 완료──►[결제 완료]──배송 시작──►[배송 중]
│ │ │
│ 취소 신청 배송 완료
│ │ │
▼ ▼ ▼
[주문 취소]◄──취소 승인──[취소 처리 중] [배송 완료]
진입 액션(entry), 탈출 액션(exit), 내부 전이 표현 가능
활동 다이어그램 (Activity Diagram)
결제 프로세스:
(시작)
│
▼
[장바구니 확인]
│
▼
[결제 방식 선택]
│
├─카드──►[카드 정보 입력]──►[카드사 승인 요청]──┐
│ ▼
└─계좌──►[계좌 정보 입력]──►[은행 이체 요청]───►[결제 완료]
│
(끝)
병렬 분기: 재고 확인 || 결제 처리 동시 진행
Ⅲ. 기술 비교 분석
4. 다이어그램 선택 가이드
| 목적 | 사용 다이어그램 |
|---|---|
| 클래스/속성/관계 파악 | 클래스 다이어그램 |
| 사용자 기능 파악 | 유스케이스 다이어그램 |
| 객체 간 메시지 흐름 | 시퀀스 다이어그램 |
| 객체 상태 변화 | 상태 다이어그램 |
| 업무 흐름/프로세스 | 활동 다이어그램 |
| 시스템 구성 요소 | 컴포넌트 다이어그램 |
| 물리적 배포 구조 | 배포 다이어그램 |
5. 클래스 관계 비교 (헷갈리는 것)
집합(Aggregation) vs 합성(Composition):
집합: 팀 ◇────── 선수
- 선수는 팀 없이도 존재 가능
- 팀 해체 → 선수는 여전히 존재
합성: 집 ◆────── 방
- 방은 집 없이 존재 불가
- 집 철거 → 방도 사라짐
의존(Dependency) vs 연관(Association):
의존: 함수 매개변수, 지역변수로 사용 (느슨한 결합)
연관: 클래스 속성으로 참조 (지속적 관계)
Ⅳ. 실무 적용 방안
6. 실무에선? (기술사적 판단)
- 설계 문서: 클래스+시퀀스 다이어그램이 핵심
- 요구사항 단계: 유스케이스 다이어그램
- 마이크로서비스: 컴포넌트+배포 다이어그램
- 도구: PlantUML, Draw.io, StarUML
- 기술사 포인트: 다이어그램 종류별 목적과 요소 구분
Ⅴ. 기대 효과 및 결론
| 효과 영역 | 내용 | 정량적 목표 |
|---|---|---|
| 개발 품질 | 체계적 방법론·테스트로 결함 조기 발견 및 수정 | 결함 밀도(Defect Density) 50% 감소 |
| 개발 생산성 | 자동화·표준화로 반복 작업 제거 및 협업 효율 향상 | 개발 속도 30~50% 향상 |
| 유지보수성 | 모듈화·문서화로 이후 변경·확장 비용 절감 | 유지보수 비용 40% 절감 |
결론
**UML (Unified Modeling Language)**은(는) 소프트웨어 공학 방법론은 AI 보조 코딩(GitHub Copilot), 로우코드 플랫폼, 플랫폼 엔지니어링의 부상으로 개발자의 인지 부하를 줄이면서 품질과 속도를 동시에 확보하는 방향으로 진화하고 있다.
※ 참고 표준: ISO/IEC 25010(SQuaRE), IEEE 830, CMMI v2.0, OWASP
어린이를 위한 종합 설명
UML를 쉽게 이해해보자!
소프트웨어 시스템을 시각화하는 표준 모델링 언어. 구조 다이어그램(클래스·컴포넌트)과 행위 다이어그램(시퀀스·유스케이스·상태)으로 분류. 기술사 시험에서 다이어그램 종류와
왜 필요할까?
기존 방식의 한계를 넘기 위해
어떻게 동작하나?
복잡한 문제 → UML 적용 → 더 빠르고 안전한 결과!
핵심 한 줄:
UML = 똑똑하게 문제를 해결하는 방법
비유: UML은 마치 요리사가 레시피를 따르는 것과 같아. 혼란스러운 재료들을 정해진 순서대로 조합하면 → 맛있는 요리(최적 결과)가 나오지! 🍳