[SW공학] UML

배창민·2025년 8월 18일
post-thumbnail

UML(Unified Modeling Language)

1. 모델링과 UML 개요

  • 모델링(Modeling)
    현실 세계를 단순화해 표현하는 기법.
    소프트웨어 개발 프로세스의 요구사항 분석 → 설계 → 구현 단계에서 주로 사용된다.

  • UML (Unified Modeling Language)
    소프트웨어 공학에서 사용되는 표준화된 범용 모델링 언어로,
    시스템을 이해하기 쉽게 다이어그램으로 시각화하는 표기법.

  • UML 다이어그램 종류

    • 정적 다이어그램: 클래스, 객체, 컴포넌트, 배치, 패키지, 복합구조
    • 동적 다이어그램: 활동(Activity), 상태(State), 유스케이스(Use Case)
    • 상호작용 다이어그램: 시퀀스(Sequence), 통신(Communication), 상호작용 개요, 타이밍

2. 소프트웨어 개발 프로세스

소프트웨어(프로그램) 개발은 일반적으로 아래 단계를 따른다.

  1. 요구사항 분석
  2. 설계 (시스템 구조, 클래스 설계 등)
  3. 구현 (코딩)
  4. 테스트 / 납품
  5. 유지보수

각 단계에서 UML 다이어그램이 활용되며, 예를 들어 요구사항 단계에서는 유스케이스 다이어그램, 설계 단계에서는 클래스 다이어그램, 동작 검증에는 시퀀스 다이어그램을 활용한다.


3. 요구사항

  • 정의: 시스템 개발에 앞서 필요한 기능이나 조건을 명시한 것.

  • 조건

    • 명확성: 동일하게 해석 가능해야 함 (모호성 제거)
    • 완전성: 필요한 요구사항이 모두 포함되어야 함
    • 일관성: 서로 상충되는 요구사항이 없어야 함
    • 검증 가능성: 실제로 테스트·검증할 수 있어야 함
  • 요구사항 프로세스

    1. 요구사항 추출
    2. 요구사항 분석
    3. 요구사항 명세
    4. 요구사항 검증
    5. 요구사항 유지보수

4. 유스케이스 다이어그램

  • 정의: 시스템과 외부 사용자(액터) 간의 상호작용을 보여주는 다이어그램.

  • 주요 요소

    • 액터(Actor): 시스템과 상호작용하는 외부 존재 (사용자, 다른 시스템 등)
    • 유스케이스(Use Case): 시스템이 제공하는 구체적인 기능 단위
  • 관계 종류

    • 연관(Association): 액터 ↔ 유스케이스 간 상호작용
    • include: 반드시 포함되는 기능 (필수 관계)
    • extend: 조건에 따라 확장되는 기능 (선택 관계)
    • 일반화(Generalization): 유사한 요소들을 추상화해 그룹화

5. 클래스 다이어그램

  • 정의: 시스템의 구조와 관계를 표현하는 정적 다이어그램.

  • 구성 요소

    • 클래스 이름, 속성, 연산(메서드)

    • 접근 제어자:

      • + public
      • - private
      • # protected
      • ~ default
  • 관계 종류

    • 연관(Association): 한 클래스가 다른 클래스를 참조
    • 집합(Aggregation): 부분-전체 관계 (Has-a), 독립적 생존 가능
    • 합성(Composition): 부분-전체 관계, 전체가 사라지면 부분도 소멸
    • 일반화(Generalization): 상속 관계 (is-a)
    • 실체화(Realization): 인터페이스 구현 관계
    • 의존(Dependency): 메소드 호출 시 다른 클래스 사용

6. 시퀀스 다이어그램

  • 정의: 시간의 흐름에 따라 객체 간 메시지 교환을 표현하는 동적 다이어그램.

  • 요소

    • 생명선(Lifeline): 객체/액터의 존재 기간
    • 메시지(Message): 동기적 호출, 비동기 호출, 응답, 객체 생성/소멸 등
  • 제어 흐름 연산자

    • alt: 조건에 따른 분기 (if-else)
    • opt: 선택적 실행 (if)
    • loop: 반복 실행
    • break: 조건 충족 시 실행 중단

오늘 배운 점 & 느낀 점

UML의 개념과 다이어그램 종류를 다시 정리하면서, 개발 과정에서 단순한 그림이 아니라 의사소통 도구라는 걸 다시금 확인할 수 있었다.
대학교 때 배웠던 내용인데, 막상 다시 보니까 여전히 헷갈리는 부분이 많았다. 유스케이스나 클래스 다이어그램 관계 표현은 한 번 보고 끝낼 게 아니라 반복해서 익혀야 할 것 같다.
특히 유스케이스 다이어그램의 경우, include나 extend를 어떤 상황에 쓰는지 아직 헷갈리는것 같다.
정리하면서 기본기를 다시 점검할 수 있었던 건 좋았다.

profile
개발자 희망자

0개의 댓글