본문 바로가기
EIP준비

#5 소프트웨어 설계5 - UML

by 혀닙 2023. 3. 26.

개념 모델링(Conceptual Modeling)

개념 모델링

  • 요구사항을 이해하기 쉽도록 실 세계의 상황을 단순화하여 개념적으로 표현한 것을 모델이라고 함
  • 이렇게 표현된 모델을 생성해 나가는 과정을 개념 모델링이라고 함
  • 모델은 문제가 발생하는 상황에 대한 이해를 증진하고 해결책을 설명하므로 소프트웨어 요구사항 분석의 핵심이라고 할 수 있음
  • 개발 대상 도메인의 엔티티(Entity)들과 그들의 관계 및 종속성을 반영
  • 요구사항별로 관점이 다르므로 개념 모델도 다양하게 표현되어야 함
  • 대부분 UML(Unified Modeling Language)을 사용
개념 모델링의 종류
  • Use Case Diagram
  • Data Flow Model
  • State Model
  • Goal-Based Model
  • User Interactions
  • Object Model
  • Data Model

❗️ UML(Unified Modeling Language)

  • 객체 지향 소프트웨어 개발 과정에서 시스템 분석, 설계, 구현 등의 산출물을 명세화, 시각화, 문서화할 때 사용하는 모델링 기술과 방법론을 통합하여 만든 범용 모델링 언어
  • Rumbaugh의 OMT 방법론과 Booch의 Booch 방법론, Jacobson의 OOSE 방법론을 통합하여 만든 모델링 개념의 공통 집합
  • 객체 지향 분석 및 설계 방법론의 표준 지정을 목표로 제안된 모델링 언어
  • OMG(Object Management Group)에서 표준화 공고 후 IBM, HP, Microsoft Oracle 등이 참여하여 1997.1버전 1.0을 Release함

