프로그래머스 데브코스 웹 풀사이클 19주차 3일차

geun·2024년 3월 20일
0

데브코스

목록 보기
66/79
post-thumbnail

소프트웨어 요구사항 명세서

소프트웨어 요구사항 명세

  • 프로젝트에 있어서 가장 중요한 것
  • 개발자의 임무 - 요구사항을 만족하는 소프트웨어를 개발하는 것
  • 주의할 점
    1. 요구사항은 여러가지 이유로 프로젝트 수행 도중 변경될 수 있음
    1. 테스트 케이스의 작성은 요구사항을 반영해야 하며, 때로는 전체 구조에 변경이 생기는 경우도 있음
  • 고객 요구에 따라 소프트웨어 요구사항을 도출하는 것이 프로젝트의 시작이다.

요구사항 명세서(SRS)

  • 소프트웨어 구현물의 기능적/비기능적 요구사항을 기술한 문서
  • 기능적 요구사항 : 소프트웨어가 갖추어야 하는 기능
  • 비기능적 요구사항 : 성능, 자원 사용량 등에 존재하는 여러 측면의 제약
  • 워터폴 모델의 소프트웨어 개발 프로세스에서 필수 산출물로 정의하는 것이지만, 에자일 방법론을 적용하는 경우 민첩성을 높이기 위하여 산출을 생략하는 경우도 꽤 있음

Requirement-driven development 방식을 택하는 경우

  • mission critical system등에서는 formal verification 방법과 조합하여 요구사항 만족을 엄격하게 검증하는 것을 중요시하고 있음
  • 웹 개발 맥락에서는 흔히 적용하지는 않음

요구사항 명세서의 구성요소

  • 기능적 요구사항에 대한 개괄적 설명
  • 적용 기술에 대한 지정
  • 각 요소에 대한 명세
  • 데이터베이스 스키마의 약식 표현
  • 백엔드 API세트의 정의

우리의 요구사항 명세

로그인

구분내용
요구사항 IDREQ-01-01
요구사항명로그인
개요(목적, 내용)가입된 이메일과 비밀번호를 이용해 로그인할 수 있다.
입력로그인 하지 않은 상태에서 서비스 방문
출력로그인 화면 표시

회원가입

구분내용
요구사항 IDREQ-01-02
요구사항명회원가입
개요(목적, 내용)이메일과 비밀번호를 이용해 회원가입할 수 있다.
입력로그인 화면에서 회원가입 버튼 클릭
출력회원가입 화면 표시

로그아웃

구분내용
요구사항 IDREQ-01-03
요구사항명로그아웃
개요(목적, 내용)로그아웃할 수 있다. 로그아웃 성공 후에는 로그인했던 사용자 정보가 유지되지 않아야한다.
입력화면 상단의 로그아웃 버튼 클릭
출력로그아웃 후 로그인 화면으로 복귀됨

노트 목록 조회

구분내용
요구사항 IDREQ-02-01
요구사항명노트 목록 조회
개요(목적, 내용)생성일 기준으로 정렬된 노트 목록 표시
입력메인 페이지 방문
출력화면 사이드바에 클릭 가능한 노트 목록 표시

노트 선택

구분내용
요구사항 IDREQ-02-02
요구사항명노트 선택
개요(목적, 내용)노트 목록에서 노트를 선택할 수 있다.
입력노트 목록에서 선택할 노트 클릭
출력노트 목록에서 선택한 노트가 하이라이트됨

노트 조회

구분내용
요구사항 IDREQ-02-03
요구사항명노트 조회
개요(목적, 내용)선택한 노트의 내용을 조회할 수 있다.
입력사이드바 노트 목록에서 노트를 클릭하여 선택
출력우측 상단에 노트의 내용이 표시됨

노트 생성

구분내용
요구사항 IDREQ-02-04
요구사항명노트 생성
개요(목적, 내용)새 노트를 생성할 수 있다.
입력화면 상단의 노트 생성 버튼 클릭
출력노트 목록의 가장 위에 새 노트가 추가되고, 해당 노트가 선택 및 조회된다.

노트 편집

구분내용
요구사항 IDREQ-02-05
요구사항명노트 편집
개요(목적, 내용)조회 중인 노트를 편집할 수 있다.
입력조회 중인 노트의 내용 클릭
출력커서가 깜빡이며, 편집 가능한 상태가 된다.

