In recent years, a number of vendors have introduced personal health tracking products onto the market. These include both hardware devices such as smartwatches (e.g. Samsung Gear), smartphones with built-in sensors (e.g. Apple iPhone), and smart scales (e.g. FitBit Aria); as well as software applications such as Apple Health and MyFitnessPal. Consumers often use more than one such product. Collectively, these products can provide a useful profile of an individual’s health; however, data integration between products is typically very limited since each vendor wishes to promote their own platform and ecosystem as a consumer’s “single source of truth”.
This kind of ecosystem fragmentation is not unusual. A number of products have attempt to solve this kind of problem in other sectors. For example, the accounting software application Xero provides a single source of truth for a company’s financial data coming from different sources (e.g. POS, payroll, tax), and the marketing software application Datorama provides a single source of truth for a company’s marketing data (e.g. web analytics, social media ads). A particularly large-scale example is ERP software applications such as SAP, which attempts to unify data across an entire organisation.
Fitness Fanatics, the largest franchise of gyms in Australia, has hired your team to create a software application that serve as a consumer’s single source of truth for all their personal fitness data. They plan to release this software application as a free bonus for all their gym members. The benefit of having a single source of truth is the ability to analyse trends across different data sources and present holistic reporting to stakeholders. Therefore, one of the key selling points is that the software application will be able to generate reports for fitness instructors and healthcare professionals.
By conducting some basic market research using Internet searches and other relevant sources, as well as based on your team’s prior knowledge, identify datasets that consumers are most likely to have access to. Some examples, to get you started, include:
Observations from hardware devices:
- Today’s step count (pedometer) - e.g. FitBit, Samsung Gear, Apple Watch
- Today’s flights-of-stairs climbed - e.g. Samsung Gear
- Individual’s body mass index (BMI) observations over time - conventional scales
- Individual’s lean and fat mass ratio - e.g. FitBit Aria
- Resting heart rate - e.g. FitBit
- Sleep hygiene - e.g. FitBit, Samsung Gear
Observations entered by a user:
- Food consumption according to major food groups
- Aerobic exercises (distance and time taken) - e.g. jogging, swimming
- Resistance exercises (mass and quantity) - various weights-training machines
- Frequency of gym attendance
- Mental wellbeing exercises (e.g. mindfulness, meditation, emotional diary)
- Last medical check-up by category (general practitioner, dentist, optometrist, etc)
Your software application needs to be able to capture all these kinds of data through a graphical user interface (GUI). Your software application shall also be able to update and delete entries.
By conducting some basic market research using Internet searches and other relevant sources, as well as based on your team’s prior knowledge, identify useful kinds of data display and analysis that could be useful to stakeholders. Some examples, to get you started, include:
- Dashboard of overall health according to red/yellow/green ratings in various categories such as sleep, exercises, food consumption, etc.
- Graphs and charts of performance in various categories over time (e.g. frequency of gym attendance by month, average steps per day by week, total distance jogged by month, body mass trends over time, etc.)
- Benchmarking actual performance against goals set by user (e.g. goal of 10,000 steps per day on average)
Your software application needs to be able to display these forms of analysis. There should be different views that can be generated for the consumer, his/her fitness instructor, and his/her healthcare professional. Ideally, your software application can generate views in both the software application’s GUI itself (e.g. using JavaFX charts) as well as through printable reports (e.g. PDF, DOCX, HTML).
- Your software application shall be written in Java, compatible with Oracle Java Runtime Environment version 8, and using JavaFX libraries for any GUI components.
- Your software application shall use SQLite as the database backend.
- Your software application shall perform well against criteria for usability such as Nielsen’s Usability Heuristics.
- Your software application shall have minimal issues in terms of software defects.
- The use of proper coding conventions must be applied throughout your application. This includes formatted code (e.g. correctly indented), as well as proper class, variable and method naming conventions.
Your software application should have some additional interesting/useful functionality or feature suited to this context. This is your opportunity to be creative and make your application ‘stand out’ against competitors on the market!
If you cannot think of any functionalities, here are some pre-defined options that your team choose from:
- Support for multiple user accounts
- Data import from API or CSV files generated by hardware devices such as FitBit
- Data export to CSV or JSON file
- Persuasive functionalities1 - note that you will need to provide a one-page document explaining how your application successfully implements such functionalities
This assignment submission must be accompanied by a SIGNED cover page provided on Moodle. Please download the cover page, sign it, then scan and upload it along with your assignment. Digital signatures are NOT allowed. Missing cover page or cover page without proper signature will result in an automatic penalty of 10% of the maximum marks available for the assignment.
Late submission of an assignment is not desirable. Assignments are to be submitted onor beforethe due date. The late submission of assignments carries a penalty of 10% of the awarded marks for that assignment per day of lateness (including weekends and public holidays) unless an extension of time has been granted by the LiC. An extension of time to complete an assignment may be granted by the Lecturer-in-Charge in case of misadventure or illness.
Applications for an extension should be made to the Lecturer-in-Charge by email or in person (at least) one week before the due date. You will be required to substantiate your application with appropriate evidence such as medical certificates, accident reports etc. Please note that workload, work/placement commitments and computer failures are usually considered insufficient grounds for an extension.
Groups are advised to allocate between 2~3 hours per week on the assignment. However, depending on students’ knowledge of Java and tutorial attendance, some groups may knowingly need to allocate additional time per week in order to successfully complete the project on time. In order to minimise the time commitment for this assignment, students should use any extra time provided during tutorial classes to work on their group assignment. Students may only work on the assignment during tutorial time if approved by a tutor to do so.
Students that commit to a group and then do not honour their commitments will lose marks. Group members are expected to work in a harmonious and professional way. This includes appropriate management of non-performing members and conflict management. A group ‘leader’ may be selected to help organise group activities, but the responsibility for the group’s performance falls on all its members. You are to report any group problems to your tutor as early as possible. Weekly Group meetings are advised.
This assignment addresses the following learning outcomes: the application of skills and knowledge to write and identify clear, reliable, well-structured, and well-documented programs in Java; the evaluation and provision of solutions for small to medium scale problems; and the application pair programming/teamwork practices.
Your tutor will be available to answer your questions regarding this assignment during your tutorials. Students can also use Ed to post questions regarding their assignment.