SEG2105 – Introduction to Software Engineering – Fall 2023
Android Project: GCC Cycling Mobile Application (20%)
The Grimpeurs Cycling Club (GCC) App is a specialized mobile application that serves as a hub for all things cycling-related, including event coordination, registration, route tracking, and community engagement.
Instructions
-
Project will be done in teams of 3-5 people.
-
Only one team member needs to submit the deliverables via Brightspace, but make sure
all team members are identified (name and student number) on your cover page or
README file.
-
The team must present only one version of the application. For instance, one student
having one screen with the search functionality and other one having another different screen (running on a different phone) with the services provider functionality, WILL NOT be accepted. The team must produce a single application with all the required functionalities.
The purpose of this project to expand on the theoretical work, allowing students to gain practical experience implementing the concepts learned in class. This project is also designed to allow students to learn how to work with their colleagues and develop mobile applications. Learning outcomes range from increased understanding of concepts relating to software engineering, to overall knowledge of programming for android, management and team-relation skills.
The main outcome of the project is the implementation of a GCC application for android devices. Students are to implement all components of the project, from their design specification, UML and additional documentation, graphical assets and source code. Students are encouraged to use the available toolset in android studio but should refrain from copying whole blocks of code from the internet to implement features. Should a group want to use a non-standard tool/API they should request permission before doing so.
The app will be conceived with three different types of users in mind. The administrator, the event organizer, and the participants. The administrator manages all the possible events that can
be offered to cycling participants. The event organizer creates a profile for his/her Cycling club and selects the type of events offered by that club (the club offers a set of events from the complete set of events created and maintained by the administrator. The participants should be able to search for a cycling club by name or type of event.
The features that should be available to each type of user are given below. Note that those are the minimum required features, and you are free to add more features you think might enrich your application.
The administrator can:
1. Event Management: Create type of events (at least 3 as elaborated below, but the more the merrier) that could be offered by different cycling clubs and required information that needs to be given by a participant wanting to join an event:
-
Time Trial: Time trials, often referred to as "TTs," are individual races against the clock. Cyclists start at intervals and race alone to complete a set course as quickly as possible. It's a test of a rider's ability to maintain a consistent pace and maximize speed.
-
Hill Climb: Hill climbing events challenge cyclists to ascend steep inclines or mountains as quickly as possible. Participants showcase their climbing abilities, endurance, and strength during these challenging races.
-
Road Stage Race: Road stage races are multi-day events composed of multiple stages, each with its own route and terrain. Cyclists compete over several days, and the overall winner is determined by the lowest cumulative time across all stages. Events like the Tour de France are classic examples.
-
Road Race: Road races are competitive cycling events held on paved roads. Cyclists race in a group, and the winner is typically determined by the first rider to cross the finish line. Road races vary in distance and can be one-day events or part of a stage race.
-
Group Rides: Group rides are non-competitive, social rides where cyclists come together to enjoy riding as a community. They offer an opportunity for cyclists of various skill levels to ride together, share experiences, and explore new routes while emphasizing camaraderie and fun.
-
Account Management: Delete accounts of cycling clubs and participants.
-
Content Moderation: Monitor and moderate event-related content to ensure accurate
and safe information.
The Cycling Club (single person representing the club) can:
1. Event Creation:
-
Create and organize cycling events within the region, specifying event type,
difficulty level, and route details.
-
Set registration fees and participant limits.
2. Route Planning: |
a. Design cycling routes, including distance, elevation, and landmarks.
The participant can:
3. Registration Management:
a. Accept participant registrations.
b. Communicate event details and updates to participants.
4. Results and Awards:
-
Record and publish event results.
-
Distribute awards and recognition to top performers.
1. Account Creation:
Register as a participant to access event details and registration.
2. Event Discovery:
Browse and search for upcoming cycling events within the region based on location, date, and type.
3. Event Registration:
Register for cycling events and receive event confirmations.
4. Route Tracking (optional):
Use GPS tracking to record cycling routes and performance during events.
Your application should:
-
Show a summary of all events created by a cycling club.
-
Show to the admin, all registered users to allow them to delete user accounts.
Note: This course does not focus on interface design; hence, we do not focus on usability aspects. However, students are welcome to “beautify” their projects, should they be comfortable with user interface design. Consider the Android Design Guidelines when designing your application. This topic will be covered in a tutorial session and detailed information is available at: https://developer.android.com/design/index.html
DELIVERABLES
The project is divided into 4 incremental deliverables. Students are required to submit each deliverable by the posted deadline online using Brightspace.
Deliverable
2 – Admin functionality (3%)
4 – Participant and application functionality (9%)
Due date
November 6 December 6
1 – GitHub repository and user accounts (3%) |
October 10 |
3 – Club owner functionality (3%) |
November 28 |
5 – Demo (2%) |
Last week of classes |
The project is to be carried out throughout the session and students are strongly encouraged to maintain a log of their project activities, as task allocation and project flow are a component of the final document provided alongside the android application. We suggest students keep track of duty assignment, with complexity of allocated tasks and completion dates.
Your application must be written in Java and built using Android Studio 2022.3.1. You should compile your project against the earliest possible SDK version allowed by the API methods you are using. By the end of the semester, you must implement and submit a working application based on the specifications. Firebase or SQLite can be used for storing and retrieving the application data.