개인프로젝트를 시작하려고 한다.
프로젝트를 개발하면서 개발 과정을 블로그에 기록하고자 한다!
먼저, 실제 코드를 짜기에 앞서서 내가 개발할 프로젝트의 목표, 기능 등을 정리하고자 한다.
📍 프로젝트 주제 선정
모여서 운동을 할 수 있는 서비스를 제공해주는 웹 어플리케이션을 개발하고자 한다.
관심있는 운동종목에 대한 클럽을 만들고, 모임이 정해지면 참여할 수 있도록 하는 기능이 중점이다.
모.운.완 (모여서 운동 완료)라고 정했다.
📍 기술스택 결정
- IDE : 인텔리제이 얼티메이트
- 빌드 : Maven
- 라이브러리 :
- 스프링 부트
- 스프링 웹 MVC
- 타임리프
- 스프링 시큐리티
- 스프링 데이터 JPA
- PostgreSQL
- 롬복
- 스프링 mail
- QueryDSL
- 스프링 부트 devtools
📍요구사항 정의
요구사항 정의서
: 프로젝트의 목적, 범위, 기능 등을 명확하게 정리한 문서이다. 프로젝트의 기본적인 요구사항들을 분석하고 정의하는데 중점을 둔다.
1. 요구사항 ID : 요구사항을 하나의 큰 틀로 정의할 필요가 있다. ex)로그인 및 회원가입 등을 MEM 으로 통칭 - 요구사항 ID는 MEM-01이 될 수 있다.
2. 메뉴 : 이 요구사항이 화면에서 처리되는 부분인지, 기능적인 부분에서 처리되는 부분인지 구분할 필요가 있다.
3. 요구사항명 : 요구사항 ID가 대분류의 키워드라면, 이 부분은 로그인인지 회원가입인지를 명시하는 부분이다. 중분류라고 생각하면 될 듯 하다.
4. 기능명 : 요구사항명에서 조금 더 자세히 들어간다. 어떤 기능을 구현해야할지, 기능의 이름을 적는 부분이다.
5. 상세 기능 : 기능명에 대한 자세한 설명이다.
6. 필수 데이터 : 기능을 구현할 때 꼭 필요한 데이터들
요구사항ID | 요구사항명 | 기능ID | 기능명 | 상세기능 | 필수데이터 | 선택데이터 | 권한 |
CLUB_01
|
클럽 생성
|
CLUB01_CREATE01 | 운동클럽 모임 생성 | 운동클럽을 생성한다 | 클럽 이름, 클럽 운동 종목, 인원 | 클럽 관리자만 가능 | |
CLUB01_CREATE02 | 운동종목 등록 | 클럽의 운동 종목을 선택한다 | 클럽 운동 종목 | 클럽 관리자만 가능 | |||
클럽 공개
|
CLUB02_OPEN01 | 클럽 공개 | 생성된 클럽을 공개로 돌린다.(비공개가 디폴트) | 클럽 관리자만 가능 | |||
CLUB02_OPEN02 | 클럽 비공개 | 클럽을 드래프트로 전환한다. | 클럽 관리자만 가능 | ||||
클럽 종료 | CLUB03_CLOSE01 | 클럽 종료 | 클럽을 종료한다. | 클럽 관리자만 가능 | |||
클럽 인원모집 | CLUB04_ADDMEMBER01 | 클럽 인원모집 | 생성된 클럽에 인원모집을 시작한다. | 클럽 관리자만 가능 | |||
클럽 경로변경 | CLUB05_PATH01 | 클럽 접속 경로 변경 | 클럽이 기존 접속 경로를 변경한다. | 경로주소 | 클럽 관리자만 가능 | ||
클럽 삭제 | CLUB06_DELETE01 | 클럽 삭제 | 종료된 클럽을 삭제한다. | 클럽 관리자만 가능 | |||
클럽 가입
|
CLUB07_JOIN01 | 클럽 가입 신청 | 인원 모집을 하는 클럽에 참여를 신청한다. | ||||
CLUB07_JOIN02 | 클럽 가입 수락 | 가입 신청한 멤버를 클럽 가입에 수락한다. | 클럽 관리자만 가능 | ||||
CLUB07_JOIN03 | 클럽 가입 거절 | 가입 신청한 멤버를 클럽 가입에 거절한다. | 클럽 관리자만 가능 | ||||
클럽 탈퇴 | CLUB08_DROP01 | 클럽 탈퇴 | 가입한 클럽에서 탈퇴한다. | ||||
MEM_01
|
로그인
|
MEM01_LOGIN01 | 로그인 기능 | 우리 기능을 사용하기 위해 로그인 필수 | ID, 비밀번호 | ||
MEM01_LOGIN02 | 아이디 찾기 | 이메일 주소와 이름을 입력하면 해당 아이디를 보여준다. | 아이디, 이메일주소 | ||||
MEM01_LOGIN03 | 비밀번호 재설정 | 받은 이메일로 비밀번호를 재설정할 수 있다. | 아이디, 이메일주소 | ||||
MEM_02
|
회원가입
|
MEM02_SIGNUP01 | 회원가입 | 회원가입을 한다. | 이름, 비밀번호, 이메일 주소 | ||
MEM02_SIGNUP02 | 이메일 인증 | 이메일 인증 확인으로 회원가입을 완료한다. | 이메일주소 | ||||
MEM_03 | 로그아웃 | MEM03_LOGOUT01 | 로그아웃 | 로그아웃 한다. | |||
MEM_04
|
프로필
|
MEM04_PROFILE01 | 프로필 이미지 등록 | 계정의 프로필 이미지를 등록한다 | 프로필 이미지 | ||
MEM04_PROFILE02 | 프로필 이미지 삭제 | 계정의 프로필 이미지를 삭제한다 | |||||
MEM04_PROFILE03 | 프로필 정보 입력 | 계정의 프로필 정보를 입력한다 | |||||
NOTICE_01
|
알림설정 | NOTICE01_SET01 | 알림 방법 설정 | 웹알림으로 받을지 이메일알림으로 받을지 알림 방법을 선택한다 | |||
알림 목록조회 | NOTICE02_LIST01 | 알림 목록 조회 | 알림 목록을 조회한다. | ||||
알림 구분 | NOTICE03_SORT01 | 알림 구분 | 읽은 알림과 읽지 않은 알림을 구분한다. | ||||
클럽 관련 알림
|
NOTICE03_CLUB01 | 클럽 변경사항 알림 설정 | 참여중인 클럽의 변경사항의 알림을 설정한다 | ||||
NOTICE03_CLUB02 | 클럽 가입신청 알림 설정 | 가입신청한 클럽의 신청 여부 확인 알림을 설정한다 | |||||
GATHER_01
|
모임
|
GATHER01_LIST01 | 모임 조회 | 개설된 모임 목록을 조회한다 | |||
GATHER02_OPEN01 | 모임 개설 | 모임을 개설한다 | 클럽 관리자만 가능 | ||||
GATHER03_MODIFIY01 | 모임 내용 수정 | 개설한 모임 내용을 수정한다 | 클럽 관리자만 가능 | ||||
GATHER04_CANCEL01 | 개설한 모임 취소 | 개설한 모임을 취소한다 | 클럽 관리자만 가능 | ||||
GATHER_02
|
모임참여
|
GATHER05_JOIN01 | 모임 참여신청 | 모임에 참여 신청을 한다 | |||
GATHER05_JOIN02 | 모임 참여취소 | 참여신청한 모임에 참여를 취소한다 | |||||
GATHER05_JOIN03 | 모임 참여신청 수락 | 참여신청 멤버를 참여에 수락한다 | 클럽 관리자만 가능 | ||||
GATHER05_JOIN04 | 모임 참여신청 거절 | 참여신청 멤버를 참여에 수락한다 | 클럽 관리자만 가능 | ||||
GATHER05_JOIN05 | 모임 참여 여부 체크 | 모임 참여여부를 체크한다 | 클럽 관리자만 가능 | ||||
CATEGORY_01
|
관심운동
|
CATEGORY01_REGIST01 | 관심운동 종목을 등록한다 | 관심운동 종목을 등록한다 | |||
CATEGORY02_DELETE01 | 관심운동 종목을 삭제한다 | 관심운동 종목을 삭제한다 |
📍기능 명세
기능 명세서
: 프로젝트나 제품에서, 구현될 구체적인 기능들을 상세하게 기술한 문서 -> 최종 아웃풋에 대한 기능들을 중심으로 설명한 자료
우선순위에 따라 반영된 기능들이 최종적으로 담긴 문서
- 요구사항 ID : 위와 동일 및 요구사항 정의서와 연결이 되는 부분
- 대분류 (요구사항 명) : 요구사항 명과 연결이 되는 부
- 주 기능 : 구현할(한) 기능에 대한 부분
- 필요 기술 : 이 기능을 구현하는데 필요한 기술 스택을 서술한다.
- API 명세 : 이 기능을 구현할 때, Test해볼 때 필요한 API 명세가 있다면 서술한다.
- FE/BE 구분 : 어떤 영역의 작업인지 구분할 수도 있다
📌 (운동)클럽 기능
|
○ 클럽 생성 ○ 클럽 공개 및 종료 ○ 클럽 인원 모집 ○ 클럽 설정 (배너 이미지/ 클럽 운동 종목/ 클럽 관리( 공개여부, 경로 변경, 클럽 이름 변경, 클럽 삭제) ○ 클럽 참여 신청, 클럽 탈퇴 |
📌 계정관리 기능
|
○ 회원가입 ○ 로그인/ 로그아웃 ○ 프로필 작성( 프로필 이미지 등록, 프로필 정보 입력) ○ 알림 설정 ○ 이메일 인증 ○ 패스워드 수정 ○ 패스워드 잊어버렸을 때 ○ 관심 운동종목 등록 |
📌 알림 기능 요구사항 |
○ 알림 목록 조회 ○ 읽은 알림과 읽지 않은 알림 구분 ○ 이메일 혹은 웹으로 알림 설정 ○ 참여중인 클럽 변경 사항 알림받기 설정 ○ 클럽 참여 신청에 대한 알림 받기 설 |
📌 모임 기능 요구사항 |
○ 모임 조회 ○ 모임 개설 ○ 모임 수정 및 취소 ○ 모임 참여신청 및 취소 ○ 모임 참여신청 수락 / 거절 / 참여 체크 |
📌 관심 운동 종목
|
○ 관심 운동종목 등록 ○ 관심 운동종목 삭제 |