Mobile Development

enthusiastic developer - Jun 27 - - Dev Community

Mobile Development Platforms

  1. Native Development platforms This platforms is divided into two:
  • iOS Development: Languages: Swift, Objective-C Frameworks: UIKit, SwiftUI

Ios

  • Android Development Languages: Java, Kotlin Frameworks: Android SDK

Android Apps

  1. Cross-Platform Development Platforms This platforms includes building mobile applications that and be used in both Android and IoS platforms

Cross-platform apps

Language: JavaScript
Framework: React Native

React Native apps

Language :Dart
Framework:Flutter

Flutter apps

SOFTWARE ARCHITECTURE PATTERNS USED IN MOBILE DEVELOPMENT PLATFORMS WITH THERE PROS AND CONS

1. Model-View-Controller (MVC)
This Divides the application into three interconnected components which are:

  • Model: Manages the data and business logic.
  • View: Displays the data and sends user commands to the controller.
  • Controller: Interprets user inputs and updates the model and view.

Pros:

  • Separation of concerns making the code base easier to manage and test.
  • Re-usability of the model and view components.
  • Simple to understand and implement

Cons:

  • Can lead to a "Massive View Controller" problem, where the controller becomes too large and complex.
  • Tightly coupled components can make changes harder.

2. Model-View-Presenter (MVP)
This is an evolution of MVC where:

  • Model: Manages the data.
  • View: Displays the data and sends user actions to the presenter.
  • Presenter: Acts as a middleman between the view and the model, handling all the presentation logic.

Pros:

  • Better separation of concerns compared to MVC.
  • Presenter is easier to test because it does not depend on Android/iOS framework components.
  • Views are more focused on displaying data and less on handling logic.

Cons:

  • Can result in a lot of boilerplate code.
  • Presenter can become very large and complex.

3. Model-View-View-Model (MVVM)
This architecture divides the application into:

  1. Model: Represents the data and business logic.
  2. View: Displays the data.
  3. View Model: Acts as a link between the view and the model, providing data to the view and handling user interactions.

Pros:

  • Clear separation of responsibilities which makes the code easier to manage and test.
  • Supports data binding which reduces boilerplate code in the view.
  • View Model is easy to test because it does not depend on the view.

Cons:

  • Can be more complex to implement compared to MVC and MVP.
  • Data binding can add a layer of indirection, making debugging more difficult.

4. Clean Architecture
This emphasizes on separation of concerns by organizing the code into multiple layers:

  1. Entities: Represent the core business logic.
  2. Use Cases/Interactions: Encapsulate specific business rules.
  3. Interface Adapters: Convert data from the use cases to a form that the external systems can use.
  4. Frameworks and Drivers: External components like databases, UI, and external APIs.

Pros:

  • High level of separation of concerns which makes the code base highly maintainable and testable.
  • Each layer is independent, which improves code modularity.
  • Facilitates easier testing of individual components.

Cons:

  • Can be overkill for small projects.
  • Involves a steep learning curve and more boilerplate code.
  • Requires careful planning and design.

#Little about myself
I am a passionate woman diving into mobile development with React Native. Joining the HNG Internship, I seek to hone my skills, gain real-world experience, and collaborate with like-minded individuals. This journey is a stepping stone to my dream of creating impactful mobile applications.
(https://hng.tech/internship)
(https://hng.tech/hire)

. .