This post describes how to design an app using Android UML. One aspect that was in my opinion not covered in many blogs around, included mine too, it is the process we follow to create our Android app. This aspect is not irrelevant because an app is a piece of software and we should follow the rules and methods used to develop other kind of software component. I know we need something more straightforward that the usual software development life cycle but using some aspects of UML can reduce our development time and make an app more consistent in term of functionalities and navigation.
So in this post i want to describe the process that spans from the moment we have an idea to when we code it creating an app.
In this process, UML assumes an important role to clarify the users that interact with our app, the functionalities we offer to them and how they can access to them – the navigation, even more it helps to clarify the data model that stands behind our app and this helps building the UI.
As we all, already, know an android app is built on Java code and we, for sure, can apply UML to design our app. We don’t need a complex UML modeling tool but we simply need a white paper and a pencil just to fix the ideas. In this journey, exploring the interaction between UML and Android, I will use a sample app so that we can follow each steps from the beginning to the time when we code our app.
As sample app, I will use a weather app that gives us the current weather condition and the weather forecast.
Identify our app users
The first step is identifying our app users. It helps us to identify the functionalities we want to offer to them. At this moment we don’t need to go into the details, we just want to identify our users and categorize them. At a first glance, we can identify only one user: the one that runs our app and gets the weather condition. At this step we don’t need users to be registered/authenticated so we don’t need to identify them.
Identify the main functionalities
In this step we identify the functionalities for the users (actor) we have selected in the first step. Well at this step we can find the main functionalities we want to offer, In this case we have:
These are the basic functionalities our weather app should have to be consider a weather app. Just a brief description:
- Find the place: We give to the user the function to search the location inserting the location name
- Get current weather: We give to the user the current weather conditions.
- Get hourly weather forecast: We give to the user the next hours weather conditions
- Get daily weather forecast: We give to the user the next days weather conditions
Is it enough? Well we identified some functionalities but we can start go deeper and start expanding each function.
Analyzing and expanding each functionality
At this step we can start analyzing the first functionality ‘Find the place’. So the user inserts the place and we give a list of matching locations. Our app should have the capability to save the location somewhere to not ask it again. But user can change the location too. So the simple ‘Find the place’ can be expanded:
The same process can be applied to other functionalities:
So by now starting from a simple idea we have found several functionalities we want to support and offer to our users.
Are they enough or we can add more? Well looking at our competitors app we can notice they offer much more so we should do the same and we have to add other functionalities:
Well now we have a detailed list of functionalities and we added another type of user: a registered user. By now it is enough in the next post we will discover our to prioritize our use case and how to have a navigation diagram using our use cases.
Prioritize our functionalities
Now it is time to decide which use case (functionalities) we want to implement first, because of course we can’t code everything at the same time. Well in this case we can select the functionalities that are the core of our app, those we think we should implement as soon as possible because they are the most important. In our case we want for sure that user can find his place and get at least the current weather condition. So we can focus our attention on two functionalities ‘Find place’ –> ‘Show matching location’ and then ‘get current weather’. Next we can start implementing the second phase of our app choosing other use cases and so on.
App navigation structure
One thing we have to consider before starting coding our app is the overall navigation structure. In this case we can have an idea of the navigation looking at the use case diagram. Looking carefully at the use case diagram shown here again we have three functionalities at the same level:
- Get current weather
- Gest hourly weather forecast
- Get Daily weather forecast
Moreover we have a preference panel where we can set up our configuration details and another functionality that let us finding the place. These two functions can be accessed from the main page. So we can derive from the use case almost all the navigation structure of our app: As you can notice looking at the diagram above, every view corresponds to a use case. The navigation between views are derived from the use case (at least almost all).