comp730:MeAndYou Project Functional

Introduction (updated 4/26/2017)
MeAndYou is a new type of black-box social networking application. It is designed to connect people who are mutually searching for each other.

This is a project conceived by Professor Jonas in COMP 730/830 Spring 2016, tempered by 3 grad students, and a working initial prototype proof-of-concept brought to life by the students of the class. The first half of the class we learned the textbook theory, were tested via exam, and the second half of the class we attempted to put some of our knowledge into practice in the organizing and running of this project. The hope is that the groundwork for future expansion has been laid down.

Students taking the COMP 730/830 in Spring 2017 were able to further expand upon the project using an iterative approach to developing software systems. Fifteen student engineers were tasked with developing a functional prototype that is capable of managing 25,000 users and their searches. Students worked vigorously across three main disciplines: software development and coding, database development, and front-end web applications. Development activities included requirements elicitation and analysis, system and object design, implementation and testing, configuration management, and system deployment to the end user.

Description of the Project (updated 4/26/2017)
Background:  Social networks are a fundamental part of today’s society and are used by billions of people worldwide. They allow people to share ideas and interact with other people, from old friends to strangers. One of the main purposes of social networks is to find other people, and all major networks provide some type of search functionality with different criteria. Users can search for local friends by restricting the query to a single town, for co-workers by searching for a company name, or for like-minded people by searching for a common interest. Unlike traditional social networking, MeAndYou.us is a website that is designed for connecting people who are mutually searching for each other.

Why we're unique:  With MeAndYou, searching is indirect and anonymous and the system will only connect people who are searching for each other. This is beneficial because it addresses some of the user privacy and security concerns that often associated with social media. User information is not displayed on the website for public or private (registered user) viewing. Rather, information is only stored in the MeAndYou database and connections (matches) are made by the software search engine.

If a match is made, both users are notified simultaneously and will have access to communicate with each other; there are no public postings and nobody other than the two connected users are notified of the match. Most social networks allow a user to set different privacy settings for known friends in contrast to public strangers. However, MeAndYou users must know each other to some degree in order for a connection to be made; users are not connected with strangers.

The application is not designed to search for new people or to form new relationships, and is definitely not a dating application. Instead, it is intended to be used to find and connect people who are already familiar with one another from current or previous relationships. Because users must know who they are searching for, they can be comfortable signing up and entering their own personal information; it cannot be viewed by the public, strangers, or anybody else that the user is not mutually searching for. This can give users a sense of security and safety that has yet to be harnessed by any other social networking site.

How to Use:  Anyone can sign-up to join and then pick between four categories of searches based on the type of relationship. By offering the indirect and anonymous approach to reaching out it may be easier to find an old buddy, rekindle a spirit, recover a lost or possibly strained relationship or break through barriers without being bold or assertive.

The connection will be made between two people. There are four ways for the two people to connect. These can also be called relation levels or categories for which the individuals engage with the application. The two can make a connection by following these paths through the application:

Crush Old friend or buddy Out-of-contact or lost family member Lost or estranged loved one.

In order to make the connection, both individuals must furnish personal information regarding the other person whom they are looking for. This also serves as a protection mechanism, there is no blind dating or playing odds; the other person must be familiar to at least some degree, not a rank stranger. Once a connection is made, both people can connect and gain insight to each other while remaining hidden from the rest of the MeAndYou user base; only that connection is made and only those two people are notified to that respect. It should be stressed again, it is not a dating site, it can only be used to find someone already familiar from present or past relationship. The 'Crush' is someone almost known, at least in frequent passing, and the site is used to extend the connection mechanism, hopefully coming to the aid of otherwise shy people.

This site is not designed to search for people who do not know each other. It is not a dating site. Specifically targeted market research was conducted to assure that the potential female user base could be comfortably and effectively integrated. The success of the application critically depends on this; they must feel comfortable signing up without worry whether they will be safe in doing so. The overwhelming response has been positive which confirmed the validity of the approach.

Once the necessary personal info has been entered the connection will only be made if the counterpart has done the same; both people must be looking for each other. This match is made by the search engine algorithm. On the other hand, if one of the two people does not reach out to the other, the match will not be made, regardless whether they are registered users or share almost identical profiles. This mutual engagement stipulation decreases the odds of a match considerably but at the same time it greatly increases the quality of the match. This will hopefully lead to the growth and success of the site.

If the connection is made, a preferred communication method can be established.

