UML의 핵심 요소-액티비티 다이어그램과 클래스 다이어그램

심지혜·2024년 4월 3일
0
post-thumbnail

소프트웨어 개발 과정에서 문제를 효과적으로 해결하려면 시스템의 다양한 측면을 이해하고 시각화해야 합니다. 이를 가능하게 하는 표준화된 일반 목적의 모델링 언어가 바로 UML(Unified Modeling Language)입니다. 이번 포스트에서는 UML의 주요 다이어그램 중 '액티비티 다이어그램'과 '클래스 다이어그램'에 대해 살펴보겠습니다.

UML (Unified Modeling Language)

UML은 소프트웨어 시스템을 시각화하고, 설계하고, 문서화하기 위한 표준화된 범용 모델링 언어입니다. 이는 복잡한 소프트웨어 시스템의 구조와 행동을 표현하는 데 사용됩니다.

UML의 목적

UML은 다양한 사람들이 시스템을 이해하고, 분석하고, 설계하고, 유지보수하는 데 도움이 되도록 설계되었습니다. 이에는 소프트웨어 개발자, 프로젝트 매니저, 사용자 등이 포함됩니다.

UML의 다이어그램 종류

UML에는 여러 종류의 다이어그램이 있으며, 각각이 시스템의 특정 측면을 설명합니다. 이들 중에는 클래스 다이어그램, 시퀀스 다이어그램, 사용 사례 다이어그램, 상태 다이어그램 등이 있습니다.

  • 클래스 다이어그램: 시스템의 정적 구조를 나타냅니다.
  • 시퀀스 다이어그램: 객체 간의 상호작용을 시간 순서에 따라 보여줍니다.
  • 사용 사례 다이어그램: 시스템이 어떻게 작동할지를 사용자의 관점에서 보여줍니다.
  • 상태 다이어그램: 시스템의 다양한 상태와 그 상태 간의 전환을 보여줍니다.

UML의 중요성

UML은 복잡한 시스템을 이해하고 표현하는 데 강력한 도구로, 소프트웨어 개발의 다양한 단계에서 널리 사용됩니다. 이는 시스템의 복잡성을 관리하고, 팀원 간의 의사소통을 개선하고, 시스템 설계의 품질을 향상시키는 데 도움이 됩니다.

액티비티 다이어그램

액티비티 다이어그램은 UML의 동적 다이어그램 중 하나로, 시스템 내에서 비즈니스 로직이나 프로세스 흐름을 표현하는 데 사용됩니다. 그래프의 형태로 표현되며, 일반적으로 비즈니스 프로세스 모델링, 워크플로우 모델링, 데이터 흐름을 모델링하는 데 이용됩니다.

활동 노드(Activity Nodes)

활동 노드는 액티비티 다이어그램에서 가장 기본적인 요소로, 시스템의 특정 작업을 나타냅니다. 이는 시스템의 상태나 조건의 변화를 나타내는 데 사용되며, 각 활동 노드는 특정 조건이 충족되었을 때만 실행될 수 있습니다.
활동 노드에는 아래와 같은 유형이 있습니다.

  • Action States: 시스템이 수행하는 하나의 작업을 나타냅니다. 예를 들어, '자료 검색', '결과 출력' 등의 작업이 여기에 해당됩니다.
  • Decision Nodes: 조건부 로직을 나타내며, 다수의 화살표가 이 노드에서 분기되어 다른 활동 노드로 향하게 됩니다.
  • Merge Nodes: 조건부 로직의 반대 개념으로, 여러 화살표가 하나의 활동 노드로 합쳐지는 지점입니다.
  • Initial Nodes: 액티비티의 시작점을 나타냅니다.
  • Final Nodes: 액티비티의 종료점을 나타냅니다.

엣지(Edges)

