Skip to content

Latest commit

 

History

History
508 lines (357 loc) · 35.7 KB

1_1_OSSProj_05_OhYeSu_수행계획서.md

File metadata and controls

508 lines (357 loc) · 35.7 KB

A1.1 OSS 프로젝트 수행계획서

1. 프로젝트 수행팀 개요

  • 수행 학기: 2024년 1학기
  • 주제 분류: 자유 주제
  • 프로젝트명: 끼리끼리(동국대학교 기숙사 룸메이트 매칭 시스템)
  • 팀명: 오예수
구분 성명 학번 소속학과 연계전공 이메일
팀장 조예림 2020111500 회계학과 융합소프트웨어 [email protected]
팀원 김수현 2019112426 산업시스템공학과 융합소프트웨어 [email protected]
팀원 오연진 2020110869 경제학과 데이터사이언스소프트웨어 [email protected]
  • 지도교수: 융합SW교육원 이길섭 교수님, 박효순 교수님

2. 프로젝트 수행계획

2.1 프로젝트 개요

동국대학교 기숙사 이용 학생들을 위한 성향과 선호도 기반 맞춤 룸메이트 매칭 플랫폼 개발

대학교 기숙사 생활에 있어 룸메이트와의 갈등이 기숙사 생활의 만족도를 결정하는 중요한 요인이며, 더 나아가 이 만족도가 대인관계 형성 및 학업 성취도에 큰 영향을 미치는 것으로 나타났다. 이런 룸메이트와의 갈등은 주로 생활 패턴의 불일치로부터 발생한다.

따라서 기숙사를 이용하는 학생들을 위해 개인의 성향과 선호도를 반영하여 룸메이트를 매칭할 수 있는 플랫폼을 개발하여 만족스러운 기숙사 생활 및 학교생활을 도모할 수 있게 한다.

2.2 추진 배경(자료조사 및 요구분석)

(1) 개발 배경 및 필요성

기숙사 생활 현황

‘도망치듯’ 퇴사까지··· 기숙사 매칭제도 도입 고민할 때

  • 무작위로 룸메이트가 정해지는 학사에서 흡연여부, 생활방식, 수면패턴 등 서로의 생활패턴이 맞지 않아서 기숙사 생활하는데 불편함을 겪고 있음
    • 비흡연자인 최모씨

      “룸메이트가 풍기는 담배냄새에 극심한 스트레스를 받았다”며 “입실 전에 탈취를 해 달라 부탁 했지만 소용이 없었다”고 털어놨다. 결국 학기 중 내쫓기듯 기숙사에서 나와 친구의 자취방에서 신세를 질 수밖에 없었다. 최 모씨는 “지난 기숙사 생활은 고통뿐인 시간이었다”며 “최소한 타인의 건강에 위해가 되는 흡연 여부는 룸메이트 배정에 있어 기숙사가 고려해야 할 부분이라 생각한다”고 말했다.

    • “코골이 소리 때문에 잠에서 깬 적은 물론 아예 잠에 들지 못한 날도 많았다”고 불편을 호소

    • 채상훈(보과대 보건환경18) 씨는 “취침시간과 기상시간을 비롯한 생활패턴이 서로 완전히 달라 마음 편히 생활하지 못했다”며 고충을 털어놨다.


기숙사 생활 만족도에서 룸메이트의 중요성

[발언대] 기숙사에서 울고 웃는 룸메이트

룸메이트를 직접 선택해서 기숙사 생활을 하는 학우들은 룸메이트와 갈등관계가 적고, 만족도가 높음. 학생 스스로 선택한 룸메이트 지정자들은 임의 지정으로 만난 학생보다 공동생활에서 더욱 원만한 인간관계를 유지하고 있음.

Untitled
< 신지은 외, [기숙사 만족도에 대한 예측 오류: 행복한 룸메이트의 과소평가된 가치], 한국사회및성격심리학회, 2017. >

기숙사의 전반적인 내부 시설과 주변 시설의 편리함만큼 룸메이트와의 생활 습관(생활 패턴) 일치성이 기숙사 생활을 하는데 있어서 중요한 요인임을 알 수 있음.

기존 서비스

  • 기숙사 입주 시즌에는 서로의 룸메이트를 찾는 글이 적지 않음. 그러나 커뮤니티를 이용하는 경우 룸메이트 구인 공고를 올린 후 다른 사용자가 게시 글을 확인할 때까지 시간이 소요되며 서로에 대한 정보를 일일이 교환해야 하는 번거로움 존재. 만약 이 과정에서 매칭에 실패할 경우에는 처음으로 다시 돌아가서 룸메이트를 찾아야 함. 통일된 플랫폼 개발에 대한 필요성 느낌.

