풀스택 서버리스 프로젝트 with React - 4. 프로젝트 기획

2023. 11. 15. 20:17개인노트-인강

사이드 프로젝트:10개 기술스택으로 구현하는 풀스택 서버리스 프로젝트 with React
Part 2. 프로젝트 기획하기
Ch01. 서비스 요구사항

 

# 서비스 요구사항 (User requirement) 작성법

## 왜 중요한가요?

- 프로젝트 초기 단계 → 코드 만으로 어떤 서비스를 만들 것인지, 시스템이 어떻게 동작할지 정의하기 어렵다
- 프로젝트 초기 단계→ 프로젝트 일정을 estimate 하고 구체화 시킬 수 있다
- 문제가 초기 단계에서 발견될 수 있다. 초기 단계에서 문제를 발견하고 방법을 강구하는 것이 시간을 절약하고 스마트 하게 일할 수 있는 방법
- 협업 측면 → 타 직군과 협업 하여 서비스의 요구사항을 정의하기에 가장 명확한 수단이다. 잘 정리된 요구사항은 오해의 여지가 없고 모두가 같은 곳을 바라볼 수 있게 함
- 유지보수 측면 → 추후 스펙 변경이 있을 때 어떤 기능을 지원하기로 했는지, 하지 않기로 했는지 빠르게 찾아볼 수 있다

## 어떤 것들이 요구사항이 될 수 있나요?

### 기능적 요구사항 (Functional requirements)

- 소프트웨어의 기능에 대한 요구사항들
    - 사용자의 관점에서 필요한 기능

### 비기능적 요구사항 (Non-functional requirements)

- a.k.a. Software quality requirements
- 소프트웨어의 품질을 높이기 위한 요구사항. 시스템 운영을 판단하기 위한 기준을 정의하는 과정
    - 성능(Performance)
        - 예) 지출 내역 조회 API는 아무리 못해도 1초 내에는 응답을 줘야 함
    - 보안(Security)
        - 예) 비밀번호는 SHA-256 알고리즘으로 암호화 되서 저장
    - 가용성(Availability) - 기간 동안 소프트웨어가 정상 동작하는 비율(%)
        - 예) 99.999% 1y availablity = downtime은 약 5분

## 요구사항 작성법

### 1. User story에서 시작

철저히 사용자의 관점에서 소프트웨어를 통해 어떤 것을 하고 싶은지 생각한다.

- Role - 소프트웨어를 사용/관리하는 주체 (e.g. 로그인 하지 않은 사용자, 관리자, 일반 사용자 등)
- Goal - 하고 싶은 것
- Benefit - 이 것이 필요한 목적/이점
⇒ {Role}로서, 나는 {Benefit}을 위해 {Goal}을 이루고 싶다/가지고 싶다.

### 2. Software requirement 정의

User story를 만족시키기 위해 시스템에서 어떤 것들을 해야 할지, 기능적 요구사항(functional requirements)와 비기능적 요구사항(non-functional requirements)을 이용하여 정의한다.

## 그 밖의 체크리스트

- 지원할 디바이스 (태블릿, PC, 모바일)
- 웹 앱 이라면 지원할 브라우저 최소 사양
- 모바일 앱이라면 지원할 모바일의 스크린 사이즈, OS 최소 사양
- 보안 - 패스워드 암호화
- 서비스 지역 - 전세계? 한국? 북미?

 

# 더치페이 서비스 요구사항 작성하기

User story 작성법 ⇒ {Role}로서, 나는 {Benefit}을 위해 {Goal}을 이루고 싶다/가지고 싶다.

## 더치페이 User story 작성하기

- 사용자로서, 나는 정산을 시작하기 위해 정산 이름 (모임 이름)을 입력하고 싶다.
- 사용자로서, 나는 누가 비용을 계산했고, 누가 얼마를 받아야 하는지를 계산하기 위해 정산에 참여할 사람들을 입력하고 싶다.
- 사용자로서, 나는 비용 정산을 위해 내가 쓴 비용을 입력하고 싶다.
- 사용자로서, 나는 비용 정산을 위해 다른 사람들이 쓴 비용도 입력할 수 있으면 좋겠다.
- 사용자로서, 나는 비용 입력이 끝나고 편의를 위해 누가 누구에게 얼마를 보내야 하는지 최적화된 정산 결과를 보고 싶다.

## 더치페이 Software requirement 작성하기

- User story를 기반으로 이를 충족시키기 위해 필요한 software requirements를 도출!

## 그 밖의 Software Requirements..

- 시스템은 Chrome browser 에서 최적화 되어서 작동해야 한다. → FR
- 시스템은 한국어를 지원해야 한다. → FR
- 시스템은 95% 이상의 요청에 대해 정산 결과를 1초 이내에 결과 값을 출력해야 한다. → NFR
- 시스템은 95% 이상의 요청에 대해 웹 페이지를 500ms 이내로 렌더링 해야 한다. → NFR