티스토리 뷰

 시스템 개선업무를 진행하면서 팀원에게 개선된 구조 리뷰를 진행하게 되었습니다.
 “어떻게하면 개선된 구조를 잘 이해시킬 수 있을까” 라는 고민을 하게 되었습니다. 그러던 중 과거에는 UML 이라는 산출물을 많이 작성했었는데, 최근에는 거의 작성한 적이 없는 것 같다는 생각이 들었습니다.

 만약 UML 을 작성하게 되면 구조를 이해하는데 도움이 될까요?

 먼저 UML 이란 무엇일까요?
 통합 모델링 언어(Unified Modeling Language) 로 객체 지향 소프트웨어 집약 시스템을 개발할 때 산출물을 명세화, 시각화, 문서화 할 때 사용하는 언어라고 위키피디아에서는 소개하고 있습니다.

 그럼 왜 모델을 만들어야 할까요?
 항공 우주 엔지니어는 왜 비행기의 모델을 만들고, 토목 엔지니어는 왜 다리의 모델을 만들까요? 모델의 목적은 무엇일까요?
 엔지니어는 자기 설계가 실제로 잘 작동할지 알아보려고 모델을 만듭니다. 항공 우주 엔지니어는 비행기의 모델을 만들어 바람 터널을 넣어서 이 비행기가 실제로 날 수 있을지 확인하고, 토목 엔지니어는 다리의 모델을 만들어서 이 다리가 제대로 서 있을지 확인합니다. 건축가는 빌딩의 모델을 만들어서 건축주가 그 빌딩의 모습을 좋아할지 알아봅니다. 즉, ‘어떤 것이 실제로도 잘 작동하는지 알아보려고 만드는 것이 모델입니다'
 여기에는 모델은 반드시 시험해 볼 수 있어야 한다는 의미가 함축되어 있습니다. 만약 모델을 평가할 수 없다면 그 모델은 가치가 없다는 의미입니다.

 그렇다면 소프트웨어 모델은 시험해 볼 수 있을까요? 불행하게도 UML 다이어그램에는 확고한 시험 기준이 없습니다. UML 다이어그램을 그리는 일이 소프트웨어를 만드는 것보다 비용이 적게 들긴 하지만 다른 분야의 모델처럼 훨씬 적게 드는 것도 아닙니다. 어쩔 때는 다이어그램보다 소스코드를 바꾸기가 쉬운 경우도 있습니다. 그렇다면 UML 을 사용해야 하는 이유는 무엇일까요?
 
 “UML 조심하지 않으면 잘못 사용하기 쉽다, 시험해 볼 구체적인 것이 있고, 그것을 코드로 시험해 보는 것보다 UML 로 시험해 보는 쪽이 비용이 덜 들 때 UML 을 사용한다”

 그럼 언제 UML 을 사용해야 하고, 또 왜 사용해야 할까요?

  • 다른 사람들과 의사 소통하기
    UML 은 소프트웨어 개발자끼리 설계 개념에 대한 의견을 주고받을 때 굉장히 편리합니다. 만약 다른 사람에게 말해 줄 아이디어가 있다면, UML 이 큰 도움이 될 수 있습니다.
  • 로드맵
    UML 은 대규모 소프토웨어 구조의 로드맵을 만들 때 유용합니다.
  • 백엔드 문서
    문서 작성을 프로젝트 막바지에 마지막 작업으로 하는 것이 가장 좋습니다. 그럼 마지막에 설계 상태를 정확하게 반영할 것이며, 분명히 유용한 자료가 될 것입니다. 하지만 주의해야 할 사항도 있습니다. “아무도 몇천 장짜리 시퀀스 다이어그램을 원하지 않는다. 그 대신 우리가 원하는 것은 시스템의 핵심 내용을 짚어서 기술하는 핵심적인 다이어그램 몇 개다"

위 내용은 “UML 실전에서는 이것만 쓴다 : Java 프로그래머를 위한 UML” 를 요약 & 정리한 내용입니다.

정리한 내용을 요약해보면 “꼭 필요하다고 생각되면 사용해라” 정도로 요약될 것 같습니다.
꼭 필요한 때는 개인마다 다를 수 있지만, 누군가에게 시스템의 전체그림을 이야기 하거나 특정 부분을 상세화 할 때 사용하면 도움이 되지 않을까 생각합니다.


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함