본문 바로가기

FrontEnd

[객체지향설계] 객체지향 설계 및 분석 : UML과 Use Case 다이어그램

반응형

grokking-the-object-oriented-design-interview의 개념 부분을 학습하고 정리한 내용입니다.

객체지향 분석 및 설계

객체지향 프로그래밍은 데이터(상태)와 해당 데이터와 관련된 메서드(기능)을 객체라는 개념 안에 감싸는 방식으로 프로그래밍 하는 것

객체지향 분석 및 설계는 객체 지향 개념을 적용하여 시스템을 분석하고 설계하는 구조화된 방법입니다.
 
  • 이 설계 프로세스는 시스템을 구성하는 객체를 파악하는 것부터 시작함
  • 먼저 시스템의 객체를 식별
  • 그 다음 다양한 개체 간의 상호 작용을 파악
OO 분석 및 설계 프로세스는 다음과 같이 설명할 수 있습니다.
  1. 시스템에서 객체 식별
  2. 객체 간의 관계 정의
  3. 각 객체의 인터페이스 설정
  4. OO 언어를 사용하여 실행 파일로 변환할 수 있는 디자인을 구현

UML

이 모든 정보를 문서화하려면 표준 방법/도구가 필요합니다.
이를 위해 UML을 사용합니다.
 
UML은 객체 지향(OO) 분석 및 디자인의 후속 제품으로 간주될 수 있습니다.
UML은 객체 지향 분석 및 디자인에 존재하는 모든 개념을 나타낼 만큼 강력합니다.
 
UML 다이어그램은 객체 지향 개념을 표현한 것에 불과합니다.
따라서 UML을 배우기 전에 OO 개념을 이해하는 것이 필수적입니다.
 
UML은 Unified Modeling Language의 약자이며 소프트웨어 시스템의 객체 지향 분석 결과를 모델링하는 데 사용됩니다.
UML은 엔지니어, 사업가 및 시스템 설계자가 설계 중인 시스템의 동작과 구조를 이해하는 데 도움이 되는 다이어그램 모음을 사용하여
소프트웨어 시스템을 시각화하고 문서화하는 방법입니다.
 

UML 로고

UML 사용의 이점:

  1. 소프트웨어 시스템에 대한 빠른 이해
  2. UML 모델링은 복잡한 시스템을 쉽게 이해할 수 있는 개별 조각으로 나누는 데 도움이 됩니다.
  3. UML의 그래픽 표기법을 사용하여 디자인 결정을 전달할 수 있습니다.
  4. UML은 특정 플랫폼이나 언어 또는 기술과 독립적이므로 개념을 추상화하기가 더 쉽습니다.
  5. 새로운 팀에 시스템을 넘기는 것이 더 쉬워집니다.

UML 다이어그램 타입:

현재 UML 표준은 14가지 종류의 다이어그램을 포함합니다.
이러한 다이어그램은 구조 다이어그램과 동작 또는 상호 작용 다이어그램 두 가지 개별 그룹으로 구성됩니다.
이름에서 알 수 있듯이
구조 UML 다이어그램은 시스템 또는 프로세스의 구조를 분석하고 설명하는 반면
동작 UML 다이어그램은 시스템, 액터(사용자) 및 컴포넌트의 동작을 설명합니다.
 
다양한 UML 타입은 다음과 같이 분류됩니다.
 

Structural UML diagrams

  • Class diagram
  • Object diagram
  • Package diagram
  • Component diagram
  • Composite structure diagram
  • Deployment diagram
  • Profile diagram

Behavioral UML diagrams

  • Use case diagram
  • Activity diagram
  • Sequence diagram
  • State diagram
  • Communication diagram
  • Interaction overview diagram
  • Timing diagram
객체지향 모델링을 위해선 주로 아래 4가지 UML 다이어그램을 상요합니다.
  • 사용 사례 다이어그램(Use case diagram):
    • 사용자 시나리오 집합을 설명하는 데 사용되는 이 다이어그램은 시스템에서 제공하는 기능을 보여줍니다.
  • 클래스 다이어그램(Class diagram):
    • 사용 사례의 구조와 동작을 설명하는 데 사용되는 이 다이어그램은 항목 및 관계 측면에서 시스템의 개념적 모델을 제공합니다.
  • 액티비티 다이어그램(Activity diagram):
    • 두 개 이상의 클래스 개체 간의 기능적 제어 흐름을 모델링하는 데 사용됩니다.
  • 시퀀스 다이어그램(Sequence diagram):
    • 시간 경과에 따른 메시지 교환 측면에서 클래스 간의 상호작용을 설명하는 데 사용됩니다.

Use Case Diagram(사용 사례 다이어그램)

사용 사례 다이어그램은
시스템이 하나 이상의 시스템 외부 사용자(액터라고 함)와 협력하여 수행해야 하거나
수행할 수 있는 일련의 액션(유스 케이스라고 함)을 설명합니다.
 
각 사용 사례는 액터(사용자)에게 관찰 가능하고 가치 있는 결과를 제공해야 합니다.

  1. 사용 사례 다이어그램은 시스템의 높은 수준(조감도 수준)의 기능적 동작을 설명합니다.
  2. 사용자 관점에서 시스템이 수행하는 액션을 의미합니다.
  3. 유스 케이스는 '시스템이 무엇을 할 것인가?'와 '시스템이 무엇을 하지 않을 것인가?'를 나타냅니다.
유스 케이스는 시스템에서 제공하는 기능 단위를 보여줍니다.
유스 케이스 다이어그램의 주요 목적은 개발 팀이 필수 프로세스와 "액터"의 관계 및 다양한 사용 사례 간의 관계를 포함하여
시스템의 기능적 요구 사항을 시각화하도록 돕는 것입니다.
유스 케이스 다이어그램에 유스 케이스를 설명하기 위해 다이어그램 중간에 타원을 그리고 타원 중앙에 유스 케이스 이름을 입력합니다.
유스 케이스 다이어그램에서 액터(시스템 사용자를 나타냄)를 표시하기 위해 다이어그램의 왼쪽 또는 오른쪽에 막대기 그림을 그립니다.

온라인 쇼핑 시스템의 사용 사례 다이어그램

사용 사례 다이어그램의 중요 컴포넌트는 다음과 같습니다.
  • System boundary (시스템 경계):
    • 시스템 경계는 시스템의 범위와 한계를 정의합니다.
    • 시스템의 모든 사용 사례에 걸쳐 있는 사각형으로 표시됩니다.
  • Actors (행위자;사용자;액터):
    • 액터는 특정 작업을 수행하는 개체입니다. 이러한 역할은 주어진 시스템에서 사용자의 실제 비즈니스 역할입니다.
    • 액터(Actor)는 시스템의 사용 사례와 상호 작용합니다.
      • 예를 들어 은행 시스템에서 고객은 액터 중 하나입니다.
  • Use Case (사용 사례):
    • 모든 비즈니스 기능은 잠재적인 사용 사례입니다.
    • 사용 사례는 문제 설명에 지정된 개별 비즈니스 기능을 나열해야 합니다.
  • Include (포함):
    • 포함 관계는 다른 사용 사례에 의한 하나의 사용 사례 호출을 나타냅니다.
    • 코딩 관점에서 보면 하나의 함수가 다른 함수에 의해 호출되는 것과 같습니다.
  • Extend (확장):
    • 이 관계는 확장된 사용 사례에 일부 새로운 단계가 삽입된다는 점을 제외하면 확장된 사용 사례가 기본 사용 사례와 똑같이 동작함을 나타냅니다.

 

 

반응형