10. UI 설계를 위한 UML

y55n·2022년 3월 24일
0

정보처리기사

목록 보기
10/50
post-custom-banner

수제비 2022 정보처리기사 실기 수험서를 보고 공부한 기록입니다.


[UML]

1. UML(Unified Modeling Language)의 개념

UML은 객체 지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어이다

2. UML의 특징

UML은 방법론을 통합한 것으로, 표준화된 모델링 기법을 제공한다

가시화 언어

  • 개념 모델 작성 시 오류가 적고 의사소통이 용이

구축 언어

  • 다양한 프로그래밍 언어로 실행 시스템의 예측 가능
  • UML을 소스 코드로 변환하여 구축 가능, 역 변환하여 역공학 가능

명세화 언어

  • 정확한 모델 제시, 완전한 모델 작성 가능

문서화 언어

  • 시스템에 대한 평가 및 의사소통의 문서

3. UML의 구성요소

사물(Things)

  • 추상적인 개념으로, 주제를 나타내는 요소
  • 단어 관점에서 '명사' 또는 '동사'를 의미

관계(Relationships)

  • 사물의 의미를 확장하고 명확히 하는 요소
  • 사물과 사물을 연결하여 관계를 표현하는 요소
  • 단어 관점에서 '형용사' 또는 '부사'를 의미

다이어그램(Diagrams)

  • 사물과 관계를 모아 그림으로 표현한 형태
  • 형식과 목적에 따라 9가지로 정의

4. UML 다이어그램

  • UML 다이어그램은 구분에 따라 구조적(정적) 다이어그램, 행위적(동적) 다이어그램으로 구분된다
  • 컴포넌트, 배치 다이어그램은 구현 단계에서 사용되는 다이어그램이다

구조적 다이어그램(Structural Diagram) / 정적 다이어그램(Static Diagram)

  • 클래스(Class)
    • 클래스 다이어그램은 객체 지향 모델링 시 클래스의 속성 및 연산과 클래스 간 정적인 관계를 표현한 다이어그램
  • 객체(Object)
    • 객체 다이어그램은 클래스에 속한 사물(객체)들, 즉 인스턴스(Instance)를 특정 시점의 객체와 객체 사이의 관계로 표현한 다이어그램
    • 연관된 모든 인스턴스를 표현
  • 컴포넌트(Component)
    • 컴포넌트 다이어그램은 시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존 관계를 나타내는 다이어그램
  • 배치(Deployment)
    • 배치 다이어그램은 컴포넌트 사이의 종속성을 표현하고, 결과물, 프로세스, 컴포넌트 등 물리적인 요소들의 위치를 표현하는 다이어그램
  • 복합체 구조(Composite Structure)
    • 복합체 구조 다이어그램은 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현하는 다이어그램
  • 패키지(Package)
    • 패키지 다이어그램은 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현한 다이어그램

