2023년 1학기 공개SW프로젝트01 5조입니다.
최다빈 팀장, BackEnd |
김태형 BackEnd |
김희진 BackEnd |
신지영 FrontEnd, 데이터셋 |
하유경 FrontEnd, z3솔버 |
허준상 FrontEnd,z3솔버,Jenkins_Sonar |
동국대학교 컴퓨터공학과 졸업 가능 여부 판정 웹 서비스 (23/03/15 ~ 22/06/17) 기존 프로젝트
- 지속적으로 변화하는 졸업요건을 반영
- 관리자 페이지 기능을 추가하여 여러 기능 제공
- 기존에 정상적으로 작동하지 않던 통계 페이지 구현
- 백엔드 스택 변경으로 가독성, 유지보수성, 확장성, 유연성 향상
- 테스트 데이터 셋으로 정확도 측정
- z3 solver를 이용해 테스트 데이터 셋의 정답 확인
- 개발자의 db, email정보가 노출되지 않도록 환경변수화
- 현재는 학과를 대상으로 하고 있지만 단과대나 종합대 처럼 넓은 범위로 확장 가능
- 테스트 데이터 셋으로 정확도를 측정함으로써 추후 생길 프로젝트의 문제점을 발견해 지속적인 업데이트가 가능
- 학과 졸업 요건이 변경되더라도 지속적인 사용 가능
동시에 병렬로 600개의 동일한 요청이 왔을 때, 각 서버별 처리 속도를 비교하기 위해 시간을 측정하였다.
컴퓨터공학과의 한 학년을 어림잡아 150명이라 했을 때, 4학년 전원은 600명이라고 하였다.
총 100번의 시도를 했을 때 평균 처리 시간은 다음과 같다
Spring: 15 sec
Node.js: 12 sec
결과 분석:
정확도가 더 상승하고 그에 따라 더 많은 로직이 들어갔음에도
평균 약 3초의 차이는 기존 Node.js 서버와 성능이 동등하거나 그 이상이라고 평가된다.
현실에서 모든 컴퓨터공학과 학생들이 요청을 했을 때라는 worst case에서 이러한 결과는
충분히 합리적인 결과값으로 평가 된다.
관리자 페이지 중 dataset 페이지에서, 관리자로부터 생성할 DataSet의 개수, 입학년도, 이수학기 수, 이수학기 마다의 이수 강의 정보를 입력받아 2017~2023년의 강의 목록 엑셀 파일에서 랜덤으로 행을 추출하여 결과적으로 실제로 입력 받는 학생 성적 정보 엑셀 파일과 format이 동일한 엑셀 파일을 생성한다.
년도 별 졸업요건, 신설과목, 학수번호 변경 정보로 솔버 객체 생성 후 학생 성적 파일을 입력으로 받아 각 졸업요건 충족 사항과 이수해야 하는 강의들을 출력한다.
- Github에 프로젝트 진행한 것을 commit, push하면 Github의 web-hook을 통해 내용을 Jenkins에 전송
- Jenkins pipline을 통해 자동으로 빌드 (우리 팀은 수동으로 수정해 활용)
- 빌드된 내용은 Doker내의 SonarScanner에서 설정한 내용을 통해 SonarQube로 이동해 정적 분석 수행
1. 프로젝트 clone
$ git clone
3. 프로젝트 폴더로 이동
$ cd
4. 패키지 설치
$ npm install
5. 앱 실행
$ npm start
6. 파이썬 서버 실행
$ python testDataSet/createDataset.py