2024년까지 얼마남지 않았습니다. 지난 1년을 돌아보시면 어떠신가요? 매년 반복되는 것 같지만, 또 한 편으로는 새로운 걸 익히게 되는 1년이기도 합니다. 이제 얼마남지 않은 2023년, 내년에 새롭게 배울 지식을 조금 미리 눈에 익혀보시는 걸 추천드립니다. 만약 개발에 관심있는 분들이라면 이걸 사용하지 않을 수가 없는데요. 바로 개발자들이 유용하게 활용하는 언어와 시스템 도면인 UML, UML 다이어그램입니다.
Part1: UML 다이어그램
1. UML 다이어그램은?
UML은 Unified Modeling Language의 약자로 통합 모델링 언어라는 뜻입니다. UML 다이어그램은 통합 모델링 언어를 사용하여 시스템 상호작용, 업무흐름, 컴포넌스 관계, 시스템 구조 등 소프트 웨어 등을 그린 도면입니다.
UML이 등장하게 된 배경은 시스템이 점점 복잡해져서 표준적인 방법으로 시스템을 나타낼 표기법이 필요했기 때문입니다. UML은 객체지향 프로그래밍을 가능하게 해주는 모델링 언어라고 하는데요. 객체지향 프로그래밍은 컴퓨터 프로그램을 명령어가 나열된 리스트로 보는 시선에서 벗어나, 서로 독립된 단위인 '객체'들의 모임으로 파악하는 것입니다.
2. UML의 역사
UML은 하나의 시스템을 표현하는데 있어 표준적인 방법을 제공하기 위해 만들어졌습니다. UML은 1994년 10월, Rational 사의 Grady Booch, James Rumbaugh가 처음으로 개발에 착수했습니다. 이후 1995년 10월 Unified Method 0.8이라는 이름으로 OOPSLA '95에서 발표되었고, 1996년에는 버전 0.9를 발표합니다. 1997년 UML 버전 1.0을 만들었고, 1997년 말 UML 1.1 이 OMG(국제 기술 표준기구 Object Management Group)가 표준으로 채택했습니다.
3. UML 다이어그램 사용해야 하는 이유
UML이 OMG 표준기구로부터 인정받은 표준화 그래픽언어로 자리 잡으면서 개발자 사이 의사소통이 원활해지고 시스템을 통합하기에 용이해졌습니다. 개발 시스템을 두고 관련된 모든 사람이 편리하게 의견과 비전을 나눌 수 있는 환경이 만들어졌습니다. 운영자, 사용자, 개발자 등 여러 사람에게 시스템의 의도를 쉽게 전달할 수 있다는 부분이 장점입니다. 즉, UML 다이어그램은 개발자와 개발자, 비개발자와 개발자의 소통을 도와주는 특별한 도구입니다.
Part2 : UML 다이어그램 종류 및 특징
1. 클래스 다이어그램(Class Diagram)
클래스 다이어그램은 시스템에서 사용되는 객체 타입을 정의하는 UML 다이어그램입니다. 객체 지향 시스템에서 공통적으로 많이 쓰이는 UML 다이어그램이며, 프로그램 코드로 바로 변환이 가능하다는 장점이 있습니다. 클래스는 이름, 속성, 연산으로 구성되고 모델 요소와 클래스 간의 관계를 여러 모양의 화살표와 선으로 표현합니다.
2. 유스케이스 다이어그램(Use case Diagram)
유스케이스 다이어그램은 시스템과 사용자의 상호작용을 다이어그램으로 표현한 UML 다이어그램입니다. 사용자가 시스템 내부 기능 중 어떤 기능을 사용 가능한지 나타내기 때문에, 고객과 개발자의 요구사항 관련 의견을 조율 할 수 있습니다. 사용자와 시스템 사이의 관계를 나타내는 다이어그램입니다.
3. 패키지 다이어그램(Package Diagram)
패키지는 클래스와 같은 여러 모델 요소를 그룹화하여 표현하는 UML 다이어그램입니다. 패키지 다이어그램에선 서로 다른 패키지들 사이 의존관계를 표현합니다. 패키지는 여러 클래스들로 구성된 묶음을 말하고, 의존관계는 하나의 패키지가 다른 패키지를 사용하는 관계입니다.
4.상태 다이어그램 (Statechart Diagram)
상태 다이어그램은 객체 가지는 모든 가능한 상태를 표현한 UML 다이어그램입니다. 진입 조건, 탈출 조건, 상태 전이에 필요한 사건 등 자세한 상황을 표현합니다. 설계 단계에서 객체가 동적 행동을 어떻게 하는지 표현하는데 쓰입니다.
5. 액티비티 다이어그램 (Activity Diagram)
액티비티 다이어그램은 객체가 로직이나 조건에 따라 처리되는 흐름을 순서에 따라 정의한 UML 다이어그램입니다. 무언가를 하고 있는 상태를 '활동'이라 하고, 시작 상태와 종료 상태, 선택점과 전이 등 클래스의 관계와 생명 주기나 관계를 표현합니다.
6. 컴포넌트 다이어그램 (Component Diagram)
컴포넌트 다이어그램은 시스템을 구성하는 요소들의 조직과 종속성을 보여줍니다. 컴포넌트는 UML 다이어그램 중에서도 클래스 다이어그램과 비슷한데 둘 다 의존성이 있고 일반화가 가능합니다. 정해진 인터페이스를 실현 가능하기도 합니다. 단, 클래스는 논리적인 추상화에 가까운 반면 컴포넌트는 물리적 요소를 나타냅니다. 클래스는 속성과 오퍼레이션을 직접 가지지만, 컴포넌트는 자신의 인터페이스를 통해 접근 가능한 오퍼레이션만 가질 수 있습니다.
Part3: 간단한 UML 다이어그램 툴
이제 UML이 무엇인지, 왜 필요한지, UML 다이어그램의 종류에는 무엇이 있는지 간단하게 알아보았습니다. 과거에는 UML을 손으로 그렸고, 컴퓨터가 발달한 이후에는 그래픽 툴을 이용해 그렸습니다. 현재는 협업툴 등 여러 소프트웨어를 이용하여 더욱 쉽게 UML 다이어그램을 그릴 수 있게 되었습니다. UML 다이어그램 툴로 활용 가능한 소프트웨어에는 여러 가지가 있는데, 사용법이 간편한 Boardmix로 UML 다이어그램을 그려보도록 하겠습니다.
여기서 '협업 화이트보드'로 빈 화면에서 시작할 수도 있고, 모양 버튼을 눌러 탬플릿을 찾아 UML 툴로 활용도 가능합니다.
모양에는 UML 카테고리가 따로 있습니다. 해당 카테고리를 누르면 시작, 끝, Flow Final, User case 등 UML에 자주 쓰이는 용어들이 눈에 띕니다. 자신에게 필요한 UML 다이어그램 형식에 맞춰 작업하면 됩니다.
UML 다이어그램을 만든 후 팀원과 같이 코멘트, 채팅, 공유도 편하다는 점이 UML 툴이 유용한 이유 중 하나입니다.
마무리
지금까지 UML과 UML 다이어그램, 그리고 작업을 간단하게 수행하도록 도와주는 UML 툴까지 이야기해보았습니다. UML과 UML 다이어그램은 개발자에게는 매우 친숙한 개념입니다. 개발자이신 분들은 작업을 더욱 빠르게, 개발자를 준비하는 분들께는 어떻게 해야 내가 개발하는 부분을 표준화하여 더 간단하게 표현할지 훈련이 필요합니다. Boardmix와 같이 간단한 UML 툴과 친숙해져서 효율적인 개발 시간을 만들어나가시길 바랍니다.