2025.05.02
RestFul API 개발
모델링
복잡한 현실세계를 추상화, 단순화하여 일정한 표기법(형식)에 의해 명확히 표현하는 것
- 소프트웨어 개발 프로세스에서 모델링 단계 : 요구사항, 분석, 설계 단계
UML
통합 모델링 언어(UML, Unified Modeling Language)
- 소프트웨어 공학에서 사용되는 표준화 된 범용 모델링 언어
- 시스템의 개념과 구조를 시각적인 다이어그램으로 표현하는 데 사용
정적 다이어그램
- 클래스 : 주요 클래스와 클래스 간의 관계 표현
- 객체 : 시스템 실행 중 특정 시점의 객체와 그 관계 표현
- 복합구조 : 클래스 내부 구조를 시각화
- 배치 : 소소프트웨어, 하드웨어, 네트워크 등 실행 환경의 물리적 구조 표현
- 컴포넌트 :
컴포넌트 사이의 의존관계 묘사
컴포넌트를 구성하는 요소들과 그것들을 구현하는 요소들도 모두 표현 가능
- 패키지 : 대규모 시스템에서 주요 요소간의 종속성을 나타내거나 여러 클래스들의 그룹화 된 매커니즘을 나타낼 때 쓰인다
동적(행위) 다이어그램
- 활동 :
플로우 차트가 uml에 접목된 개념
다양한 행위 및 제어 흐름 포함
- 상태 : 객체의 상태 변화 흐름을 표현
- 유스케이스 : 시스템과 외부 사용자(액터) 간의 상호작용을 기능 단위로 표현
- 시퀀스 : 시간의 흐름에 따른 객체 간 메시지 교환 순서 표현
- 상호작용 개요 : 복합적인 상호작용 시나리오의 제어 흐름 표현
- 통신 : 객체 간 메시지 흐름을 관계 중심으로 표현
- 타이밍 : 간의 흐름에 따른 객체의 상태 변화 및 시간 제약 조건 명시
요구사항
시스템 개발에 앞서 고객 및 이해관계자가 개발될 소프트웨어에 대해 명시하는 조건이나 기능적 요구
요구사항 품질 조건
- 명확성 : 기술 된 요구사항은 항상 동일한 의미로 해석 -> 모호하지 않아야 한다
- 완전성 : 사용자의 기대와 목적을 모두 포함하여 요구사항이 기술 -> 누락 되어서는 안된다
- 일관성 : 서로 상충되거나 모순되는 요구사항이 있어서는 안된다
- 검증 가능성 : 테스트, 리뷰 등을 통해 객관적으로 확인 가능하도록 구체적이어야 한다
유스케이스 다이어그램
동적(행위) 다이어그램
- 시스템의 기능적 요구사항을 시각적으로 표현
- 시스템 내에서 사용자(액터)와 기능(유스케이스) 간의 상호작용 흐름
- 여러 업무 프로세스를 설명하는데 있어 자주 활용

액터
- 시스템 관점에서 외부 사용자 또는 외부 시스템의 역할
- 시스템과 직접적으로 상호작용하는 주체
- 사람일 수도 있고, 다른 시스템일 수도 있다
- 개발 목적에 따라 액터는 다양하게 정의
유스케이스
- 시스템이 제공하는 개별적인 기능 단위
- 사용자가 인식할 수 있는 수준의 기능
- 하나의 유스케이스는 시스템이 수행하는 하나의 작업 또는 서비스
유스케이스 다이어그램의 관계

연관 관계 : 유스케이스와 액터 간 상호작용을 의미하는 관계, 액터와 유스케이스 간만 사용 가능

포함 관계 : 한 유스케이스가 다른 유크세이스의 기능을 포함하는 관계(반드시 해야만 하는 관계)
재사용이 가능성이 높은 기능에 적합

확장 관계 : 기본 유스케이스에서 특정 조건이나 액터의 선택에 따라 발생하는 유스케이스(선택적으로 할 수 있는 관계)

