2017년 11월 19일 일요일

UML과 Plantuml

차례


시작하며….

개발을 배우게 되면 자연스럽게 UML이란 것도 배우거나 알게 됩니다.

개발을 할 때 보통 준비 작업 없이 머릿속의 있는 것을 Code로 변환하지요.

물론 간단한 것들은 그렇게 해도 큰 문제 없이 진행 가능하지요.

하지만 다수가 함께하려면 서로의 의견을 그림으로 설명을 해야 하죠.

또한 호흡이 긴 프로젝트라고 하면 자신을 위해서라도 자료를 만들어 둘 필요가 있어요.

왜냐면… 왜 그렇게 구현을 했는지 나중에 왜 그렇게 했는지 잊어 버리게 돼요..ㅎㅎㅎㅎ
(저만 그럴 수도 있지만요..;;;))

그럴 때 UML이라는 것이 도움되곤 합니다.

사실 필요성을 느끼지 못한다면 안 만들어도 되지요.

하지만 반대로 필요성을 느낀다면 그만큼 강력한 도구이기도 하고요.

그럼 UML을 그리기 위한 도구가 당연히 필요할 텐데요.

제가 UML이란 무언가를 간략하게 보여 드리고..

지금 사용하고 있는 Tool인 Plantuml에 대해 설명해 드리겠습니다.

UML


1. UML

Unified Modeling Language의 단축형으로 단순히 해석을 하게 되면 통합 모델링 언어쯤 되겠네요.

좀더 자세히 들어가면 소프트웨어 엔지리어링 분야에서 개발이나 모델링을 할 때 사용하는 언어라고 하더라고요.

근데 어려운 말은 다 지우고 하나만 기억하시죠.

언어!!

언어란 누군가에게 자기 생각을 전달하는 도구 아닌가요?

그러니 이 UML 역시 개발 시에 어떻게 구조를 잡을 것이고 어떤 순서로 진행되는지를 상대방에게 알려주는 도구라고 보시면 될 거 같아요.

물론 그 상대방이 미래의 자신이 될 수도 있고요.

소프트웨어 프로그램을 나타낼 때 크게 두 가지로 나눌 수 있다고 하네요.

구조와 행동으로요.

그래서 UML도 크게 Structure diagrams와 Behavior diagrams로 나누어지는데 대표적인 Diagram을 적어 볼게요.
(여기서 대표적이라고 하는 건 제가 사용한다는 거예요.^^ 굉장히 주관적이라는 거죠.ㅎㅎ)

1) Structure Diagrams

  • Class Diagram : Class와 Interface의 상관도


Component Diagram, Object Diagram도 있지만..

제가 잘 안 쓰게 되더라고요.

그리고 서로 간의 차이도 잘 모르겠기도 했고요.

더 중요한 건…. 다른 사람들도 그 차이를 잘 몰라요…ㅎㅎㅎ

그러니 특별히 구분 질 필요가 없어요.

아까도 이야기 했지만 UML은 언어예요.

본인이 아무리 고급스러운 사자성어를 쓰고 어려운 영어 단어를 쓴다고 하더라도 상대방이 모르면 우리는 서로의 생각을 이해 할 수 없잖아요.

그러니 다른 사람도 알만한 언어로 이야기 하자고요.

2) Behavior Diagrams

  • Sequence Diagram : Object 간의 함수 Call의 흐름
  • Activity Diagram : 순서도
  • State Diagram : 상태에 변화도
  • Use Case Diagram : 시스템이 수행하는 업무들


정의를 내리려고 하지만 잘 안되네요.

예제를 보여 주면서 하는 게 좋을 텐데 다음 장에 UML 도구로 간단하게 보여 드리도록 할게요.

이런 Diagram에서는 각자 사용하는 문법이 조금씩 달라요.

또한 시간에 따라 언어가 바뀌었듯 UML도 버전이 업이 되면서 새롭거나 사라진 문법들도 있고요.

여기서는 역사 이야기는 하지 않을게요.^^

그럼 저런 UML을 잘 만들어 줄 수 있는 툴이 뭐가 있는지 같이 볼게요.

Plantuml


2. UML 작성 툴 : Plantuml

현재는 UML을 작성 할 때 Plantuml만 사용하고 있어요.

그 만큼 만족한다는 거겠죠.

그렇다고 하면 저는 이전에 어떤 툴을 사용하였고 Plantuml이 무언지 아주 간단하게 알려 드릴게요.

1) 이전 Tool들의 단점

