Skip to content
Examples

biking2 arc42 section 1

Introduction and Goals

biking.michael-simons.eu is a project for

  • tracking my bike activities
  • evaluating technology
  • learn stuff
  • showcasing my skills

For more background see this blog post as a starting point.

I’d like to thank all the people working at the Spring Eco System for doing their amazing work. Also a big thank you to Dr. Gernot Starke and Dr. Peter Hruschka for their inspiring workshop “Mastering Software Architecture” in Munich, December 2015. I took not only a nice CPSA-F certificate home, but really valuable and practical patterns for improving “my” software.

The blog post above had song lyrics from Nick Cave & The Bad Seeds as intro (from “Push The Sky Away”) and for the architecture I have this:

Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.

— Edsger W. Dijkstra, On the nature of Computing Science

Requirements Overview

What is biking2?

The main purpose of biking2 is keeping track of bicycles and their milages as well as converting Garmin Training Center XML (tcx) files to standard GPS Exchange Format (GPX) files and storing them in an accessible way.

In addition biking2 is used to study and evaluate technology, patterns and frameworks. The functional requirements are simple enough to leave enough room for concentration on quality goals.

Main features

  • Store bikes and their milages
  • Convert tcx files to GPX files and provide them in a library of tracks
  • Visualize those tracks on a map and provide a way to embed them in other webpages
  • Visualize biking activities with images
  • Optional, near real time, tracking of a biker

The application must only handle exactly one user with write permissions.

Most bike aficionados have problems understanding the question “why more than one bike?”, the system should be able to keep track of everything between 2 and 10 bikes for one user, storing 1 total milage per bike and month. All milages per month, year and other metrics should be derived from this running total, so that the user only needs to look at his odometer and enter the value.

The application should store an “unlimited” number of tracks.

The images should be collected from Daily Fratze, the source are all images that are tagged with “Radtour”. In addition the user should be able to provide an “unlimited” number of “gallery pictures” together with a date and a short description.

Quality Goals

Nr. Quality Motivation
1 Understandability The functional requirements are simple enough to allow a simple, understandable solution that allows focus on learning about new Java 8 features, Spring Boot and AngularJS.
2 Efficiency Collecting milage data should be a no brainer: reading the milage from an odometer and entering it.
3 Interoperability The application should provide a simple API that allows access to new clients.
4 Attractiveness Collected milages should be presented in easy to grasp charts.
5 Testability The architecture should allow easy testing of all main building blocks.

Stakeholders

Role / Name Goal / Boundaries
Developers Developers who want to learn about developing modern applications with Spring Boot and various frontends, preferably using Java 8 in the backend.
Bikers Bike aficionados that are looking for a non-Excel, self-hosted solution to keep track of their bikes and milages.
Software Architects Looking for an arc42 example; want to get ideas for their daily work.
Michael Simons Improving his skills; wants to blog about Spring Boot; looking for a topic he can eventually hold a talk about; needed a project to try out new Java 8 features.