HNG, MOBILE PLATFORMS AND ARCHITECTURES
Published: 2024-07-02 10:35:49


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qnotvcy15kzao9nlfqul.png)

Commencing this internship marks a noteworthy turning point in my professional journey. It is priceless to have the chance to develop and learn alongside a group of people who share your values. My goals in this program are to improve my abilities, create strong applications, and work on important projects.


**MOBILE PLATFORMS**
Mobile development is the process of designing, building applications that run on mobile phones and this involves using certain programming languages and frameworks for creating those apps. Before learning mobile development, one needs to take consideration on what platform you are targeting.
There are various mobile development platforms, but the main platforms are IOS, ANDROID AND CROSS PLATFORM development. Each platform have unique features and targets a certain audience.

**IOS**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2k1r0adtf0c0jluamni6.png)

IOS is Apple’s mobile operating system, it is the operating system in which devices like iPhones, iPads, and iPods run on. IOS app development involves using Apple’s tools to develop applications particularly for these devices that run on the operating system.
UIkit and Swift UI are frameworks for creating IOS interfaces. UIKit makes use of code to create iOS interfaces while SwiftUI, facilitates declarative UI programming for creating interactive and responsive designs. IOS platform is known for its enhanced security, data privacy, and good user experience as a result of having the best user interface. Due to its robust security features, development of apps require learning of either objective-c or swift and getting familiar with Xcode. App releases may occasionally be delayed due to Apple’s stringent approval procedures and those apps are limited to only Apple’s hardware.

**ANDROID**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c0ycfbj1mivc8ur0u9ps.png)

Android is a mobile operating system that is based on Linux kernel. It is an open source software designed for touch screen mobile devices such as smartphones and tablets. It is currently owned by Google. For Android development, java is the traditional language for writing apps, but most recently, kotlin has been the preferred language for building android applications due to its modern features. Android studio is the preferred IDE for building android applications, it provides an environment for writing, testing and debugging android apps. Android has been the best-selling OS worldwide on smartphones, it has a very large user base. Although, due to the fact that it is open source, it is prone to security threats. Also, the variety of screen sizes and resolutions can make UI design and consistency more difficult.

**CROSS PLATFORM**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8j756q0rugrc9c2k4pho.png)

It involves the development of applications that can run on multiple platforms, either Android or IOS. There are various frameworks that can be used for cross platform development; Flutter is one of them which uses dart as the programming language for writing apps, it offers a wide range of pre-made widgets to help create natively built applications. Others include, React Native: Created by Facebook, this framework enables programmers to create mobile applications with native components by utilising JavaScript and React.
Codes can be reused across platforms, removing the need for separate development teams for iOS and Android. It is fast to develop, since it requires one codebase and development tools. Although some platform-specific features may be difficult to implement or may require custom native code, It can be difficult to debug because cross-platform apps have an extra layer of abstraction.

**SOFTWARE ARCHITECTURE PATTERNS**

**MVC(Model view Controller)**
It is a paradigm for architecture or design that divides an application into three primary logical parts. View, Model, and Control. Each of these parts is designed to manage particular application development tasks. The controller contains the logic, whereas the model houses the data and the view houses the user interface.

**Pros**

- Easy to maintain
- Easy to understand and implement
- Enhances more flexibility and higher testability

**Cons**

- It increases complexity of code
- Tight coupling between parts may cause issues.

**MVP(Model view Presenter)**
In this design pattern, the logic and interactions with the view and model are handled by the presenter. While the model manages data, the view renders user interface elements.

**Pros**

- Better separation of concerns compared to MVC.
- Easy to test
- More clean and maintainable codebase.

**Cons**

- Has more level of complexity
- High risks and difficult to understand

**MVVM (Model-View-ViewModel)**
The three primary parts of the MVVM architecture pattern are Model, View, and ViewModel. The Model, commonly referred to as the domain model, depicts the application’s data. It is a representation of your business domain that is object-oriented. The View is in charge of showing the user the data from the model.

**Pros**

- Maintains a clear division between the user interface (UI) and the business and presentation logic of an application.
- Easy to test and maintain

**Cons**

- High complexity
- Sometimes difficult to debug due to data binding

**Conclusion**

Mobile development is always changing. Comprehending diverse platforms and architectural patterns is vital for developing efficacious applications. Starting a mobile app development project involves careful preparation, strategic research, and a clear grasp of your company’s objectives.Finding your preferences and organizational demands is crucial as you consider your options.



https://hng.tech/internship

https://hng.tech/hire