Giter Site home page Giter Site logo

jaekyungshon / jsp-oracle-univ-team-project-web-checkcheaper Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 48 MB

협업 스터디 프로젝트 : 식재료 최저가 구매 서비스

Python 2.89% Shell 0.46% Batchfile 0.70% Roff 1.52% JavaScript 34.53% Java 59.52% CSS 0.37%

jsp-oracle-univ-team-project-web-checkcheaper's Introduction

header

JSP + WAS + DBMS


🖥️ 프로젝트 소개

  • 학습 목적의 협업 프로젝트.
  • 식재료 판매처 및 가격 조회/비교, 주문 배송을 사용자에게 제공하는 웹 서비스.
  • 참고(유사 서비스) : 쿠팡이츠   참가격

⏰ 개발 기간

  • 2023.12.06 ~ 2023.12.19

🧑‍🤝‍🧑 멤버 구성

  • 손재경 : DB설계(데이터모델링-ERD/구현-물리적설계) / 데이터 준비 / 클라이언트-서버 데이터 연결(DB Connection) / 웹 이벤트 핸들링 동적 처리 / Web CSS
  • 송형원 : UI 설계(피그마) / 클라이언트(회원) 페이지 구현 / DB설계 보조(정규화+반정규화)
  • 송승엽 : UI 설계(피그마) / 클라이언트(판매자,관리자) 페이지 구현 / DB설계 보조(정규화+반정규화)

⚙️ 개발 환경

  • Java 8
  • OpenJDK 11
  • Data Upload : Python 3.x
  • UI : Chrome
  • Framework(Front/Backend) : JSP
  • DBMS : MySQL
  • WAS : Tomcat Apache
  • IDLE : Eclipse
  • Tools : Bootstrap   Jquery

⚙️ 개발 프로세스

  1. 요구사항 분석
    • ISP : 정보전략계획수립(제안서)
    • 업무분석 (기술분석서)
  2. 설계
    • 상관모델링 : 데이터모델링 + 프로세스모델링
    • 물리DB설계 / 로직 설계
  3. 구현
    • DB 구축
    • Web 개발
  4. 통합 및 테스트
    • DB 튜닝
    • 테스트
  5. 유지보수
    • 배포(RUN)
    • 유지 및 보수

📋 버전 히스토리

  • Ver 1.0 : 2023.12.19 ~
  • Ver 1.1 : 차후 예정
    • 페이지 모듈화 정리(directory 구분)
  • Ver 1.2 : 차후 예정
    • 기존 DB 연결 방식 -> Java Class DAO / DTO
    • 페이징 처리 추가
  • Ver 1.3 : 차후 예정
    • (Frontend) JSP -> React
    • (Backend) JSP -> Spring(+SpringBoot)
  • Ver 2.0 : 차후 예정
    • 리뷰 기능 추가
    • 상품 Q&A 기능 추가
    • Coupon 기능 추가
    • 상품 설명 페이지 추가
  • Ver 2.1 : 차후 예정
    • CSS(Bootstrap) : CDN -> CRA
  • Ver 2.2 : 차후 예정
    • 상품 판매 및 수익 통계 페이지 추가 (판매자)

📌 개발 제약조건

  • 상품 출고 처리 및 상품 배송 가상 구현.
  • 본인 인증 제외
  • 결제 옵션 선택 O / 실제 결제 처리 가상 구현.

📌 주요 기능

  • System Nature Flow
  • 판매 상품 가격 조회 및 비교

    • 필터링 옵션을 통해 고객이 원하는 판매 상품 조회 가능
    • 최저가순 / 주문량순 / 할인률순 정렬 버튼을 통해 가격 비교 가능
  • 상품 재고 관리

    • 판매자(판매점)에게 제공하는 기능 서비스
    • 새로운 상품 등록 가능
    • 판매 상품 재고(수량) 변경 가능
    • 주문 상품 출고 페이지를 통한 재고 자동 변경 가능
  • 상품 주문 및 배송

    • 회원 등급에 따른 차등 할인 혜택 적용
    • 장바구니를 통한 원클릭 주문 가능
    • 주문 결제 완료시, 배송사 자동 배정

📌 기능 구현 세부 정보

  • 로그인 정보 / 장바구니 상품 목록 : Session
  • Page 간 데이터 송수신 : GET / Request+Response
  • 배송사 자동 선정 : '가장 적은 업무 중인 택배사' -> (예정)LPT 알고리즘