Untitled (1)
출처: 동국대학교 에브리타임

  • 이처럼 비슷한 성향의 룸메이트 매칭이 요구됨에 따라 몇몇 대학에서는 학생회가 직접 생활 패턴이 맞는 룸메이트를 매칭해주고 있음
    전북대학교 | 총학생회
    단국대학교 총학생회

    • 수동으로 매칭하는 것은 번거로움
    • 수동으로 매칭하는 것은 정확도가 낮다

룸메이트 매칭 플랫폼 제안

앞선 내용들을 살펴보면, 룸메이트를 선정할 때 생활패턴과 관련된 다양한 요소가 반영되어야함을 알 수 있고, 룸메이트 매칭 서비스에 대한 수요와 타당성이 있음에도 불구하고 플랫폼이 존재하지 않음을 볼 수 있다. 또한 룸메이트 매칭 알고리즘이 일일히 수동으로 이뤄진다는 점을 알 수 있다. 이러한 플랫폼의 부재와 매칭 방식의 한계를 개선하기 위해 고도화된 알고리즘으로 룸메이트 매칭 서비스를 제공하는 플랫폼을 제안한다.

(2) 선행기술 및 사례 분석

설계 구조 참고 프로젝트 - 방탈출 매칭 앱 "펀칭"
GitHub - CSID-DGU/2022-2-OSSP1-Exit-1: 방탈출 메이트 매칭 App

  • 펀칭 앱 2022 ver 분석 https://github.com/CSID-DGU/2022-2-OSSP1-Exit-1

    기술 스택

    Kotlin(안드로이드)을 사용해서 Gradle을 통해 빌드 및 배포하였음. Php로 안드로이드 어플에서 MySQL(DB)에 접근해 데이터를 연결. 안드로이드 <-> php <-> MySQL.(MariaDB) 의 구조로 데이터 통신이 이뤄짐.



도메인 참고 프로젝트 - 아주대학교의 “쉐어메이트” Application

112791929
ShareMate

(1) “쉐어메이트” 어플리케이션 소개

  • 아주대학교에서 아주대학교 기숙사 학생들을 위한 룸메이트 매칭 어플리케이션

(2) 알고리즘 분석

  • 본인의 정보를 공유함으로써 룸메이트 매칭 희망 사용자 간의 대화가 가능하도록 만든 시스템. 사용자 특성이 공유된 목록에서 사용자가 직접 룸메이트를 구하는 형식.

    → 특정 알고리즘을 이용하지 않고, 쉐어메이트에 가입된 사용자 정보를 무작위로 매칭 희망 사용자에게 제공하는 방식임.

(3) 기능 분석

  1. 회원가입 기능
  • 회원가입시 닉네임 및 개인 정보, 룸메이트 매칭을 위한 정보를 입력
  • 타 기숙생과 공유할 본인의 정보를 입력함
  1. 1:1 룸메이트 개인 연결
  • 룸메이트의 간략 소개를 담은 화면
  • 룸메이트 개인 소개 상세페이지
    • 프로필 좋아요(찜 기능)
    • 신고 기능 → 부적절 유저 신고 기능
    • 카카오톡 링크 연결기능
  1. 룸메이트 그룹 연결
  • 그룹을 생성해서 원하는 룸메이트를 매칭할 수 있는 기능
    • 그룹 소개 목록
    • 그룹 소개 상세페이지
    • 그룹 멤버 개인 상세페이지 - 4-2의 개인 소개 상세페이지임
    • 그룹 생성 기능
  • 키워드를 통한 정보 공유 기능
  1. 커뮤니티
  • 에브리타임 처럼 자유롭게 글을 작성하고 정보 공유를 할 수 있는 커뮤니티 기능
  • 유용한 정보 교환이나 공동 구매하는데 커뮤니티 활용가능
  1. 마이페이지
  • 초기 가입시에 입력하는 회원정보 수정 기능
  • 룸메이트 취향 정보 수정 기능
  • 각종 공지 및 좋아요, 로그아웃, 회원탈퇴 기능



기존 시스템과의 차이점

(1) 도메인 참고 프로젝트 “쉐어메이트”의 주요 문제점

  • 아주대학교의 ‘쉐어메이트’는 서로 다른 사용자들 중에서 서로 유사한 룸메이트를 추천해주는 것이 아니라 프로필의 키워드를 하나하나 보면서 룸메이트 매칭을 시도하는 방식임
  • 카카오톡 오픈 링크로만 룸메이트 매칭을 위한 채팅을 시도할 수 있고 따로 채팅방 기능의 구현이 되어있지 않음
  • 유저를 신고했을 때 어떻게 처리가 되는지 알 수 없음

