본문 바로가기

C++

UML(Unified Modeling Language)란?

UML은 통합 모델링 언어라고도 한다. UML은 프로그램을 모델링하기 위한 언어로써, 선과 도형으로 프로그램의 요소들을 표현함으로써 단순화 시킨 것이다. UML을 사용하면 코드를 분석하느라 진을 다 빼지 않더라도 복잡한 프로그램을 시각화 할 수 있다.


UML은 서로 다른 세 개의 모델링 언어로부터 시작되었다. 하나는 Rational Software의 Grady Booch이 만든 것이고, 다른 하나는 General Electric의 James Rumbaugh이 만든 것이고, 마지막 하나는 Ericson의 Ivar Jacobson이 만든 것이다. 결국에는 Rumbaugh와 Jacobson이 Rational 사에 합류하게 되며, 1990년대 후반에는 각자가 개발한 언어들을 하나로 통합하는 작업을 했는데, 이것이 UML이다.


그렇다면 우리는 왜 UML을 써야 할까? 


큰 프로그램은 소스 코드를 보기만 해서는 프로그램의 구성 요소가 어떻게 관계를 맺고 있는지 이해하기가 어렵다. 물론 절차지향 프로그래밍에서 객체지향 프로그래밍으로 넘어가면서 이 부분에서 큰 발전이 있었다. 그럼에도 불구하고 프로그램이 어떤 것이지에 대해서 이해하기 위해서는 오랜 시간 코드를 봐야 한다.


소스 코드로 프로그램을 파악하는 것이 안좋은 이유는 코드가 지나칠 정도로 구체적이라서 한 눈에 보기가 어렵기 때문이다. 그렇기 때문에 프로그램의 핵심적인 것만 묘사해 그들이 어떻게 서로 관계를 맺고 있는지 보여주는 것이 있다면 좋을 것이다. 그 필요를 충족시켜 주는 것이 UML이다.


UML에서 가장 중요한 부분은 프로그램의 여러 요소를 표현할 수 있는 다이어그램이다. 클래스 다이어그램은 클래스 끼리의 관계를 보여주며, 객체 다이어그램은 그 객체가 어떤 정보를 가지고 있는지 보여주며, 시퀀스 다이어그램(sequence diagram)은 시간의 흐름에 따라 객체들이 서로 영향을 주고 받는 것을 보여주며, 유즈 케이스 다이어그램(use case diagram)은 사용자가 프로그램과 어떻게 상호작용하는지 보여준다. 이러한 다이어그램들은 프로그램과 그것의 작동을 바라보는 다양한 방법을 제공한다.


UML은 프로그램이 어떻게 작동하는지 보여주는 것 말고도 다양한 기능을 수행한다. 가장 대표적인 것으로, 프로그램 개발의 시작 단계에 프로그램을 디자인 할 때도 사용된다. 사실, UML은 처음부터 문서 작업, 테스팅, 유지 보수에까지 프로그램 개발의 전반에 걸쳐 사용된다.


하지만 UML은 소프트웨어 개발 프로세스가 아니다. UML은 그저 개발되는 소프트웨어를 시각화하는 방법이다. 또한 UML은 어떤 종류의 프로그래밍 언어에도 적용될 수 있지만, 특히 객체지향 언어에 맞춰 조정되었다.