이 포스팅은 UML이 무엇이고, 어떻게 탄생했는지 언제 사용하고 주요 다이어그램은 무엇이 있는지 다룹니다. 각 다이어그램에 대한 자세한 사용법은 다루지 않습니다.

UML이란 

Unified Modeling Language의 약자로 1997년 OMG(Object Management Group)에서 표준으로 채택한 통합모델링언어입니다. 즉, 모델을 만드는 표준언어인 것입니다.

정해진 기호(symbol)와 다이어그램(diagram)으로 소프트웨어 시스템의 산출물을 가시화, 구축, 문서화하는 도구라도고 할 수 있습니다.

img

UML에 대해 이야기하는 여러 자료들을 보면, 대부분 UML의 장점과 단점에 대해 안내하고 있습니다. UML을 통해 문제를 잘 이해하고, 개발하고자 하는 바를 명확하게 하여 테스트해보고, 의사소통을 용이하게 할 수 있지만 잘못 사용한다면 실제 소프트웨어 개발에는 도움이 되지 않는, 그저 그림일 뿐인 산출물을 만들게 될 수 있습니다.

“UML 실전에서는 이것만 쓴다” 의 저자 로버트 마틴은 ‘UML을 언제 사용하는가’라는 질문에 ‘뭔가 꼭 테스트해야 할 것이 있고 그것을 테스트하는 데 코드로 하는 것보다 UML로 하는 것이 더 값싼 경우에 UML을 사용한다’. 고 답했습니다. 어떤 도구를 쓰던 마찬가지이겠지만, 이 도구를 왜 쓰는지를 기억하며 적절한 때에 적절한 방법으로 쓰는 것이 중요합니다.

UML의 역사

재미로. .. from wiki

UML은 그래디 부치, 제임스 럼버, 이바 야콥슨 3인방에 의해 탄생했습니다. 세 사람은 80년대 전반부터 90년대 초반까지 객체지향 분석 설계 분야에서 방법론을 연구하던 사람들입니다. 그들이 발표한 방법론은 늘 탁월했고, 세 사람은 90년대 중반부터 아이디어를 교환하며 각자의 방법론을 하나로 합치기 시작했습니다.

셋의 방법론을 하나로 합치며 탄생한 UM의 초안 버전은 소프트웨어 업계에 큰 반향을 일으켰고, 객체 관리 그룹(OMG: Object Management Group)에 의해 UML은 표준 모델링 언어로 채택되었습니다. 버전 1.1d가 최초로 표준 모델링 언어로 채택되었고, 버전 1.3, 1.4, 1.5 가 대부분의 모델과 UML 모델링 책에 적용되고 있습니다. 2005년엔 버전 2.0이 승인되었습니다.

UML(Unified Modeling Language) 목적

UML은 여러 개발단계에 걸쳐 목적에 따라 사용될 수 있습니다. 개발 단계를 요구사항 정의 -> 분석 -> 설계 -> 구현 -> 테스트 라고 했을 때 각 단계별 목적은 아래와 같습니다.

  • 요구사항 정의/분석 단계에서 문제 도메인 이해
  • 설계 단계에서 소프트웨어 설계 제안
  • 구현/테스트 단계에서 이미 완성된 스프트웨어 구현에 대한 다이어그램
    • 한눈에 보기 복잡한 코드를 시각화하여 개발 중인 시스템을 이해 및 유지보수
    • 시각화를 통한 소통과 디버깅

마틴파울러의 3가지 차원의 UML

마틴 파울러는 이러한 서로 다른 세가지 차원을 각각 다음과 같이 정의했습니다.

  • 개념(conceptual)
    • 사람이 풀고자하는 문제 도메인 안에 있는 개념과 추상적 개념을 기술하기 위한 속기용 기호
  • 명세(specification)
    • 소스코드로 바꾸려고 그리는 것
  • 구현(implementation)
    • 이미 있는 소스코드를 설명하려 그리는 것

명세와 구현 차원은 소스코드와 직접적으로 관련이 있기 때문에 반드시 일정한 규칙과 의미론을 지켜야하고 모호성이 거의 없도록 형식도 잘 맞춰야 합니다.

반면 개념 차원의 다이어그램은 소스코드와 그렇게 관계가 깊지 않으며, 오히려 ‘사람의 자연 언어’와 더 관련이 있습니다. 이 차원의 다이어그램은 의미론적 규칙에 그다지 얽매이지 않으며, 따라서 의미하는 바도 모호하거나 해석에 따라 달라질 수 있습니다.

UML의 주요 다이어그램

Uml 다이어그램은 클래스, 시퀀스, 유즈케이스 등 구조와 행위따라 총 14개의 다이어그램이 있습니다. 개발하는 시스템의 유형과 규모에 따라서 필요한 다이어그램을 선택하여 사용합니다.

img img

reference

테크연님 블로그 - [UML]UML(Unified Modeling Language) 이란?
위키백과 - 통합 모델링 언어(UML)