Mental Math Android Application Team No. 7 FCR-ARB Presentation 10/17/2018
Overview • Team Status: Strengths, Weaknesses, Concerns, Risks • Operational Concept Development • Win-Win Agreement • Prototype • Architecture • Life Cycle Plan • Feasibility Evidence Document • Quality Focal Point
The system will be a mobile application, meant to function properly on an Android phone having Android 5.1 or above, and geared toward testing, teaching and sharing mathematical skills. The success-critical stakeholders of this system are: Users Maintainer Owner (Client) Developers System Purpose and Success-Critical Stakeholders
Current Business Workflow Diagram
Need for Encryption Encryption algorithm is essential for protecting user’s data, such as the scores. There are many valid encryption methods that are independent of the environment. Prototype the encryption algorithm to estimate the feasibility of implementation.
Implementation: Part 1 Hashing involves a small amount of cryptography and is the most commonly used method of encrypting data. Hash functions deterministically map arbitrary pieces of data into fixed-length values. The scores are encrypted before being stored in the local file. The encrypted scores are then decrypted and uploaded to Google leaderboard if the user has signed in with their Google account.
Implementation: Part 2 Encrypt an integer to a unique 32-character long string. - Convert the integer to an array of 8 single digit number. - Use 4 randomized number and letter to denote each number’s binary value. The integer represent the value of time spent on a level, and should be less than 8 digits (8 digit integer in millisecond is 2.8 hours). The encrypted string can be decrypted back to the original value.
Examples - Randomly generate an integer less than 8 digits.
Business Value and Risk Mitigation Encryption user data has a high business value: - Maintain the integrity of the data. - Prevent the users from tempering with game file. Prototyping encryption algorithm reduces risks: - Gaining information about the feasibility of implementing such feature. - Preventing the user falsifying their score on the leaderboard.
Why do we need a Progress Page? • It is critically important for kids to track their progress to achieve maximum possible results. • They can make a schedule according to the statistics being provided to them. If they are lacking in some skill or say some operator basics, they can limit and manage their time accordingly. • This is more of how much you have achieved and not the report. because if progress is not related to levels of achievement this. will do a dis-service to young people.
Flow • Chart
What else are we planning to add? • Total time in the game. • Last played level in each operator. • How far are you from completing the last level played. • Best time in each level.
Flavors • Premium Version • Free Version
Improving Readability of Code • Changed variable, method and class names according industry standards for naming conventions • Improved readability of old code. • Will help for team collaboration as variable names are self explanatory and team members will understand what they are working with • Helps new people who will be working on the project in future
Definition of Code Refactoring • Code refactoring is the process of changing a computer program's internal structure without modifying its external functional behavior or existing functionality, in order to improve internal non-functional properties of the software, for example, to improve code readability, to simplify code structure.
Before… All the app pages were inside one single activity
After… POJO Class • POJO Class
We have created a Pojo class which has Game variables shared across all the app pages. The game parameters class follows Singleton Design pattern which means we can create only 1 object of the class The first object of this class is made in MainActivity, later all the activities use the same object, whenever any activity updates the member variable of the object it is accessed across all activities.
Integration is easy OOPS concepts. Code follows industry standards Code is extendible in future Debugging became easy Structured, readable Advantages of Refactoring the code
Advantages of Refactoring the code (contd.) • If one page of the app is hanging then we know where the problem is.
Life Cycle Plan Overview Purpose: The purpose of LCP is to layout the plan for the project ahead of time so that the risk of project incompletion is mitigated. LCP helps us keep all the success critical stakeholders on the same page. LCP helps in evaluating risks at each phase. Written goals to be delivered in each phase. Team: 8 members Duration : 12 weeks or 1 semester