단어 그대로 해석하면 통합 모델링 언어
. 말 그대로 13개 각 언어의 장점을 다 unified 하여 뽑아쓰자는 것이다. combine the best of the best form. 각각의 언어가 표현할 수 있는 고유 syntax와 semantic에는 설명에 한계가 있기 때문이다.
한 시스템 개발을 위해 여러 사람이 참여한다. 개발자/사용자/설계자/분석자 등등. 이 때 개발하고자 하는 시스템에 대한 설명을 참여자들에게 모두 잘 설명하기가 쉽지 않다. 이 때 표준화된 양식이자 복잡한 시스템을 시각화한 UML 문서로 모두의 이해를 도울 수 있다. 이렇게 UML은 객체지향 소프트웨어를 개발할 때 시스템과 산출물을 명세화, 시각화, 문서화할 때 사용한다.
이탤릭체
로 쓰여진 다이어그램은 abstract이라서 실존하지 않는 다이어그램으로, 다른 다이어그램을 묶는 카테고리라고 봐야 맞다.
속이 빈 화살표
클래스 부모 자식간의 상속을 나타낸다. 화살표 머리쪽이 부모다.
이 글에서는 간단히 요약만하고 다이어그램 별 상세 설명은 별도 글에서 하겠다.
behaviour
요소들간의 변화 흐름 동작을 나타냄
이름 | 표현하고자 하는 것 |
---|---|
Usecase | 사용자 관점에서 시스템의 기능, 상호작용과 그들간의 관계 |
Activity | 프로그램의 시작과 끝을 정의하고, 작업의 단계적 수행과정 |
State | 객체가 취할 수 있는 상태와 상태변화 |
Sequence | 시간의 흐름에 다른 객체간의 상호작용 |
Communication | 메세지 관점으로의 객체간의 상호작용 |
Interaction overview | - |
Timing | - |
structure
시스템의 개념 관계등을 표현
이름 | 표현하고자 하는 것 |
---|---|
Class | 클래스의 속성, 메서드, 관계 |
Object | - |
Component | 소프트웨어 컴포넌트들과 그들의 관계, 구조 |
Composite | - |
Deployment | 프로그램의 아키텍처를 물리적인 관점에서 설계 |
Package | 관련있는 요소들을 하나의 패키지로 묶고, 패키지 사이의 관계 |
13가지 크레파스가 있다고 생각하자. 서로 색깔이 다 다르다. 어떤 어떤 크레용을 잡았는가는 중요하지 않다. 중요한 것은 내가 선택한 크레용으로 내가 그림을 얼마나 잘 그려낼 수 있는지다.
각 다이어그램 별 설명 및 그리는 방법은 다어어그램 별 별도 페이지에 나타낼 예정이라서, 여기서는 모든 다이어그램에 공통적인 요소. 화살표 등만 설명하겠다.
연관 관계
의 경우 게시물이 자신에게 달린 댓글을 알고, 댓글도 자기가 어디다가 달았는지 알지만. 직접 연관 관계
의 경우, 댓글은 자신이 어느 게시글에 달렸는지 모른다.
집합
의 경우 게시글이 지워져도 댓글은 남아있는 경우를 말한다. (삭제된 게시글입니다 정도만 보이고 댓글이 여전히 남아있는 경우를 보았을 것이다.) 반면에 합성
의 경우 강한 종속관계라서, 게시글이 삭제되면 댓글도 함께 사라진다.
확장
의 경우 기능 추가가 선택적이지만, 포함
의 경우는 필수이다.
일반화
는 부모 자식 상속관계를 나타낸다. 부모가 하는 것은 다 자식도 한다. 실체화
의 경우 동물이 무엇을 할 지 대략적인 정의만 해놓아서, 실체 동작 방법은 자식 클래스에서 다시 상세히 정의해야한다.