A Guide to Starting Mobile Application Development

A Guide to Starting Mobile Application Development

Introduction

The journey into mobile development is fun but just like a building that has two different doors into the building to achieve your goal. Mobile development is divided into two sides like a coin, which are native platform and cross-platform which is to solve problems with mobile application development. Each of these doors (mobile development platforms) you choose to learn has its tools, programming language, software architecture pattern best used, and pros and cons in the application. There is also no code platform example Flutterflow. Let’s dive into mobile platforms and their software architecture pattern.

Table of content

  • Introduction

  • Native Platform

  • Software architecture pattern

  • Cross Platform

  • Software architecture pattern

  • Personal Experience & HNG Internship Journey

  • Conclusion

Native Platform

The native platform is those specific applications written to work on a specific device platform. There are two most popular operating systems (OS) Android or iOS. They have a specific tool for developing the application that runs on the operating system which is Android Studio and XCode for Android and iOS respectively.

Android Studio

Android Studio is the official integrated development environment (IDE) for Android application development. It is based on IntelliJ IDEA, a Java-integrated development environment for software, and incorporates its code editing and developer tools. A project in Android Studio has everything that makes your workspace for a mobile application, from source code and assets to test code and build configurations.

Xcode

Xcode has a world-class code editor, built-in SwiftUI preview tools that show the UI of your app as you modify code and a powerful debugger with conditional breakpoints. Xcode also includes several development tools to help you rapidly prototype and test your mobile application.

Software architecture Patterns

They are pre-designed solutions to common problems in software development. They are the best way to organize component and their interactions. The aim is to guide our decision-making process in the performance of the software. Example are;

  • Model-View-Controller (MVC)

  • Model-View-Presenter (MVP)

  • Model-View ViewModel (MVVM)

Model-View-Controller (MVC)

MVC is the oldest architecture which is divided into three layers.

Model: the layer that handles data. It is responsible for communicating with database and network layers.

View: this is the User Interface layer. It houses the visualization of data stored in the model.

Controller: This is the “Middle man” layer, it has core logic. It collects information from the user actions and updates the models when needed.

Note: View and Controller are dependent on the model layer.

Pros

  • Make the code testability easier to implement new features

  • Unit testing for the model and controller is possible without the Android class

  • User Interface test makes it possible to know the functions of the view layer.

Cons

  • Code layers depend on each other

  • Display of data is not handled by any parameter for User Interface Logic

Model-View-Presenter (MVP)

This is widely accepted and recommended for beginners. The reason is because it is easy to learn.

Model: This layer deals with data storage. It communicates with the database and network layers.

View: The user Interface layer frames the name (View), it keeps records of the user’s action in other to notify the presenter.

Presenter: the layer deals with retrieving data from the model and uses the User Interface logic to decide what the user will see (Output).

Note: View and Presenter are closely related and have reference to each other.

Pros

  • Easy code maintenance

  • Easy code testing process

Cons

  • It has strict rules to follow, which is to break the code when disobeyed.

Model-View ViewModel (MVVM)

The MVVM and MVP pattern looks similar because they are efficient in the behavior of the view layer and abstracting the state.

Model: In this layer, data sources are abstracted Model and ViewModel work together to get and save the data.

View: This layer communicates all user’s actions to the ViewModel

ViewModel: it displays data streams that are important to the view layer.

Pros

  • It is easy to change in the future

  • It modularizes the application design

Cons

  • The architecture pattern design takes time

  • It has strict rules.

Cross Platform

Cross-platform apps are designed to function across multiple mobile operating systems, using a single codebase. There are different frameworks used to achieve this which run on a specific language. They are Flutter, React Native, Kotlin Multiplatform and Ionic their language respectively is Dart, JavaScript, Kotlin, and Html CSS & JavaScript.

Note: this article is based on the Flutter framework

Flutter

Flutter is an open-source mobile SDK developer that can be used to build Android and iOS applications from the same code base. Flutter has been around since 2015 when Google introduced it and remained in the beta stage before its official launch in December 2018. Since then, the buzz around Flutter has been growing stronger.

Software architecture Patterns

Business Logic Component (BLoC)

BLoC is a pattern that heavily depends on reactive programming principles using streams to manage state. It has three layers;

Model: it handles data structures and represents the data during implementation.

View: widgets in Flutter interact with the BLoC which uses StreamBuilder to react to the changes in BLoC.

BLoC: This layer manages streams and handles the business logic, it manages input and output streams, handling events and states.

Pros

  • Uses Dart’s Stream API

  • Easy to test

  • Accepts separation of User Interface and business logic

Cons

  • Difficult to learn for beginners

  • Boilerplate can overwhelm

Riverpod

Riverpod is a state management library that builds on the ideas of Provider with great improvements. The Riverpod in flutter operate on a solution by focusing on dependency injection. It works based on the power of decisions and architecture with dependencies.

Pros

  • Improved testability and modularity over Provider.

  • Removes the need for BuildContext to access the state

Cons

  • Easier when familiar with Provider.

Personal Experience & HNG Internship Journey

A software freak, I create ideas with technology to deliver software based on mobile devices. Two years in mobile development and five years in the software industry with a few developers mentored under me. Being self-taught means seeking a strong community and creativity to bring ideas to reality that is why when I saw the HNG11 internship on X social media, I did not back down on this opportunity to upskill myself and am on fire for the global market in problem-solving.

HNG internship is bonded with time, a strong community, a great model in training great problem solver, and clouded with a mentor.

Conclusion

The mobile development journey is much easier with a great road map, and the tools needed to get the best knowledge during the process. One of the best environments is with HNG internship, to make out the best from me and be ready for the global market.