(2) 본 프로젝트에서 추구하고자 하는 차별점 및 개선점

image (2)
<쉐어메이트, 끼리끼리 도메인 및 기능 비교표>

  • “펀칭”의 기술적인 시스템 구조와 “쉐어메이트”의 기능들을 참고하되 본 프로젝트에서는 아래과 같은 차별점 및 개선점을 추구하고자 한다.

    가. 도메인 변경

    • 방탈출 메이트를 매칭하는 기존의 “펀칭” 어플리케이션의 도메인에서 룸메이트를 매칭하는 어플리케이션 도메인으로 변경한다.

    나. UI/UX 개선

    • 룸메이트를 매칭하는 어플리케이션 개발이라는 본 프로젝트의 목표에 맞추어 사용자에게 적합한 UI/UX로 개선한다.

    다. 매칭을 위한 유사도 계산 알고리즘 적용

    • 가장 핵심적인 차별점 및 개선점에 해당한다. 프로필을 보고 룸메이트와 매칭을 시도하는 게 아니라 매칭 조건을 입력하고 유사도를 계선해서 원하는 조건과 유사한 유저를 추천받을 수 있는 알고리즘을 도입한다.

    • 룸메이트 매칭을 위한 설문조사 특성 상 텍스트 데이터가 나올 수 있으므로. 유클리드 거리+자카드 유사도를 이용해 추천 알고리즘을 수정한다.

    라. 채팅 및 차단 기능 구현

    • 채팅 기능: 사용자들이 앱 내 채팅 기능을 통해 서로 소통하며, 룸메이트 매칭을 할 수 있게 채팅 기능을 구현한다. 이를 통해 오픈 채팅방을 직접 개설하는 번거로움을 최소화한다.

    • 차단 기능: 신고 기능보다는 유저에 대한 차단 기능을 구현하여 차단한 유저는 추천 리스트에서 보이지 않게 하고 마이페이지에서 차단 목록을 관리할 수 있게 한다. 또, 채팅창에서 차단당한 유저를 구분할 수 있는 알림을 띄운다. 또한 차단을 해제할 수 있는 기능도 구현한다.



