Mobile Development
Tags: mobiledevelopment
Published: 2024-06-27 19:51:43


**<u>Mobile Development Platforms</u>**

1. Native Development platforms 
This platforms is divided into two:

- iOS Development:
Languages: Swift, Objective-C
Frameworks: UIKit, SwiftUI

![Ios ](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hqshtl684gq7i8u41s1d.jpeg)

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

![Android Apps](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yuo12vhaghcpnx66ksx1.png)

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

![Cross-platform apps](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pcuwnxj3gqov7trwb1uu.png)

Language: JavaScript
Framework: React Native


![React Native apps](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2kkc3l8uo66pbfzz4uhi.jpg)

Language :Dart
Framework:Flutter


![Flutter apps](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/10kxm4rn1hssrfidqma2.png)


<u>**SOFTWARE ARCHITECTURE PATTERNS USED IN MOBILE DEVELOPMENT PLATFORMS WITH THERE PROS AND CONS**</u>

<u>1. Model-View-Controller (MVC)</u>
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.

<u>2. Model-View-Presenter (MVP)</u>
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.

<u>3. Model-View-View-Model (MVVM)</u>
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.

<u>4. Clean Architecture</u>
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.

<u>#**Little about myself**</u>
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/internship)
[(https://hng.tech/hire)](https://hng.tech/hire)