소프트웨어공학_0408_이론_UML모델링

지원·2025년 4월 8일
0

소프트웨어공학

목록 보기
5/11
post-thumbnail

UML을 이용한 모델링

클래스 다이어그램의 구성요소

클래스
공통의 속성, 메서드(오퍼레이션), 관계, 의미를 공유하는 객체 집합에 대한 기술

클래스의 속성

  • 클래스가 가진 데이터
  • 클래스의 구조적 특성에 이름을 붙인 것으로, 인스턴스가 보유할 수 있는 값을 범위를 기술

클래스의 메서드

  • 클래스가 수행할 수 있는 작업을 정의

  • 오퍼레이션

  • 이름, 타입, 매개변수들과 연관된 행위를 호출할 때 제약사항이 요구되는데, 이 제약사항을 명세하는 클래스의 행위적 특성

  • public
    -- 부호: +
    -- 자신의 속성이나 동작을 외부에 공개하는 접근 제어

  • private
    -- 부호: -
    -- 상속된 파생 클래스만 액세스할 수 있는 접근 제어

  • protected
    -- 부호: #
    -- 구조체의 멤버 함수만 접근할 수 있으며 외부에서 액세스할 수 없는 접근 제어

클래스는 객체를 생성할 수 있는 구조와 정보를 갖는 틀
객체는 클래스의 인스턴스

객체 생성 다이어그램

클래스 정의 >> 메인 메서드 실행 >> 객체 생성 >> 실행

객체와 클래스 사이의 관계와 표현

연관 관계

멤버 변수로 참조

  • 한 클래스가 다른 클래스의 인스턴스를 필드로 가지고 있는 경우
  • A는 B를 가진다(has-a)관계

의존 관계

메서드로 참조

  • 한 클래스의 메서드가 다른 클래스의 객체를 일시적으로 사용
  • A는 B를 사용한다(uses-a)관계
  • 짧은 생명주기, 메서드 내에서만 사용하는 것이 일반적
  • 메서드 호출이 완료되면 종료

연관 관계와 의존 관계의 차이

연관 관계

  • 지속성 있음
  • 실선으로 표현

의존 관계

  • 일시적임
  • 점선으로 표현

연관 관계 모델링

  • 단방향 연관 관계 모델링
  • 양방향 연관 관계 모델링

집합 관계

  • 하나의 객체가 독립적인 객체 여러 개로 구성되는 has a 관계
  • 부분이 전체에 속하지만 독립적 존재 가능
  • 학생과 학교의 관계
  • 차가 없어진다고해서 엔진, 휠, 샤시가 없어지진 않음

복합 관계

  • 종속적인 관계
  • 전체 객체의 생명주기와 부분 객체의 생명주기가 연결됨
  • 사람과 심장의 관계

집합 관계와 복합 관계 모델링

스마트폰 시스템

  • 집합 관계 (충전기(스마트폰이 없어도 독립적으로 존재 가능))
  • 복합 관계 (메인보드, 스피커, 내부 부품들)

실체화 관계

추상 클래스나 인터페이스를 상속받아 자식 클래스가 추상 메서드를 구현할 때 사용하는 관계

  • UML에서는 점선 화살표와 빈 삼각형으로 표현
  • 화살표는 인터페이스나 추상 클래스를 향함

순차 다이어그램의 구성 요소

순차 다이어그램
객체 간의 동적 상호작용을 시간 개념을 중심으로
모델링하는 UML다이어그램

주요 구성 요소

  • 객체
  • 생명선 (객체의 존재 기간)
  • 활성화 (객체가 작업을 수행중임을 나타내는 사각형)
  • 메시지 (객체 간 통신을 나타내는 화살표)
  • 반환 메시지 (메서드 호출의 결과 반환)
  • 자기 호출 (객체가 자신의 메서드 호출)
  • 희귀 메시지 (같은 객체에 대한 함수(메서드)를 호출)

상호작용 다이어그램

순차 다이어그램

객체들 사이의 이동 경로를 시간 흐름으로 표현, 시간 순서가 중요할 때 적합

순자 다이어그램의 표현

수직 방향이 시간의 흐름을 나타내는 특성

  • 객체와 생명선
  • 활성화
  • 메시지 유형

순차 다이어그램의 메시지 표현

  • 호출 메시지(동기 메시지)
  • 답신 메시지
  • 비동기 메시지

통신 다이어그램

메시지(데이터)의 흐름과 객체 간 관계를 중점적으로 표현, 메시지 흐름을 보려고 할 때 적합함

의존 관계의 스테레오타입

access
한 패키지의 요소가 다른 패키지의 요소를 비공개적으로 사용할 수 있도록 허용하지만, 그 요소 자체를 가져오진 않는다.

import
한 패키지의 요소가 다른 패키지의 요소에 공개적으로 접근할 수 있도록 허용, export하는 것이 가능

0개의 댓글