Android Core

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:

Weather app_uc1[7]

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:

Weather app_uc2[3]

The same process can be applied to other functionalities:

Weather app_uc3[3]

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:

Weather app_uc5[3]

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.

Reference: Android UML: Design an App – Part 1 from our JCG partner Francesco Azzola at the Surviving w/ Android blog.

Francesco Azzola

He's a senior software engineer with more than 15 yrs old experience in JEE architecture. He's SCEA certified (Sun Certified Enterprise Architect), SCWCD, SCJP. He is an android enthusiast and he has worked for long time in the mobile development field.
Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Newest Most Voted
Inline Feedbacks
View all comments
10 years ago


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 ?


10 years ago


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.


Back to top button