[소프트웨어공학] 1주차 - 반려동물 관리 시스템 구축(개인과제)

0

프로젝트

목록 보기
1/14

소스코드

https://github.com/1876070677/SimplePetManager

개발과정

  1. 사용할 기술 정리
  2. DB설계
  3. MVC 설계
  4. 수정
  5. 부가기능 구현

사용할 기술 정리

  • IDE : 인텔리제이
  • 언어 : Java
  • 관계형 데이터베이스 : MariaDB
    -> MySQL 과 MariaDB 차이 : MySQL의 시스템을 기반으로 Fork한 데이터베이스 시스템으로 MySQL의 개선된 버전이라고 볼 수 있다.

DB설계


MVC설계




이 외에도 추가적으로 DAO가 구현되어 있으며, DAO는 데이터베이스에서 실행될 쿼리를 정적으로 가지고 있다. 그리고 DAO의 역할답게 가져온 데이터를 Model에 담아서 컨트롤러에 반환하여 준다.
또한 데이터베이스에 접근하기 위해 계속 DB로부터 커넥션을 받아오고 반환하는 형태로 설계하지 않았다. DB에서 일정한 커넥션을 미리 받아와서 담아두는 Pool을 만들어서 DB에 접근해야 할 때마다 객체는 Pool에서 커넥션을 받아와서 실행하게 된다. 소스코드와 관련하여 Git에 첨부하도록 할 예정이다.

수정

  1. 비즈니스 오브젝트(BO)를 만들 계획이었으나 간단한 작업이라 구현하지 않았다. 하지만 현재의 과정 중 동물을 등록하는 과정에서 비즈니스 로직을 DAO가 가지고 있는 문제점이 있다. 이 과정은 다음과 같다.
    테이블 자체가 owner테이블과 pet테이블이 1:다 관계로 구현되어 있다. 그래서 owner테이블에는 중복된 주인정보가 들어갈 수 없다. 그것을 구분하기 위해서 number컬럼을 유니크키로 설정하였다. 그리고 이미 존재하는 주인일 경우 제대로 입력되었는지 판단하기 위해서 name을 확인한다. 이과정을 RegisterDAO에서 검사한다. 입력된 연락처가 중복일 경우, 입력된 이름과 데이터베이스상에 해당 연락처로 등록된 이름을 비교하여 일치하면 등록을 계속 진행하고 이름이 서로 다르다면 잘못된 정보가 입력된것으로 간주하고 등록을 진행하지 않는다. 해당 과정은 다음 그림으로 나타낼 수 있다.

    해당 과정은 DAO에서 진행하지 않고 BO에서 진행하는 것이 맞지만, 현재는 그렇게 하고 있지 않다.
  2. Register, List에서 url에 파라미터를 추가하였다.
    • Register 과정에서 주인 정보의 잘못된 기입으로 인한 실패시 ?res=fail 파라미터를 주어서 실패 여부를 판단한다.
    • List 과정에서 목록을 어떠한 기준으로 정렬할지 선택할 때 파라미터를 전달한다. ?filter={fliter_number} 형태로 전달된다.

부가기능 구현

  1. 수정사항에서 언급하였던 주인 정보 중복확인 기능
  2. 동물 찾기에서 결과가 없을 경우, 결과 없음을 표시
  3. 동물 등록 과정에서 입력 폼의 데이터에 대한 유효성 검사(정확한 데이터 기입 여부 확인)

추가적인 사항

각 과정에서의 흐름을 심플하게 나타낸 그림이다.

profile
최악의 환경에서 최선을 다하기

0개의 댓글