Homework 2

Learning Objectives

In this homework, you will apply the concepts you learned from the textbook and class to reinforce your understanding of:

Description

In class, we discussed the Pedometer application case study, which was a web application that relied on manual input of the acceleration data. We also discussed the possibility of converting this application into a native mobile app. We discussed the trade-offs between making this a native app that runs entirely on the mobile device versus a web application. It is now time to design an architecture for this application.

Before we design an architecture, it is important to understand the requirements of this application. Requirements below are stated in the form of "user stories".

  1. As an app user, I would like to know my step count for the current day as well as historical step count, so that I could track my activity.
  2. As an app user, I would like to know how many calories I am burning by walking (for the current day and historically), so that I could set exercise goals.
  3. As an app user, I would like to see charts showing my last 12 months step count (aggerated per month) and average per-day-of-week step count, so I can analyze my walking habits.
  4. As an app user, I would like the ability to clear all my historical statistics, so that I could have a fresh start.
  5. As a developer, I would like to track which application features are the most popular with the users (if the user agrees to sharing this information), so that I could remove unused features and make popular features more prominent.

Getting Started

In the pedometer directory of your git repos, create an architecture subdirectory. The pedometer/architecture directory will be referred to as project directory.

Your assigment is to architect a solution that can be used to implement these user stories. The various design patterns you studied in Chapter 4 may be a good place to start. In your architecture, you need to define:

Note: do not assume any particular programming language for this architectural view.

Submitting Your Solution

Submit your solution by commiting all the required files to the master branch of your git repos and pushing your commits to the gitlab server.

Grading

Your grade will be based on the completeness and thoroughness of your solution. A complete solution addresses the four required sections of this homework: Components, Connectors, Stable Dependencies Principle, and Requirements. A thorough solution gives a level of details that can be handed over to a team of developers for implementation. Homework 1 is worth 100 points, evenly divided among the four sections (25 points each).