개인 프로젝트/프로젝트

최종프로젝트_DAY1

Leo.K 2022. 6. 11. 17:44

이제 어느덧 수료를 2달 앞두고 있는 상황이다. 아직 배워야 할 부분이 너무나도 많지만, 수료하고 어떻게 취업할지 막막하긴 하지만,,, 우리는 공부를 멈추지 않는 개발자이니까 지금할 수 있는 일에 대해 최선을 다하고자 한다. 다가오는 수료를 맞이하면서 이력서에 첨부할 포트폴리오를 만들기 위해 최종적인 프로젝트를 시작했다. 팀원은 필자를 포함한 3명으로,  개발에 사용할 언어는 java, oracle, javascript, spring이다. 

만들고자 하는 프로젝트의 주제를 선정하고, 오늘 처음으로 만나서 개략적으로 구현하고자 하는 기능들을 생각해보고 DB를 모델링하는 시간을 갖게 되었다. 이번 프로젝트에서 만드는 프로젝트는 웹에서 플래시카드를 구현하려고 한다. 카드의 내용은 기술면접 단어 암기장으로, 프로젝트를 완성해가면서 샘플데이터를 기술면접 내용으로 채워 기술면접까지 함께 준비하고자 팀원이 제시해준 아이디어를 반영했다.

세 명의 팀원 모두 개발을 처음이기 때문에 처음부터 전체적인 개략을 짜기엔 무리가 있다고 생각하여 기본적으로 구현이 필요한 중심 기능만을 구현한 프로토 타입을 만들고 기능이 잘 구현되는지 확인하면서 기능을 추가해보고 UI를 완성해나가는 방식으로 진행하기로 했다. 

오늘은 모여서 셋이서 머리를 맞대고 브레인 스토밍을 진행하면서 구현하고 싶은 기능을 막 끄적여보고 정리했다.

오늘 회의내용을 아래와 같이 정리해서 차후에 보고 평가를 해보는 척도로 사용하고자 한다. 

Day1. 회의 내용

  1.  프로젝트의 이름은 무엇으로 할 것인가? 
    1. 팀원들이 각자 하나씩 생각해서 종합해보고 가장 괜찮은 내용을 채택하기로 했다. 
  2. 사용자 입장에서 요구사항 분석해보기. UML은 Usecase Diagram을 만들기로 했다
    1. 로그인 여부와 상관없이 페이지에 있는 학습 카드 목록을 조회했으면 좋겠다. 
    2. 로그인 여부에 따라 기능이 조금씩 달랐으면 좋겠다.
    3. 로그인은 카카오나 구글계정으로 로그인이 되면 좋겠다.
    4. 학습 카드 목록을 조회할 때, 필터링해서 조회할 수 있으면 좋겠다.
    5. 나도 직접 학습 카드를 만들 수 있으면 좋겠다. 
    6. 학습 카드의 내용이 마음에 들지 않으면 수정&삭제가 가능했으면 좋겠다. 
    7. 다른 사람이 작성한 학습 카드를 나의 학습 공간에서 학습할 수 있으면 좋겠다. 
    8. 잘 외워지지 않는 카드는 따로 모아서 볼 수 있으면 좋겠다.
    9. 학습 카드를 통해 좋은 학습을 했다면 해당 학습 카드를 추천해줄 수 있으면 좋겠다.
  3. 팀원들이 추가적으로 구현해보고 싶은 기능
    1. 사용자가 학습하러 로그인하는 날을 출석 체크를 하여 배지를 주는 기능
    2. 사용자가 학습한 양에 따라 경험치를 주어 등급을 매겨지는 기능
    3. 특정 사용자를 팔로우 할 수 있는 기능
  4. DB는 어떻게 모델링 할 것인가? (사실 이 부분에서 가장 어려움을 느끼고, 시간이 오래 걸렸다.)
    1. 회원관리에 대한 테이블은 어렵지 않았지만, 학습 카드 데이터를 어떤 구조로 DB에 저장할지를 생각하는 것이 어려웠다. 
    2. 모든 카드 데이터를 통째로 하나의 테이블로 만들기에는 종속성이 너무 심해서 CRUD연산시 이상문제가 생길 것이 뻔했다. 
    3. 그렇다고 학습 카드 목록마다 테이블을 만들기에는 필요 이상의 너무 많은 테이블이 생성될 것이라는 걱정이 들었다. 
    4. 결론 지은 방법은 다음과 같다.

 

멤버테이블(로그인 전용)

멤버번호(pk) 아이디 비밀번호 닉네임 생년월일 이메일

구글멤버테이블(구글 api로그인 전용), 이 테이블은 구글 api를 공부해보고 구글에서 전송해주는 파라미터에 따라서 결정하기로 했다. 

 

카드 테이블

카드번호(pk) 카드제목 멤버번호(fk) 주제번호(fk) 질문번호(fk) 추천수

 

주제 테이블

주제번호(pk) 주제이름

 

질문테이블

질문번호 질문 답변

 

위와 같은 구조로 테이블의 컬럼을 구성하고자 하는데, 질문테이블에서 질문번호가 학습카드를 구분하기 위한 idx값인데, 하나의 카드에 대해서는 다수의 질문과 답변이 존재하기 때문에 질문번호의 중복성을 피할수가 없어서 기본키가 존재하지 않는다. 뭔가 찝찝한 기분을 받아서 일단은 이 상태로 보류하고 좀 더 고민을 해본 뒤에 수정을 하기로 했다. 

수정된 내용은 이 페이지에 수정하지 않고 계속해서 회의내용을 정리하면서 수정내용을 계속 포스팅하면서 프로젝트 과정을 모두 기록하고자 한다.

 

위의 내용을 회의하고 월요일까지 각자 프로젝트 이름과 UsecaseDiagram을 하나씩 준비하기로 했고 DB모델링을 다시 해보며, 화요일에 프로토타입에 대한 레이아웃을 구성하기로 했다. 

아래는 필자가 먼저 작성해본 UML이다. 

언제든지 잘못된 내용이 있거나 아이디어에 대해 수정이 필요한 부분을 발견한다면 댓글로 남겨주면 감사하겠습니다.