모델링 | 설명 |
---|---|
객체 모델링 | 정보 모델링이라고도 함 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들간의 관계를 규명하여 객체를 다이어그램(Obejct Diagram)으로 표시 실 세계 문제 영역으로부터 객체와 클래스를 추출해 그들 간의 관계를 연관화, 집단화, 일반화, 중심으로 규명하며 클래스의 송석과 연산을 함께 표현함으로써 시스템의 정적 구조를 생성함 |
동적 모델링 | 제어 흐름, 상호작용, 동작 순서 등의 상태를 시간 흐름에 따라 상태 다이어 그램(State Diagram)으로 표시함 |
기능 모델링 | 여러 프로세스 간의 자료 흐름을 자료흐름도(Data Flow Diagram)로 표시 어떤 데이터를 입력하여 어떤 결과를 가져올 수 있을 지를 표현 |
객체모형 --> 동적모형 --> 기능모형
특성 | 설명 |
---|---|
비주얼화 | 소프트웨어 구성 요소 간의 관계 및 상호작용을 시각화 한 것 |
문서화 | 소프트웨어 생명주기의 중요한 작업을 추적하고 문서화할 수 있음 개발 프로세스 및 언어와 무관하게 개발자 간의 의사소통 도구 제공 |
명세화 | 분석, 설계, 구현의 완벽한 모델을 제공 [분석 단계] 기능 모델 --> [설계 단계] 동작 수준 모델 --> ㅡ[구현 단계] 상호작용 모델 수준으로 명세화 가능 단순 표기법이 아닌 구현에 필요한 개발적 요소 및 기능에 대한 명세 제공 |
구축 | 객체 지향 언어와 호환되는 프로그래밍 언어는 아니지만 모델이 객체 지향 언어로 매핑 가능 |
구성 | 설명 |
---|---|
사물 (Things) | 객체 지향 모델을 구성하는 기본 요소 객체 간의 관계 형성 대상 |
관계 (Relationship) | 객체 간의 연관성을 표현 종류: 연관, 집합, 포함, 일반화, 의존, 실체화 |
다이어그램 (Diagram) | 객체의 관계를 도식화 다양한 관점에서 의사소통할 수 있도록 view를 제공 정적 모델: 구조 다이어그램 동적 모델: 행위 다이어 그램 |
<<>>
이며, 길러멧 안에 확장 요소를 작성접근 제어자 | 표기 | 설명 |
---|---|---|
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개 이상 객체 연결 |
다이어그램 유형 | 목적 |
---|---|
클래스 다이어그램(Class Diagram) | 시스템 내 클래스의 정적 구조를 표현하고 시스템을 구성하는 클래스들 사이의 관계를 포현 |
객체 다이어그램(Object Diagram) | 객체 정보를 보여줌 |
복합체 구조 다이어그램(Composite Structure Diagram) | 복합 구조의 클래스와 컴포넌트 내부 구조를 표현 |
배치 다이어그램(Deplyment Diagram) | 소프트웨어, 하드웨어, 네트워크를 포함한 실행 시스템의 물리 구조를 표현 |
컴포넌트 다이어그램(Component Diagram) | 컴포넌트 구조 사이의 관계를 표현 |
패키지 다이어그램(Package 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) | 객체 상태 변화와 시간 제약을 명시적으로 표현 |
Operation
: 클래스의 동작을 의미하며, 클래스에 속하는 객체에 대하여 적용될 메소드를 정의한 것class Rectangle{
+int height
+int width
+getArea(): int
+resize(int, int)
}
구성 | 설명 |
---|---|
단방향 연관 관계 | 한쪽은 알지만 반대쪽은 상대방 존재를 모름 |
양방향 연관관계 | 양쪽 클래스 객체들이 서로의 존재를 인식 |
의존 관계 | 연관 관계와 같지만 메소드를 사용할 때와 같이 매우 짧은 시간만 유지 |
일반화 관계 | 객체 지향에서 상속관계(IS-A)를 표현 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 사용 |
집합관계 | 클래스 사이 전체나 부분이 같은 관계 |
포함관계 | 전체/부분 객체 라이프타임 의존적(전체 객체 삭제 > 부분 객체 삭제) |
실체화 관계 | 책임 집합 인터페이스와 실제로 실현한 클래스들의 사이 |
[운전자]--연관관계, 소유-->[자동차] -.의존 관계.-> [연료]
A[가전제품]
건조기 --> A
세탁기 --> A
스타일러 --> A
부분
을 나타내는 객체를 다른 객체와 공유할 수 있음전체
클래스 방향에 빈
마름모로 표시하고, or
관계에 놓으면 선 사이를 점선으로 잇고 {or}
를 표시부분
객체는 다른 객체와 공유 불가능전체
객체 방향에 채워진
마름모로 표시A[날다]
파리-.->A
미사일-.->A
나방-.->A
요소 | 설명 |
---|---|
시스템 경계 (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 식별] --> [관계 정의] --> [use case 구조화]
단계 | 설명 |
---|---|
액터 식별 | 모든 사용자 역할과 상호작용하는 타 시스템을 식별 정보를 주고받는 하드웨어 및 지능형 장치를 식별 |
use case 식별 | 액터가 요구하는 서비스와 정보를 식별 액터가 시스템과 상호작용하는 행위를 식별 |
관계 정의 | 액터와 액터 그리고 액터와 유스케이스의 관계 분석을 정의 유스 케이스와 유스케이스 간의 관계 분석을 정의 |
use case 구조화 | 두개의 상위 Use Case에 존재하는 공통 서비스를 추출 추출된 서비스로 Use Case를 정의 추출된 서비스를 사용하는 Use Case와 관계를 정의 조건에 따른 서비스 수행 부분 분석하여 구조화 |