1 Lab 1 – Free Time Description Lab 1: Free Time Description Sean Burns ODU Computer Science 411W Professor Lloyd Decker 1/31/2022 Version 1 2 Lab 1 – Free Time Description Table of Contents 1. Introduction 1.1. Societal Problem (pg. 3) 1.2. Problem Characteristics (pg. 3) 1.3. Solution Statement (pg. 4) 1.4. Solution Characteristics (pg. 4) 2. Product Description (pg. 4) 2.1. Key Features and Capabilities (pg. 5) 2.2. Major Components (pg. 5) 3. Identification of Case Study 3.1. Who the Product is for (pg. 7) 3.2. What Will the Product be Used for (pg. 7) 3.3. Who else will Benefit from this Product (pg. 7) 4. Product Prototype Description 4.1. Prototype Architecture (pg. 8) 4.2. Prototype Features and Capability (pg. 8) 4.3. Prototype Development Challenges (pg. 9) 5. Glossary (pg. 10) 6. References (pg. 12) Figures 1. AWS Cloud Service (pg. 6) 3 Lab 1 – Free Time Description 1. Free Time According to ECAL, a calendar marketing platform, 70% of adults rely on some kind of digital calendar (ECAL, 2018), yet many are still dissatisfied with most available digital calendars (Pierce, 2020). Organizing events around the schedules of multiple people can be difficult and often involves back-and-forth communication as overhead. Existing calendar applications are not well-suited to quickly and easily schedule social events to take place in leisure time. 1.2 Problem Characteristics Much of the time needed to organize events is dedicated to communication: back-and- forth messaging to identify when the attendees are available, proposing potential times for the meeting, and waiting for a reply to see if the proposed time works for everyone. If not, then the whole process must be started again. Most existing scheduling applications are targeted towards large, professional organizations like schools and businesses. There are very few that are specifically dedicated to personal or recreational use. There are many times in our daily lives when we find ourselves needing to organize social events during leisure time, such as parties and get-togethers or online gaming sessions with friends. This problem is especially pertinent in the Internet Age, when friends can be in several different time zones, making scheduling even more difficult. 4 Lab 1 – Free Time Description 1.3 Solution Statement We can streamline this process and make scheduling events outside of work and school more accessible to everyone by allowing friends to share their calendars with one another and provide a way to automatically find the ideal meeting times for a group of people based on their availability, without the need for constant back-and-forth communication. 1.4 Solution Characteristics A solution to this problem would be to have an application that allows users to input their weekly availability or free time on a calendar, as well as their preferred activities. This calendar could then be shared with the user’s friends, with privacy controls to allow the user to hide unwanted information on their calendar from other users on their friends list or in an event. 2. Product Description Free Time is a mobile calendar and scheduling application with limited browser functionality that assists users in scheduling and organizing events by suggesting meeting times based on the free time of the users invited. Free Time can aid users in planning events by correlating the schedules of a group of friends or colleagues and finding the ideal times for meeting up based on both user-specified blocks of free time and pre-existing schedule information from third-party calendar applications. As a mobile application, it will be easy to use and accessible to average users who find that professional or business-oriented calendar applications are not fit for their needs. 5 Lab 1 – Free Time Description 2.1. Key Features and Capabilities Free Time features a single calendar and friend list for each user, with the option to import calendar and schedule information from third-party calendar applications such as Google Calendar and Microsoft Outlook. The user can specify blocks of free time which the application will prioritize when searching for available times for event scheduling, searching for times in which all users invited to an event are “free”. Free Time features event-level privacy controls that allow the user to specify what information they want to be shown to friends and other users invited to specific events. This allows users to control what details about their personal schedules other users can see. Free Time allows users to organize their schedules with blocks of free time, in which the user would be available to attend meetings or events. The application will use these blocks in addition to imported calendar information to determine the ideal times to schedule events based on the schedules of invited users. Free Time allows users to view the availability of other users on their friends list, provided that said user has allowed this in the privacy settings. Free Time also allows users to specify preferred activities, enabling the application to search for and recommend events that the user may be interested in which fall within the user’s specified free time. 2.2. Major Components Hardware The hardware required to use the application will be be any Android-compatible mobile device or tablet to download the mobile app, or a laptop or desktop computer with a modern web browser to access the limited web version. 6 Lab 1 – Free Time Description Software The software that will be used to run the front end of the application will be the Android operating system for the mobile application and HTML and CSS for the web version. PHP, Apache, and Ubuntu will be used to run the backend of the application and MySQL will be used for the database services. Development will be handled with Android Studio and GitLab, using Git for version control, GitLab for project management and issue tracking, and Javadoc for documentation. Google Calendar API and Microsoft Outlook API will be used to allow the application to interface with these third-party calendar applications. AWS Cloud Service Figure 1. AWS Cloud Service 7 Lab 1 – Free Time Description EC2 instances will be used for Production, Staging, and Development. S3 Storage with buckets will be used for the Main Database backups and application resources. An RDS server will host the Main Database and the Development Database. A Simple Email Service (SES) will also be used to communicate with the user. 3. Identification of Case Study 3.1 Who the product is for This product is designed for people who are not satisfied with existing scheduling applications, friend groups who find scheduling meetings and get-togethers time-consuming and difficult, as well as gamers looking for easier ways to organize gaming sessions with their online friends. 3.2 What will the product be used for This product will be used to reduce the amount of time required to plan a social event. It will also circumvent situations in which friends may ask you to hang out at an inconvenient time. The product will also allow you to compare your schedule with your friends and see which of your friends are currently interested in the same activities that you are. 3.3 Who else might benefit from this product 8 Lab 1 – Free Time Description Groups that may benefit from this product are gamers trying to organize multiplayer games, students looking to schedule study sessions, event managers, and potentially business workers. 4. Product Prototype Description 4.1 Prototype Architecture The two hardware platforms that will be necessary for the prototype are a phone or tablet running an Android operating system and a laptop or desktop computer with a modern web browser. For the frontend software, Java, Android, HTML, and CSS will be used. The backend will consist of PHP, Apache, and Ubuntu, and the database will run on MySQL. Testing will be done with Junit and PHPUnit. The development environments will be Android Studio and Gitlab, while version control will be handled with Git. The program will be compatible with Google Calendar API and Microsoft Outlook API. Documentation will be handled with Javadoc, and project management and issue tracking will be carried out through GitLab. Group collaboration will largely take place through Discord and Zoom. 4.2 Prototype Features and Capability The core components of the prototype will include a friends list for each individual user, user-specific available time blocks, and a list of preferred activities. When planning an event, the system will automatically suggest times when all members of the event are free. The prototype will have privacy controls at the event level, ensuring that users are in control of what 9 Lab 1 – Free Time Description information they wish to share. The prototype’s database will handle the storage of user information. 4.3 Prototype Development Challenges The biggest challenges for development will be learning new languages, APIs, and database schema required for implementing the prototype. 5. Glossary ● Amazon EC2 (Elastic Compute Cloud) – a cloud-computing platform commercially operated by Amazon Web Services (AWS) on which users can run computer applications on virtual computers. ● Android – an operating system for mobile devices which operates on a modified Linux kernel and open source software and is commercially supported by Google. ● Android Studio – the integrated development environment designed specifically for Android development. It is available on Windows, macOS, and Linux operating systems. ● Apache – web server software that is free and open source. ● AWS (Amazon Web Services) – cloud computing services that provide basic infrastructure and distributed computing tools on a pay-as-you-go basis. ● Digital Calendar – virtual representation of a calendar used to track appointments and manage time (e.g. Microsoft Outlook Calendar, Google Calendar). 10 Lab 1 – Free Time Description ● GitLab – a DevOps platform for software development that combines development, security, and software operation in one application. ● GUI (Graphical User Interface) – allows software users to interact with and receive immediate feedback from electronic devices by the use of visual and audio elements. ● Java – an object-oriented programming language used by Google as the basis for Android applications. ● JUnit – JUnit is a Java unit testing framework that's one of the best test methods for regression testing. An open-source framework is used to write and run repeatable automated tests. ● MFCD (Major Functional Component Diagram) – shows what hardware and software are required by the system and how users are able to interact with the system. ● MySQL – open-source management system for relational databases which organizes data in one or more tables that are related to each other; commercially developed by Oracle. SQL is an abbreviation for Structured Query Language, which is a language designed to manage and use relational databases. ● PHP (PHP: Hypertext Preprocessor) – a scripting language used for web development. ● PHPUnit – a unit testing framework for the PHP programming language. ● Ubuntu – Linux-based operating system for servers, desktops, cloud computing, and Internet of Things devices. ● UTC (Coordinated Universal Time) – the world standard time due to its alignment of mean solar time within one second at zero degrees longitude. 11 Lab 1 – Free Time Description 6. References 70% of adults rely on digital calendar. ECAL, 16 May 2018, https://ecal.com/70-percent-of- adults-rely-on-digital-calendar/. Pierce, David. Everybody hates digital calendars, so everybody’s trying to build a better one. Protocol, 25 Aug 2020, https://www.protocol.com/future-of-digital-calendars.