다이어그램 그릴 때 생각해 볼 점

Description: UML다이어그램과 같이 시각화를 통해 프로그램이나 클래스, 기능을 표현하는 것에 생각해본 글입니다. 어떤 목적에 의해 어떤 다이어그램을 선택할지나 또는 다이어그램인 만큼 어떤 대상을 기준으로 할지, 읽는 사람은 어떤 사람인지등에 따라 조정하는 점등 단순히 기술적으로 그리기전에 누구를 위해 어떤 것을 선택할지를 생각해본 점입니다.

현재 노트: KR-410.10 c 다이어그램 그릴 때 생각해 볼 점
상위 분류: KR-410.10 개발자로서 한 번쯤 생각해볼 고민들

#개인학습과성장

다이어그램을 쓰는 이유

UML이나 다이어그램에대한 설명은 인터넷에 많이 있다보니 UML다이어그램에 대한 생각, 예시로 글을 진행하겠습니다.

일단 다이어그램은 시각화를 하며 미쳐 생각지 못한 부분을 발견 할 수 있게됩니다. 컴포넌트 단위, 함수 단위, 한 시스템 단위, 전체 시스템 등등 그 범위와 목적에 따라 시각화를 진행하게된다. 다이어그램을 그리다보면 내가 미쳐생각하지못했던 변수, 로직에 대해 깨닫게된다. 왜냐하면 머릿속에서 어 이러면 될거겉은데 하고 그리다보면 아 여기서 이거 처리를 해줘야되네 같은느낌이다.

다이어그램에서 중요한 것은

물론 여러 다이어그램을 아는 것은 중요하지만 개인적으로는 어떤 목적에 어떤 다이어그램을쓰고 어떤 요소를 기준으로 할 것인가?이다.

예시를 들어보자. 우리는 마침 기획단계에서 여러 이해관게자를 설득하기 위한 다이어그램이 필요하다. 처음 만나는 개발자와 IT를 모르는 분들도 이해하기 위한 기획단계의 다이어그램이 필요하다. 어떻게해야할까?

이런 상황에서는 먼저 너무 세부적이면 안된다. 기획은 언제든 바뀔 수있고 토의하는 자리이다. 너무 딱딱하게 시스템을 잡는다면 결국 다시 고칠 것이다. 또한 처음협업하는 개발자와 IT를 모르는 분들을 위해 단어선정, 표현도 너무 어려우면 안된다. 우리는 전체적으로 이런이런느낌의 프로그램입니다가 전해져야하는것이다.
그렇다면 적절한 것은 유스케이스 다이어그램이 될 것이다.

다음은 유스케이스 다이어그램예시이다.
다음과 같이 전체 시스템의 동작뿐만아니라 누구나 쉽게 사용하는 단어로 이해 가능하다.
출처

이 다이어그램을 그리기전에 Actor즉 사용자는 누구인가? 작동하는 동작 유스케이스는 어떤것들이 있는가? 그리고 유스케이스와 유스케이스 또는 액터와 유스케이스의 관계 및 의존성등은? 이런 것들을 생각하고 판단하는게 중요하다

개인적으로 자주 사용하는 것은 상태다이어그램과, 시퀸스 다이어그램이다.
상태다이어그램은 좀더 개발에 딥다이브하여 정확한 상태의 변화를 표현하기위한 다이어그램이다. 우리가 중요시하는 데이터구조를 설정하는데 쓰인다고 할 수 있다.

다음 예시에서는 문이라는 객체가 어떤 동작들에의해 어떤 상태가 되는지 그림 예시. 뉘앙스 자체는 우리가 문이라는데이터에대해 어떤 동작(문이열림,닫힘, 버튼)이되는지 기준을 세우고 시각화한다. 즉 여기서도 어떤것을 객체로 둘것인가? 어떤 동작이 있는가? 그래서 해당동작으로 객체의 상태는 무엇에서 무엇으로바뀌는가?를 정의하는게 어렵지 그리는것은 문제가 아니다.

시퀸스 다이어그램

다음과 같이 시간의 흐름에 따라 시스템과 객체의 상호작용흐름을 나타낸 다이어그램이다.
여기서도 어떤시스템이 들어갈까? 객체와 시스템간의 상호작용 순서는? 상호작용은 어떤 것들이 있을까? 이거 빼고 저거 넣어도되나? 등이 정말 고민하고 중요한부분이지. 이후 그리는 것은 쉽다