Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Architecture, to build an app, or a house, it's...

Architecture, to build an app, or a house, it's important. But what is that concretely?

MVVM, MVP, Clean Architecture, Baroque, Multitier, you hear those words at every conference, at work, or anywhere else, but maybe you don't really know what it is? Or you are not sure why you should you a certain type of Architecture instead of another?

In this talk, I want to give you all the tools to know about architecture and I want to show you an overview of the most commun type of architectures we are using in the mobile world.

Avatar for Antoine Danois

Antoine Danois

May 05, 2022

More Decks by Antoine Danois

Other Decks in Programming

Transcript

  1. Antoine Danois Android Developer @antoinedroid Architecture, to build an app,

    or a house, it's important. But what is that concretely?
  2. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid A bit of history START 1960s - Structured Programming - The comparison between software design and (civil) architecture was first drawn 1950s Non-structured Programming – Assembly late 1960s - Layering: 1 tier with the UI, Business Logic and Data Storage 1970s - Procedural / Functional Programming - Pascal / C
  3. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid A bit of history 1980s - Object Oriented Programming - C++ - Perl 1979 Model-View-Controller 1980s - Layering: 2 tier, the 1st tier with the UI, the 2nd tier with Business Logic and Data Storage
  4. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid A bit of history 1990s ~1991 – Python ~1993 – Ruby ~1995 – Delphi, Java, Javascript, PHP 1996 Model-View-Presenter 1990s - Layering: 3 tier, the 1st tier with the UI, the 2nd tier Business Logic (and the UI presentation logic in case of a browser as client), the 3rd tier with the Data Storage 1997 Web services
  5. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid A bit of history 2002 SOLID Principles, introduces by Robert C. Martin in Design Principles and Design Patterns. 2009 - Microservices 2005 - Model-View-ViewModel 2012 - Clean Architecture 2007 - IEEE 1471-2000
  6. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Why we need Architecture?
  7. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Motivation of using Architecture? Provides a basis to re-use elements and decision Facilitate communication about complex systems It help with risk management and cost reduction
  8. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Client - Server Client Server
  9. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Peer-to-peer Peer Peer
  10. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Geometric Architecture
  11. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Layered Pattern | N-Tier
  12. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid IEEE 1471-2000 • The first formal standard in the area of software architecture
  13. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Difference between MVC / MVP / MVI / MVVM / MVVM-C
  14. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Android | App Architecture
  15. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Android | App Architecture | UI Layer
  16. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Android | App Architecture | Domain Layer
  17. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Android | App Architecture | Data Later
  18. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Android | App Architecture | Other stuff • App entry points • App navigation • Dependency injection • Architecture Components
  19. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Android | App Architecture | Other stuff • App entry points • App navigation • Dependency injection • Architecture Components • Activities • App shortcuts
  20. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Android | App Architecture | Other stuff • App entry points • App navigation • Dependency injection • Architecture Components • Configuration changes • App links • Fragments • Navigation components
  21. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Android | App Architecture | Other stuff • App entry points • App navigation • Dependency injection • Architecture Components • Dagger • Hilt
  22. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid Android | App Architecture | Other stuff • App entry points • App navigation • Dependency injection • Architecture Components • UI Layer ◦ View binding ◦ Data binding ◦ Viewmodel ◦ Livedata • Data Layer ◦ Datastore ◦ Workmanager
  23. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid That was the Android App Architecture stuff • App entry points • App navigation • Dependency injection • Architecture Components
  24. Architecture, to build an app, or a house, it's important.

    But what is that concretely? Antoine Danois | @antoinedroid You want moooooore?!!! • https://developer.android.com/topic/architecture ◦ Official courses : https://developer.android.com/courses/pathways/android-architecture • Software Architecture in iOS and OS X Applications from Marcel Weiher • Architectural patterns • Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7–11 Oct. 1968 • https://awesome-architecture.com/