[유데미x스나이퍼팩토리] 10주 완성 프로젝트 캠프 2일차 - 웹 서비스 기획

강경서·2023년 6월 7일
0
post-thumbnail

🚩 UML을 통한 서비스 흐름잡기

웹 서비스를 기획 및 제작을 하는 과정에는 협업하는 사람과의 커뮤케이션 문제, 플랫폼에 사용되는 구조의 재사용 문제 또는 작업 도중 플랫폼의 구조를 수정해야 되는 등 많은 문제가 생길 수 있습니다. 이런 문제에 직면하기전 우리는 UML을 통해 해결할 수 있습니다.


UML의 개념 및 모델링

UML(Unified Modeling Language)은 객체 지향 개념을 이용하여 시스템을 설계를 표현하기 위해 사용하는 모델링 언어입니다. 소프트웨어의 영역뿐만이 아니라 시스템 자체의 산출물의 역활을 시각화 하여 규정하는데 목적을 두고 있습니다.


UML에서 정의하는 모델링이란?

UML은 어떠한 현상들을 단순화, 일반화, 추상화 하는 과정으로 여러 장점을 가지고 있습니다.

📢 내부 구조나 동작하는 행위에 대해 특정 언어나 방법에 종속되지 않는 표현의 자유를 가지고 있습니다.
📢 시스템의 구성 요소들이 서로 어떻게 연결되어 있는지 시각화를 통해 확인이 가능합니다.
📢 설계와 구현 간의 일관성을 유지하여 정확한 모델을 제시합니다.
📢 레벨화 구분법으로 시스템의 중요도를 직관적 확인이 가능합니다.
📢 명확한 의사 소통의 도구로써 개발자간의 커뮤니케이션에 용이합니다.


왜 UML을 배워야 하나요?

우리는 플랫폼을 제작하는데 2가지 근복적인 어려움을 겪고 있습니다. 플랫폼의 기획 단계에서 정확하고 명백한 모델을 구축하여 모델링을 하지 않았다면 개발 단계에 들어갔을 때 가시화 할 수 없는 전체 시스템의 복잡성의 처리에 어려움이 있습니다. 그리고 시스템의 분산, 동시성, 반복성 등에 대한 구조적인 문제를 개발과정에 재수정을 해야하는 변경의 어려움이 있습니다.


UML은 이야기가 가능한 시각화된 도구이다.

위와 같은 문제점을 해결하기 위해서는 규격화된 규칙으로 인한 손쉽게 이해할 수 있는 시각화가 필요합니다. 단순한 텍스트만으로는 상대방에게 설득하는데 어려움이 있습니다. 시각적인 그래픽 형태는 개발자들 간의 원만한 의사소통을 가능하게 만들어줍니다.


UML은 사람의 행위를 기반으로 한다.

UML은 사람의 행위를 기반으로 단계적 과정을 시점상으로 표현한 것으로 절차와 단계의 가설을 키워드로 표현하고 시나리오를 확장하는 순차적 단계를 지니고 있습니다. 이러한 과정의 단계에서 우리는 중요한 프로세스를 사전점검할 수 있습니다. 이를 통해 기획단계에서 사용자의 행동에 중요도를 레벨화 시키는것이 가능합니다.


UML은 사용자의 문제를 기반으로 모델링 한다.

사람이 가장 이해하기 쉬운 이야기 전개 방식인 UML은 실제 사용자들이 플랫폼 관점으로 구축을 전개하는 것이 아닌 사용자들의 문제를 기반으로 구축할 것을 모델링 함으로써 좀더 효율적이고 완성도 높은 플랫폼을 구축할 수 있습니다.


UML 모델링의 이점

UML으로 모델링을 하면 시스템의 시각화, 이해도, 정확성, 의사전달 그리고 일관성과 같은 성공적인 플랫폼 구축을 위한 필수 요건을 충족시키는 이점을 가질 수 있습니다.


UML은 모델 주도적 개발 방식이다.

UML을 통해 이해 당사자가 서로 커뮤니케이션 할 수 있는 소프트웨어 시스템의 구조와 행위를 정의하고 기술할 수 있습니다. 사용자의 요구사항을 모델로 생성함으로써 보다 빠르고 정확한 플랫폼을 구현할 수 있습니다. 이런 방식을 MDD(Model Driven Development) 즉 모델 주도적 개발이라고 합니다.

MDD는 모델 개발에 중점을 둔 개발방법론으로 모델을 이용하여 목표 시스템을 단순화함으로써, 사용자는 시스템을 쉽게 이해할 수 있고 개발자는 개발을 용이하게 하는 것이 목적인 개발방법론입니다.


📍 UML 다이어그램

구성요소를 표현하기 위한 구조적 다이어그램과 행위를 표현하기 위한 행위 다이어그램으로 나눌 수 있습니다. 이 중 행위 다이어그램에 속하는 유스케이스 다이어그램액티비티 다이어그램은 UML의 단계에서 반드시 필요한 다이어그램입니다.


유스케이스 다이어그램