유사 연구결과 및 특허

  • Residential college에서 효과적인 인성 교육을 위한 룸메이트 배정 문제
    Residential college에서 효과적인 인성 교육을 위한 룸메이트 배정 문제.pdf

    • 심리학의 유사성 이론에 기반을 둔 클러스터링 알고리즘을 활용
    • 유클리디안 거리를 이용하여 룸메이트 간의 유사도를 측정

  • 룸메이트 매칭을 위한 협업 필터링 기반의 추천 시스템
    룸메이트 매칭을 위한 협업 필터링 기반의 추천 시스템.pdf

    • Item-based 협업 필터링을 통한 룸메이트 추천 방식 제안
    • 룸메이트 매칭 서비스인 ‘Roomi’의 단점 제시
      • 사용자간 일치 여부만 판단하여 추천하기 때문에 사용자의 요구조건과 매칭 결과가 일치하지 않을 수 있음.

  • 룸메이트 선호조건을 이용한 안드로이드 매칭 시스템 개발
    KCI_FI002252954.pdf

    (1) 기존의 룸메이트 매칭 현황

    • 교류하던 지인과 매칭
      • 서로 간 성향과 생활 패턴 파악 하고 매칭하기에 불협화음 방지 가능
    • 학교 측에서 임의대로 지정한 인원에 따라 룸메이트 지정
    • 대학 커뮤니티를 이용하여 룸메이트 구인

      (2) 룸메이트와 학교생활간의 관계에 대한 관련 연구

    부모의 울타리를 벗어난 대학생들의 상당수는 새로운 거주지에서 대학생활을 하는 것이 익숙지 않아 불편함을 호소하며 새로운 룸메이트와의 관계형성에 불안감을 느끼며 생활하고 있는 것으로 조사됨

    대학생들의 새로운 룸메이트와 원만한 관계가 잘 형성될수록 자아존중감과 심리적 안정감을유지하여 학업성취도가 높은 것으로 나타남

    조사된 연구를 종합해보면 대학생활의 성공유무의 중요한 척도부모로부터의 독립과 원활한 대인관계 형성이라고 할 수 있다. 이러한 성공적인 대학생활의 두 가지 요건에 가장 밀접하게 관계되어있는 것이 같이 거주하고 있는 룸메이트와의 유기적이고 친밀한 관계 형성이며 이러한 형성과정중의 많은 시간과 노력, 불편함을 해소하기 위하여 룸메이트 매칭 시스템을 제안함

    (3) 룸메이트 매칭 알고리즘

    각각의 환경과 상황에 따라 사용자들은 룸메이트에 대해 각자 다른 선호도를 가지고 있기 때문에 선택한 조건과 우선순위를 활용하여 추천서비스를 제공해준다. 제안하는 시스템에서 룸메이트 추천을 하기 위해 데이터베이스에 비슷한 조건과 우선순위를 선택한 사용자들을 대상으로 필터링을 수행함함

    → 사용자 설문조사를 통해 답변한 내용과, 각 항목에 매긴 중요도를 이용하여 우선순위를 매김. → 이 둘을 종합한 데이터를 이용하여 비슷한 룸메이트를 추천. → 각 항목의 우선순위를 이용하여 매칭함. 우리는 전체 항목들 전부를 학습에 반영하여 만드는 것과 차이가 있음.

    (4) 어플리케이션 개발 결과 및 기대효과

    <개발 결과>
    어플리케이션을 이용하여 플랫폼을 제작 → 조작 편리함 우선순위 알고리즘을 이용 → 시간과 비용을 최소화 할 수 있음 선호 룸메이트 조건을 자유롭게 조정 가능 → 최적의 룸메이트 매칭 가능

    <기대효과>
    기존의 번거로운 룸메이트 구인 및 매칭 방식을 고도화, 자동화한 룸메이트 매칭 플랫폼(어플리케이션)을 개발하여 원하는/원치않은 룸메이트를 배정/배제 하여 불협화음을 최소화 하고 대학생활의 안정감과 사회적 안정감을 높여준다

  • 머신러닝 기반의 가중치 보정기법을 이용하는 기숙사 룸메이트 추천 방법
    머신러닝 기반의 가중치 보정기법을 이용하는 기숙사 룸메이트 추천 방법.pdf
    <룸메이트와 학교생활간의 관계에 대한 관련 연구>
    [0003] 일반적으로 현재의 MZ 세대는 상당수가 어린 시절부터 혼자서 방을 사용해왔고, 과거 세대에 비해 개인주의 성향이 매우 강하기 때문에 부득이하게 같은 방에서 다른 사람과 함께 지내야 하는 학교나 회사 기숙사에서의 생활에 큰 불편이나 거부감을 느끼게 될 수 있음

    [0004] 따라서, 기숙사 생활에서 많은 스트레스를 받게 될 수 있으며, 이 때문에 신경이 예민해지고 불면증에 시달리게 되는 등의 증상이 유발되어 결과적으로는 학업 성적이 저하되거나 건강 악화, 룸메이트와의 분쟁 등의 각종 문제가 발생하게 될 수 있음

    [0005] 그리고 상기와 같은 문제의 발생은 같은 방으로 배정된 룸메이트 간의 성격, 성향, 생활 습관 등이 서로 맞지 않을수록 더욱 빠르게 발생할 뿐만 아니라 증상의 심화가 가속화될 수 있음

    [0006] 이러한 이유로 일정 기간동안 같은 방에서 함께 생활해야 하는 기숙사 룸메이트의 배정은 각자의 성격, 성향, 생활 습관 등을 종합적으로 고려하여 신중하게 실시되는 것이 바람직



2.3 목표 및 내용

(1) 개발 목표

동국대학교 기숙사를 이용하는 학생들을 위한 안전하고 효율적인 룸메이트 매칭 서비스를 개발하고자 한다. 기존의 번거로운 매칭 프로세스를 간소화하고, 정확성이 낮았던 매칭 방식을 알고리즘을 통해 개선하여 사용자 만족도를 높인다. 또한 사용자의 성향을 조사하여 맞춤형 매칭을 제공하고, 신원확인 및 안전성을 강화한다. 사용자는 채팅 기능과 차단 기능을 활용하여 매칭을 자율적으로 조율하고, 마이페이지에서는 매칭 조건 및 차단한 유저 목록을 손쉽게 관리할 수 있도록 한다. 이를 통해 학생들의 기숙사 생활 만족도 향상을 목표로 한다.

(2) 개발 내용

최종 설계 결과물의 형태

  • 동국대학교 룸메이트 매칭 안드로이드 애플리케이션(Android Application)

