Skip to content

Requirements & Specification

jioon1830 edited this page Dec 1, 2023 · 22 revisions

Document Revision History

  • iteration4: User Story Update

Project Abstract

SNEK is a language exchange platform that aims to connect users seeking for quality language exchange experiences, and also provide such quality language exchange sessions with personalized roadmaps for each user. With SNEK, users can find suitable language exchange partners according to their language proficiency, interests, hobbies, etc. Once the user finds a partner, and a match has been made, they can start the language exchange session immediately on the app through chatting. However, it has been consistently pointed out that lack of engaging conversation topics & personalized learning materials greatly hinder quality language exchange. And for this reason, SNEK provides personalized language exchange roadmap for each user and session using ML. The recommendations are based on the users' information, behaviors while using the app, and context of the chats. Based on these information, SNEK generates and offers conversation topics, small missions, suggestions & tips, aimed to help the users engage more actively in the session, in real-time while the users are chatting. After the sessions are over, the users' feedbacks are reflected on the service.

Customer

SNEK targets University students who wants to participate in quality language exchange sessions. To ensure identity and to promote off-line sessions, SNEK primarily targets students of SNU, but the target population can be expanded once there is need.

  • Korean SNU students who wants to participate in language exchange sessions
  • Foreign(or exchange) students in SNU who wants to participate in language exchange sessions

Competitive Landscape

Compared to existing language exchange apps(Speaky, Tandem, HelloTalk), SNEK's biggest strength lies in the fact that it offers feedback & activity suggestions in real-time as the users are chatting. While many of the existing apps use chatting as their primary mode of hosting exchange sessions as well, they do not offer additional services that promotes user engagement during the chats. Their services end in merely translating the sentences, or performing simple grammar checks. SNEK on the other hand, suggests topics to discuss, tips, activities to do, etc. Additionally, SNEK users can only interact with other SNEK users of the same university. This is to ensure the users' identity, thus relieving users from the anxiety of meeting a complete stranger. Since users are limited to those from the same uni, we can also encourage off-line meet-ups as well, a feature that other apps cannot offer.

comparison

Functional Requirements

Use Cases

  • UseCaseName : SignUp UseCase
    • Goal
      • 유저가 자신의 회원정보를 입력함으로써, 자신의 유저정보를 생성할 수 있도록 한다.
    • Actor : 한국 학생이든 교환학생이든 모두 해당 유즈케이스를 사용한다.
    • Pre-conditions : 딱히 없음
    • Main scenario : 유저가 앱에서 요구하는 정보를 모두 입력하고 회원가입을 누른다.
    • Extensions : 이미 존재하는 식별자(이메일)로 중복 가입을 시도할경우에는 회원가입을 거절하고 로그인 플로우로 안내한다.
  • UseCaseName : CheckSnu UseCase
    • Goal
      • 유저가 자신이 서울대 구성원임을 인증할 수 있도록 인증 이메일을 보낸다.
    • Actor : 한국 학생이든 교환학생이든 모두 해당 유즈케이스를 사용한다.
    • Pre-conditions : 딱히 없음
    • Main scenario : 회원가입 진행 초반에, 자신의 학교 이메일을 입력하고 인증 버튼을 누른다. 그러면 이메일로 인증코드가 전송된다.
  • UseCaseName : FetchUserProfiles UseCase
    • Goal
      • 메인탭에서 유저가 언어교환을 할 다른 유저를 고를 수 있도록 목록을 불러온다.
      • 유저의 활동기록, 작성된 프로필, 선호 등에 의거하여 적당한 목록을 불러올 수 있도록 한다.
      • 유저가 세팅한 필터 기준에 따라, 정렬 기준에 따라 다른 목록이 불러와질 수 있다.
    • Actor : 한국 학생의 경우에는 외국 유저, 외국인 유저의 경우에는 한국인 유저 목록이 불러와진다.
    • Pre-conditions : 딱히 없음
    • Main scenario : 메인탭에 진입하면 알아서 해당 유즈케이스가 호출되고 목록이 불러와진다. 또한 유저가 새로고침 액션을 하면 다시 호출된다.
  • UseCaseName : GetRoadMapAdvice UseCase
    • Goal
      • 앱의 핵심 기능 : 채팅 중에, 대화가 매끄럽게 이뤄가지도록 자체 제작한 로드맵 판단 체계에서 계속 대화주제를 추천해주거나 미션을 제시하고, 행동을 유도하는 데이터를 유저가 보게 된다.
      • 해당 유즈케이스는 유저와 상대의 개인정보 및 대화에서 수집된 정보를 바탕으로 값을 리턴한다.
        • 이 과정에서 AI 기술을 활용한다.
    • Actor : 채팅방에 참여하고 있는 당사자
    • Pre-conditions : 딱히 없음
    • Main scenario : 채팅방에서 얘기를 하고 있는데 알아서 호출되어 유저에게
  • UseCaseName : FetchUserProfiles UseCase
    • Goal
      • 메인탭에서 유저가 언어교환을 할 다른 유저를 고를 수 있도록 목록을 불러온다.
      • 유저의 활동기록, 작성된 프로필, 선호 등에 의거하여 적당한 목록을 불러올 수 있도록 한다.
      • 유저가 세팅한 필터 기준에 따라, 정렬 기준에 따라 다른 목록이 불러와질 수 있다.
    • Actor : 한국 학생의 경우에는 외국 유저, 외국인 유저의 경우에는 한국인 유저 목록이 불러와진다.
    • Pre-conditions : 딱히 없음
    • Main scenario : 메인탭에 진입하면 알아서 해당 유즈케이스가 호출되고 목록이 불러와진다. 또한 유저가 새로고침 액션을 하면 다시 호출된다.