Composition:  The application is comprised of three subsystems: a front-end graphical user interface (GUI) to allow input and interaction with users, a database for storage, and an algorithmic match-processing software search engine. People can use the GUI to browse the website to learn about MeAndYou, register as a new user, update their existing user profile, change passwords, perform and manage searches, and view notifications of formed connections. The database organizes and stores all of the user information, modification flags, and functional data needed for the system. The database will not be accessible by the user and will not form connections between users. The search engine will use matching algorithms to search the database for matches. If and when certain match criteria are met and the designated level of certainty is reached, the search engine will make the match and update the matches table in the database. This provides a higher level of quality and validity in the match and can ensure that both users are indeed searching for each other.

The 2017 class was logically divided into the three groups, each of which was assigned to developing one of the MeAndYou subsystems. Graduate student engineers had additional responsibilities and acted as software architects, QA testers, and communications specialists within each group.

Future Planning:  The goal is to launch the application to the UNHM community. The design is scalable to allow expansion.

Scope of Project Deliverables

 * A basic working prototype "proof of concept"
 * Logs of what was done
 * Collection of design documents
 * A document summary

Identification of the Software Partitions and Their Approaches
User interface: the front end part of the software will be designed using: HTML and PHP.


 * The "face" and the interface to the outside world.

Search Engine: the internal processing program will be designed using: Java
 * The internal engine of the application

Data Base: the internal information storage database will be designed using: mySQL
 * Where all the information is organized and stored

Functional Requirements (updated 4/1/2017)

 * Users must be able to register via a web browser.
 * User dashboards are using secured or encrypted connection.
 * Users must be logged in to perform searches.
 * Users must be able to view and edit their profiles.
 * Single user with the same username or email address cannot create more that one profile.
 * Users must be able to perform searches for crushes (users must know that person to some degree); searching for random people is not allowed.
 * Users must be notified if a match is made.

Authentication: Secured or encrypted connection and authentication is required for users. This includes unique username and password.

System Administration: The system admin will have access to database (users will not). The system admin can edit site content, menu items, and general configuration parameters; the system admin will be able to create, update, manage, and edit site (not user) content as desired. Administration and management of the website is done through a password-protected browser interface. This will be implemented in a future phase; it will not to be implemented in Phase I.

Front End Functional Requirements

 * Attributes are entered via the GUI (Front End) and stored in the database.

Software Functional Requirements

 * The search engine will search the database and attempt to make matches if they exist. If a match is made, it will reload/update the database.
 * The search engine will search for close matches.

Database Functional Requirements

 * Information will be organized and stored in the database.
 * The database will store modification flags (matches made).
 * The database will store functional data needed for the system.
 * The database must be scalable.
 * Only complete data (registration and/or searches) will be stored.

Detailed Requirements of the Software Partitions:
Requirements for the software are described bellow. The GUI will have several pages and therefore has a separate requirement for each page.

Requirements for the GUI
The user interface will help:


 * Register the user.


 * Find connections.


 * Notify the user if a match was made.

What it will not do:


 * It will not help users to search for random people.


 * It will not make connections unless the person you are looking for is registered and is also searching for the user (100% match).

Requirements for the Home Page

 * Home page has a title bar shows the logo on the left side and on the right side it has the following:
 * 1) Get started: This will take the user to the registration page where they can enter their information, create a password and create an account. After creating an account, the user will be able to: Search for the person(s) he/she wants to find; manage active searches; find matches and check notifications. Users will also be to: delete an active search; edit their profile or edit the information they entered for any active searches in the searches list.
 * 2) Log In: This button is to be used by registered users. By clicking this button, the user will be asked to redirected to the log in page where they can enter their e-mail and password to log in to their account and enjoy all of the features provided by this web site.
 * The home page also displays a slide show explaining what MeAndYou is, how it works, and providing brief explanations of the different kinds of connections that can be made on MeAndYou (Crushes, Friendships, Family and Lost Loves).
 * The home pages also has clip art representing each of the relationships types on MeAndYou (Crushes, Friendships, Family and Lost Loves).
 * In addition to the above, the home page also has small sections towards the bottom of the page informing users of any news regarding the MeAndYou website, recently implemented updates and upcoming updates to come.
 * Lastly, there is another small section devoted to tracking and displaying how many people are using the site, how many active searches are taking place, and how many matches were made.


 * Index.PNG


 * aboutus.PNG

Requirements for the Registration
The user account requirements are:


 * E-mail
 * Password
 * First Name
 * Middle Name
 * Last Name
 * Street Address
 * City
 * State
 * Zip Code
 * Gender
 * Date of Birth

These requirements shall be the same information that are used by the system to find this user if someone was searching for him/her

