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

iOS Application Architecture

iOS Application Architecture

Zalando teck talk held at October 29, 2015

Oliver Eikemeier

October 29, 2015
Tweet

More Decks by Oliver Eikemeier

Other Decks in Programming

Transcript

  1. Modules To be adaptable to evolving needs it is desirable

    to build complex system by assembling highly cohesive loosely coupled modules, where cost of redesigning each of such adoptable modules (or replacing by a better modules) must be minimized.CBSE CBSE Loosely based on Wikipedia, Component-based software engineering 2 — © Zalando SE, 2015
  2. Modules should be - Developed independently - Build independently -

    Tested independently - Changed or replaced independently 3 — © Zalando SE, 2015
  3. Building Blocks Part 1 How can we assemble an App

    out of independent modules? 4 — © Zalando SE, 2015
  4. Building Blocks Part 1 → The Dependency Inversion PrincipleDIP (It’s

    the D in the SOLIDOOD principles) OOD Robert C. Martin ‘05, Principles of OOD DIP Robert C. Martin ‘96, objectmentor.com/resources/articles/dip.pdf 5 — © Zalando SE, 2015
  5. The Dependency Inversion Principle High level modules should not depend

    upon low level modules. Both should depend upon abstractions.Abs Abs Abstractions: Interfaces, Protocols 6 — © Zalando SE, 2015
  6. The Dependency Inversion Principle Abstractions should not depend upon details.Det

    Details should depend upon abstractions. Det Details: Implementation details 7 — © Zalando SE, 2015
  7. Building Blocks Part 2 → Inversion of ControlIoC IoC Martin

    Fowler ‘04, martinfowler.com/articles/injection.html 8 — © Zalando SE, 2015
  8. Inversion of Control Just declare static dependencies, leave object graph

    composition to the framework 9 — © Zalando SE, 2015
  9. Case Study We use a Service Locator as an IoC

    container → But Address the Common Problems of a Service Locator 10 — © Zalando SE, 2015
  10. Inversion of Control → No need for Mocking → Decorators

    for AOP-style cross-cutting concerns → Configuration changes in deployed apps → Feature Flags 12 — © Zalando SE, 2015
  11. Is It Any Good? Yes! → Proven: Used over the

    last two years → First Use: Monolithic Objective-C legacy App 15 — © Zalando SE, 2015
  12. Is It Any Good? Yes! → Makes development fast, modules

    testable → Plays well with Continuous Integration 16 — © Zalando SE, 2015
  13. Buzzword compliance In object-oriented programming, the use of interfaces as

    an architectural pattern to construct modules is known as API-First Design. 17 — © Zalando SE, 2015
  14. Buzzword compliance Microservices is a software architecture style in which

    complex applications are composed of small, independent modules communicating with each other. These services are small, highly decoupled and focus on doing a small task, facilitating a modular approach to system-building. 18 — © Zalando SE, 2015
  15. Thank You! Questions?A A The Answer is Yes, now what's

    Your Question? 19 — © Zalando SE, 2015