Do we need System Architecture for Mobile Applications?

I have faced this question many a time, whether we should have a system architecture designed for our Mobile Applications or not. People (be it developers, managers or client) believe that Mobile Applications are smaller in nature and rather than investing time on designing an architecture, we should directly jump into coding the app. This could look viable in initial stages of development, but with experience I have learnt that maintainability of such applications become really difficult at later stages.

Going by my experience and understanding, a well documented System Architecture and use-case diagram (yes, it is worth investing in use-case diagram too) is a must for any application. Reasons are:

  1. While developing an application, it looks to be a simple system. But when it goes into maintenance phase, it becomes complex. During maintenance, an application goes through multiple changes and in absence of well documented architecture, the code-base becomes messy. Different developers, who are assigned to enhance the app or fix a bug in the app, contributes in increasing the complexity and mess. Primary reason of such mess is absence of a document, which binds the direction of further development.
  2. Mobile technology is still young and progressing day-by-day. This forces us to keep on making changes in the application, so that it stands in current technological scenario. In this scenario, if we don’t have a well designed and well documented architecture, then we are tend to loose the track and make the code messy.
  3. In a product’s lifetime, developers keep on changing due to one or the other reasons. In the age of Agile, we are left with no option, but to rely on developer’s own understanding of existing code, if there is no System Architecture is in place.
  4. A documented system architecture allows us to reduce code duplicity and increase code modularity. This is a required criteria for any system (small or big)

I highly recommend to spend some time on getting a system architecture and use-case diagram done for any mobile application, be it small or big. This will definitely prove fruitful down the line.