행위적 다이어그램(Behavioral Diagram, 동적 다이어그램(Dynamic Diagram)

  • 유스케이스(Usecase)
    • 유스케이스 다이어그램은 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현하는 다이어그램
  • 시퀀스(Sequence)
    • 시퀀스 다이어그램은 객체 간 동적 상호 작용을 시간적 개념을 중심으로 메시지 흐름으로 표현한 다이어그램
  • 커뮤니케이션(Communication)
    • 커뮤니케이션 다이어그램은 동작에 참여하는 객체들이 주고받는 메시지를 표현하고, 메시지뿐만 아니라 객체 간의 연관까지 표현하는 다이어그램
  • 상태(State)
    • 상태 다이어그램은 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지 표현하는 다이어그램
  • 활동(Activity)
    • 활동 다이어그램은 시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서대로 표현하는 다이어그램
  • 타이밍(Timing)
    • 타이밍 다이어그램은 객체 상태 변화와 시간 제약을 명시적으로 표현하는 다이어그램

5. UML 확장 모델의 스테레오 타입(Stereotype)

  • UML의 스테레오 타입은 UML의 기본적 요소 이외의 새로운 요소를 만들어내기 위한 확장 메커니즘이다
  • 형태는 기존의 UML의 요소를 그대로 사용하지만 내부 의미는 다른 목적으로 사용하도록 확장한다
  • UML의 스테레오 타입은 ' ≪≫ ' (길러멧; Guillemet) 기호를 사용하여 표현한다

≪include≫ : 하나의 유스케이스가 어떤 시점에 반드시 다른 유스케이스를 실행하는 포함 관계

≪extend≫ : 하나의 유스케이스가 어떤 시점에 다른 유스케이스를 실행할 수도 있고, 그렇지 않을 수도 있는 확장 관계

≪interface≫ : 모든 메서드가 추상 메서드이며 바로 인스턴스를 만들 수 없는 클래스로 추상 메소드와 상수만으로 구성된 클래스

≪entity≫ : 일반적으로 정보 또는 오래 지속되는 연관된 행위를 형상화하는 클래스로 유스케이스 처리 흐름이 수행되는 과정에서 기억 장치에 저장되어야 할 정보를 표현하는 클래스

≪boundary≫ : 시스템과 외부 액터와의 상호 작용을 담당하는 클래스

≪control≫ : 시스템이 제공하는 기능의 로직 및 제어를 담당하는 클래스

[UML의 유형]

1. 클래스 다이어그램

①클래스 다이어그램(Class Diagram) 개념

클래스 다이어그램은 객체지향 모델링 시 클래스의 속성 및 연산과 클래스 간 정적인 관계를 표현한 다이어그램이다

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

클래스 다이어그램의 구성요소는 클래스 이름, 속성, 연산, 접근 제어자, 관계가 있다

클래스(Class)

  • 공통의 속성, 연산(메소드) 관계, 의미를 공유하는 객체들의 집합

속성(Attribute)

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

연산(Operation), 메소드

  • 이름, 타입, 매개변수들과 연관된 행위를 호출하는데 요구되는 제약사항들을 명시하는 클래스의 행위적 특징
  • 객체에 요청하여 행동에 영향을 줄 수 있는 서비스

접근 제어자(Access Modifier)

  • 클래스에 접근할 수 있는 정도를 표현
  • - : 클래스 내부 접근만 허용(private)
  • + : 클래스 외부 접근을 허용(public)
  • # : 동일 패키지/파생 클래스에서 접근 가능(protected)
  • ~ : 동일 패키지 클래스에서 접근 가능(default) 

③클래스 간의 관계(Relationships)

클래스의 관계는 연관 관계, 집합 관계, 포함 관계(복합 관계), 일반화 관계, 의존 관계, 실체화 관계가 있다

연관(Association)

  • 연관 관계는 클래스가 서로 개념적으로 연결된 선
  • 연관 관계는 2개 이상의 사물이 서로 관련되어 있는 상태를 표현
  • 사물 사이를 실선으로 연결하여 표현하며, 방향성은 화살표로 표현
  • 서로에게 영향을 주는 양방향 관계의 경우 화살표를 생략하고 실선으로만 연결

의존(Dependency) 관계

  • 하나의 클래스가 또 다른 클래스를 사용하는 관계
  • 다른 클래스의 멤버 함수 사용
  • 의존 관계는 사물 사이에 서로 연관은 있으나 필요에 따라 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계를 표현
  • 하나의 클래스에 있는 멤버 함수의 인자가 변함에 따라 다른 클래스에 영향을 미칠 때의 관계
  • 영향을 주는 사물이 영향을 받는 사물 쪽으로 점선 화살표를 연결하여 표현

일반화(Generalization) 관계

  • 일반화 관계는 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현
  • 일반적인 개념을 부모(상위)라고 하고, 구체적인 개념을 자식(하위)이라 함
  • 구체적(하위)인 사물에서 일반적(상위)인 사물 쪽으로 속이 빈 화살표를 연결하여 표현
  • 일반화 관계는 다른 의미로 상속 관계라고 함

실체화(Realization) 관계

  • 추상 클래스나 인터페이스를 상속받아 자식클래스가 추상 메소드를 구현할 때 사용
  • 사물이 할 수 있거나, 해야 하는 기능(행위, 인터페이스)으로 서로를 그룹화할 수 있는 관계를 표현

포함(Composition) 관계(=복합 관계)

  • 영구적이고, 집합 관계보다 더 강한 관계로 구성
  • 포함되는 쪽(Part; 부분)에서 포함하는 쪽(Whole; 전체)으로 속이 채워진 마름모를 연결하여 표현
  • 포함 관계는 집합 관계의 특수한 형태로, 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계를 표현
  • 포함 관계는 복합 관계라고도 함

집합(Aggregation) 관계

  • 하나의 객체에 여러 개의 독립적인 객체들이 구성되는 관계
  • 집합 관계는 하나의 사물이 다른 사물에 포함되어 있는 관계 표현
  • 포함되는 쪽(Part; 부분)에서 포함하는 쪽(Whole; 전체)으로 속이 빈 마름모를 연결하여 표현

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

①유스케이스 다이어그램(Usecase Diagram) 개념

유스케이스 다이어그램은 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현하는 다이어그램이다

②유스케이스 다이어그램 구성요소

유스케이스 다이어그램 구성요소는 유스케이스, 액터, 시스템, 시나리오, 이벤트의 흐름이 있다

유스케이스(Usecase)

  • 시스템이 제공해야 하는 서비스, 기능
  • 액터가 시스템을 통해 수행하는 일련의 행위

액터(Actor)

  • 사용자가 시스템에 대해 수행하는 역할
  • 시스템과 상호 작용하는 사람 또는 사물
  • 이벤트 흐름을 시작하게 하는 객체

시스템(System)

  • 전체 시스템의 영역을 표현

시나리오

  • 발생되는 이벤트의 흐름

이벤트의 흐름

  • 사람, 시스템, 하드웨어, 시간의 흐름에 의해 시작

③유스케이스 다이어그램의 관계

  • 관계는 액터와 유스케이스, 유스케이스와 유스케이스 사이에서 나타날 수 있다

포함(Include) 관계

  • 유스케이스를 수행할 때 다른 유스케이스가 반드시 수행되는 관계
  • 유스케이스 다이어그램에서는 다른 유스케이스가 나타내는 이벤트 흐름을 포함(Include)하는 관계를 유스케이스 간에 표현
  • 여러 유스케이스에서 공통적으로 발견되는 기능 표현
  • 2개 이상의 유스케이스 이벤트 흐름에서 중복적인 부분이 발생하는 경우 유스케이스 간 포함 관계를 설정하여 해결
  • ≪include≫로 표현

확장(Extend) 관계

  • 확장 관계의 유스케이스는 포함 관계처럼 여러 유스케이스에 걸쳐 중복적으로 사용되지 않고, 특정 조건에서 한 유스케이스로만 확장되는 관계
  • 확장 유스케이스는 특정 조건이 만족되는 상황에서만 확장 유스케이스의 이벤트 흐름이 수행
  • 한 유스케이스에서 추가되거나 확장된 기능 표현
  • ≪extend≫로 표현

일반화(Generalization) 관계

  • 추상적인 액터와 좀 더 구체적인 액터 사이에 맺어주는 관계
  • 일반화 관계를 액터에 적용하면 유스케이스 다이어그램에서 사용되는 여러 액터들의 의미를 좀 더 명확하게 하고 다이어그램도 보다 간결하게 작성
  • 하위 액터나 유스케이스에서 상위 액터, 유스케이스 쪽으로 속이 빈 삼각형 화살표를 실선으로 연결

3. 시퀀스 다이어그램

①시퀀스 다이어그램(Sequence Diagram) 개념

  • 시퀀스 다이어그램은 객체 간 상호 작용을 메시지 흐름으로 표현한 다이어그램이다
  • 객체 간의 동적 상호 작용을 시간적 개념을 중심으로 모델링하는 과정이다
  • 시퀀스 다이어그램에서는 객체의 오퍼레이션과 속성을 상세히 정의해야 한다
  • 시퀀스 다이어그램은 유스케이스를 실현(Realization) 한다

②시퀀스 다이어그램 구성요소

객체(Object)

  • 객체는 위쪽에 표시되며 아래로 생명선을 가짐
  • 객체는 사각형 안에 밑줄 친 이름으로 명시

생명선(Lifeline)

  • 객체로부터 뻗어 나가는 점선
  • 실제 시간이 흐름에 따라 객체의 생명주기 동안 발생하는 이벤트를 명시

실행(Activation)

  • 직사각형은 오퍼레이션(함수)이 실행되는 시간을 의미
  • 직사각형이 길어질수록 오퍼레이션 수행시간이 긺

메시지(Message)

  • 객체 간의 상호 작용은 메시지 교환으로 이루어짐
  • 한 객체에서 다른 객체로의 메시지를 전달하여 전달받은 객체의 오퍼레이션을 수행

4. 패키지 다이어그램

①패키지 다이어그램(Package Diagram) 개념

  • 패키지 다이어그램은 시스템의 서로 다른 패키지들 사이의 의존 관계를 표현하기 위한 다이어그램이다

②패키지 다이어그램 구성요소

패키지

  • 요소들을 그룹으로 조직하기 위한 요소

의존관계

  • 하나의 패키지가 다른 패키지를 사용하는 관계
  • 의존성의 성질을 나타내기 위해 스테레오 타입을 붙일 수 있음
  • 스테레오 타입에는 ≪import≫, ≪access≫가 있음

5. 활동 다이어그램

①활동 다이어그램(Activity Diagram) 개념

  • 활동 다이어그램은 시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서대로 표현하는 다이어그램이다
  • 오퍼레이션이나 처리과정이 수행되는 동안 일어나는 일들을 단계적으로 표현한다
  • 활동 다이어그램은 하나의 유스케이스 안이나, 유스케이스 사이에서 발생하는 복잡한 처리의 흐름을 명확하게 표현할 수 있다

②활동 다이어그램 구성요소

시작점(Initial Node)

  • 활동의 시작(액션이나 액티비티 시작)을 의미
  • 하나의 다이어그램 안에는 하나의 시작점만 존재
  • 검은색 동그라미로 표현

전이(Transition)

  • 실행의 흐름을 나타냄
  • 화살표로 표현

액션(Action) / 액티비티(Activity)

  • 어떠한 일들의 처리와 실행을 의미
  • 액션(Action)은 더 이상 분해할 수 없는 단일 작업이고, 액티비티(Activity)는 몇 개의 액션으로 분리될 수 있는 작업
  • 모서리가 둥근 사각형으로 표현하고, 둥근 사각형 안에 액션이나 액티비티 명칭 기술

종료점(Final Node)

  • 처리의 종료를 의미
  • 하나의 다이어그램 안에는 여러 개의 종료 노드가 있을 수 있음
  • 검은색 동그라미를 포함한 원으로 표현

조건(판단) 노드(Decision Node)

  • 조건에 따른 제어 흐름의 분리를 표현
  • 마름모로 표현하고 들어오는 제어 흐름은 한 개이고, 나가는 제어 흐름은 여러 개로 표현

병합 노드(Merge Node)

  • 여러 경로의 흐름이 하나로 합쳐진 것을 표현
  • 마름모로 표현하고 들어오는 제어 흐름은 여러 개이고, 나가는 제어 흐름은 한 개로 표현

포크 노드(Fork Node)

  • 평행적으로 수행되는 흐름을 나누는 노드
  • 굵은 가로선으로 표현하고 들어오는 액티비티 흐름은 한 개이고, 나가는 액티비티 흐름은 여러 개

조인 노드(Join Node)

  • Fork Node로 나눠진 흐름을 다시 하나로 합치는 노드
  • 굵은 가로선으로 표현하고 들어오는 액티비티 흐름은 여러 개이고, 나가는 액티비티 흐름은 한 개

구획면(Swim Lane)

  • 액티비티 수행을 담당하는 주체를 구분하는 면
  • 가로 또는 세로 실선을 그어 구분

6. 상태 다이어그램

①상태 다이어그램(State Diagram) 개념

  • 상태 다이어그램은 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지 표현하는 다이어그램이다
  • 상태 다이어그램은 어떤 이벤트에 의해 객체 자신이 속한 클래스의 상태 변화나 객체 간 상호 작용하는 과정에서의 상태 변화를 표현한다
  • 객체는 파악된 상태들 이외의 상태는 가질 수 없고, 특정 순간에는 오직 한 상태로만 존재할 수 있다
  • 객체의 상태란 객체가 갖는 속성값의 변화이다

②상태 다이어그램 구성요소

상태(State)

  • 객체가 존재할 수 있는 조건 중의 하나
  • 둥근 사각형 안에 객체의 상태 기술

시작 상태

  • 객체의 시작 상태
  • 속이 채워진 원으로 표현

종료 상태

  • 객체의 종료 상태
  • 원 안에 속이 채워진 원으로 표현

전이

  • 객체의 상태가 다른 상태로 변경되는 상태
  • 상태의 사이의 흐름, 변화
  • 화살표로 표현

이벤트(Event)

  • 객체의 전이를 유발하는 자극
  • 상태의 변화를 주는 현상
  • 상태의 전이를 유발하는 이벤트는 전이 위에 이벤트 이름 표시
  • 이벤트: 시간의 흐름, 조건, 외부 신호 등

전이 조건

  • 특정 조건 만족 시 전이 발생하도록 하기 위해 사용되는 속성값의 불리언 식

7. 커뮤니케이션 다이어그램

①커뮤니케이션 다이어그램(Communication Diagram) 개념

  • 커뮤니케이션 다이어그램은 시퀀스 다이어그램과 같이 동작에 참여하는 객체들이 주고받는 메시지를 표현하고, 메시지뿐만 아니라 객체 간의 연관까지 표현하는 다이어그램이다
  • 커뮤니케이션 다이어그램은 시스템이나 객체들이 메시지를 주고받으며 시간의 흐름에 따라 상호 작용하는 과정을 표현한 다이어그램이다

②커뮤니케이션 다이어그램 구성요소

액터(Actor)

  • 시스템으로부터 서비스를 요청하는 외부 요소(사람, 외부시스템)

객체(Object)

  • 메시지를 주고받은 주체
  • 콜론(:)을 기준으로 앞쪽에는 객체명, 뒤쪽에는 클래스명 기술

링크(Link)

  • 객체들 간의 관계를 표현
  • 클래스가 아닌 실제 객체와의 관계를 직접적으로 보여주는 객체들 사이의 링크
  • 액터와 객체, 객체 간 실선으로 표현
  • 링크에 메시지를 표현

메시지(Message)

  • 객체가 상호 작용을 위해 주고받는 메시지
  • 메시지는 상대 객체별로 여러 개의 정의가 이루어지므로, 하나의 동일한 링크에서 여러 개의 메시지가 전달
  • 화살표의 방향은 메시지를 받는 쪽으로 향하게 표현

8. 컴포넌트 다이어그램

①컴포넌트 다이어그램(Component Diagram) 개념

  • 컴포넌트 다이어그램은 시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존 관계를 나타내는 다이어그램이다
  • 코드 컴포넌트 기반의 물리적 구조로 표현된다
  • 실질적 프로그래밍 작업에 사용한다

②컴포넌트 다이어그램 구성요소

컴포넌트

  • 컴포넌트는 탭이 달린 직사각형으로 표현
  • 모든 컴포넌트는 반드시 이름을 가지고 있어야 함
  • 컴포넌트가 패키지에 포함되어 있다면 컴포넌트의 이름 앞에 패키지 이름을 붙일 수 있으며, 클래스처럼 컴포넌트에 꼬리표 값을 달아주거나 컴포넌트 내부의 오퍼레이션을 보여줄 수도 있음

인터페이스

  • 인터페이스를 실체화한다는 의미는 실제로 동작하는 컴포넌트에 인터페이스를 적용한다는 뜻
  • 컴포넌트와 인터페이스는 화살표 모양의 점선(의존 관계)으로 연결

의존 관계

  • 컴포넌트 사이의 의존하는 관계 표현
  • 컴포넌트 사이의 의존 관계는 한 컴포넌트에 변경이 발생한 경우, 변경 범위 추적에 유용
profile
나 혼자 공부 기록
post-custom-banner

0개의 댓글