혹시 StarUML이나 Visio 같은 프로그램을 들어 보셨나요??

StarUML은 대표적인 무료 툴이었고(최근에 홈페이지 들어가니 유료로 바뀌었더라고요.)
(과거의 무료 버전은 http://staruml.sourceforge.net/v1/ 에서 받을 수 있는거 같아요.)

Visio는 MS의 툴인데 잘 쓰는 분들은 기가 막히게 사용하시더라고요.

그렇지만 저에게는 둘 다 큰 장점을 느낄 수 없었어요.

회사 입사 초반에는 StarUML을 사용하였습니다.

해당 툴로 Diagram 그리는 건 큰 문제 없었지만 몇몇 가지가 너무 힘들었어요.

  • 수정(Edit)
  • 재사용성
  • Viewer의 부재


수정

예를 들어 A와 B Object의 Sequence Diagram을 완벽히 그려 놨어요.

그런데 A와 B 사이에 C라는 Object가 생겼어요.

그럼 지금까지 A와 B 사이의 함수 Call들을 모두 이동을 해줘야 해요.

아시는 분은 아시겠지만 그런 추가 사항들이 나중에는 점점 더 많아진다는 거죠..;;;

그 쯤 되면 이제 개발을 하는 것이 아니라 UML 만들다가 시간이 다 가게 돼요.

그러다 보니 UML은 개발이 완료된 시점에서야 그리게 되는 거죠.

개발 다 했다고 하면 쉬어야 하는데 숙제가 남은 느낌이 되서 오히려 귀찮은 작업이 되는 악순환에 빠지고 안 하게 되는 문제가 있어요.

재사용성

수정 하기가 어려우니 비슷한 Diagram을 만들려고 하더라도 이전에 만들었던 UML은 거의 재사용이 안 되죠.

매번 신규로 만들어야 한다고 보시면 되죠.

그럼 위와 같은 문제가 또 발생하게 되는 거죠.

Viewer의 부재

Visio의 경우는 모르겠지만 제가 사용하던 당시의 StarUML은 Viewer가 없었어요.

그러니 만들어 두더라도 다른 PC에서는 보기가 어려웠죠.

제가 StarUML을 설치를 다시 해야 했으니까요.

처음에는 팀원 분들 모두 설치하게 하려고 했지만….

거의 막내였던 저의 힘은 한없이 초라하니…ㅎㅎ


물론 지금의 StarUML이 위의 단점들이 모두 해결 되었을 수도 있으니 원하시는 분들은 다운 받아 보셔서 사용해 보는 것도 좋을거 같아요.

하지만 그 당시에는 그냥 혼자만 가지고 놀다가 StarUML을 접게 되었습니다.

그렇지만 UML에 목마름은 지속 되었고 저에게 적합한 툴을 찾게 되었어요.

2) PlantUML

우선 주소는 아래와 같아요.

http://plantuml.com/

이름이 굉장히 마음에 들었어요.

UML 공장이라고 보면 되잖아요.^^

간단하게 설명을 하면 Script 방식으로 UML을 작성하고 Generater를 통해 그림 형태로 만드는 거예요.

예를 들어…

@startuml
Bob->Alice : hello
@enduml

라고 적기만 하면 아래와 같은 그림이 나오게 되죠.


더 자세한 문법은 사이트에서 확인할 수 있어요.

그리고 저 역시 다음 장에 사용법에 대해 알려 드리겠습니다.

이 Plantuml의 장점은 위에서 말한 단점을 모두 해결했다는 거예요.

수정도 쉽고 재사용도 쉽고 많은 Generater를 통해 쉽게 변환할 수 있죠.

그리고 상대방에게는 png 형태로 전달하면 되니 특별히 Viewer를 설치할 필요가 없어요.^^

물론 단점도 있어요.

스크립트 대로 그림을 그리는건데 어쩔 때는 제가 원하는 형태가 나오지는 않아요..;;

또한 몇몇가지의 제한 사항들도 있고요.

그래도 장점이 너무 크니 아직도 사용하는 중이겠죠?? ㅎㅎ

마치며….

Plantuml을 사용하면서 UML에 대한 장점들을 많이 느끼고 있었어요.

그렇지만 주변 분들 중에는 UML에 대한 관심을 가지지 않으시는 분들이 많기도 하고요.

그래서 이렇게 글을 쓰는거고요.^^

다음 강좌에서 Diagram을 그리면서 Plantuml에 더 자세히 알아보도록 하겠습니다~!

댓글 없음:

댓글 쓰기