자격증/정보처리기사

[정보처리기사 실기 이론] 구조적(정적) 다이어그램 종류-클래스/패키지/컴포넌트 다이어그램

꾸행일기 2025. 7. 4. 08:00

📦 구조적 다이어그램 (Structural Diagrams) – ‘정지된 설계도’

[클객 컴배 복패]

1️⃣ 클래스 다이어그램 (Class Diagram)

  • 어원의 의미:  같은 성격끼리 분류한다는 뜻
  • 구성요소

 

구성 요소 설명
클래스
(Class)
객체를 생성하기 위한 청사진 역할을 한다. 공통 속성, 연산(메서드), 관계, 의미를 공유하는 실제 객체들의 집합이다.
속성
(Attribute)
클래스가 가지는 데이터를 나타낸다. 변수 형태로, 인스턴스별로 저장되는 값을 정의하며 name: Type 형태로 표기
연산
(Operation)
클래스가 수행할 수 있는 기능을 추상적으로 정의한다.매개변수와 반환 타입을 포함해 operation(params): ReturnType 형식으로 작성
메서드
(Method)
연산의 구현체로, 실제 코드 수준에서 동작하는 함수를 의미. 시퀀스 다이어그램 등에서 호출될 때 사용
접근 제어자
(Access Modifier)
클래스에 접근할 수 있는 접근 권한을 나타낸다.
+ : 클래스 외부 접근 허용(public)
- : 클래스 내부 접근만 허용(private)
# : 동일 패키지/파생 클래스에서 접근 가능(protected)
~ : 동일 패키지 클래스에서 접근 가능(default)
  • 클래스 간의 관계
관계 종류 정의 UML 표기법 실전 예시
연관
(Association)
클래스가 서로 개념적으로 연결된관계 실선 (ㅡ) Customer -------- Order: 고객이 주문을 관리한다
의존
(Dependency)
하나의 클래스가 또 다른 클래스를 사용하는 관계. 짧은 시간 동안만 연관을 유지. 점선 화살표 (--->) ReportGenerator -.-▶ DatabaseConnection: 보고서 생성 시 DB 연결을 일시적으로 사용
일반화
(Generalization)
상속 관계.하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현하는 관계. 일반적인 개념을 부모(상위)라 하고 구체적인 개념을 자식(하위)라고 함. 그래서 다른 의미로 상속 관계라고도 함.  “~은 ~이다”라는 ‘is‑a’ 관계를 나타낸다. 빈 삼각형 화살표 (--▷) Vehicle --▷ Car: 자동차는 차량이다
실체화
(Realization)
인터페이스 구현. 추상클래스나 인터페이스를 상속받아 자식 클래스가 추상 메서드를 구현할 때 사용하는 관계 점선 + 빈 삼각형 (-.▷) Comparable -.▷ Employee: 직원 객체가 비교 기능을 제공
포함
(Composition)
전체(Composite)가 부분(Component)를 강하게 소유하고, 전체가 소멸하면 부분도 함께 소멸됩니다. ‘전체는 부분을 관리한다’는 의미로, 부분의 라이프사이클이 전체에 종속됩니다.
강한 소유(집↔방). 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계를 표현.
채워진 마름모 () Library ◆— Book: 도서관이 폐관하면 책도 관리 대상에서 사라짐
집합
(Aggregation)
전체가 부분을 느슨하게 묶어 둔 관계로, 부분은 전체와 독립적입니다. 부분의 라이프사이클은 전체와 무관하게 유지될 수 있습니다. 하나의 객체에 여러 개의 독립적인 객체들이 구성되는 관계. 하나의 사물이 다른 사물에 포함되어 있는 관계 표현. 빈 마름모 () Team ◇— Player: 팀이 해체되어도 선수 객체는 여전히 존재

 


2️⃣ 패키지 다이어그램 (Package Diagram)

    • 어원의 의미 : 관련 클래스를 묶음(패키지)
    • 구성요소
      • 패키지 / 의존 관계

1) 🌳 패키지 (Package) — 시스템을 정리하는 폴더

