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

From_scratch_to_a_scalable_architecture.pdf

 From_scratch_to_a_scalable_architecture.pdf

From scratch to a scalable and maintainable architecture in Android

Juan Guillermo Gómez Torres

September 01, 2018
Tweet

Transcript

  1. Juan Guillermo Gómez ➢ Co-Leader y Co-Founder del GDG Cali.

    ➢ CEO DevHack. ➢ Consultant and advisor on software architecture, cloud computing and software development. ➢ Experience in several languages ​​and platforms. (C, C#, Java, NodeJS, android, GCP, Firebase). ➢ Google Developer Expert (GDE) in Firebase ➢ BS in System Engineering and a MS in Software Engineering. ➢ @jggomez ➢ [email protected] <vanity> </vanity>
  2. First Steps ➢ App without layers ➢ Spaghetti code. ➢

    Without design patterns. ➢ Async Task memory leaks. ➢ HttpClients, JSONObjects. ➢ Unreadable. ➢ Unmaintained code. ➢ Unmaintained code database. ➢ Sqlite memory leaks. ➢ Low reuse.
  3. First Steps ➢ App without layers ➢ Spaghetti code. ➢

    Without design patterns. ➢ Async Task memory leaks. ➢ HttpClients, JSONObjects. ➢ Unreadable. ➢ Unmaintained code. ➢ Unmaintained code database. ➢ Sqlite memory leaks. ➢ Low reuse.
  4. Continuous Improvement SOLID ➢ Single Responsibility ➢ Open / Close

    ➢ Liskov substitution ➢ Interface Segregation ➢ Dependency Inversion
  5. Continuous Improvement ➢ Quality Attributes. ➢ Software Architecture ➢ Design

    patterns. ➢ Reuse. ➢ Maintainability. ➢ Usability. ➢ Portability. ➢ Analyzability. ➢ Reliability. ➢ Performance.
  6. Continuous Improvement ➢ Reuse. ➢ Maintainability. ➢ Usability. ➢ Portability.

    ➢ Analyzability. ➢ Reliability. ➢ Performance. ➢ SEPARATION OF CONCERNS ➢ DRIVE YOUR UI FROM A MODEL
  7. Clean Architecture ➢ Separation of concerns. ➢ Dividing the software

    into layers. ➢ Independent of frameworks. ➢ Testeable. ➢ Independent of the UI. ➢ Independent of the database. ➢ Independent of any external agency.
  8. Clean Architecture the primary purpose of architecture is to support

    the life cycle of the system. Good architecture makes the system easy to understand, easy to develop, easy to maintain, and easy to deploy. The ultimate goal is to minimize the lifetime cost of the system and to maximize programmer productivity.
  9. Clean Architecture ➢ Repository Layer. ➢ Builder. ➢ Use Case.

    ➢ Factories. ➢ Command Pattern. ➢ Dependency inversion.
  10. Continuous Improvement Remove Interfaces Interface Segregation Remove o add components

    Add external components. Architecture - Android Libraries - Dependencies