Framework/Spring

[스프링] 개발을 시작하기 전에 - 요구 사항 분석, 기본 구조 잡기

simDev1234 2022. 9. 15. 17:39

1.  프로젝트 생성 및 요구사항 분석

- 오늘 수업시간에서는 프로젝트 생성 및 요구사항 분석 + 설계 및 기본 구조 개발에 대해서 들었다.

- 각 회사마다 분위기는 다 다르겠지만, 요구사항 분석 시엔 일반적으로 아래의 단계를 거친다고 한다.

  1) 외부 고객 및 내부 고객의 의견에 따라 어떤 사업을 하겠다는 목표가 생기면,

  2) 기획자가 기획안을 만들어 연관됨 팀들과 의견을 나눈 뒤 사용할 기술 및 주요 기능에 대해 보완한다.

  3) 기획자의 기획안을 토대로 개발팀은 개발을 위한 기술 스택구체적인 명세서를 작성한다.

 

(1) 기술 스택이란 뭔가

- 위 3) 단계에서 "기술 스택"이라함은,

- 어떤 프레임워크와 언어를 쓸 것인가

- 어떤 DB vendor를 쓰고

- 어떤 api를 사용할 것이며

- http 데이터 타입은 어떤 걸 쓸 건지 (ex. xml인지, json인지, yml인지 등)

개발을 위한 기본적인 구조를 정하는 걸 말한다.

- 일전에 회사를 다닐 때 적은 설계서를 떠올리면, 주로 기획안 초반에 작성되는 항목들 중 하나였던 걸로 기억한다.

- 기획안에서 간단히 다루어주긴 하겠지만, 내부적으로도 체크가 필요할 것이라 생각된다. 

 

(2)  구체적인 명세서란

- 기획안을 받으면 개발팀 내부에서도 본격적인 개발에 돌입하기 위해 구체적인 명세서를 작성하기도 한다고 한다.

- 여기서의 구체적인 명세서란, 각 Entity에 대해 이루어지는 작업을 API로 하여 정리한 걸 말하는데

- 검색을 해보니 이건 개발자의 성향에 따라 조금씩 다 다른 것 같았다. (아예 안 쓰는 사람들도 있고)

- 수업에서는 Entity 별로 Http 요청에 대한 처리 API들로 간략히 정리했었다.

- 연습을 한 번 해보고자 동물병원 진료 예약 시스템을 생각해서 하나의 API만 작성해보았다.

ex. 동물병원의 진료 예약 시스템

사용자
  // 생략

동물
  - 동물 생성 API
     - POST /animal-register
     - 파라미터 : 사용자 아이디
     - 정책 : 사용자가 없는 경우 실패 응답
     - 성공 응답 : 사용자 아이디, 동물번호, 등록일시
   .... 등등등

예약정보
  // 생략

 

2.  기본 구조는 어떻게 잡을 수 있을까

- 기획안에서, 또는 기획안을 받은 후에, 기술 스택에 대해 정하게 되는데, 구체적으로는, 

  코딩 컨벤션이나, 패키지 구조, DB 접속 환경, 연동 API등에 대해 전반적인 틀을 잡는다.

  (이걸 수업시간에선 기본구조를 잡는다고 설명했다.)

 

- 코딩 컨벤션은 팀 내부에서 사용하는 코딩 스타일을 말한다.

  자주 사용하는 코딩 컨벤션 도구로 ESLint와 Prettier가 있다고 하는데, 자세한 건 바로가기 에서 보면 좋을 것 같다.

 

- 패키지 구조는 앞서서 이야기했듯 디자인패턴에 따라 달라질 수 있다. 

  (예를들어, 레이어패턴인 경우, N-tier 방식으로 패키지를 만들고, 헥사고날의 경우, 도메인 중심으로 패키지를 만든다.)

  따라서, 회사에서 요구하는 디자인 패턴에 따라 그 패턴을 공부하고 적용하는 게 필요할 것 같다.

 

3. 명세서에 따라 Entity의 상세정보를 정리하고 개발 시작하기

- 수업에서는 명세서에서 작성한 API 하나에 대해,

- 1) 이미 검토한 정보(HTTP 메소드, 파라미터, 정책, 성공 응답) 와 더불어

  2) 상세 정보 (Entity내에 추가되어야 하는 정보)를 정리 (수업에선, 컬럼명과 데이터타입과 설명까지 정리했다.)

  3) 요청/응답 시 주고받는 데이터 구조까지 정리했다.

- 상당히 도움이 되는 흐름이었는데, 사용자 케이스에 맞춰 요청 API를 먼저 처리하고,

  관련된 객체(Entity)를 만든 후에, 단위 테스트를 하게 되면 개발자도 흐름을 체크하며 개발할 수 있지 않을까 싶다.

 

 

[ 참고 및 출처 ]

부트캠프 수업을 들은 후 정리한 내용입니다.

https://mklab-co.medium.com/%EC%9E%91%EC%84%B1%EB%B2%95-%ED%99%94%EB%A9%B4%EC%84%A4%EA%B3%84%EC%84%9C-wireframe-%EC%99%80-%EA%B8%B0%EB%8A%A5%EB%AA%85%EC%84%B8%EC%84%9C-functional-specification-bbcff0071ea2