Requirements for the Login
In order for the user to log into their account they will click the (login) button in the navigation bar towards the right upper portion of the page. They will then be redirected to the log in page where they will be asked to enter their:
 * 1) E-mail address
 * 2) Password
 * 3) Afterwards the user will click 'log in' and if authentication is successful, the user will be directed to the user dashboard.
 * 4) If authentication fails, or the user has forgotten their password, the user can click the 'forgot password?' button to be taken to the 'forgot password page' and initiate a password reset upon answering all three security questions.


 * login.PNG

Requirements For the Forgot Password
Provide a self-service option to the user to set a new password without compromising account integrity.
 * 1) User enters email address previously used to register account.
 * 2) User answers three security questions they previously set answers for during registration.
 * 3) User creates and verifies a new password, and submits the change.
 * 4) Finally, they are brought back to the login screen, to login with their new password.


 * Forgot.png

Requirements for the Dashboard

 * Dashboard.png

After the user logs into their account they will be directed to the user dashboard;

Dashboard page has:


 * 1) A Header.
 * 2) The YouAndMe Logo is displayed on the left-hand side of the page.


 * The right side has a navigation bar housing the following buttons:


 * Notifications.
 * Account: Clicking this button will bring the user to their account page and provide them an opportunity to change their information if so desired.
 * Logout: Clicking this button will log the user out of their account and return them to the home or index page.


 * A window in the middle of the dashboard page houses the actual dashboard, which includes the following tabs:


 * My Dashboard: The dashboard tab reads: "Welcome to your dashboard! Use the following tabs to search for people, view your matches or manage your searches."
 * Search For Someone: This is where users can generate searches. Initially they will only be able to search for crushes, but this will be expand to all of the relationship types in the future.
 * View Matches: This is where users can review all of the matches they have made on MeAndYou.
 * Manage Searches: This is where users can manage (i.e., delete or archive searches).


 * A drop down window when the user clicks it will have the following options:


 * Find a Crush
 * Find a Family member.
 * Find a Friend
 * Find a Lost Love.

The relationship type to match we are working on this semester is Finding a Crush.

After the user selects "Find Crush" from the drop down box, they will enter the following information about the person they are looking for: They will then click the search button, and if a match is made they will receive the email address of the person they are looking for in the View Matches Tab.
 * First name
 * Last name
 * Email
 * Address: (City, State, Zip).
 * Phone number.


 * View Matches: if a match is made the email address of the person you are looking for will appear in this window.


 * Manage Searches:: user can edit or change the first and last name of the person they is searching for.

Requirements for the Search Engine
The search engine will have the following features:



Requirements Elicitation

 * 1) 	DB must be able to store data.
 * 2) 	DB must be able to run queries.
 * 3) 	Storage space needed for data: 10 GB max.
 * 4) 	Database Management System (DBMS) must have a secure and encrypted connection.
 * 5) 	DB must provide access control for end user, moderator and administrator.
 * 6) 	DB must have resiliency to keep track of user records.
 * 7) 	DB needs to have a back-up (redundancy).
 * 8) 	DB must be transactional (Online Transaction Processing system).

Required tables

 * Person table: has no foreign keys
 * id [int(8)] (PK)
 * userName [varchar(50)]
 * firstName [varchar(30)]
 * middleName [varchar(30)]
 * lastName [varchar(30)]
 * password [varchar(30)]
 * secretAnswer1 [varchar(256)]
 * secretAnswer2 [varchar(256)]
 * secretAnswer3 [varchar(256)]
 * thisTimeStamp [timestamp]
 * Matches table: has 2 foreign keys (searchPersonId and matchPersonId)
 * id [int(8)] (PK)
 * searchPersonId(fk) [varchar]
 * matchPersonId(fk) [varchar]
 * matchType [varchar(30)]
 * matchPercent [int(3)]
 * thisTimeStamp [timestamp]
 * Searches table: has 1 foreign key (personId)
 * id [int(8)] (PK)
 * personId [varchar]
 * nameOfSearch [varchar(50)]
 * searchType [varchar(50)]
 * thisTimeStamp [timestamp]
 * thisstatus [varchar(50)]

Server Specifications
PHPmyAdmin GUI



MariaDB CLI



The Actors

 * End User
 * System
 * Moderator
 * Administrator

Access Control

 * User only has access to the front-end GUI
 * System will send out notifications, emails, etc.
 * Moderator has access to moderate content (See Use Case Diagram Phase 1)
 * System admin will have access to make database changes, send notifications, etc



Use Case Scenarios
Signup scenario would be as follows:



State Machine/Activity Diagrams (updated 4/26/2017)
What happens when user registers for an account?



What happens when user logins to the account?



What happens when user forgets the password?



What happens when user wants to modify their account information?



What happens when user performs a search?