최종 설계 결과물의 시스템 구성과 기능 및 특징

  • 시스템 구성

    • 사용자 인터페이스(UI)
      • 사용자가 애플레케이션을 통해 상호작용할 수 있도록 한다.
      • Kotlin 언어와 Android Studio를 활용하여 안드로이드 애플리케이션의 사용자 인터페이스(UI)를 개발한다.
      • 사용자는 안드로이드 애플리케이션을 통해 간편하게 회원가입, 프로필 생성, 매칭 추천, 채팅, 차단 등의 기능을 이용할 수 있다.
    • 데이터베이스(DB)
      • MariaDB를 사용하여 사용자 정보 및 매칭 데이터를 효율적으로 저장하고 관리한다.
      • 사용자의 프로필 정보, 매칭 결과 등이 안전하게 보관된다.
      • 데이터베이스 테이블을 이용해 차단 기능을 구현한다.
    • 서버(Backend)
      • 클라이언트와 데이터베이스 간의 상호작용을 관리하고 처리
      • Python 언어를 이용하여 서버를 개발한다.
      • Flask를 통해 사용자와 데이터베이스 간의 상호작용을 관리하고, 안드로이드 앱과의 통신을 원활하게 한다.
  • 기능 및 특징

    • 로그인 및 회원가입 기능
      • 사용자는 아이디와 비밀번호를 입력하여 회원가입할 수 있다.
    • 프로필 생성 기능
      • 사용자는 자신의 생활 습관 및 성향을 입력한다.
    • 룸메이트 추천 기능
      • 사용자가 선호하는 룸메이트의 특성을 입력할 수 있다.
      • 사용자가 설정한 매칭 조건을 기반으로 유사도를 계산하여 적합한 룸메이트를 추천한다.
    • 채팅 기능
      • 추천된 유저와의 채팅을 통해 매칭을 구체화할 수 있다.
    • 차단 기능
      • 특정 유저를 차단하여 추천 목록에서 제외할 수 있다.
      • 해당 유저가 사용자에게 접근할 수 없도록 한다.
    • 마이페이지
      • 사용자는 자신의 프로필을 확인하고 수정할 수 있으며, 차단한 유저 목록을 관리할 수 있다.
  • 성능 수준

    • 사용자 입력 정보에 맞는 정확한 정보를 전달한다.
    • 안정적이고 빠른 서비스 제공을 목표로 한다
    • 사용자들의 데이터 보호 및 개인정보 보안에 중점을 둔다.
  • 최종 결과물 시스템 구조도 시스템 구조도

  • 최종 결과물 플로우 차트

    전체 플로우 차트



(3) 대안 도출 및 구현 계획

대안 비교

  1. 모바일 웹앱과 안드로이드 앱의 개발 방식 비교 분석
  • 모바일 웹앱으로 개발하는 경우

    • 웹 개발과 동일한 방식으로 개발이 가능하지만 모바일 최적화를 위해 리소스 관리와 이미지 최적화, 코드 번들링 및 미니파이 등을 통한 성능 향상 등 고려해야 할 사항이 많다.
    • 웹사이트가 다양한 디바이스 크기와 해상도에 대응할 수 있도록 반응형 디자인을 채택해야 한다. CSS 미디어 쿼리를 사용하여 스타일을 조정하고, Flexbox 또는 CSS Grid와 같은 레이아웃 기술을 활용해야 한다.
    • 앱 설치 대신 브라우저 실행 및 url 입력이나 별도의 링크 클릭 등의 과정을 거쳐야 해서 번거롭다.
    • 네이티브 앱에 비해 상대적으로 구동 속도가 느리고 안정성도 떨어진다.
  • 안드로이드 앱으로 개발하는 경우

    • 모바일 기기에 최적화된 네이티브 언어로 만들 수 있다.
    • 각 운영체제에 최적화된 방식으로 만들어지므로 구동 속도가 빠르고 안정적이다.
    • 디바이스 전체에 접근 권한을 가질 수 있기 때문에 기기 자체의 기능을 앱에 활용할 수 있다.
    • 유지와 보수가 쉽다.

  1. 유사도 기반 추천을 위한 알고리즘 비교 분석
  • 유클리드 유사도: 거리 기반 유사도. 문서 간의 유사도를 계산하는 가장 기본적인 방식. 벡터 간의 절대적인 거리에 초점을 맞추고 있기 때문에 서로 다른 방향이더라도 유사도가 높다고 판단한. 차원 높아질수록 성능 저하되며 각 특성 간의 중요도를 동등하게 다루기 때문에, 특성 간의 중요도가 다를 경우 적절하지 않을 수 있다.
  • 코사인 유사도: 각도 기반 유사도. 벡터의 방향이 얼마나 유사한지를 판단한. 각도 기반 유사도. 데이터 크기에 영향을 받지 않는다. 벡터의 방향을 고려하기 때문에 특성 간의 중요도를 고려할 수 있다. 다만, 상호 상관 관계를 가지는 원소들 간의 유사도를 계산할 때는 좋지 못하다.
  • 자카드 유사도: 각도 기반 유사도. 교집합에서 합집합을 나눈 값, 즉 두 사용자가 공통적으로 가지고 있는 특성의 비율을 계산하여 유사도를 측정한다. 0과 1로 값이 도출되는 이진 데이터에 적합하다.

  1. 차단 기능 구현 관련 비교 분석
  • 데이터베이스 이용 (일반적인 차단 기능)
    (1) 데이터베이스 스키마 설계: 사용자의 차단 상태를 저장할 테이블 설계(사용자 ID, 차단된 사용자 ID 포함)
    (2) 사용자 차단: 특정 사용자를 차단하기 위해 해당 사용자의 ID를 blocklist 테이블에 추가. 매칭 자체에서 제외시킨다.
    (3) 차단 여부 확인: 매칭을 수행하기 전에 사용자의 차단 상태를 확인하여 차단된 사용자와의 매칭을 방지. 사용자가 다른 사용자와 매칭되기 전에 해당 사용자의 ID를 blocklist 테이블에서 확인하는 과정을 거침.
    (4) 차단 해제: 사용자가 차단을 해제하거나 관리자가 차단을 해제할 수 있도록 해야 함. 차단된 사용자 ID를 blocklist 테이블에서 제거하는 방식.

  • 캐시 또는 메모리 저장 데이터베이스 대신 메모리나 캐시에 차단된 사용자 ID를 저장한다. 이는 데이터베이스에 액세스하는 것보다 더 빠를 수 있으며, 차단 목록이 자주 변경되지 않는 경우에 유용하다. 메모리 또는 캐시의 크기에 제한이 있을 수 있으므로 장기적인 보존이 필요한 경우에는 데이터베이스를 사용하는 것이 더 나은 방법이다.