📕 후기

  • Ver 1.0

    협업 도구

    • 코드 공유

    이번 프로젝트는 이메일로 코드 공유를 하면서 진행하였다. 코드 길이가 길어져, 파일 용량이 커지게 되면 이메일로 보내는데 있어 압축 과정을 진행하는 불편함이 있었다. 또한, 수동적으로 다운로드하고, 파일을 구분하는 작업은 생각보다 힘들었다.

    • 파일 관리

    1개의 소스코드에 대해 여러 로직을 바탕으로, 다양한 코드가 존재하는데 이를 각 파일로써 다루기가 힘들었다. 또한, line이 추가/수정/삭제 된 부분 파악하기가 어려웠다. 주석 처리를 했음에도 불구하고, 코드 길이가 긴 파일의 경우 주석을 찾는 것 자체가 힘들었다. 하나의 소스 코드를 각 개발자들이 맡은 파트에 따른 변경 부분을 병합하는 과정도 직접 코드를 자르고 붙였기 때문에 힘이 들었다.

    • 필요성

    이렇게 수동적으로 처리하는 부분은 불필요한 힘의 낭비라고 생각하게 되었다. 이러한 단점들을 보완하기 위해 협업 도구가 존재한다는 것을 느끼게 되었다. SVN 등 여러 협업 도구가 있지만, 그 중에서도 가장 활발한 git을 본인은 사용하고 있다. remote respository 기반, commit / push / pull / clone / branch / log 등, 한 줄의 명령어로 편하게 서버에 등록, 다운로드, 코드 이력 확인을 가능케 한다.

    개발

    • 프레임워크

    프로젝트를 진행하면서, 자연스럽게 '더 편하고 직관적인 프레임워크가 존재할까'라는 궁금증을 가지게 되었다. 이를 통해, 프론트는 React, 벡엔드는 Spring을 알게 되었다. React는 Injection Attack 방어에 효율적일뿐만 아니라, JSX 문법을 통해 코드 수는 줄이면서 직관적인 장점을 지닌다. Spring은 더 다양한 라이브러리 관리를 통해 더 편한 백엔드 환경을 제공해준다. 물론, JSP도 기존 JS보다 동적 핸들링에 있어 더 편리하다는 사실과 내장 객체를 통해 Page 간 데이터 통신을 편하게 작성할 수 있다. 학습의 목적과 더불어, 개발 역량 성장을 위해 차후 Version에서 프레임워크를 변경할 계획이다.

    • DB 설계

    사용자 요구사항을 다양한 방식으로 모아, 업무분석하는 과정은 디테일과 시간이 필요하다는 것을 느끼게 되었다. 서비스의 기본 원칙은 사용자에게 편리하고 질 좋은 솔루션 시스템을 제공하는 것이다. 사용자의 입장에서 어떠한 기능들을 이용할지, 어떤 기능들을 필요로할지 등에 대해 깊은 생각을 해보게 되는 시간이었다. 이렇게 짜여진 업무분석서(기술분석서)를 바탕으로, 데이터의 관계를 생각하여 ERD를 짜게 되었다. 요구사항 분석과는 반대로, 개발자에게 있어 어떻게 해야 DB 테이블에 효율적으로 접근할 수 있는지 생각해보게 되었다. 중복되는 속성 또는 테이블은 1~3차 정규화를 진행하였고, 추후 테이블 정의서를 작성할 시 너무 복잡한 테이블들은 반정규화를 하였다. 정답이 없기에 더욱 세세히 시간을 들였으며, 가장 중요한 것은 개발자의 접근성이라는 부분을 다시금 느끼게 되었다.

    • 구현

    webapp 폴더 안에 주구난창으로 페이지들을 구현하다보니, 필요한 페이지를 찾는 것이 힘들었다. 그렇기에, 폴더를 통한 파일 관리가 얼마나 중요한지 다시금 깨닫게 되었다. 또한, 보기 힘든 코드에서 특정 기능들을 추출하여 모듈화를 진행하였고, 이는 코드 가독성을 향상시켜 팀원들과 코드 리뷰하는데 있어 큰 장점이 되었다.

    • 유지보수

    테스트와 배포 이후, 실제로 이용을 해보면서 추가적인 기능들과 변경해야할 부분을 발견하게 되었다. 보수할 부분들에 우선순위를 매겨 작업을 할 예정이다. 이를 바탕으로 version 관리를 하게 되면, 어떤 부분들이 추가되었고 변경되었는지를 일목요연하게 개발자들이 파악할 수 있겠다는 생각을 가지게 되었다. 또한, 이러한 유지보수 사항들은 결국 사용자의 추가 요구사항들로 통해 이루어지게 됨으로, 서비스 제공에 있어 사용자 요구사항 파악이 정말로 중요하다는 것을 다시금 느끼게 되었다.

jsp-oracle-univ-team-project-web-checkcheaper's People

Contributors

jaekyungshon avatar

Watchers

 avatar Capstone418 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.