반려동물 커뮤니티

2022년 9월에 진행한 팀프로젝트

  • 인원 : 정정일, 김성호, 김희정, 정지영 총 4명

  • 프로젝트 기간: 2022년 9월 18일 ~ 2022년 9월 21일


  • 프로젝트 소개

    - 회원가입을 통해 User와 Doctor를 생성 및 로그인 할 수 있게 하여,  
      User가 게시판에 질문을 올리면 이를 Doctor가 조회할 수 있게 하고 feedback과 소통을 할수있다   
      User는 마이페이지에서 자신의 반려동물을 등록할수있다
    
  • 사용기술

    - java
    - jquery
    - jpa
    - html,css,js(java script)
    - spring boot framework
    - MySQL
    - github
    - gradle
    
  • 주요 기능

    • 화원가입 및 로그인
    • 반려 동물 등록, 수정, 삭제
    • 반려 동물과의 가족관계증명서 발급
    • 게시글 작성, 수정, 삭제
    • 댓글 작성, 삭제
  • 구동 실험 환경

    - Window 11
    - 다른 OS에선 구동해보지 않았습니다.
    
  • ERD

    KakaoTalk_20220921_181542745

  • 회고

    ---Architecture 문제 사항---

    = 설계를 회의와 대화로만 진행하고 정리 및 도식화를 하지 않은 채로 프로젝트를 진행함 -> 사실상 설계를 하지 않은 것
    
    1. 기획의 부재
      - 어떤 프로그램을 만들지, 어떤 식으로 만들지, 이루고자 하는 바가 무엇인지를 정리하지 않고 시작함
      - 프로그램을 추상적인 생각만하고 구체적인 정리를 하지 않았다.
      - 기획서를 작성한다고 하면 어떤식으로 작성해야 하는가
      - 기획에서 어떤식으로 진행할지 명확하게 명시하지 않았다.
    
    2. DataBase에 대한 고찰 부족
      - 기획의 부재로 사전 제작한 ER diagram이 없었다.
      - 그에 따라 프로젝트 도중 DB를 3번 drop함
    
    3. 업무분배 불명확
      - 처음에는 기능별로 업무를 나누고자 하였다.
      - 진행도중 리팩토링이 필요하고 entity와 DTO(VO)의 분리가 필요하단 사실을 알게되면서 업무분배가 사실상 무산됨
    
    4. Application flow chart 부재
      - Application flow chart마저도 추상적인 생각만하고 구체적인 정리를 하지 않았다.
    

    ---Architecture 개선 사항---

    1. 기획서
      - 프로젝트를 진행하기 전 How, What, Who를 정확하게 정리할 필요가 있음.
      - Service를 기획할 때 client입장에서 더 생각할 필요가 있음.
      
    2. Database
      - 추후에는 정확한 DB설계에 따라 필요한 Table과 index를 정리할 필요가 있음.
      
    3. 업무분배
      - 정리된 기획에 따라 명확하게 역할을 나눌 필요가 있음
    

    ---구현에서의 문제---

    1. Database
      - 쓸모 없이 varchar(30)으로 지정되있거나 그 외에도 제한을 걸어둔 column이 너무 많음
      - doctor_id, doctor_licensenumber가 같은 unique인데 따로 지정되있음
      - user들이 가장 많이 사용하게 될 data가 있는 table은 pet인데 그 곳에 대한 고찰이 부족함
        * category, category_detail을 type으로 나눠서 숫자로 저장되게 할 것
        
    2. TestUnit
      - Repository에 대한 테스트만 진행하였고 Controller, Service에 대한 테스트는 진행하지 않았음
      - PostMan을 이용한 테스트는 최후에 진행하였어야 했으나 이 프로그램으로 대부분의 테스트를 진행했음
      
    3. Exception Handler 부재
      - 예외처리에 대한 throw catch가 전혀 없음
      
    4. PW encrypt코드 기능 구현 부족
      - salt에 대한 부분이 제대로 기능하지 않음
      
    5. 가독성이 좋은 코드를 쓰도록 노력
      - if(userId !== null || doctorId !== null) -> if(userId == null && doctorId == null) - or연산자 보다 &&연산자가 더 가독성이 좋고 연산량도 적다.
    
  • 느낀 점

    • 정정일

      다소 아쉬움이 많이 남는 프로젝트였다.
      명확한 기획의 부재로 프로젝트를 진행하며 생겼던 이슈들로 진행도중 수정할 사항이 많았었는데,
      코드를 작성하는 것 만큼이나 기획과 설계가 아주 중요하다는 것을 느낄 수 있었다. 
      처음으로 Git을 비교적 활용하며 프로젝트를 진행했다는 점에서는 만족했지만,  
      그 외에 설계나 기획 면에서는 앞으로 프로젝트를 할때 많은 개선과 생각이 필요할 것 같다. 
      
    • 김성호

      처음에 설계했던 것 보다 프로그램이 훨씬 커져 힘들었고 확장할때 기존의 것들을 너무 많이 수정해야 해서 시간이 많이 걸렸다. 
      첫 설계를 좀 더 신중하게 해야 할 것 같다
      
    • 정지영

      이번 프로젝트는 자기 자기 능력을 크게 향상시키고 싶어서 구상을 최대한으로 끌어올린 거 같습니다,   
      하지만 시간적 분배가 올바르게 이루어 지지 않아 메인 페이지에 비해 다른 부분들의 퀄리티가 올바르게 구상되어있지 않은 거 같습니다.   
      다음부터는 시간분배의 힘을 써서 전반적으로 퀄리티가 평등한 프로젝트를 만들고 싶습니다  
      
    • 김희정

      아직도 코드를 짠다는 것이 막막한데 다른 분들은 어떻게 코드를 작성하는지 볼 수 있어서 좋았습니다.  
      CRUD의 기능구현을 이렇게하는구나 하는 것을 보고 배울수있었습니다. git에 조금더 친숙해질 수 있었습니다.   
      1인분의 역할을 하기위해 공부를 열심히해야겠다고 생각했습니다