Slide 1

Slide 1 text

From scratch to a scalable and maintainable architecture in Android

Slide 2

Slide 2 text

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]

Slide 3

Slide 3 text

Experiences https://play.google.com/store/apps/details?id=leadis.co.ekosave_mobile

Slide 4

Slide 4 text

Experiences https://play.google.com/store/apps/details?id=org.pfccap.education

Slide 5

Slide 5 text

Experiences

Slide 6

Slide 6 text

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.

Slide 7

Slide 7 text

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.

Slide 8

Slide 8 text

Continuous Improvement SOLID ➢ Single Responsibility ➢ Open / Close ➢ Liskov substitution ➢ Interface Segregation ➢ Dependency Inversion

Slide 9

Slide 9 text

Continuous Improvement ➢ Quality Attributes. ➢ Software Architecture ➢ Design patterns. ➢ Reuse. ➢ Maintainability. ➢ Usability. ➢ Portability. ➢ Analyzability. ➢ Reliability. ➢ Performance.

Slide 10

Slide 10 text

Continuous Improvement ➢ Reuse. ➢ Maintainability. ➢ Usability. ➢ Portability. ➢ Analyzability. ➢ Reliability. ➢ Performance. ➢ SEPARATION OF CONCERNS ➢ DRIVE YOUR UI FROM A MODEL

Slide 11

Slide 11 text

Continuous Improvement Callbacks Memory leaks

Slide 12

Slide 12 text

Continuous Improvement ➢ Retrofit. ➢ Observers. ➢ Called from the presenters

Slide 13

Slide 13 text

Architecture

Slide 14

Slide 14 text

uhmmm...

Slide 15

Slide 15 text

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.

Slide 16

Slide 16 text

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.

Slide 17

Slide 17 text

Clean Architecture

Slide 18

Slide 18 text

Clean Architecture ➢ Repository Layer. ➢ Builder. ➢ Use Case. ➢ Factories. ➢ Command Pattern. ➢ Dependency inversion.

Slide 19

Slide 19 text

Clean Architecture

Slide 20

Slide 20 text

Continuous Improvement Remove Callbacks and add RX.

Slide 21

Slide 21 text

Continuous Improvement Dependency inversion

Slide 22

Slide 22 text

Continuous Improvement Remove Interfaces Interface Segregation Remove o add components Add external components. Architecture - Android Libraries - Dependencies

Slide 23

Slide 23 text

Components Architects

Slide 24

Slide 24 text

Components Architects

Slide 25

Slide 25 text

Continuous Improvement

Slide 26

Slide 26 text

Continuous Improvement

Slide 27

Slide 27 text

Continuous Improvement

Slide 28

Slide 28 text

Continuous Improvement

Slide 29

Slide 29 text

Continuous Improvement

Slide 30

Slide 30 text

https://www.facebook.com/escueladevhack/ Escuela de Hackers www.devhack.co https://github.com/escueladevhack