Android UML: Design an App – Part 1
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.
Hi,
Thanks a lot for sharing this article! I’ve been trying to find how to design android apps using uml, but without any success. Do you know any resources ?
Thanks
Hi,
On the diagrams you’ve draw the generalization relationships with wrong direction. It should be from child to parent or from more detailed to abstract one.
Cheers