Context

Today, I work in a software development company and like twenty six millions of software engineers, I strive to achieve what we call optimization.

Even outside of software development, we all want to optimize what we can to increase our efficiency, and an essential way to optimize software is to reuse elements of previous works.

Code duplication is often found when an application is intended to run on several different types of hardware, and we would theoretically develop the software as many times they are targets.
Software that can run on several machines is called a multiplatform application, or sometimes cross-platform application.

Problematic

For a multiplatform application, we should try to avoid creating the same thing several times, for the same purpose.

The question is now how ? How can we create the same application for several devices and is it always a good thing ? In other words, the question we can ask ourselves is :

How to choose the right software architecture for a multiplatform project ?

This issue is broad and also means “Should I” or “Is it worth it”. These are the questions we want to answer in this thesis.

Process

A sure way to demonstrate this choice is to use several ways of building the same multi-platform application, and compare them on the basis of various criteria, ranging from developing time to the limitations of the software and the specificities of the final product.

After examining five hypothesis, we can see that there a three main ways to build a multi-platform application, all of which have advantages and disadvantages

Conclusion

There is no final answer to the problematic. The real answer would be to choose what is the most suited to your need.

If you need pure performance (i.e. for industrial or military purposes), you should definitely choose a native application because you need the full power of the device it runs on and development time can probably be sacrificed.

If you want an entertainment application that can reach the largest number of people, you can forego performance and create a web application very quickly to ensure maximum reach. However, your application must remain simple, as it would not have access to certain features.

Finally, if you want to create performant software while keeping costs low, you can create two hybrid applications that can share pieces of code, allowing faster development while still having access to many features.

Choosing the right software architecture is not about choosing one technique and sticking to it, but about choosing what is best for your project. Mixing and matching these three methods is a great way to adapt the architecture to better suit your needs.