유스케이스 다이어그램(Use Case Diagram)은 시스템의 행위를 모델링 하며 시스템의 요구 사항을 표현하는데 사용됩니다. 시스템의 상위 레벨 기능과 범위를 기술하며, 시스템이 기능을 어떻게 구현할 것인지가 아닌 시스템이 어떤 기능이 필요한지에 대해서만 표현합니다. 이는 프로젝트 초기 단계에서 사용자 관점에서 시스템을 모델링 할 수 있는 목적을 가지고 있습니다. 사용자가 시스템에 바라는 바를 표현함으로써 사용자의 시점을 빨리 이해하고 쓸모있고 쓸 수 있는 시스템을 만들 수 있도록 도와줍니다.


유스케이스 다이어그램의 구성요소

Actor

  • 시스템과 상호작용하는 사용자나 다른 시스템을 의미합니다.
  • 사람 모양으로 표현하며 "사용자", "시스템"등의 명사로 표현됩니다.
  • 사용자 외에도 관리자, 유지보수자, 시스템과 관련 있는 모든 사람이나 시스템이 고려 대상입니다.

UseCase

  • 시스템이 수행하는 작업을 의미합니다
  • 대게 타원으로 표현하며 '아이디 검색', '실명 인증' 등의 동사로 표현된다.
  • 일련의 사건의 흐름으로 표현되며 성공적 유스케이스만을 의미하는 것은 아닙니다.
  • 유사 기능을 표현하는 모든 시나리오를 포함하여 일반화하고 구조화시킨 것입니다.

Association

  • 연관관계는 유스케이스와 액터간의 상호작용이 있음을 표현합니다.
  • 유스케이스와 액터를 실선으로 연결합니다.

Include

  • 포함 관계는 하나의 유스케이스가 다른 유스케이스의 실행을 전제로 할 때 형성되는 관계입니다.
  • 포함되는 유스케이스는 포함하는 유스케이스를 실행하기 위해 반드시 실행되어야 하는 경우에 적용합다.
  • 포함하는 유스케이스에서 포함되는 유스케이스 방향으로 화살표를 점선으로 연결하고 << include >>라고 표기합니다.

Extend

  • 확장 관계는 확장 기능 유스케이스와 확장 대상 유스케이스 사이에 형성 되는 관계입니다.
  • 확장 대상 유스케이스를 수행 할 때 특정 조건에 따라 확장 기능 유스케이스를 수행하는 경우에 적용합니다.
  • 확장 기능 유스케이스에서 확장 대상 유스케이스 방향으로 화살표를 점선으로 연결하고 << extend >>라고 표기합니다.

Generalization

  • 일반화 관계는 유사한 유스케이스 또는 액터를 모아 추상화한 유스케이스 또는 액터와 연결시켜 그룹을 만들어 이해도를 높이기 위한 관계입니다.
  • 구체적인 유스케이스에서 추상적인 유스케이스 방향으로 끝부분이 삼각형으로 표현된 화살표를 실선으로 연결하여 표현합니다.

액티비티 다이어그램(활동다이어그램)

활동 다이어그램은 시스템의 실행과 행위의 흐름을 표현합니다. 이는 비지니스 프로세스 또는 작업에서 이용하는 고객의 흐름을 표현하는데 적합합니다. 또한 순착적인 제어의 흐름뿐 아니라 연계관계 액터의 병렬적으로 수행되는 활동과 분기가 이루는 대안들에 대해서도 표현이 가능합니다.

액티비티 다이어그램의 구성요소

Action/Activity

  • 사용자의 어떤 행동이나 작업을 의미합니다
  • 둥근 모서리로 이루어진 사각형으로 표현합니다.

Initial Node

  • Initial Node는 Action/Activity의 시작점입니다.
  • 속이 채워진 원으로 표현합니다.

Final Node

  • Final Node는 Action/Activity의 종료지점입니다.
  • 두 원이 겹쳐진 형태로 표현합니다.

Control Flow

  • Action/Activity노드의 실행 순서를 나타내는 화살표입니다.

Decision Node

  • Decision Node는 행동이나 작업의 분기점을 의미합니다.
  • 마름모 모형으로 표기합니다.

Merge Node

  • Merge Node는 Decision Path들을 하나로 모으는 노드입니다.
  • Decision Node로 나눠진 Control flow를 다시 합쳐줍니다.

📢 Fork Node

  • Fork Node는 평행적으로 수행되는 Flow를 나누는 노드입니다.
  • 두꺼운 직선으로 부터 여러 갈래의 화살표가 뻗어나오는 형태로 표기합니다

📢 Join Node

  • Join Node는 Fork Node로 나눠진 Control Flow를 다시 하나로 합치는 노드입니다.

📝 후기

지금까지는 프로젝트를 기획한다는 의미는 단순히 개발과정을 계획을 하는 과정이라고 생각했습니다. 하지만 UML을 통한 기획은 팀원들과의 커뮤니케이션, 개발과정의 구멍을 효율적으로 막을 수 있는 효율적인 방법이란걸 알았습니다. .UML은 혼자서 하는 개인 프로젝트가 아닌 팀원들과 함께하는 개발에서는 반드시 고려해야할 모델링 언어라고 생각합니다.



본 후기는 유데미-스나이퍼팩토리 10주 완성 프로젝트캠프 학습 일지 후기로 작성 되었습니다.

#프로젝트캠프 #프로젝트캠프후기 #유데미 #스나이퍼팩토리 #웅진씽크빅 #인사이드아웃 #IT개발캠프 #개발자부트캠프 #리액트 #react #부트캠프 #리액트캠프

profile
기록하고 배우고 시도하고

0개의 댓글