공강구조대
cdc wiki
프로젝트 개요
기술개발 과제
국문 : 공강구조대 - 효율적인 공강 시간 관리 서비스 개발
영문 : EmptySaver - Development of efficient empty time management services
과제 팀명
공강구조대
지도교수
유*진 교수님
개발기간
2023년 3월 ~ 2023년 6월 (총 4개월)
구성원 소개
서울시립대학교 컴퓨터과학부 20189200** 이*진(팀장)
서울시립대학교 컴퓨터과학부 20189200** 남*민
서울시립대학교 컴퓨터과학부 20189200** 신*균
서론
개발 과제의 개요
개발 과제 요약
시립대학교 구성원 내의 시간표 기반 그룹핑 서비스 개발
- 자신의 강의, 일정 시간표를 등록하고 빠르게 교내 구성원들과 그룹을 만들어 활동할 수 있다. 유저에게는 시간표 정보를 활용하여 빈 시간대의 형성된 그룹, 비교과, 리크루팅 등의 정보가 추천된다.
개발 과제의 배경
공강 시간을 효율적으로 사용하고 싶은 학생들
- 통학을 하는 학생들도, 자취를 하는 학생들도 활용하기 힘든 공간 시간이 생기기 마련이다. 공강 시간을 의미없이 보내다 보면 아쉬움이 많이 남기 마련이다. 그런 학생들을 위해 일정을 기반으로 빈 시간대에 모집 중인 활동을 추천해 준다.
교내 구성원들과의 교류를 원하는 학생들
- 공간 시간을 보내기 위한 것만이 서비스의 목적이 아니다. 같은 관심사를 가지는 학생들이 빈 시간대를 활용해 빠르게 그룹 형성하고, 활동을 할 수 있다. 또한 불특정 다수가 아닌, 교내 구성원을 대상으로만 제공되는 서비스인 만큼 사용자 간의 거부감이 적다.
동아리, 소모임의 일정 관리
- 동아리와 소모임 활동에서 가장 불편한 일은 일정을 정하고 서로 시간을 맞추는 일이다. 하지만 공강 구조대에서는 동아리와 소모임의 구성원들과 그룹을 만들 수 있다. 만들어진 그룹에서는 구성원들과 시간표를 공유하여 빈 시간대에 일정을 빠르게 정할 수 있다.
비교과, 리크루팅 참여의 활성화
- 교내 비교과와 리크루팅 서비스는 일일이 공지를 확인하고 일정을 체크하지 않으면, 참여하기 힘들다. 공강 구조대는 학생들의 빈 시간대에 관심사에 맞는 비교과, 리크루팅 일정을 추천해 주어 학생들에게 편리함을 제공한다. 따라서 비교과, 리크루팅 참여의 활성화를 기대할 수 있다.
개발 과제의 목표 및 내용
일정 시간표 등록, 관리 기능
- 학기별 강의를 DB와 연동하여 강의 시간표를 간단히 등록 가능하도록 개발한다. 별도의 일정도 추가적으로 시간표 상에 등록 가능 일정 관리 서비스도 제공한다.
그룹 형성, 참여 기능
- 그룹을 형성하고, 특정 그룹을 검색하여 참여 가능하도록 개발한다. 또한 유저끼리의 친구 추가 기능으로 시간표 공유와 그룹 초대가 가능하도록 만든다.
그룹은 활동할 일정을 설정하여 구성원에게 알릴 수 있다.
비교과, 리크루팅 정보 연동 기능
- UOStory 페이지의 비교과와 리크루팅 정보를 크롤링하여, 유저에게 공지하는 기능을 개발한다. 유저는 서비스에서 링크를 통해 신청 페이지로 이동 가능하도록 만든다.
추천 일정 알림 기능
- 유저의 시간표 정보를 활용하여 빈 시간대에 관심사로 등록한 활동이 있다면, 자동으로 추천하고 알림을 주는 기능을 개발한다. 학교 근처 영화관의 상영 시간표를 API로 받아와 빈 시간대의 영화 추천 기능을 개발한다.
교내 학생 인증 기능
- 교내 학생들이 사용하는 서비스인 만큼, 시립대학교 소속임을 인증하는 절차가 필요하다. 이는 UOS Portal의 Email을 활용하여 인증받도록 개발한다.
관련 기술의 현황
관련 기술의 현황 및 분석(State of art)
- 전 세계적인 기술현황
- 크로스플랫폼 앱 프레임워크
- 크로스플랫폼 개발은 하나의 프로그래밍 언어로 여러 OS에서 작동할 수 있는 앱을 만드는 것을 말한다. 2023년 3월 기준 IOS와 Android의 모바일 OS 시장점유율은 99퍼센트 이상이기 때문에 모바일 생태계에서의 크로스플랫폼 개발은 IOS와 Android, 이 두개의 OS에서 잘 작동하는 앱을 만드는 것을 말한다. 크로스플랫폼 프레임워크들 중 현재 네이티브 앱과 성능이 가장 비슷하고, 시장점유율이 높은 프레임워크는 React-native와 Flutter이다.
- Flutter
- 구조 : UI thread와 GPU thread => Flutter는 컴파일 시 native code로 변환된다. Flutter앱이 실행되면 UI thread는 Layer tree를 생성 후 GPU thread로 하여금 렌더링하게 한다.
- Spring
- Spring은 Java EE 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스 애플리케이션 프레임 워크다. 스프링의 가장 큰 특징은 POJO(Plain Old Java Object)프로그래밍 즉, 순수 Java만을 사용하여 외부 기술이나 규약의 변화에 얽매이지 않아 유연하게 변화와 확장에 대처할 수 있으며 객체지향 설계를 제한없이 적용할 수 있어 코드가 단순해지고 테스트와 디버깅이 쉬워진다.
- MySQL
- 전세계에서 많이 쓰이는 오픈 소스 RDBMS이다. 다중 사용자와 다중 스레드를 지원하고, 다양한 운영체제에서 사용할 수 있으며 여러 가지의 프로그래밍 언어를 지원한다.
- AWS
- 전세계에서 가장 많이 쓰이는 클라우드 플랫폼. 컴퓨팅,스토리지같은 인프라 기술부터 머신러닝, 데이터 레이크 및 분석, 사물 인터넷 등의 새로운 기술까지 다양한 서비스를 제공한다. 비즈니스와 개발자가 웹 서비스를 사용하여 확장 가능하고 정교한 애플리케이션을 구축하도록 지원해주는 플랫폼이다.
- 특허조사 및 특허 전략 분석
공익적 목적으로 서비스함으로써 수익 분배와 같은 문제를 발생시키지 않도록 하여 법적 분쟁으로 이어지는 가능성이 없도록 한다.
서비스를 외부에 제공하게 되면 github를 통해 소스 코드를 공개하여 사용한 툴들에 대한 라이선스 문제가 발생하지 않도록 한다.
앱을 만드는 데 사용하는 툴들의 라이선스를 명시하여 특허와 저작권 분쟁이 일어나지 않도록 한다.
- 기술 로드맵
React.js를 이용하여 프론트엔드 구현, PWA로 변환
스프링부트를 이용하여 백엔드 구현
UOStory 크롤링
MySQL로 DB 관리
시장상황에 대한 분석
- 경쟁제품 조사 비교
에브리타임
- 국내 최대 대학 커뮤니티 앱(같은 학교 학생들끼리만 교류 가능)
- 학생들의 커뮤니티 목적이 주가 됨(다양한 게시판이 존재, 학생들이 일상이나 정보를 교류)
- 시간표 작성 기능 존재(강의 정보 연동)
- 기타 학교 정보등을 제공하는 방식으로 학교 공식 홈페이지로 라우팅하는 방법 사용
- 친구를 맺고 친구의 시간표를 볼 수 있음
- 시간표에 등록된 수업 알림 제공
캠퍼스픽
- 동아리, 대외활동, 스터디 등을 구하는 커뮤니티 앱
- 에브리타임과 비슷하게 여러 게시판을 통해 학생들이 교류하는 커뮤니티 목적
- 에브리타임과 차이점은 대학의 구분이 없는 대학생 커뮤니티라는 점
- 주로 스터디나 대외활동 등을 위한 그룹을 구성하기 위해 쓰임
- 에브리타임과 연동은 되지 않지만 같은 회사 어플리케이션
- 에브리타임 앱 하단 바에 캠퍼스픽으로 가는 탭이 존재
시대생
- 서울시립대학교 학생을 대상으로 서비스되는 커뮤니티 앱
- 에브리타임과 유사하며, 서비스 타겟만 전국 대학생에서 시립대 학생으로 바뀜
- 교내생들을 대상으로 랜덤채팅, 소개팅 주선 등의 이벤트들을 진행
- 마케팅 전략 제시
시간표를 통해 일정 확인과 동시에 빈 시간에 할 활동을 추천받고, 참여할 수 있음 – 강의 일정을 확인함과 동시에 빈 시간을 활용하여 최소한의 신뢰성이 보장되는 같은 학교 학생들과 다양한 활동들을 할 수 있음을 강조
학교 강의 스터디 기능 – 수업을 같이 듣는 친구가 없거나, 강의를 같이 듣는 새로운 친구를 만들고 싶을 때 편하게 사람을 찾을 수 있음. 수업이라는 공통된 목적이 있으므로 자연스러운 관계 형성이 가능한 것이 메리트
교내 동아리/소모임 등의 그룹 관리 – 그룹원들의 일정을 확인하고 빈 시간에 맞춰 그룹활동 일정을 정할 수 있음. 활동 공지가 푸시되면 사용자는 수락/거절을 선택할 수 있고, 수락할 경우 따로 일정에 등록하지 않아도 시간표 상에 등록되므로 편리함. 현재 그룹 관리를 보통 카카오톡 채팅으로 하기 때문에 공강구조대를 이용하면 더욱 편리하게 그룹 관리를 할 수 있을 것을 강조 교내 비교과 프로그램 / 기업 리크루팅 정보를 더 보기 편하게 함을 강조
사용자들이 많아지면 많아질수록 의미가 있어지는 서비스이기 때문에, 서비스 이용 활성화를 위한 방안들을 계속 고민해야 함
개발과제의 기대효과
기술적 기대효과
- 학교에서 제공하는 비교과 프로그램 및 기업 리쿠르팅 정보의 접근성을 높인다.
- 교내 모임 관리가 간편해지고, 구성원 내 스케줄 조정이 용이해진다.
- 추천 시스템을 활용하여 개인 관심사에 맞는 활동을 추천해줄 수 있다.
경제적, 사회적 기대 및 파급효과
- 학교에서 제공하는 비교과 프로그램 및 기업 리쿠르팅 정보를 더 보기 쉽게 제공함으로써 교내 활동의 활성화 효과를 기대할 수 있다.
- 관심사에 맞는 활동을 학우들과 같이 하기 편하게 해줌으로써 대학생활의 추억을 더 풍성하게 하고 학생들의 자기계발을 도울 수 있다.
기술개발 일정 및 추진체계
개발 일정
구성원 및 추진체계
- 이*진 (팀장)
- 백엔드 개발
- - 시간표 관련 DB 설계, JAVA Spring를 활용한 코드 구현
- 신*균 (팀원)
- 백엔드 개발
- - 유저, 그룹 관련 DB 설계, Firebase/AWS 환경 관리, JAVA Spring를 활용한 코드 구현
- 남*민 (팀원)
- 프런트엔드 개발
- - 전반적인 서비스 프런트 담당, Flutter를 활용한 코드 구현
- 추진 체계
- - 매주 정기 회의를 통한 진척도 보고와 피드백, 보고서 작성 분담
- - 문서 관리는 Notion, 개발 소스 코드 관리는 GitHub, 화상 회의는 Discord를 활용
설계
설계사양
제품의 요구사항
- 사용자는 회원가입 및 로그인을 할 수 있어야 한다.
- 사용자는 자신의 일정표를 등록 및 관리할 수 있어야 한다.
- 사용자는 그룹을 형성 및 관리할 수 있어야 한다.
- 사용자는 그룹에 참여할 수 있어야 한다.
- 사용자는 활동을 추천받을 수 있어야 한다.
- 사용자는 회원 정보를 수정할 수 있어야 한다.
- 사용자는 다른 사용자와 친구 관계를 형성할 수 있다.
설계 사양
개념설계안
공강시간을 활용하여 재학생 간 활동 그룹 생성 및 관리
- 학교 API를 통해 강의를 시간표에 추가하고, 빈 시간을 확인
- 빈 시간에 원하는 활동의 그룹을 생성하거나 그러한 그룹에 참여
- 앱에서 제공하는 기본적인 몇 개의 카테고리가 존재하며, ‘자율’ 카테고리로 그 외 활동 또한 등록 가능
- 일정 추가시, 혼자(개인 스케줄), 여럿이(그룹 활동) 선택 가능 / 주기적, 단발성 선택 가능 / 그룹별 익명, 실명 여부 선택 가능 등 다양한 옵션으로 사용 편의성 제공
- 만들어진 그룹은 그룹 탭에 리스트로 보여지고, 그 그룹 탭에서 사용자가 원하는 그룹을 찾을 수도 있음(필터, 검색 기능 또한 제공)
친구나 그룹(그룹원)의 스케줄 시간 확인
- 친구의 스케줄 열람 가능
- 그룹원의 내용이 블러 처리된 스케줄 열람 가능
동아리, 소모임 관리
- 모임의 구성원들을 초대 및 삭제하는 관리 기능 제공
- 단체 푸시 알림 기능 제공 (공지사항 등)
- 단체 일정을 푸시하고, 모임에 속한 사람이 수락한다면 자동으로 시간표에 그 일정을 등록하는 기능 제공
- 모임 홍보 게시판을 통한 홍보 창구 제공
관심사에 맞는 활동을 시간표 스케줄에 맞춰 추천
- 관심사를 설정하고, 빈 시간에 적당한 활동이나 그룹이 존재한다면, 추천 알고리즘을 통해 사용자에게 그 활동이나 그룹을 제안
비교과 프로그램, 기업 리크루팅 정보 표시
- 학교에서 운영하는 UOStory 사이트에서 정보를 가져와 사용자에게 보기 편하게 제공
이론적 계산 및 시뮬레이션
상세설계 내용
- 유즈케이스
- 시나리오
- UI Flow
- ERD
결과 및 평가
완료 작품의 소개
프로토타입 사진 혹은 작동 장면
- 시현 영상 링크
포스터
관련사업비 내역서
완료작품의 평가
향후계획
보안 이슈 해결
- HTTP 통신으로 인해 데이터 유출의 문제가 존재한다. HTTPS 혹은 데이터 암호화를 통해 서비스의 보안 수준을 강화한다. 또한 데이터베이스의 개인 정보를 암호화 시킨다.
IOS 지원
- IOS 애플리케이션을 지원할 수 있도록, IOS 환경에서의 테스트를 진행한다.
트래픽 대비
- 향후 트래픽이 급증할 것에 대비해서 로드밸런서 및 MSA도입 고려.