INTRO

복잡함을 잘 관리하기 위해 모델링을 하는 것이고,
시각화해서 커뮤니케이션 하기 위해 모델링을 하는 것이다.

즉 복잡한 시스템을 추상화 시키는 것이 핵심.

UML

객체지향적인 소프트웨어를 모델링하는 표준 그래픽 언어.

정적 모델링

UML에서 정적 모델링의 대표적인 표현으로 클래스 다이어그램을 사용한다.
이는 객체들의 공통 구조와 동작들을 추상화 시킨 것으로 객체 지향 개념을 정확히 알고 있어야 한다.
객체지향은 전 글 참조

UML에서 클래스 메서드를 오퍼레이션이라고 표현하고
메서드는 오펴레이션의 구현이다.

관계는 연관, 상속, 의존, 구현 4가지로 나뉜다.

클래스 다이어그램 관계 표현

Harbor(항구)는 Boat가 정박해 있다는 의미로 연관되어 있기 때문에 연관관계.
즉 항구가 있을때마다 보트 인스턴스가 있다는 의미.

Boat는 SailBoat의 일반형으로 상속 관계(일반화).

Boat에 load(Trailer t) 메서드가 있으므로 Trailer의 동작이나 구조가 변경되면 load 메서드도 변경될 수 있다. 그러므로 의존관계.

Washable한 추상적인 인터페이스를 Boat가 구현하고 있으므로 구현관계.

이제 방향을 생각할때는 개인적으로 영어로 하는게 쉬운 것 같다
Harbor has a Boat (Harbor -> Boat)
SailBoat extends Boat (SailBoat -> Boat)
Boat depends on Trailer (Boat -> Trailer)
Boat implements Washable (Boat -> Washable)

여기서 연관관계는 화살표가 정해진건 아니다.
Boat is in Harbor (Boat -> Harbor)
Harbor has a Boat (Harbor -> Boat)
둘다 가능한데, 시스템의 동작을 나타내는 것.
우리 예시서는 Boat로 Harbor를 찾지는 못하지만, Harbor에 정박해 있는 Boat를 찾을 수 있다는 의미.

마지막으로 의존, 구현 관계는 점선
연관, 상속 관계는 실선으로 표시한다.

동적 모델링

소프트웨어는 실행될때 변경될 수 있는 동적 측면이 있는데 이를 보통 시퀀스 다이어그램으로 표현한다.
프로그램 내부 객체 간 상호작용 패턴같은 소프트웨어의 동적 측면은 시간의 함수로만 이해할 수 있다.

시퀀스 다이어그램

모델 검증

클래스 다이어그램, 시퀀스 다이어그램을 통해 모델링을 했으면
둘다 확인하며 (cross check) 일치하는지 빠진게 없는지 검증하라는 내용이다.
별거 없다.

software-engineering 카테고리의 다른 글