대안 비교를 통한 최종 솔루션 선택

  • 프로젝트의 최종 목표가 모바일 안드로이드 어플리케이션의 구현이기 때문에 앱 개발의 방식을 따른다. 유저가 선택한 룸메이트 매칭 조건과 유저들 간의 성향과 생활 습관과의 유사도 계산에서 텍스트 데이터는 물론, 조건 간의 우선 순위도 고려할 수 있는 유클리드+자카드 유사도 계산 방식을 선택한다. 차단 기능을 구현할 시, 차단 목록이 자주 바뀔 수 있음을 고려해 데이터베이스를 이용해 구현하도록 한다.

주요 기능을 구현하기 위한 방법

  1. 로그인 및 프로필:
  • 사용자는 앱에 회원가입 후 로그인하여 프로필을 생성
  • 유저 정보를 받아 PHP로 전송, PHP는 받은 데이터를 처리하여 MariaDB에 저장 또는 업데이트
  1. 매칭 알고리즘
  • 입력받은 룸메이트 매칭 조건을 벡터화 후 MariaDB에 저장 또는 업데이트
  • 룸메이트 매칭 조건의 벡터값과 유저 정보 벡터값 간의 유클리드+자카드 유사도 계산
  • 유사도를 내림차순으로 정리한 후 상위 N명의 유저들을 추천 목록에 노출
  1. 채팅방
  • WebSocket 라이브러리로 구현
  • 웹 소켓을 이용하여 클라이언트와 서버 간에 양방향 통신을 구현
  • UI에서 채팅방 구현
  1. 차단 기능
  • 사용자의 차단 여부를 MariaDB 테이블에 저장하고 관리
  • 사용자가 다른 사용자를 차단하거나 차단을 해제할 수 있는 엔드포인트를 구현
  • UI에서 차단 / 차단해제 버튼 구현
  1. 마이페이지
  • 백엔드 서버에 마이페이지를 위한 RESTful API 엔드포인트를 구현

  • Retrofit 등의 HTTP 클라이언트를 사용하여 백엔드 서버의 마이페이지 엔드포인트와 통신

  • 안드로이드 앱에서 서버로 요청을 보내고, 서버는 요청을 처리하여 MariaDB에서 데이터를 가져오거나 업데이트

  • UI로 마이페이지 구현

    → 이러한 기능들을 코틀린으로 구현하고, PHP를 통해 MariaDB와 연동하여 개발에 필요한 데이터들을 데이터베이스에 저장하고 처리함으로써 룸메이트 매칭 어플리케이션을 개발할 계획.

주요 기능을 구현하기 위한 데이터

  • 회원정보 데이터 (ID, PWD)
  • 개인 생활 습관 및 성향 데이터
  • 개인이 희망하는 룸메이트 조건에 대한 데이터
  • 알고리즘에 의해 추천된 룸메이트 데이터
  • 차단한 룸메이트에 데한 데이터
  • 채팅방 데이터