노트 변경사항 저장

구분내용
요구사항 IDREQ-02-06
요구사항명노트 변경사항 저장
개요(목적, 내용)노트의 변경사항을 저장할 수 있다.
입력화면 상단의 저장 버튼 클릭
출력노트의 변경사항이 저장된다.

노트 삭제

구분내용
요구사항 IDREQ-02-07
요구사항명노트 삭제
개요(목적, 내용)조회 중인 노트를 삭제할 수 있따.
입력노트를 조회하고, 화면 상단의 삭제 버튼을 누른다.
출력노트가 삭제된다.

응용 구조 설계

Frontend

  • React 응용으로 만들어져 UI에 해당하는 부분 서비스
  • Backend로 향하는 API호출은 브라우저의 js 실행에 의해 이루어짐

Backend

  • Express응용으로 만들어져 데이터베이스를 이용한 데이터 모델을 서비스
  • JWT를 이용한 사용자 인증을 통해 데이터 접근을 보호
  • CORS 정책을 통해 악의적인 접근을 방지

Database

  • "prgms_notes"라는 이름의 데이터베이스에 두 개의 테이블을 포함

로컬 테스트 환경

  • 웹 서버를 사이에 두지 않음 (FE/BE 접근 URL 설정에 차이 있음)
  • 인터넷을 통하여 접근하는 것이 불가능
  • 데이터베이스 인스턴스도 동일한 K8S 클러스터 내에 배치
  • SSL 인증없음 (JWT 쿠키 처리 방식에 차이)

Production

  • AWS EC2 instance에 minikube를 이용한 k8s 클러스터를 운용

Staging

  • Production 환경과 완전히 동일한 셋업 이용
  • 같은 region, type의 인스턴스를 같은 사양으로 똑같이 설정

Development

  • 로컬 컴퓨터에 docker desktop이 제공하는 single-node cluster 이용
  • 약간의 차이에 의해 발생하는 설정 변화를 코드 수정 없이 대응할 수 있도록 구성

개발환경과 배포 환경

개발 환경의 운용

  • 개발 단계에서 빠르게 코드의 동작을 확인할 수 있는 것은 중요하다.
  • TDD를 적용함으로써 효율을 높일 수 있다.
  • 따라서, 코드의 동작을 눈으로 확인할 수 있는 환경을 구축하는 것이 필요하다.

데이터베이스 준비

  • 가능한 한 데이터베이스에 의존성을 갖지 않는 상태에서 코드를 개발하는 것이 수월하다.
  • 그러나 어느 시점에 이르면 코드의 검증을 위해 데이터베이스의 상태가 필요하다.
  • 스키마가 확정되어 있다면 데이터베이스를 조기에 마련하는 것도 좋은 방법이다.
  • 로컬 환경에서 테스트에 이용할 수 있는 데이터베이스를 마련하면 좋다.

개발 계획 수립

개발 계획 수립의 중요성

  • 프로젝트의 성공
    1. 원하는 결과물이 산출되어야 함
    1. 또한, 결과물이 정해진 기한 내에 산출되어야 함
  • 계획을 수립해야 하는 항목들
    1. 역할분담
    2. 개발 방법, 팀 사이의 인터페이스
    3. 프로젝트 일정 및 지연 발생에 대한 대응책

개발 계획

이 프로젝트에서의 원칙

  • 순서 및 일정 계획을 세우는 것은 자유롭게 한다.

계획해야 하는 것들

• 활용할 요소기술, 최종 서비스 실행 환경 등
• 개발 프로세스에 적용할 모델
• 코드 및 아티팩트의 유지관리 정책 및 도구
• 코딩 스타일 규약
• 코드 리뷰 계획, 통합 주기와 방법
• 개발 환경과 통합/테스트 도구, 릴리스 정책과 방법
• 서비스 운영 계획, 유지보수 정책과 범위

코드 개발 외의 일들

  • 배포 및 운영 구조 설계 및 구현
  • 빌드 및 통합 환경에 필요한 요소의 개발
  • 코드 품질 확보
  • 서비스 운영 모니터링 계획
  • 일정 계획
  • 문서화 등..

0개의 댓글