User-Experience
One of the primary requirements from our clients was to
ensure that the app development was centered around the
needs of our target user-base, which largely consists of
people with impairments. With this in mind, we consistently
evaluated our project from their perspective throughout the
development process.
To make the app more accessible to visually impaired
individuals, we incorporated large text and icons. We also
added voice callouts to serve as a virtual assistant and to
make the workout process more user-friendly. Additionally,
we enabled voice control to allow users to ask for sensor
information and workout details while exercising.
In order to promote user safety, we implemented callouts
that notify users when their heart rate falls outside of the
intended range. These callouts also provide helpful warnings
such as 'Slow down' or 'Speed up' to encourage users to
modify their workout accordingly.
Functionality
Another target for the project was to ensure optimal functionality. The minimum set by our client was to ensure that a user could go through one whole iteration of the app in which they will be able to:
Connect sensors
Start a workout
-
See their heart rate information
Finish a workout
See their health data
We were able to fulfill all of the above whilst also adding in extra functionality to ensure a good user-experience thus fulfilling all the requirements from our client
Stability-Efficiency
There are a few areas of concern regarding our app that
require attention. Firstly, we have identified an issue
related to saving workouts that needs to be resolved. When
saving more than two workouts, the app crashes due to a
threshold being exceeded in the number of graphs stored in
the app. We have traced this issue to the Syncfusion plugin
we were using, and it appears to be a limitation of the
trial version of the plugin. We acknowledge that this
instability in graph storage is problematic and will require
a robust solution.
Another concern we have is related to the use of third-party
services to implement some of the app's features. For
instance, we require Microsoft Azure and Syncfusion for
functionalities like voice control and graph rendering,
respectively. While these services enhance the app's
functionality, they are subscription-based, and the costs
may become unmanageable for our clients down the line. We
need to consider alternative options to address this
concern.
Additionally, we use the Plugin.BLE, a community-developed
plugin, to enable BLE connections as .NET MAUI currently
lacks in-built Bluetooth support. Although this plugin has
proven useful, it is also more prone to bugs than other
plugins. During the development cycle, we encountered
several issues that required resolution. We need to address
these concerns to ensure the app's reliability and
stability.
Compatibility
We developed the app as per our clients' request, making it
exclusively compatible with Android devices. Although we
utilized a cross-platform framework, the app's features
require platform-specific code, such as Bluetooth, that
would make core features unusable and lead to errors if run
on other platforms.
Furthermore, the app can be executed locally on an Android
Emulator, but we must highlight that the sensor integration
will be unusable as Bluetooth remains unavailable on
emulators at this time of writing. We are aware that this
may limit the app's accessibility for some users and are
open to exploring alternatives that can provide a more
inclusive experience across different platforms in the
future.
Maintainability
Our development team primarily utilized the Model-View-ViewModel architecture to achieve optimal separation of concerns, resulting in a well-modularized project. This approach ensures that each component of the app is independent of others, making it much easier for future developers to identify and address bugs and improve & maintain individual features. future.
Project Management
Our development team was effectively managed, with a focus
on open communication and collaboration with our clients.
From the project's outset, we organized frequent meetings,
initially on a weekly basis, which all team members attended
regularly. As the project advanced, we recognized the need
to adjust meeting frequency to bi-weekly intervals to ensure
effective time management.
We utilized Gantt charts and project timelines to
effectively allocate tasks and ensure that we met all
project deadlines. Additionally, our team culture emphasized
mutual support and collaboration, which allowed us to offer
assistance to any team member struggling with their assigned
tasks. This approach facilitated a smooth and efficient
workflow throughout the development cycle.