[Basic] UML
2022. 12. 1. 13:07ㆍProgramming/Basic
[Basic] UML
이번에 미니 프로젝트를 진행하면서 UML 다이어그램이라는 항목의 필요성을 느끼게 되어서 학습하게 되었다.
UML - Unified Modeling Language
- 통합 모델링 언어
- 시스템적인 측면을 모델로 표현하여 시각적으로 보여주는 대표적인 모델링 언어
- 시스템 설계자와 개발자가 응용프로그램을 이해, 협업, 개발을 용이하게 해 준다.
해당 UML을 먼저 설계를 하고 작업을 들어가면 어떤 메서드가 존재하는지 어떤 구조로 설계를 할 건지에 대해 알 수가 있고 팀원들과 머릿속에 구성하려는 프로젝트의 모양을 그려 넣고 시작할 수 있다는 장점이 존재한다.
UML 다이어그램의 종류와 관계 표현
UML 다이어그램이 클래스 다이어그램 하나만 있는 줄 알았는데 보니까 여러 가지의 다양한 다이어그램이 존재하였다.
일단 크게는 구조와 행위로 다이어그램의 형태가 나눠진다.
구조 다이어그램 |
행위 다이어그램 |
클래스 다이어그램 |
유스케이스 다이어그램 |
객체 다이어그램 |
액티비티 다이어그램 |
복합체 구조 다이어그램 |
스테이트 머신 다이어그램 |
배치 다이어그램 | 상호작용 시퀸스 다이어그램 커뮤니케이션 다이어그램 |
컴포넌트 다이어그램 |
|
패키지 다이어그램 |
UML 다이어그램에서 관계 표현
연관관계 | 의존관계 (참조) | 일반화 관계 | 실체화관계 | ||
연관 | 직접연관 | 확장의존 | 상속 | Interface를 통한 구현 | |
집합연관 | 합성연관 | 포함의존 |
분류 | 명칭 | 표현 | 설명 |
연관관계 (Association) |
연관관계 | 서로 인지하는 것을 표현 |
|
직접연관관계 | 참조하는 측만 인지를 한다 즉 사용을 하는 쪽만 인지를 한다 |
||
집합연관 | 전체 부분의 삭제를 하여도 사용이 되는 부분은 사용할 수 있다 Data를 저장하는 리스트를 만들 때 리스트를 삭제해도 Data는 유지가 됨 |
||
합성연관 | 전체 부분을 삭제하면 부분도 소멸 Data를 저장하는 리스트를 만들 때 리스트를 삭제하면 사용한 Data도 삭제 |
||
의존관계 (Dependency) |
확장의존 (Extend) |
<<Extend>> ----------------------▷ |
클래스 변화가 타 클래스의 영향 <<Extend>> 사진 파일 올리기 --------▷ 글 작성 기능의 확장 |
포함의존 (Include) |
<<Include>> ----------------------▷ |
클래스의 변화가 타 클래스 영향 <<Include>> 글 작성 --------▷ 로그인 반드시 포함 |
|
일반화 관계 (Generalization) |
일반화 관계 | 상속을 표현하기에 서브 클래스가 부모 클래스의 속성을 물려받음 |
|
실체화 관계 (Realization) |
실체화 관계 | ----------------------▷ | 인터페이스와 구현 클래스의 관계 슈퍼 클래스가 명세해놓은 메서드들을 서브 클래스에서 구현 |
UML 접근 제어자
- + : public
- - : private
- # : protected
구조 다이어그램
구조 다이어그램
- 시스템의 정적인 구조를 보여줌
- 시스템의 요소에 집중하여 표현
- 각자의 인스턴스끼리의 관계를 보여줌
클래스 다이어그램
- 클래스의 속성, 함수, 변수 타입으로 구성이 된 다이어그램
- 세 부분으로 나눠 작성
- 1 : 클래스 이름
- 2 : 클래스가 가지고 있는 속성
- 3 : 클래스에서 사용할 수 있는 메서드
행위 다이어그램
행위 다이어그램
- 구조 다이어그램이 정적인 모습에서의 관계를 보여준다면 행위 다이어그램은 동적인 모습을 보여준다
- 프로그램과 사용자가 어떤 방식으로 동작을 하고 상호작용을 하는지 보여준다.
유스 케이스 다이어그램
- 시스템과 사용자의 관계를 다이어그램으로 표현한 것
- 사용자의 관점에서 시스템의 서비스 or 기능 및 관련 요소를 보여주는 것
'Programming > Basic' 카테고리의 다른 글
[Basic] 얕은 복사와 깊은 복사 (0) | 2022.11.16 |
---|---|
[Basic] AJAX란? (0) | 2022.10.19 |
[Basic] 의사코드(pseudo - code)란? (1) | 2022.09.30 |