데이터 통신 방법

  • 애플리케이션 ↔ PHP ↔ 외부 DB(MariaDB)
  • 애플리케이션에서 사용자 요청을 처리하고 동적으로 콘텐츠를 생성
  • PHP는 이러한 요청을 처리하고 필요한 데이터를 외부 데이터베이스에서 가져와서 사용자에게 제공
  • 외부 데이터베이스는 애플리케이션이 필요로 하는 모든 데이터를 안전하게 저장하고 관리

유사도 기반 매칭 알고리즘 플로우 차트
매칭 알고리즘 (1)



(4) 설계의 현실적 제한요소(제약조건)

비용 및 제품화 할 시 고려사항

  • 안드로이드는 오픈소스 기반의 개발 제약 사항이 적은 운영체제이지만 그 때문에 보안이 취약하다는 단점이 있다. 만약 제품화를 한다면 보안에 대해서 반드시 고려해야 하지만, 현실적으로는 시간과 비용의 문제라는 제약조건이 존재한다.
  • 제품화 할 시 서버 유지와 그에 대한 유지 보수 비용이 필요하다.

개발 환경에 대한 제약요건

  • 안드로이드 스튜디오 및 관련 파일을 저장하기 위한 충분한 디스크 공간이 필요하다. 최소한 수백 MB부터 시작하여 필요에 따라 더 많은 공간이 필요할 수 있다.
  • 안드로이드 스튜디오를 효율적으로 사용하기 위해서는 충분한 시스템 메모리와 프로세서 성능이 필요하다.

동작 환경에 대한 제약요건

  • 안드로이드 운영체제에서만 실행이 가능하므로 플랫폼에 대한 제한이 있다.
  • 안드로이드는 보안에 취약하기 때문에 악성코드에 쉽게 노출될 가능성이 있다.
  • 하드웨어와 OS의 버전이 다양하지 않은 IOS 운영 체제에 비해 파편화 현상을 겪을 수 있다.

사회적/환경적 영향

  • 사용자들 간의 사회적 연결을 증진시킬 수 있으나, 앱을 통한 매칭 과정에서 편견이나 차별이 발생할 수 있으므로 해당 부분을 고려해야한다.

건강/안전 문제, 법적 제약

  • 사용자들의 개인정보와 사생활 보호를 고려해야하며, 적절한 보안 및 개인정보 보호 정책을 준수하여 사용자의 안전을 보장해야한다.
  • 개인정보 보호법 및 관련 법률을 준수해야 한다. 사용자의 개인정보를 안전하게 보호하고 정당한 절차에 따라 수집, 처리, 보관해야 한다.
  • 상대를 차단할 수 있는 기능을 통해 사용자들이 불쾌한 경험을 하는 상황을 최소화할 수 있도록 해야한다
  • 사용자들에게 공정한 서비스를 제공하고 사용자 권리를 보장해야 한다. 이는 서비스 이용 약관 및 개인정보 보호 정책을 통해 명확하게 제시되어야 할 것이다.

윤리적 문제

  • 앱을 통해 매칭되는 사용자들 간에 차별이나 편견을 방지하는 방법을 고려해야 한다. 공정한 기준과 평가 체계를 도입하여 다양성과 포용성을 증진시켜야 한다.
  • 사용자들에게 정보를 투명하게 제공하고 앱의 작동 원리를 명확하게 설명해야 한다. 사용자들이 앱을 신뢰하고 안전하게 이용할 수 있도록 해야 한다.



(5) 개발 환경

항목 내용 설명
개발 환경 개인 노트북
프로그래밍 언어 Python, Kotlin, Java, php 안드로이드 앱 개발에 맞춰 Kotlin과 Java를 사용. 동적인 웹페이지를 생성하고 데이터베이스와 상호작용하기 위한 언어로 php 사용
통합 개발 환경(IDE) Visual Studio Code, Android Studio 다양한 프로그래밍 언어를 지원하는 IDE 사용. 안드로이드 앱 개발을 위한 환경 구성
데이터베이스 MariaDB 오픈소스 관계형 데이터베이스 관리 시스템. MySQL과 호환
운영체제 Windows 11
디자인 Figma 클라우드 기반의 협업 디자인 도구. UI/UX 디자인 협업에 용이
의존성 관리 pip (Python 패키지 관리자), npm (Node.js 패키지 관리자) 각 언어에 맞는 의존성 관리자를 사용
API 테스트 POSTMAN API 개발 및 테스트 도구. API 응답 테스트 및 디버깅에 사용
협업 도구 GitHub, Notion Github를 통해 버전 관리 및 코드 리뷰를 진행하고, Notion을 통해 프로젝트 관리, 문서 작성 등을 공유


