정적 모델링
- 구조적 다이어그램
- 클래스 다이어그램
- 객체 다이어그램 (오브젝트 다이어그램)
- 컴포넌트 다이어그램
클래스 다이어그램

- 설계되는 모든 클래스를 다이어그램으로 나타낸 것
- 클래스의 정적인 정의과 관계를 표현
- 객체가 아닌 클래스는 정적(Static)임
시간과 조건이 개입되지 않음
( 참고, 클래스를 인스턴스화한 객체는 그 자체가 동적임 ) - 과정
- 클래스 속성 찾기
- 클래스간의 관계 찾기
- 다이어그램 그리기

- 구성 요소
- 클래스 이름
- 속성
Visibilty
-> + public
- private
# protected
~ package (디폴트)
/ derived (다른 속성으로 유추 가능한 것)
- 메소드
메소드 이름(name:type):리턴 타입
(리턴타입이 void면 생략 가능)
클래스 사이의 관계
상속 (일반화(generalization))

- 한 클래스가 다른 클래스를 포함하는 상위 개념일 경우
- 부모 클래스를 향한 화살표
- 클래스 : 실선 (실제 존재)
- 인터페이스 : 점선 (그냥 틀)
연관 관계 (Association)
- 클래스들이 개념상 서로 연결됨
- 표시 : 양방향(실선), 단방향(화살표)
- 단향향 (화살표)
- 한쪽이 다른쪽을 참조 - 양향향 (실선)
- 서로가 참조
집합 관계 (Aggregation)

- 연관 관계를 조금 더 특수하게 나타냄 (연관 관계보다 좀 더 끈끈한 관계)
- 전체 객체의 라이프 타임과 부분 객체의 라이프 타임은 독립적임
- 전체 객체가 사라져도 부분 객체는 남아 있음
합성 관계 (Composition)

- 전체 객체의 라이프 타임과 부분 객체의 라이프 타임은 의존적임
-> 전체 객체가 사라지면 부분 객체도 사라짐 (내부 정의로 구현)
-> 집합 관계와 합성 관계는 라이프 타임 차이임
관계의 숫자 표현

- 관계의 숫자는 참조 가능한 인스턴스의 수를 뜻한다
- 숫자 표현
- 1 : 1개
- 0..1 : 0~1개
- * : n개
- 1..* : 1~n개
- n..m : n~m개
장점
- 유스케이스 다이어그램보다 설계 관점에서 더욱 구체적임
- 클래스 간의 인터페이스를 빠르고 명확하게 알 수 있음
- 개발 단계에서 중요한 도구로 사용됨
단점
- 너무 상세한 내용을 기입하면 구현 단계를 미리 이루어지는 오류가 발생
- 동적인 관점에 대한 정보를 알 수 없음
( ex. 어디서 시작하는지? )
객체 다이어그램 (오브젝트 다이어그램)

- 클래스 다이어그램 요소를 인스턴스화해 시스템의 동작을 탐색
- 객체간의 상호작용(메세지 전달, 반환)을 이해할 수 있음
- 구성요소
- 오브젝트 이름
(오브젝트 명 : 클래스 명)으로 표시
- 오브젝트 속성
특정 시점의 오브젝트가 갖는 값을 표현
- 연결
연관 관계 / 집합 관계 / 합성 관계 / 일반화 관계 (최종적으로 실선으로 연결)
vs 클래스 다이어그램
- 관계 정의
- 클래스 다이어그램은 클래스와 클래스의 관계 (정적)
- 객체 다이어그램은 객체와 객체의 관계 (클래스를 인스턴스화한 것) - 추상화 vs 구체적
- 클래스 다이어그램은 인스턴스에 대한 정보는 제공되지 않음 (추상 모델)
- 객체 다이어그램은 특정 시점에 대한 인스턴스의 정보를 알 수 있음 (보다 구체적)
장점
- 특정 시점의 오브젝트간의 관계를 보여주기 때문에 이해하기 쉬움
- 실제 시나리오를 테스트하고 디버깅하는 것이 쉬움
단점
- 클래스 다이어그램을 미리 그려야 그릴 수 있음
- 정적이기 때문에 시스템의 동적인 흐름을 이해할 수는 없음
(다른 시점의 객체간의 관계는 알 수 없음 -> 전체 시스템을 이해할 수 없음)
'소프트웨어공학' 카테고리의 다른 글
| 설계 (Part 5) 동적모델링 - 상태, 액티비티 다이어그램 (0) | 2024.12.15 |
|---|---|
| 설계(part 4) - 동적 모델링 (시퀀스 다이어그램) (1) | 2024.12.15 |
| 설계 (Part2) UML 모델링 (0) | 2024.10.21 |
| 설계 (Part1) (0) | 2024.10.21 |
| 요구분석 (Part2) (0) | 2024.10.21 |