엣지는 활동 노드 간의 흐름을 나타내는 화살표입니다. 이러한 흐름은 일반적으로 작업의 순서를 나타냅니다. 엣지는 활동 노드와 함께 액티비티 다이어그램의 구조적 흐름을 형성합니다. 엣지는 다음 두 가지 주요 유형이 있습니다.

  • Control Flow Edges: 이것은 활동 노드 간의 제어 흐름을 나타냅니다. 제어 흐름은 특정 활동이 완료되면 다음 활동으로 이동합니다.
  • Object Flow Edges: 이것은 객체가 활동 노드간에 이동하는 것을 나타냅니다. 객체 흐름은 특정 활동이 객체를 생성, 조작, 또는 소비할 때 이동합니다.
    액티비티 다이어그램은 복잡한 시스템의 동작을 시각화하고 분석하는 데 매우 유용한 도구입니다. 이를 통해 프로세스의 흐름과 로직을 명확하게 이해하고 표현할 수 있습니다. 이것은 개발자가 시스템의 동작을 더 잘 이해하고, 이에 따라 더 효과적인 설계와 구현 전략을 도출할 수 있게 합니다.

클래스 다이어그램


클래스 다이어그램은 객체 지향 프로그래밍에서 시스템의 정적 구조를 표현하는 UML 다이어그램 중 하나입니다. 이는 시스템의 주요 구조와 클래스 간의 관계를 보여주는 데 사용되며, 시스템 설계 및 분석의 중요한 부분입니다.

클래스(Class)

클래스는 객체 지향 프로그래밍의 핵심 요소로, 비슷한 속성(attribute)과 메소드(method)를 가진 객체의 집합을 나타냅니다. 클래스 다이어그램에서 클래스는 일반적으로 세 개의 섹션으로 나뉩니다.

  • Class Name: 클래스의 이름을 나타냅니다. 이는 보통 클래스 다이어그램의 상단에 위치합니다.
  • Attributes: 클래스에 속한 변수를 나타냅니다. 이는 클래스의 상태를 정의하며, 클래스 다이어그램의 중간 섹션에 위치합니다.
  • Methods: 클래스에 속한 함수를 나타냅니다. 이는 클래스의 행동을 정의하며, 클래스 다이어그램의 하단 섹션에 위치합니다.

관계(Relationship)

클래스 간의 관계는 클래스 다이어그램의 핵심 부분으로, 클래스 간에 어떤 종류의 상호 작용이 발생하는지를 나타냅니다. 클래스 간의 관계는 다음과 같은 주요 형태가 있습니다.

  • Association: 두 클래스가 서로 관련이 있는 경우를 나타냅니다. 예를 들어, 학생 클래스와 선생님 클래스는 "학생은 선생님에게 배운다"는 관계를 가질 수 있습니다.
  • Aggregation: 한 클래스가 다른 클래스의 부분을 이루는 관계를 나타냅니다. 예를 들어, 학교 클래스와 학생 클래스는 "학교는 학생들로 구성된다"는 관계를 가질 수 있습니다.
  • Inheritance (Generalization): 한 클래스가 다른 클래스의 특성을 상속받는 관계를 나타냅니다. 예를 들어, 사람 클래스에서 학생 클래스와 선생님 클래스로 분기하는 경우, 학생과 선생님은 사람의 특성을 상속받습니다.
  • Dependency: 한 클래스가 다른 클래스에 의존하는 경우를 나타냅니다. 예를 들어, "ReportGenerator" 클래스가 "Student" 클래스의 데이터를 필요로 하는 경우, 이들은 의존 관계에 있습니다.
  • Composition: Aggregation과 비슷하나, 부분과 전체 사이의 관계가 더 강력한 경우를 나타냅니다. 예를 들어, "Head" 클래스와 "Body" 클래스는 "Person" 클래스를 구성하는 관계를 가질 수 있습니다.
    클래스 다이어그램은 시스템의 구조적 측면을 명확하게 이해하고 표현하는 데 매우 유용한 도구입니다. 이를 통해 개발자는 시스템의 요소와 이들의 상호작용을 더 잘 이해하고, 이에 따라 더 효과적인 설계와 구현 전략을 도출할 수 있습니다.

이를 바탕으로, 저도 쿠팡의 액티비티 다이어그램을 작성해 봤습니다.
멋지죠?

좋은 하루 되세요.

0개의 댓글