Skip to Content

CrowdFinder (COMP 3350 Final Project)

Android Mobile Development

Using Android Studio IDE and emulator.

Version Control

Git was used to maintain this project on GitLab. My team used the Git Flow branching pattern for development.

Hyper SQL

This project utilizes a file HSQL database with true persistence.

Agile Methodologies

Development in Iterations with little planning up front. We followed best practices for planning, including epics, user stories and management of development vie issues and releases.

Testing

Following N-tier architecture, we implemented unit, integration and system tests using JUnit and built-in Android tests.

 

This project was part of the Software Engineering 1 course at the University of Manitoba. This is by far one of the best experiences I've ever had developing anything in university. The work done on this project has taught me more about software development than any other course in my degree.


The main objective of the course is to develop an android application in a team of 5 people that is fully independent. This means we are not allowed to use any server models or external APIs. Throughout the course, we would get to release our project for evaluation during the end of each iteration, with each consecutive release having harsher requirements.

The first few iterations focus more on planning, organization and prototyping. Each team comes up with their app idea, design and features. From there, features are broken down into user stories and further into specific issues. 

Every single one of us has to learn concepts from the course and apply them as we develop the project. Beyond telling us initial limitations and providing sample unit and system tests, we were not guided through any of the work it took to put our app together.


The best aspect of this course for me, personally was assigning myself to different tasks I've never done before. I often found myself stuck at some new problem because I had only surface-level knowledge about what I was doing. The more I tried fixing the problem - the more I would learn about how Android Studio and HSQL engine work. The moment I would get over an obstacle though, I would share my findings with fellow team members, allowing them to learn much faster than I did. 

These constant updates on our findings made everyone's lives easier. Team members who have never worked with databases, as an example, would look at simple diagrams and project documentation to quickly gain a basic understanding of how things work. This would then allow them to implement whatever issue they've been assigned.


In its final form, this project still needs visual design touch ups as that was not the focus of the course. Our final submission received a grade of 98%, with the only problem being some features having no time spent on them. This likely occurred because items were not linked together properly.


Below you may find the architecture diagram of the app and a few others that my team used to understand how android UI works.

By the second iteration (out of 3) we were required to implement unit tests for every single domain specific object and any complex logic within them with at least 80% coverage. Android studio provides very powerful features that allow to run JUnit tests with coverage being shown at the end.

As the project progressed into the final 3rd iteration, we were required to implement integration tests for every link between layers and a system test with it's corresponding acceptance test for each user story. While we did not develop the app using a test-driven approach, none of these were a big issue. It was just a LOT of work because of the amount of features we ended up actually implementing.

Databases Course Final Project (COMP 3380)