무엇을 나타내는가? 클래스, 인터페이스 등 여러 코드들을 관련 있는 것끼리 묶은 덩어리. 마치 컴퓨터에서 ‘음악’, ‘사진’ 폴더처럼
왜 쓰는가? 시스템이 커질수록 한눈에 보기가 어려움. 패키지로 묶으면 어떤 기능이 어디 있는지 보기 쉽고 유지보수도 편함.
어떻게 생겼나? 폴더처럼 생긴 아이콘에 이름을 붙여 사용한다. 보통 UML에서는 작은 탭이 달린 사각형으로 표현된다.
예시 예를 들어 쇼핑몰 시스템에
📁 OrderPkg → 주문 관련 클래스들
📁 PaymentPkg → 결제 관련 클래스들
📁 MemberPkg → 회원 관련 클래스들
 
  • 👉 정리하자면, **“패키지 = 시스템 기능별 정리 폴더”**

 

2) 🔗 의존 관계 (Dependency) — 다른 패키지의 기능을 잠깐 빌려 씀

무엇을 나타내는가? A 패키지가 B 패키지의 기능을 일시적으로 빌려서 사용할 때 나타내는 관계
표기법은? 점선 화살표(──▶) 로 나타내. 방향은 ‘빌려 쓰는 쪽 → 빌려지는 쪽’
왜 필요한가? “어떤 패키지가 다른 패키지의 기능에 의존한다”는 걸 알려줘서,
→ 누가 누구에게 영향을 주는지 쉽게 파악할 수 있어.
예시 📁 OrderPkg ──▶ PaymentPkg
→ 주문 기능은 결제 기능을 호출해서 사용함.
→ 결제 로직이 바뀌면 주문 쪽도 영향 받을 수 있음.
 
  • 👉 쉽게 말하면, “의존 = 빌려쓰기 관계”,
    “점선 화살표 = 이쪽이 저쪽 걸 잠깐 써요~” 라는 의미

3️⃣ 컴포넌트 다이어그램 (Component Diagram)

    • 어원의 의미: ‘componentem’(함께 놓인 요소) → 모듈 단위
    • 개념 : 시스템을 구성하는 큰 부품들(=컴포넌트)을 보여주는 다이어그램
    • 구성요소
      • 컴포넌트 / 인터페이스 / 의존 관계
구성 요소 쉽게 말하면 정의 및 설명 예시
컴포넌트
(Component)
시스템의 부품 프로그램에서 독립적으로 실행되거나 배포 가능한 덩어리. 보통 하나의 기능 단위. 📦 회원관리 서비스, 주문 처리 모듈, 결제 API
인터페이스
(Interface)
연결 포트 컴포넌트가 어떤 기능을 제공하거나 사용할 수 있는지 외부에 알려주는 연결점. 🔌 로그인 요청, 결제 승인, 상품 목록 가져오기
의존 관계
(Dependency)
빌려 씀 A 컴포넌트가 B 컴포넌트의 기능을 사용하려면, 점선 화살표로 연결함. 주문 컴포넌트 ─▶ 결제 컴포넌트

 

🧠 각각을 더 쉽게 풀어보면…

1) 📦 컴포넌트 (Component)

  • 프로그램의 기능을 담당하는 하나의 "덩어리"
  • 보통 하나의 .jar, .dll, .module 파일로 배포 가능
  • UML에서 직사각형 박스로 그리며, 좌상단에 두 개 겹친 작은 사각형 아이콘이 붙어 있음
     

2)🔌 인터페이스 (Interface)

  • 컴포넌트끼리 소통할 때 쓰는 “메뉴판” 같은 역할
  • 두 종류:
    • 제공 인터페이스 (Provided): 내가 제공하는 기능 → 원형 포트 ●
    • 요구 인터페이스 (Required): 내가 필요한 기능 → U자 모양 ⊃
  • 예시:
    • 결제 서비스는 결제 승인()이라는 기능을 제공 (Provided)
    • 주문 컴포넌트는 결제 승인()을 요구 (Required)

3)➰ 의존 관계 (Dependency)

  • 점선 화살표 ────▶
  • "이쪽 컴포넌트가 저쪽 기능을 잠깐 쓸 거예요~" 라는 의미
  • 예시:
    • OrderComponent ───▶ PaymentComponent