일반화 관계 : 유사한 액터 또는 유스케이스 간에 공통 기능을 일반화하여 상위 수준의 요소로 추상화, 이해도 및 재사용성 향상
상호작용 유형(행동 흐름)
- 활성화 : 액터가 유스케이스를 호출하여 기능을 수행하도록 한다
- 수행 결과 통보 : 유스케이스 결과가 액터에게 통보
- 외부 서비스 요청 : 외부 시스템에 서비스 실행을 요청 - 외부로 화살표가 나가는 경우 서드파티 API 연동과 같이 외부 시스템을 작성한 것
유스케이스 다이어그램 기본개념
- 유스케이스는 현실 세계에서 실제로 발생하는 기능을 기반으로 하며 구체적이어야 한다
- 하나의 독립적인 기능을 구성하는 다양한 세부상황은 각각 하나의 유스케이스로 표현되어
야 한다
- 모든 유스케이스는 최소 한 명 이상의 액터에 의해 활성화되어야 한다
- 동일한 유스케이스는 모든 활성화 액터에게 일관된 기능을 제공해야 한다
- 유스케이스는 트랜잭션 단위로 정의되어야 하며, 명확한 시작, 종료가 있어야 한다.
유스케이스 다이어그램 작업 과정
- 요구사항 기술서에서 액터, 유스케이스 추출
- 추출한 액터, 유스케이스 무작위 단순 배치 (UML 툴 사용)
- 중복되거나 불필요한 유스케이스를 제거하고, 의미 있는 그룹으로 정리
- 액터, 유스케이스 간 관계 설정
이벤트 흐름
기본 흐름
- 아무 문제 없이 정상적인 경로로 동작하는 시스템 반응 흐름
- 사용자의 입력에 시스템이 어떻게 응답하는지를 순차적으로 설명
대안 흐름
- 특정 조건이나 예외적인 상황에서 기본 흐름과는 다른 경로로 전개되는 흐름
- 선택흐름 : 사용자/시스템의 선택에 따라 수행 여부가 달라지는 흐름
- 예외흐름 : 시스템에서 오류가 발생했을 경우 에러 처리 로직을 정의한 흐름
유스케이스 시나리오 작성 요소
- pre-condition : 유스케이스가 시작되기 전에 만족되어야 하는 조건
- post-condition : 유스케이스가 완료된 후, 시스템이 보장해야 하는 상태 또는 결과
클래스 다이어그램
정적(구조) 다이어그램
- UML모델링에서 가장 일반적으로 사용
- 시스템의 구조와 구조 간 상호 관계
- 시스템의 논리적/물리적 구성요소 설계 시 주로 활용

- 속성 : 클래스의 데이터 필드 / 연산 : 클래스가 수행하는 메서드(행위)
클래스 다이어그램의 관계

연관 관계

- 한 클래스가 필드로 다른 클래스를 참조할 때를 의미
- 클래스 간에 지속적인 관계가 존재
- 클래스 간의 관련성을 뜻하는 것으로 메시지 전달의 통로 역할

- 방향성이 있는 연관 관계
- 메시지 전달 방향이 한쪽 방향으로만 가능
- 방향성은 메시지 전달의 방향을 뜻하며 반대 방향은 불가능

- 관계를 맺을 수 있는 실제 상대 인스턴스의 수를 다중성을 통하여 지정 가능
- 동일한 의미/역할을 하는 복수 개 인스턴스들과의 관계

- 동일한 클래스 사이에 존재하는 복수 개의 연관관계
- 다른 의미/역할을 하는 복수 개 인스턴스과의 관계
집합 관계

- 전체-부분 관계 (has-a)
- 부분 인스턴스가 다수의 전체 인스턴스에 의해 공유
- 전체 인스턴스가 사라져도 부분 인스턴스는 존재 -> 독립적으로 존재
- 프로젝트는 멤버로 구성 / 멤버는 프로젝트의 부분 / 멤버는 다른 프로젝트에도 공유
합성 관계

- 부분 인스턴스가 오직 하나의 전체 인스턴스에 포함
- 전체 인스턴스가 사라지면 부분 인스턴스도 사라진다
- 회사는 직원으로 구성 / 직원은 회사의 부분
일반화 관계

- 일반적인 클래스와 구체적인 클래스 간의 관계
- 한 클래스(상위 클래스)가 다른 클래스(하위 클래스)보다 일반적인 개념/대상 임을 의미하는 관계
실체화(인터페이스 구현) 관계

- 인터페이스에 명세 된 기능을 클래스에 의해서 구현한 관계
의존 관계

- 한 클래스가 다른 클래스의 기능(메서드 등)을 일시적으로 사용하는 경우
- 주로 지역변수, 매개변수, 리턴 타입 등을 통해 발생
- 두 클래스의 연산 간의 호출 관계를 표현
- 제공자의 변경이 이용자에게 영향을 미칠 수 있다(제공자의 변경이 이용자의 변경을 유발)
- 이용자는 의존 관계를 통해서 제공자의 연산을 호출
- 이용자 : A / 제공자 : B, C


참고
StarUML 5.0
Miro
draw.io
da#