1. 소프트웨어 모델링 개요

  • 소프트웨어 모델링

    • 실세계 환경을 특정 목적에 맞게 다양한 관점에서 표현하는 기법
    • 복잡한 문제를 추상화(Abstraction)를 통해 간단하게 언어적으로 표현
  • 모델링의 특징

    • 실세계 문제에 대한 필수 사항 모델링이 요구사항 분석의 핵심
    • 정의된 규칙을 사용하여 다양한 관점의 뷰(View)를 제공
    • 여러 분야 엔지니어들이 공통 개념을 효과적으로 공유
    • 요구사항 분석(Analysis)과 설계(Design)의 핵심
  • 모델링의 필요성 (7가지)

    • 복잡함 관리 / 구조 시각화 / 커뮤니케이션 / 요구사항 이해 / 개발 시스템 이해 / 솔루션 실험 / 문서화

2. 모델링의 3가지 관점

관점설명UML 다이어그램
기능 모델링시스템이 제공하는 기능의 관점에서 표현유스케이스, 활동 다이어그램
정적/구조적 모델링내부 구성 요소와 요소 간 관계 표현 (시간 개념 없음)클래스, 객체, 배포, 패키지 다이어그램
동적 모델링구성 요소 간 상호작용 및 상태 변화 표현상태머신, 활동, 통신, 시퀀스 다이어그램
  • 기능 모델링 기법 (Functional Modeling)

    • SSA(DFD, DD), SADT, PSL/PSA, OOAD(유스케이스)
  • 정적/구조적 모델링 기법 (Static/Structural Modeling)

    • Object Modeling, EER(Enhanced Entity Relationship) 모델
    • Entity는 속성(attribute)과 동작(Operation)을 가짐
  • 동적 모델링 3가지 형태 (Dynamic Modeling)

    • 상태 머신 표현 / 제어 흐름 모델 / 데이터 흐름 모델
    • 기법: STD(State Transition Diagram), SDL, PAT(Process Activation Table)

3. UML 개요

  • UML (Unified Modeling Language)

    • 설계자·관계자가 분석, 설계, 구현 과정에서 의사소통을 위한 표준화된 모델링 언어
    • OMG에서 그래디 부치(OOAD), 이바 야콥슨(OOSE), 제임스 럼바(OMT)를 연합하여 제정 (1997년 UML 1.1)
  • 2015년 UML 2.5 발표

    • 구조 다이어그램 7개 + 행위 다이어그램 7개 = 총 14개
인물방법론특징
그래디 부치OOAD
(Object Oriented Analysis and Design)
설계 중심, 시스템을 여러 뷰(View)로 분석
이바 야콥슨OOSE
(Object Oriented Software Engineering)
유스케이스 강조
제임스 럼바OMT
(Object Modeling Technique)
객체 모델 + 동적 모델 + 기능 모델의 3가지 모델 사용

4. UML 구조 다이어그램 (정적)

다이어그램목적
클래스 (Class)클래스, 인터페이스, 통신 및 이들의 관계 표현
객체 (Object)특정 시점의 객체 상태와 객체 간 관계 표현
컴포넌트 (Component)컴포넌트 구조와 관계 표현
배치 (Deployment)실행 노드와 컴포넌트의 물리적 구성 표현
패키지 (Package)구성요소를 그룹화하여 패키지 구성, 패키지 간 관계 표현

4.1. 클래스 다이어그램

  • 클래스

    • 동일한 속성, 오퍼레이션, 관계, 의미를 공유하는 객체를 기술
    • 객체를 캡슐화(속성 + 오퍼레이션 = 정보 은닉)
  • 가시성 표현

    • +: public (생략 시 오퍼레이션 기본값)
    • #: protected
    • -: private (생략 시 속성 기본값)
    • ~: package
클래스 간 관계표기설명
의존
(Dependency)
점선 화살표
- - ->
클래스 객체를 매개변수 또는 리턴값으로 사용
사용 후 관계 종료
연관
(Association)
실선 화살표
———>
한 클래스가 다른 클래스의 객체 참조를 멤버변수로 보유
집합
(Aggregation)
빈 마름모
◇———
전체-부분 관계
부분 객체는 독립적으로 존재 가능 (외부에서 주입)
복합
(Composition)
채운 마름모
◆———
전체-부분 관계
전체 소멸 시 부분도 소멸 (내부에서 new 생성)
일반화
(Generalization)
실선 삼각형
———▷
상속 관계
자식이 부모의 속성·오퍼레이션 상속
실체화
(Realization)
점선 삼각형
- - -▷
인터페이스를 상속받아 구체적으로 구현
  • 집합 vs 복합 구분법
    • 집합은 외부에서 객체를 주입(setter),
    • 복합은 내부에서 new로 직접 생성하여 생명주기를 함께 관리