❗️ 럼바우(Rumbaugh) 객체 지향 분석 기법

  • 소프트웨어 구성 요소를 그래픽으로 모형화
  • 객체 모델링 기법(Object Modeling Technique이라고도 함
  • 모델링 종류
모델링 설명
객체 모델링 정보 모델링이라고도 함
시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들간의 관계를 규명하여 객체_를 다이어그램(Obejct Diagram)으로 표시

_실 세계 문제 영역으로부터 객체와 클래스를 추출해 그들 간의 관계를 연관화, 집단화, 일반화, 중심으로 규명하며 클래스의 송석과 연산을 함께 표현함으로써 시스템의 정적 구조를 생성함
동적 모델링 제어 흐름, 상호작용, 동작 순서 등의 상태를 시간 흐름에 따라 상태 다이어 그램(State Diagram)으로 표시함
기능 모델링 여러 프로세스 간의 _자료 흐름_을 자료흐름도(Data Flow Diagram)로 표시
어떤 데이터를 입력하여 어떤 결과를 가져올 수 있을 지를 표현
  • 객체지향 분석 절차
객체모형 --> 동적모형 --> 기능모형

UML의 특성

특성 설명
비주얼화 소프트웨어 구성 요소 간의 관계 및 상호작용을 시각화 한 것
문서화 소프트웨어 생명주기의 중요한 작업을 추적하고 문서화할 수 있음
개발 프로세스 및 언어와 무관하게 개발자 간의 의사소통 도구 제공
명세화 분석, 설계, 구현의 완벽한 모델을 제공
[분석 단계] 기능 모델 --> [설계 단계] 동작 수준 모델 --> ㅡ[구현 단계] 상호작용 모델 수준으로 명세화 가능
단순 표기법이 아닌 구현에 필요한 개발적 요소 및 기능에 대한 명세 제공
구축 객체 지향 언어와 호환되는 프로그래밍 언어는 아니지만 모델이 객체 지향 언어로 매핑 가능

UML 소프트웨어에 대한 관점

  • 기능적 관점
    • _사용자 측면_에서 본 소프트웨어의 기능을 나타냄
    • 사용 사례 모델링이라고도 함
    • 요구분석 단계에서 사용
    • UML 에서는 Use Case Diagram 사용
  • 정적 관점
    • 소프트웨어 내부의 구성 요소 사이의 구조적 관계를 나타냄
    • 객체, 속성, 연관 관계, 오퍼레이션이 시스템 구조를 나타냄
    • UML에서는 Class Diagram을 사용함
      • 클래스 사이의 관계, 클래스 구성과 패키지 사이의 관계
  • 동적 관점
    • 시스템의 내부동작을 의미
    • UML에서는 Sequence Diagram, State Diagram, Activity Diagram을 사용함

UML의 기본 구성

구성 설명
사물
(Things)
객체 지향 모델을 구성하는 기본 요소
객체 간의 관계 형성 대상
관계
(Relationship)
객체 간의 연관성을 표현
종류: 연관, 집합, 포함, 일반화, 의존, 실체화
다이어그램
(Diagram)
객체의 관계를 도식화
다양한 관점에서 의사소통할 수 있도록 view를 제공
정적 모델: 구조 다이어그램
동적 모델: 행위 다이어 그램

스테레오 타입

  • UML에서 제공하는 기본 요소 외에 추가적인 확장 요소를 표현할 때 사용
  • UML 확장 모델에서 스테레오 타입 객체를 표현할 때 사용하는 기호는 쌍 꺾쇠와 비슷하게 생긴 길러멧(Guillemet) <<>> 이며, 길러멧 안에 확장 요소를 작성

UML 접근 제어자

접근 제어자 표기 설명
Public + 어떤 클래스의 객체에서 든 접근 가능
Private - 해당 클래스로 생성된 객체만 접근 가능
Protected # 해당 클래스와 동일 패키지에 있거나 상속 관계에 있는 하위 클래스의 객체들만 접근 가능
Package ~ 동일 패키지에 있는 클래스의 객체들만 접근 가능

연관관계 다중성 표현(실기)

표기 의미
1 1 개체 연결
* 또는 0..* 0이거나 그 이상 객체 연결
1..* 1이거나 1 이상 객체 연결
0..1 0이거나 1객체 연결
1,3,6 1이거나 3이거나 6 객체 연결
n n개 객체 연결
n..* n이거나 n개 이상 객체 연결

UML 다이어 그램의 분류

구조적 다이어그램(Structure Diagram)

  • 정적이고 구조 표현을 위한 다이어그램
다이어그램 유형 목적
클래스 다이어그램(Class Diagram) 시스템 내 클래스의 정적 구조를 표현하고 시스템을 구성하는 클래스들 사이의 관계를 포현
객체 다이어그램(Object Diagram) 객체 정보를 보여줌
복합체 구조 다이어그램(Composite Structure Diagram) 복합 구조의 클래스와 컴포넌트 내부 구조를 표현
배치 다이어그램(Deplyment Diagram) 소프트웨어, 하드웨어, 네트워크를 포함한 실행 시스템의 물리 구조를 표현
컴포넌트 다이어그램(Component Diagram) 컴포넌트 구조 사이의 관계를 표현
패키지 다이어그램(Package Diagram) 클래스나 유스케이스 등을 포함한 여러 모델 요소를 그룹화해 패키지를 구성하고 패키지들 사이의 관계를 표현

행위 다이어그램(Behavior Diagram)

  • 동적이고 순차적인 표현을 위한 다이어 그램
다이어그램 유형 목적
유스케이스 다이어그램
(Use Case Diagram)
사용자 관점에서 시스템 행위를 포현
활동 다이어그램
(Activity Diagram)
업무 처리 과정이나 연산이 수행되는 과정을 표현
상태 머신 다이어그램
(State Machine Diagram)
객체의 생명주기 표현, 동적 행위를 모델링하지만 특정 객체만을다룸
실시간 임베디드 시스템, 게임, 프로토콜 설계에 이용
Collaboration Diagram Sequence Diagram과 같으며 모델링 공간에 제약이 없어 구조적인 면을 중시함
상호작용 다이어그램
(Interaction Diagram)
순차 다이어그램
(Sequence Diagram)
시스템의 동작을 정형화하고 객체이 메세지 교환을 쉽게 표현하고 시간에 따른 메세지 발생 순서를 강조
요소: 생명선(Life Line), 통로(Gate), 상호작용(Interaction Fragment), 발생(Occurrence), 실행(Execution), 상태 불변(State Invariant), 메세지(Message), 활성(Activations), 객체(Entity), Actor
상호작용 개요 다이어그램 여러 상호작용 다이어그램 사이의 제어 흐름을 표현
통신 다이어그램
(Communication Diagram)
객체 사이의 관계를 중심으로 상호작용 표현
타이밍 다이어그램
(Timing Diagram)
객체 상태 변화와 시간 제약을 명시적으로 표현

클래스 다이어그램 관계 표현

class diagram

  • 시스템을 구성하는 객체 간의 관계를 추상화한 모델을 논리적 구조로 표현
  • 객체 지향 개발에서 공통으로 사용됨
  • 분석, 설계, 구현 단계 전반에 지속해서 사용됨
  • Operation: 클래스의 동작을 의미하며, 클래스에 속하는 객체에 대하여 적용될 메소드를 정의한 것
class Rectangle{
+int height
+int width
+getArea(): int
+resize(int, int)
}

UML 관계 표현

구성 설명
단방향 연관 관계 한쪽은 알지만 반대쪽은 상대방 존재를 모름
양방향 연관관계 양쪽 클래스 객체들이 서로의 존재를 인식
의존 관계 연관 관계와 같지만 메소드를 사용할 때와 같이 매우 짧은 시간만 유지
일반화 관계 객체 지향에서 _상속관계(IS-A)_를 표현
한 클래스가 다른 클래스를 포함하는 상위 개념일 때 사용
집합관계 클래스 사이 전체나 부분이 같은 관계
포함관계 전체/부분 객체 라이프타임 의존적(전체 객체 삭제 > 부분 객체 삭제)
실체화 관계 책임 집합 인터페이스와 실제로 실현한 클래스들의 사이
UML 연관 관계(Association Relation)
  • 한 사물의 객체가 다른 사물의 객체와 연결된 것을 포현
  • 두 클래스가 서로 연관이 있다면 A, B 객체를 서로 참조할 수 있음을 표현
  • 이름: 관계의 의미를 표현하기 위해 이름을 가질 수 있음
  • 역할: 수행하는 역할을 명시적으로 이름을 가질 수 있음
UML 의존 관계(Dependency Relation)
  • 연관 관계와 같지만 메서드를 사용할 때와 같이 매우 짧은 시간만 유지
  • 영향을 주는 객체에서 영향을 받는 객체 방향으로 점선 화살표를 연결함
[운전자]--연관관계, 소유-->[자동차] -.의존 관계.-> [연료]
UML 일반화 관계(Generalization Relation)
  • 객체 지향에서 _상속관계(Is A Kind Of)_를 표현
  • 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 사용
    • 부모(슈퍼)클래스
    • 자식(서브)클래스
A[가전제품]
건조기 --> A
세탁기 --> A
스타일러 --> A
UML 집합 관계(Aggregation Relation)
  • A객체가 B객체에 포함된 관계
  • 부분을 나타내는 객체를 다른 객체와 공유할 수 있음
  • 전체 클래스 방향에 마름모로 표시하고, or 관계에 놓으면 선 사이를 점선으로 잇고 {or}를 표시
UML 포함관계(Composition Relation)
  • 부분 객체가 전체 객체에 속하는 강한 집합 연관의 관계를 표현하는 클래스
  • 부분 객체는 다른 객체와 공유 불가능
  • 전체 객체 방향에 채워진 마름모로 표시
UML 실체화 관계(Realization Relation)
  • 인터페이스와 실제 구현된 일반 클래스 간의 관계로 _존재하는 행동에 대한 구현_을 표현
  • 한 객체가 다른 객체에게 오퍼레이션을 수행하도록 지정하는 의미적 관계
A[날다]
파리-.->A
미사일-.->A
나방-.->A

Use Case Diagram

Use Case Diagram의 개념

  • 객체 지향 초창기 분석 작업에 작성되는 사용자의 요구를 기능적 측면에서 기술할 때 사용하는 도구
  • Actor와 Use Case로 구성됨
  • 얻어지는 결과는 개발 대상 시스템이 제공해야 하는 서비스 목록이 됨

Use Case Diagram 요소

요소 설명
시스템 경계
(System Boundary)
시스템이 제공해야 하는 사례(Use Case)들의 범위
큰 규모의 객체로 구현되는 존재
액터(Actor) 서비스를 이용하는 외부 객체
시스템이 특정한 사례(Use Case)를 실행하도록 요구할 수 있는 존재
유스 케이스
(Use Case)
시스템이 제공해야 하는 개별적인 서비스 기능
서비스는 특정 클래스의 멤버 함수로 모데링됨
접속 관계
(Communication Association)
Actor/Use Case 또는 Use Case/ Use Case 사이에 연결되는 관계
Actor나 Use Case가 다른 Use Case의 서비스를 이용하는 상호아을 표현
사용 관계
(Uses Association)
여러 개의 유스케이스에서 공통으로 수행해야 하는 기능을 모델링하기 위해 사용
확장 관계
(Extends Association)
확장 기능 유스 케이스와 확장 대상 유스 케이스 사이에 형성되는 관계
해당 유스 케이스에 부가적인 유스케이스를 실행할 수 있을 때의 관계
확장 대상 유스케이스를 수행할 때 특정 조건에 따라 확장 기능 유스케이스를 수행하는 경우에 적용

Use Case Diagram 작성 단계

[액터식별]--> [use case 식별] --> [관계 정의] --> [use case 구조화]
단계 설명
액터 식별 모든 사용자 역할과 상호작용하는 타 시스템을 식별
정보를 주고받는 하드웨어 및 지능형 장치를 식별
use case 식별 액터가 요구하는 서비스와 정보를 식별
액터가 시스템과 상호작용하는 행위를 식별
관계 정의 액터와 액터 그리고 액터와 유스케이스의 관계 분석을 정의
유스 케이스와 유스케이스 간의 관계 분석을 정의
use case 구조화 두개의 상위 Use Case에 존재하는 공통 서비스를 추출
추출된 서비스로 Use Case를 정의
추출된 서비스를 사용하는 Use Case와 관계를 정의
조건에 따른 서비스 수행 부분 분석하여 구조화

댓글