UML(Unified Modeling Language): 객체지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어이다.
UML특징 (가/구/명/문)
- 가시화 언어: 개념 모델 작성 시 오류가 적고 의사소통이 용이
- 구축 언어: 다양한 프로그래밍 언어로 실행 시스템의 예측 가능, UML을 소스코드로 변환하여 구축가능, 역 변환하여 역공학 가능
- 명세화 언어: 정확한 모델 제시, 완전한 모델 작성 가능
- 문서화 언어: 시스템에 대한 평가 및 의사소통의 문서
UML구성요소 (사/관/다)
사물(Things): 추상적인 개념으로, 주제를 나타내는 요소; 단어 관점에서 '명사' 또는 '동사'를 의미
관계(Relationships): 사물의 의미를 확장하고 명확히 하는 요소; 단어 관점에서 '형용사' 또는 '부사'를 의미
다이어그램(Diagram): 사물과 관계를 모아 그림으로 표현한 형태; 형식과 목적에 따라 9가지로 정의
UML다이어그램은 구분에 따라 구조적(정적), 행위적(동적) 다이어그램으로 구분된다.
구분 | 다이어그램 | 설명 |
구조적(정적) 다이어그램 | 클래스(Class) | 객체지향 모델링 시 클래스의 속성 및 연산과 클래스 간 정적인 관계를 표현한 다이어그램 |
객체(Object) | 클래스에 속한 사물(객체)들, 즉 인스턴스를 특정 시점의 객체와 객체 사이의 관계를 표현한 다이어그램 | |
컴포넌트(Component) | 시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존 관계를 나타내는 다이어그램 | |
배치(Deployment) | 컴포넌트 사이의 종속성을 표현하고, 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현하는 다이어그램 | |
복합체 구조(Composite Structure) | 다이어그램은 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현하는 다이어그램 | |
패키지(Package) | 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현한 다이어그램 | |
행위적(동적) 다이어그램 | 유스케이스(Usecase) | 시스템이 제공하고 있는 기능 및 그와 관련된 외부요소를 사용자의 관점에서 표현하는 다이어그램 |
시퀀스(Sequence) | 객체 간 동적 상호작용을 시간적 개념을 중심으로 메시지 흐름으로 표현한 다이어그램 | |
커뮤니케이션(Communication) | 동작에 참여하는 객체들이 주고 받는 메시지를 표현하고, 메시지뿐만 아니라 객체 간의 연관까지 표현하는 다이어그램 | |
상태(State) | 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호작용에 따라 상태가 어떻게 변화하는지 표현하는 다이어그램 | |
활동(Activity) | 시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서대로 표현하는 다이어그램 | |
타이밍(Timing) | 객체 상태 변화와 시간 제약을 명시적으로 표현하는 다이어그램 |
UML 확장 모델의 스테레오 타입(Stereotype): UML의 스테레오 타입은 UML의 기본적 요소 이외의 새로운 요소를 만들어 내기 위한 확장 메커니즘이다; UML스테레오 타입은 '<<>>'(길러멧; Guillemet)기호를 사용하여 표기한다.
유형 | 설명 |
<<include>> | 하나의 유스케이스가 어떤 시점에 반드시 다른 유스케이스를 실행하는 포함 관계 |
<<extend>> | 하나의 유스케이스가 어떤 시점에 다른 유스케이스를 실행할 수도 있고 아닐 수도 있는 확장 관계 |
<<interface>> | 모든 메서드가 추상 메서드이며 바로 인스턴스를 만들 수 없는 클래스로 추상메서드와 상수만으로 구성된 클래스 |
<<entity>> | 일반적으로 정보 또는 오래 지속되는 연관된 행위를 형상화하는 클래스로 유스케이스 처리 흐름이 수행되는 과정에서 기억 장치에 저장 되어야 할 정보를 표현하는 클래스 |
<<boundary>> | 시스템과 외부 액터와의 상호작용을 담당하는 클래스 |
<<control>> | 시스템이 제공하는 기능의 로직 및 제어를 담당하는 클래스 |
클래스 다이어그램(Class Diagram): 객체지향 모델링 시 클래스의 속성 및 연산과 클래스 간 정적인 관계를 표현한 다이어 그램이다.
클래스 다이어그램 구성요소
- 클래스(Class): 공통의 속성, 연산관계, 의미를 공유하는 객체들의 집합
- 속성(Attribute): 클래스의 구조적 특성에 이름을 붙인 것으로 특성에 해당하는 인스턴스가 보유할 수 있는 값의 범위를 기술
- 연산(Operation), 메서드: 이름, 타입, 매개변수들과 연관된 행위를 호출하는데 요구되는 제약사항들을 명시하는 클래스의 행위적 특징; 객체에 요청하여 행동으로 영향을 줄 수 있는 서비스
- 접근 제어자(Access Modifier): 클래스에 접근할 수 있는 정도를 표현
UML의 관계 (연/집/복 일/의/실)
- 연관 관계
- 클래스가 서로 개념적으로 연결된 선
- 사물 사이를 실선으로 연결하여 표현; 방향성은 화살표로 표현; 서로에게 영향을 주는 양방향 관계의 경우 화살표 생략
- 집합관계
- 하나의 객체에 여러 개 의 독립적인 객체들이 구성되는 관계
- 포함 되는 쪽에서 포함 하는 쪽으로 속이 빈 마름모를 연결
- 복합관계
- 영구적이고 집합관계보다 더 강한 관계로 구성
- 포함되는 쪽에서 포함 하는 쪽으로 속이 채워진 마름모를 연결
- 일반화 관계
- 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현
- 일반적인 개념을 부모, 구체적인 개념을 자식
- 자식 사물에서 부모 사물 쪽으로 속이 빈 화살표를 연결하여 표현
- 상속 관계라고 함
- 의존 관계
- 하나의 클래스가 또 다른 클래스를 사용하는 관계
- 다른 클래스의 멤버 함수 사용
- 사물 사이에 서로 연관은 있으나 필요에 따라 서로에게 영향을 주는 짧은 시간 동안만 유지하는 관계 (예: 교수 <- 수업)
- 영향을 주는 사물이 영향을 받는 사물쪽으로 점선 화살표를 연결하여 표현
- 실체화 관계
- 추상클래스나 인터페이스를 상속받아 자식클래스가 추상 메서드를 구현할 때 사용
- 사물이 할 수 있거나 해야 하는 기능으로 서로를 그룹화할 수 있는 관계를 표현
추상 클래스: 객체 인스턴스를 생성하지 않고 단지 유사 클래스의 공통된 특징을 정의하고 하나 이상의 추상 메서드와 일반 필드 및 일반 메서드를 포함하는 클래스; 동일한 부모를 가지는 클래스를 묶는 개념으로 상속을 받아서 기능을 확장시키는 것이 목적
인터페이스: 기능(function)을 모아놓은 클래스로 추상메서드와 상수만을 포함하는 추상 클래스; 구현하는 모든 클래스에 대해 특정한 메서드가 반드시 존재하도록 강제하는 역할
유스케이스 다이어그램(Usecase Diagram): 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현하는 다이어그램이다.
유스케이스 다이어그램 구성요소
- 유스케이스: 시스템이 제공해야하는 서비스, 기능; 액터가 시스템을 통해 수행하는 일련의 행위
- 액터(Actor): 사용자가 시스템에 대해 수행하는 역할; 이벤트 흐름을 시작하게 하는 객체
- 시스템: 전체 시스템의 영역을 표현
- 시나리오: 발생되는 이벤트의 흐름
- 이벤트의 흐름: 사람, 시스템, 하드웨어, 시간의 흐름에 의해 시작
유스케이스 다이어그램의 관계
- 포함(Include)관계
- 유스케이스를 수행할 때 다른 유스케이스가 반드시 수행되는 관계
- 확장(Extend)관계
- 포함관계처럼 어러 유스케이스에 걸쳐 중복적으로 사용되지 않고 특정 조건에서 한 유스케이스로만 확장되는 관계
- 특정 조건이 만족되는 상황에서만 확장 유스케이스의 이벤트 흐름이 발생
- 일반화(Generalization)관계
- 추상적인 액터와 좀 더 구체적인 액터 사이에 맺어주는 관계
- 하위 액터나 유스케이스에서 상위 액터,유스케이스 쪽으로 속이 빈 삼각형 화살표를 실선으로 연결
시퀀스 다이어그램: 객체 간 상호작용을 메시지 흐름으로 표현한 다이어그램이다; 객체 간의 동적 상호작용을 시간적 개념을 중심으로 모델링하는 과정이다.
시퀀스 다이어그램 구성요소
- 객체(Object), 생명선(Lifeline), 실행(Activation), 메시지(Message)
'공부 > 정보처리기사' 카테고리의 다른 글
[7] 물리 데이터 저장소 설계, 데이터베이스, 데이터 마이닝 (0) | 2021.10.01 |
---|---|
[6] 데이터 입출력 구현(논리 데이터 저장소) (0) | 2021.09.29 |
[4] UI 요구사항 확인 (0) | 2021.09.28 |
[3] 요구사항 (요구공학 Requirements Engineering) (0) | 2021.09.27 |
[2] 현행 시스템 분석 (현행 시스템 파악, 소프트웨어 아키텍처, 디자인 패턴, 개발 기술 환경 현행 시스템 분석) (0) | 2021.09.26 |
댓글