2023년 11월 27일~ 12월 27일 팀 프로젝트를 진행했다. Spring프로젝트를 하기 전 세미 프로젝트로, MVC 패턴으로 개발을 하는 프로젝트이다.
기획,요구사항 정의, 화면 설계, 개발, 발표까지 5명이서 했다. 실제 개발 기간은 2주 정도에서 빡빡한 일정이었다. 2주 안에 기능 3개와 CSS까지 완료하려고 하니까 매우 힘들었다. 하지만 프로젝트를 무사히 마치고, 내가 만든 웹사이트를 보니 뿌듯했다.
📢 프로젝트 소개
- 프로젝트 인원 : 5명
- 프로젝트 : 대학 커뮤니티 "올캠퍼스"
- 깃허브 링크 :
- 협업 : Discord
- 기술 스택
- Java, HTML,CSS,JavaScript,SQL,JSP
👩🏻💻 나의 역할
- 프론트, 백엔드 개발 (Java, HTML,CSS,JavaScript,SQL,JSP)
- DB 설계 및 관리
- UI
🚩 프로젝트 과정
1. 기획
우리 팀은 대학생을 위한 커뮤니티 "에브리타임"을 벤치마킹한 사이트를 개발하기로 했다. MVC 패턴에 익숙해지기 위한 프로젝트이기 때문에 MVC패턴을 잘 활용할 수 있는 사이트에 대해 생각해 보았고, "에브리타임"을 참고하여 기능,UI를 우리 스타일로 변형하기로 했다.
기획 단계에서는 프로젝트의 목표와 범위를 정의하고, 필요한 기능 목록을 작성했습니다. 기획을 할 때는 기능을 최대한 많이 생각하는 것이 좋다고 하여 구현 가능한 기능들을 작성했습니다.
- 기획서

2. 분석
요구사항 정의서부터는 각자 맡은 기능에 대해서 작성을 해보고 다같이 검토하는 식으로 하였습니다.
저는 자유게시판, HOT 게시판, 강의평, 학점계산기 기능을 맡았는데 주 기능을 많이 맡아서 구체적으로 분석하여 기능들에 대해서 이해하기 쉽게 작성해야겠다고 생각했습니다.
- 요구사항 정의서


3. DB 설계

4. ERD
ERD 는 원래 eclipse 내장 툴을 이용하려고 했지만 중단되어, ERD cloud를 사용하게 되었다.

5. 화면 설계
요구사항 정의서를 기반으로 Kakao Oven 툴을 활용해서 만들었다.
6. 개발
세미프로젝트이고, ppt, 발표 준비 때문에 실제 개발 기간은 2주였다. 그래도, 최종적으로 밤도 새고하면서 내가 맡은 기능의 기획했던 부분은 다 개발해서 뿌듯하다.
우리 프로젝트의 기능을 크게 나누자면 다음과 같다.
- 자유게시판, HOT 게시판
- 강의평
- 학점계산기
- 시간표
- 책방
- 회원,비회원,관리자 등급
- 마이페이지
처음에는 게시판/강의평/학점계산기/책방을 내가, 마이페이지 기능 1명, 관리자 기능 1명, 시간표 1명, 회원가입/메인 1명 이렇게 기능을 나누었다. 나는 책방 기능까지 하려고 했지만, 프로젝트 개발 기간이 2주밖에 되지 않는다는 공지를 듣고 다른 팀원에게 맡기게 되었다.
그래서 최종적으로는 나는 게시판,강의평,학점계산기, UI 를 맡아 개발을 했다. 중간중간 관리자 기능을 맡은 팀원의 질문에 대답도 해주고, 코드 개발도 도와주고 해서 매우 바쁜 개발 기간이었다.
내가 개발하면서 겪은 이슈나 기술적 특징이다.
1. 강의평
강의평 같은 경우 고민이 매우 많았다.
메인화면에 과목 검색 기능을 넣어 검색을 통해 강의평을 작성하게 할 것이냐 아니면 강의평 작성 폼에 검색 기능을 넣을 것인가부터 고민을 했었다. 깔끔하게 작성 폼에 넣기로 결정을 하였다. 하지만 고민은 이제 시작이었다..
과목명 키워드 검색을 통해 강의 DB와 연결하여 키워드에 맞는 과목명을 찾아 select~option으로 해당 과목이 있는 과목명(교수명)을 보여주어 작성하려는 강의를 선택하게 하였다. 이때 ajax통신을 하게 되었는데, 이부분 기능을 개발하느라 ajax통신 마스터가 되어 다른 팀원의 ajax관련 질문도 해결해주게 되었다.
또한, 해당 과목명(교수명)을 선택하게 되면 강의DB에서 해당 과목이 열린 학기를 자동으로 보여주게 되어 선택할 수 있게 하였다.
2. 학점계산기
사실 제일 구현하기 쉬울줄 알았던 학점계산기이다. 하지만 제일 오래 걸렸다.
내 시간표 불러오기 기능을 모달창을 띄워 가져올 수 있는데, 부트스트랩을 사용했지만 헤더 스타일이 깨져서 부트스트랩 사용을 못하고, 직접 구현했다..
또한, 한 학기마다 시간표를 불러오고 해당 과목의 성적 등을 DB에 저장하게 만들어서, DB양이 곱으로 방대해져서 세션에 저장하게 되었다. 창을 닫게 되면 정보들이 사라진다는 단점이 있어 찝찝했다. 나중에 시간이 나면 수정해보고 싶다.
📖 배운 점 / 느낀 점
웹 프로젝트는 처음이었고, 팀원들과 단기간에 많은 것들을 해서 기억에 많이 남았다.
- 포기하지 않고 열심히 하면 된다
내가 구현해야 할 기능들이 많고, 다른 팀원과 연결되는 기능들이 많아 먼저 처리해줘야해서 시간 압박도 느끼고, 내가 다 구현할 수 있을까 생각이 들었다. 하지만 할 수 있다는 생각을 하면서 하다보니 결국 완성하게 되었다.
- 성장
개발을 하면서 잘 못하던 ajax 통신도 마스터하게 되었고, 구조를 고민하면서 코드를 짜도록 노력을 하게 되었다.
밤도 새고, 크리스마스 때도 집에서만 개발만 하면서 2주간 쉴 틈 없이 하면서 기능들이 동작하는 걸 보며 뿌듯했고, 추가로 구현하면 좋을 기능들이 생각이 나기 시작하고 완벽하게 구현하고 싶다고 생각도 들면서 성장해 나가는 내 자신이 좋았다.
- 리팩토링
학점계산기 같은 경우 후반에 개발을 하게 되어, 시간적 부분에서 압박감을 느껴 깔끔한 코드와 구조에서 멀어져 갔다.
특히 한 기능을 구현하려는데 이미 코드의 대부분이 개발되어 있어서 좋은 선택지보다는 빠르게 기능을 완성하려는 압박으로 깔끔하지 못한 코드로 만들게 되었다. 처음부터 설계를 잘했어야 하는 아쉬움이 있어 다음부터는 깔끔하게 구조와 코드를 짜도록 노력해야겠다는 생각이 들었다.
'개발 작품' 카테고리의 다른 글
| 상품 (0) | 2023.11.10 |
|---|---|
| 게시판 (0) | 2023.11.10 |
| 대문 페이지 개발 (0) | 2023.11.06 |
| 이력서 만들기 [HTML] (0) | 2023.10.17 |