We are a team of six second year Computer Science students from the University of Bristol. As part of our course, we have been working on a Software Development project in teams. This project aims to introduce software engineering concepts and development to students by matching them with companies who act as clients and assign projects to the student teams. Our team, BitBusters, chose to work with Epimorphics as we all agreed that the project offered was achievable yet challenging and would benefit our skill set. The summary of the brief was quite open ended and gave us an opportunity to brainstorm a range of different project ideas.
Fig. 1: Team Photo
“Design and produce a mobile Android application that uses one or more open public environmental datasets to illustrate how open data applications can benefit from the capabilities of mobile devices.”
Before deciding on what the application was going to be, we isolated features unique to mobile applications that we would like to include in our app including GPS tracking, use of the video and camera, and push notifications. It was really interesting to see a range of different ideas resulting from brainstorming. The discussion and evaluation was quite constructive, leaving us with two main ideas.
The first idea was a seaside holiday planner that would utilise a Bathing Water API. This would provide users with useful information such as the pollution level and water temperature of individual locations but also allow them to write a review of the location.
The second idea was building an Android application to aid river conservation charities in managing pollution in rivers around the UK. As both applications require using similar technologies we all felt more passionate about a project with a greater environmental impact and therefore the second project was chosen.
We then began to analyse the problem domain in order to come up with a useful solution. Currently pollution incidents can be reported to the Environmental Protection Agency using a telephone service. This method of providing information about pollution incidents falls short in many ways; charities are limited when assessing the nature and location of the pollution, relying on user descriptions. Furthermore the application will act as a centralised location for river conservation charities such as The Rivers Trust to plan and organise their data and work.
To solve the problems identified above, the application will consist of a geographical display of scientific sampling points of rivers around the UK obtained from Epimorphics’ Environment Agency Water Quality Data API (WIMS). This provides users with access to information concerning chemical and ecological pollution of the rivers. The general public will have the ability to add photographs of pollution sightings alongside their current location using GPS coordinates. River conservation charities will receive notifications when new incidents of pollution are reported and will therefore be able to react more efficiently given the exact location and nature of the pollution.
Design and Implementation
The project has been split into front-end and back-end teams. The front-end team is responsible for design and implementation of the UI and data visualisation using Android Studio. The back-end team, of which I am a part, is querying and filtering the data from the environmental data API which will be displayed in the app. The back-end team is also providing a database system to store images uploaded by users of the app. Bellow you can see a mockup of the initial workflow.
Fig. 2: Workflow of the App
When working with new technologies it is critical to do a lot of research and get familiar with what is available. I have spent a lot of time with the back-end team investigating different databasing options: Relational or nonrelational, MongoDB or perhaps SQLite. A conclusion was that both approaches were appropriate in this case but MongoDB was selected because only one dataset is stored (i.e. images). Another big advantage of using MongoDB is that it offers functions to query data from a geographical location enclosed by a
polygon($geoWithin) which matches a use case of application directly.
Fig. 3: System Architecture Layout
For a project to be truly successful the communication between team members and client has to be up to a high standard. I can honestly say that I am very proud of how organised the team is. Tools like trello board are used to set deadlines for development of each feature. Each teams progress is presented and communicated effectively during our weekly meetings. Our client, Epimorphics, is always available on Slack to provide an insight into any technical issues. Their opinions are valuable and have been instrumental in reaching consensus about the design and specification of the application.
Interview with River Trust
During the early stages of the design, Alessio and I met with a staff member of the Rivers Trust in order to review our vision of the application. It was a great opportunity to listen to the users needs and update the requirements accordingly. By going through the daily routine of the Rivers Trust volunteer, we were able to isolate additional features that would be highly beneficial to their day to day work. These include adding the ability to plan surveys by specifying sites that members of staff would like to visit in addition to seeing the history of surveys done. It was very encouraging to get positive feedback from an actual user and build on the foundation of the primary requirements that will benefit the users of the app the most.
At the moment we are in the process of finalising the features resulting from primary requirements. We are aiming to release a version 1.0 within the next 2 weeks which will have all the primary requirements met. These include retrieving the sampling point data and ratings from the WIMS API as well as the images from the MongoDB database. The prototype version will also allow users to post the images to the database along with tags and comments. It will also be a good time to showcase it to our user at the Rivers Trust which can provide us with further feedback and help prioritise secondary requirements.
This project was a very good opportunity to get out of comfort zone and become familiar with new programming stacks. It is really rewarding to put linked-data into context and I am looking forward to the following months where we can build upon the current application, and release it out into the world!