User Story

  • 회원가입 및 로그인: 나는 유저로서, 회원가입 및 프로필 작성을 하고 싶다. 우선 프로필을 입력한 뒤, 향후 수정도 수정하고 싶다. 추후 다른 학생과 언어교환 소통을 하기 위해서

    • UAT
      • 유저가 회원가입 버튼을 누르고 학교 이메일로 인증을 하면 이메일로 토큰이 발송되어야 한다. 또한 학교 메일이 아닌 경우 인증이 진행되지 않아야 한다.
      • 유저가 회원가입에 필요한 정보를 모두 입력하고 회원가입 버튼을 누르면, 유저의 프로필을 입력하는 화면으로 넘어가야 한다.
      • 유저는 챗봇 형식으로 태그를 선택함으로써 프로필을 입력할 수 있어야 한다. 이 때 유저가 태그 선택 이외에 채팅 입력란에 텍스트를 입력했을 경우, 해당 텍스트는 화면에 표시되어서는 안 된다.
      • 프로필 입력이 완료되게 되면, 유저 데이터가 DB에 생성되고 유저는 메인 탭으로 넘어가야 한다. 이 때 로그인도 자동으로 진행되어야 한다.
      • 만약 유저가 프로필을 잘못 입력했다면, 메인 탭의 하단에서 자신의 프로필을 볼 수 있는 화면으로 이동한 뒤 프로필 수정 버튼을 눌러 수정할 수 있어야 한다. 이 때 DB에서도 해당 유저 프로필이 수정되어야 한다.
  • 다른 유저의 프로필 확인: 나는 유저로서, 다른 사용자의 프로필 목록을 보고 싶다. 언어 교환을 할 상대를 고르기 위해서

    • UAT
      • 유저가 메인 화면으로 진입하면, 유저들의 프로필을 기반으로 한 유사도를 바탕으로 다른 유저들의 프로필이 불러와져야 한다.
      • 화면에서 다른 유저들의 프로필이 태그 형식으로 적절히 보여야 한다.
  • 채팅 수락 및 삭제: 나는 유저로서, 원하는 상대방에게 채팅 수락 요청을 보내거나 원치 않는 채팅방에서 나가고 싶다. 자신과 잘 맞는 언어 교환 상대를 찾기 위해서

    • UAT
      • 메인 화면에서 유저가 원하는 상대방에게 채팅 수락 요청을 보내면, 상대방의 디바이스에 채팅 수락 요청 알림이 전달되어야 한다.
      • 상대방이 채팅을 수락하게 되면 서로의 채팅방이 채팅 가능한 상태로 바뀌어야 한다. 또한 서로의 채팅방 목록에서 해당 채팅방이 보여야 한다.
      • 유저가 채팅 방 목록에서 채팅방 나가기 버튼을 되면 유저의 화면에서 해당 채팅방이 사라져야 한다. 이후 해당 채팅방에서는 채팅을 할 수 없어야 한다.
  • 언어 교환(채팅): 나는 유저로서, 채팅이 수락된 상대방과 채팅을 하고 싶다. 채팅을 통해 상대방과 언어 교환을 본격적으로 시작하기 위해서

    • UAT
      • 생성된 채팅방은 자유롭게 출입이 가능해야 한다.
      • 채팅방에 들어가면 상대에게 메시지를 보낼 수 있어야 하고, 이것이 실시간으로 보여야 한다.
      • 채팅방에 나갔다가 들어왔을 때, 이전의 대화 목록이 불러와져야 한다.
  • 대화 주제 추천: 나는 유저로서, 다른 유저와 언어교환을 할 때 대화주제를 추천받고 싶다. 언어교환을 효과적으로 하기 위하여

    • UAT
      • 유저가 대화 주제 추천 버튼을 누르면, 추천 대화 주제 목록들이 화면에 적절히 표시되어야 한다.
      • 대화 주제 목록에는 중복이 없어야 한다.
      • 가벼운 주제부터 진중한 주제까지 수준별로 대화주제를 추천받을 수 있어야 한다.

Non-functional Requirements

  • 채팅방 Response Latency 해결 : 채팅은 latency 없이 원활하게 데이터 소통이 이뤄져야 한다
  • 채팅방 Security issue : 채팅방 내의 채팅 텍스트를 그대로 디비에 저장하는 것은 개인정보 침해의 소지가 있다. 이를 암호화하여 저장하고, 복호화하여 유저에게 원활하게 보여줄 방법을 고안해야 한다
  • ML ops : 아마 시간관계상, ML 학습 파이프라인 자동화까진 어려울 수도 있으나 기회가 되면, 원활한 서비스 성능 업데이트를 위해 해당 기능의 구현이 필요하다.

UI Requirements

추후 아래 링크 내 사진 임베딩 예정 참고 피그마

image image image
Clone this wiki locally