2.4 기대효과

  • 플랫폼 제공
    • 통일된 플랫폼을 사용을 통한 기숙생들의 편의성 증진 (기존의 번거로운 방식 탈피)
    • 각종 편리 기능
      • 차단 기능 : 상대 차단 기능을 통해 플랫폼 사용 중 불필요한 경험을 최소화
      • 채팅 기능 : 플랫폼 내 채팅 기능을 통한 사용자 간 불필요한 개인정보 노출 최소화
  • 알고리즘 고도화
    • 발전된 알고리즘 적용을 통해 최적의 룸메이트를 추천 및 매칭 가능
    • 알고리즘을 통한 자동 매칭으로 룸메이트를 찾는 과정에서 발생하는 시간과 에너지를 절약
  • 적용 가능성
    • 동국대학교 뿐만 아니라 다른 학교에도 적용할 수 있을 것으로 기대
  • 기숙사 생활 만족도 증가
    • 관심사와 성향이 비슷한 룸메이트 매칭을 통해 기숙사 생활 만족도 증가
    • 새로운 사회적 네트워크를 형성 및 대학 생활에 대한 긍정적인 경험 기대
    • 룸메이트 교체와 같은 행정적 수고의 최소화

2.5 추진일정

image (1)



2.6 참고문헌

(1) 박진웅, ‘도망치듯’ 퇴사까지··· 기숙사 매칭제도 도입 고민할 때, 고대신문, 2018.09.04
(2) 이애란, [발언대]기숙사에서 울고 웃는 룸메이트, 한국대학신문, 2022.09.28
(3)신지은 외, [기숙사 만족도에 대한 예측 오류: 행복한 룸메이트의 과소평가된 가치], 한국사회및성격심리학회, 2017
(4) 전북대학교 총학생회 공지, https://www.jbnu.ac.kr/kor/?menuID=139&mode=view&no=55347, 2024.01.19
(5) 단국대학교 총학생회 게시물, https://m.facebook.com/story.php?story_fbid=pfbid0U5tb9TKt7YsezCAqEbHfqjCDByH5CsgDW6GPodbCosxZqRYB8mhaVuarnr3jcpbCl&id=369371373234334, 2022.08.11
(6) 앱의 종류 : 네이티브 앱 vs 웹 앱 vs 하이브리드 앱, https://blog.hectodata.co.kr/app_kinds/, 2022.07.07
(7) 추천시스템, 그것이 알고싶다, https://playinpap.github.io/recsys-basic/, 2022.07.11
(8) Android PHP MySQL통신 (MySQL을 이용한 회원가입 예), https://bj-turtle.tistory.com/49, 2022.09.01
(9) 안드로이드 파편화(Fragmentation)에 대하여, https://brunch.co.kr/@mobiinside/893, 2017.12.04
(10) 방탈출 메이트 매칭 App, https://github.com/CSID-DGU/2022-2-OSSP1-Exit-1?tab=readme-ov-file#-%EB%B0%A9%ED%83%88%EC%B6%9C-%EB%A9%94%EC%9D%B4%ED%8A%B8-%EB%A7%A4%EC%B9%AD-app, 2022.09
(11) 2023년 1학기 공개SW프로젝트01 1조 전과6범, https://github.com/CSID-DGU/2023-1-OSSP1-criminal6-1, 2023.03
(12) ShareMate, https://github.com/ShareMate, 2022.12
(13) 최혜봉, 남지혜, 김우성, Residential college에서 효과적인 인성 교육을 위한 룸메이트 배정 문제, Residential college에서 효과적인 인성 교육을 위한 룸메이트 배정 문제.pdf, 2017.09.28
(14) 박수영, 박정환, 박지안, 정준서, 김영종, 룸메이트 매칭을 위한 협업 필터링 기반의 추천 시스템, 룸메이트 매칭을 위한 협업 필터링 기반의 추천 시스템.pdf, 2023.06
(15) 고지훈, 최차순, 룸메이트 선호조건을 이용한 안드로이드 매칭 시스템 개발, KCI_FI002252954.pdf, 2017.08.31
(16) 머신러닝 기반의 가중치 보정기법을 이용하는 기숙사 룸메이트 추천 방법, 머신러닝 기반의 가중치 보정기법을 이용하는 기숙사 룸메이트 추천 방법.pdf, 2024.03.19

2.7 성과창출 계획

항목 세부내용 예상(달성)시기
Github 등록 어플리케이션 업로드(최종 프로젝트 결과물 업로드) 6/2 일요일
시제품 어플리케이션 구글 플레이 스토어 출시 심사 신청 및 런칭 6/3 월요일 업로드 신청