Project Report

OBD Reader App

Contents

Project Report

Introduction

Description of Project

Screenshots

1.Login

2.Main Menu

3.Settings

4.Upload

Conformance to specification and design

Learning Outcomes

Technical Learning Outcomes

Personal Learning Outcomes

Project Review

Final Product

Recommendations

Conclusion

Acknowledgments

Project Report

Introduction

The purpose of this document is to provide a detailed analysis of the evolution of the project over its development. This report includes learning outcomes and a detailed product review.

Description of Project

The specifications of this project have changed quite a bit from its inception. Whereas in the original specification it was to be a first response solution for car accidents with some data logging to be combined into the system it is now an OBDII reader with the same data logging systems from its previous incarnation. The original specification for the project was to be completed using Intel’s Galileo which would be embedded within the vehicle and would react to a change in the vehicles velocity. Should the system detect that an accident has occurred, the user would need to respond to an alert, if the alert is not responded to in time the local authorities would be alerted automatically. This original specification was slowly refined into the system we have today, and while it does not contain the first response section of the previous specification, it introduces new use cases to the system.

This project has the ability to be used in multiple ways by different users. A car enthusiast will use the system primarily for its benchmarking ability and tools it provides to compare their car against friends cars. However another user may choose to only focus on the error logging of the application and use that to seek a better deal on their car’s repair. The applications ability to be flexible and cater to multiple users is intentional. The data is gathered and stored in such a fashion that further functionality can be extracted from it by third parties. With a database containing enough information the application can be extended to do multiple new things without the need to gather data again from the user.

Screenshots

The project features two separate applications, an Android application, which allows users to upload data from the phone

  1. Login

  2. Main Menu

  3. Settings
  4. Upload

On OpenOn Selection

Conformance to specification and design

While the specifications were changed throughout the project the final specifications were mostly adhered to. Not all functionality has been implemented that were outlined in the Functional Specification, but the implemented functionality conforms to the specification.

The final project does not match the “System Functionality” section of the Functional Specification as the system does not perform enough data analysis to properly adhere to those outlined in that section. This was due to the decision to only deal with the fuel efficiency as a proof of concept. In order to adhere to what was set out in the "System Functionality" section of the Functional Specification the application would have to provide a detailed look into the fuel efficiency in different locations and extract meaningful results from this data, These conclusions were not included in the final applications,

The usability of the application does not comply with those set out in the Functional Specification and is where the project differs from the specification the most. The application has an inconsistent User Interface (UI) and the UI is quite unpolished. While the original plan for the project was to adopt Google's Material Design this was not done and the usability suffers because of this. Feedback to the user is provided throughout the application. Although there are some inconsistencies in how the application deals with error reporting and error handling.

In line with what is set out in the “Ease of Use" section of the Functional Specification the application is quite easy to use and the layout is quite easy for new users to grasp. However, the application does not get any faster to use for power users and this is a shortfall in the implementation of the UI design.

Learning Outcomes

Technical Learning Outcomes

As a result of this project, I have successfully developed my first application for an Android device. While developing the Android application I have had to learn many new things regarding Android and how devices interact with each other. Most notably I have gained an understanding of how the Android build process works with its official build tool, Gradle. To have this knowledge is key in developing Android applications in the future, as it can allow you to quickly diagnose issues with permissions etc. While I have learned countless things to do with Android whilst developing, some things stand out more than others in terms of things I initially thought would be trivial would turn out to be quite difficult to implement, such as GPS support and Bluetooth communication between devices.

As part of the project I had to create a web application using Flask, and while I initially had some experience using Flask and PythonAnywhere, the project only served to extend that knowledge into Flask's interaction with SQL databases and how versatile Flask can be. Also alongside the development of the Flask application I also learned how to work with BON as a way of serializing objects in both Python and Java. Considering the adoption of Node JS recently, knowledge of JSON is invaluable to have.

It became apparent during the second iteration of this project that my work with Google App Engine was not going to be fruitful as the tools did not suit the type of project I intended to create. With this

Personal Learning Outcomes

As with any large scale project like this I am left with the belief that if I had of managed my time better things would have worked out better and I would have a higher quality project to show for it. It can be easy to write off every failure as a lack of time but it is important to take a deeper look into what happened and what 1 can take away from the project.

One of the biggest revelations that I received whilst doing this project is to fall faster, many times during the project I found myself making little to no progress on something, and through pride or pure stubbornness elected to continue at it rather than talk to my supervisor or to approach the problem in a different way. Throughout the course of the project this was a major cause of wasted time.

Whilst analysing my own schedule and trying to find ways that I could get the maximum amount done and cut out inefficiencies in the way I work I found that a large amount of my development time was being used to set up to do work rather than actually doing work. In looking at this further I have made efforts to focus on only one thing at a time and not context switch if possible, this allows for more time working and less time setting up environments only to switch to something else before any real prowess has been made.

Project Review

Final Product

While the product is lacking in features outlined in the Functional Specification, core functionality has been retained. A user has the ability to gather data from their vehicle and upload it to the server for further review. The limitations on the system are as follows:

  1. The android application is unable to view information regarding their vehicle from the mobile client. This functionality has been dropped in the interest of time as its exclusion does not limit the core functionality of the system. The system architecture is set up in a way that would allow for this part of the mobile client to be developed without having to change the way the server handles data.
  2. The level of detail that the web client can serve to the user is quite low, currently the application only allows for the monitoring of fuel efficiency. This is a limitation on web application only and does not include a limitation in the data set. All relevant data is stored in the database and the web application can be extended to use this data to cater for location tracking etc. The decision was made that due to time constraints, fuel efficiency would be used as a proof of concept.
  3. The User Interface on both the mobile application and web application is very basic and not very intuitive to use. This would need to be rectified by a complete overall of the stylesheets and layouts in Android. This was considered low priority as core functionality would need to be sacrificed in order for it to be done in time.

Recommendations

This section will discuss what I would have done differently had I to restart the project, or what I will aim to change in future projects I participate in.

The biggest thing that I would change about the way I went about completing the project is to define the scope earlier on in the project. Because I never set out to properly define the scope I did not have clear objectives in mind when I was going to do development work, and this led to working without clear direction and not getting much done. I feel if I had of identified tasks that needed to be done quicker, I would have identified what I needed to do easier.

Working in sprints, while I initially tried to divide up each iteration into sprints for me to work on I did not stick to this way of working. If I had stuck to that method of development I believe my work would have been more focused and thus more productive early on in the project.

Conclusion

To conclude, I believe that the overall outlook for the project is quite positive. The mobile application is developed enough to serve its purpose, which is to the server so that it may be worked on later. The website that accompanies the application has the ability to serve user’s relevant data that is of interest to them, while it may not contain all the details in the specification, it is functional.

The project, most of all was a very positive learning experience about the importance of identifying the details of any project before it is undertaken, and to understand each task as it is undertaken. It has taught me a lot about project management and places in which I can work on myself in order to improve my development skills.

Acknowledgments

I would like to take this opportunity to sincerely thank my project tutor, Joseph Kehoe for all his advice and guidance throughout the course of this project and through the year. His guidance and approachability were a huge help over the year.

I would also like to thank my classmates, who I have had the pleasure of spending the last four years with.

1