4.2. 컴포넌트 다이어그램

클래스는 논리적 추상화 ↔ 컴포넌트는 물리적 요소

  • 컴포넌트

    • 런타임에 독립적으로 배포·실행되는 물리적 단위 (exe, jar, dll 등)
    • 아키텍처 설계 시 컴포넌트-커넥터 뷰로 표현 (커넥터 = 상호작용 표현)
  • 의존 관계

    • 한 컴포넌트 변경 시 다른 컴포넌트에도 영향이 미침
    • 점선 화살표로 표현

4.3. 배치 다이어그램

  • 배치 다이어그램 (Deployment Diagram)
    • 목적: 하드웨어 자원 간 연결 관계 + 소프트웨어 컴포넌트의 배치 상태 표현
    • UML 2.x: 아티팩트(Artifact)를 통해 컴포넌트를 노드에 배치
구성 요소설명표기
노드 (Node)컴퓨터 장치 또는 실행 환경직육면체
커넥션 (Connection)노드 간 통신 방식, 다중성 표현
아티팩트 스테레오타입설명
«script»스크립트 파일
«document»일반 문서
«source»프로그램 소스 파일
«library»정적/동적 라이브러리
«executable»프로그램 실행 파일

4.4. 패키지 다이어그램

  • 패키지: 클래스 등 여러 모델 요소를 그룹화하는 수단, 탭 달린 폴더로 표현
  • 소프트웨어 아키텍처 모델링 시 논리적으로 분할된 모듈들을 표현

(1) 패키지 간 관계

스테레오타입설명
«import»Public import. 외부에서 B가 visible. 전이적(transitive)
«access»Private import. 외부에서 B가 not visible. 비전이적
«use»A의 구현에 B가 사용됨
  • 전이성 차이
    • A«import»B«import»C → A가 C 사용 가능
    • A«access»B«access»C → A가 C 사용 불가

(2) 패키지 표준 스테레오타입

스테레오타입의미
«framework»재사용 가능한 패턴으로 구성된 패키지
«system»전체 시스템을 나타내는 패키지
«subsystem»전체 시스템의 독립된 일부분
  • 스테레오타입
    • UML 기본 요소 외에 새 요소를 만들기 위한 확장 메커니즘
    • << >> 기호로 표현

5. UML 행위 다이어그램 (동적)

다이어그램목적
유스케이스 (Usecase)시스템 사용 경우와 외부 행위자의 관계 구조적 표현
활동 (Activity)시스템 내부의 업무 수행 과정 표현
상태 (State)시스템의 내부 상태 전이 표현
순차 (Sequence)객체 간 상호작용을 시간의 흐름에 따라 표현
통신 (Communication)순차 다이어그램과 동일 내용을 객체 상호관계 관점에서 표현

5.1. 순차 다이어그램

구분순차 다이어그램통신 다이어그램
순서 표현수직 방향 배치(위→아래)메시지에 번호 부여
강점메시지 순서 파악에 효과적객체 간 관계 파악에 효과적
약점객체 간 관계(의존, 연관) 파악 불가위치로 전송 순서 판단 불가
  • 순차 다이어그램 (Sequence Diagram)
    • 객체 간의 동적 상호작용(Dynamic Interaction)을 시간(Time)을 중심으로 모델링

    • 유스케이스를 실현(Realization)한다.

    • 객체 배열: 왼쪽 → 오른쪽

    • 시간의 흐름: 위 → 아래 (수직)

구성 요소설명
객체 (Object)메시지를 송수신하는 주체, 생명선(Lifeline, 점선)을 가짐
활성화 (Activation)생명선 위 작은 사각형, 오퍼레이션 실행 중임을 표시
호출(Call) 메시지실선 + 꽉찬 화살표. 동기(Synchronous) 메시지
답신(Reply) 메시지점선 + 열린 화살표. 이전 호출의 반환
비동기(Async) 메시지실선 + 열린 화살표. 완료를 기다리지 않음
회귀 메시지같은 객체 내 메서드 호출
제어 블록조건문/루프를 위한 블록

5.2 통신 다이어그램

  • 통신 다이어그램 (Communication Diagram)
    • 구성 요소: 객체, 링크, 메시지
    • 메시지에 번호(순서)를 부여하여 순서 표현
    • 링크: 화살표 없는 실선, 양방향 연관 관계