Lab 1 Outline CS410 - Fall 2021 Team Blue: Bradley Buckson, Holly Jenkins, Mohamed Diane, Sean Burns, Matt Haslem, Kwame Agyekum, Melo Kamara Table of Contents 1. Introduction 2. Product Description 2.1. Key Features and Capabilities 2.2. Major Components 3. Identification of Case Study 4. Product Prototype Description 4.1. Prototype Architecture 4.2. Prototype Features and Capability 4.3. Prototype Development Challenges 5. Glossary 6. References 1. Introduction ● Societal Problem o Organizing events around the schedules of multiple people can be difficult and often involves back-and-forth communication as overhead. Existing calendar apps are not well-suited to quickly and easily schedule social events to take place in leisure time. ● Problem Characteristics o Time wasted on communication overhead o Existing apps target business and education o What about social events in leisure time? o Examples: friend groups, gamers ● Solution Statement o We can streamline this process and make scheduling events outside of work and school more accessible to everyone. ● Solution Characteristics o Privacy controls at the event level o Users specify available time blocks and preferred activities o Users can view the availability of friends o The system automatically suggests times when all people in a group are free o Single calendar and friend list for each user 2. Product Description ● Mobile calendar and scheduling app ● Limited browser functionality ● Aids the user in planning and organizing events with other users 2.1. Key Features and Capabilities ● Calendar and friend list for each user ● Privacy controls at event level ● Users specify available time blocks and preferred activities ● Users can view availability of friends ● System automatically suggests times when all people in a group are free 2.2. Major Components ● Hardware ○ Android phone or tablet ○ Laptop or desktop computer with modern web browser ● Software ○ Frontend: Android, HTML, CSS ○ Backend: PHP, Apache, Ubuntu ○ Database: MySQL ○ Development: Android Studio, GitLab ○ Version Control: Git ○ API: Google calendar API, Microsoft Outlook API, Database ○ Documentation: Javadoc ○ Project management and issue tracker: GitLab ● AWS Cloud Services ○ ○ EC2 instances for Production, Staging, and Development ○ S3 Storage with buckets for ‘Main Database’ Backups and Application resources. ○ RDS server hosting the ‘Main’ Database and ‘Development’ Database ○ SES (Simple Email Service) 3. Identification of Case Study 3.1 Who is the product for ● People who are not satisfied with their scheduling app ● Friend groups who have a hard time scheduling meetings ● Gamers looking for better ways to schedule events 3.2 What will the product be used for ● Help reduce the amount of time required to plan a social event ● Help reduce the likelihood of friends asking you to hang out at an inconvenient time ● Help compare schedules with friends ● Help see which of your friends are interested in the same activities as you 3.3 Who else might benefit from this product ● Gamers ● Students ● Event managers ● Business workers 4. Product Prototype Description 4.1 Prototype Architecture ● Hardware ○ Android phone or tablet ○ Laptop or desktop computer with modern web browser ● Software ○ Frontend: Java, Android, HTML, CSS ○ Backend: PHP, Apache, Ubuntu ○ Database: MySQL ○ Testing: JUnit, PHPUnit ○ Development: Android Studio, GitLab ○ Version Control: Git ○ API: Google Calendar API, Microsoft Outlook API, Database ○ Documentation: Javadoc ○ Project management and issue tracker: GitLab ○ Group Collaboration: Discord, Zoom 4.2 Prototype Features and Capability ● Friends list for each user ● User-specific available time blocks and preferred activities ● The system automatically suggests times when all people in a group are free ● Privacy controls at the event level ● Database for storing user information 4.3 Prototype Development Challenges ● Learning new languages and APIs required for implementation ● Learning and implementing database schema for the most effective application functionality. 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) ●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 IoT devices. ●UTC (Coordinated Universal Time) – the world standard time due to its alignment of mean solar time within one second at zero degrees longitude. 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.