GOTO is a vendor independent international software development conference with more that 90 top speaker and 1300 attendees. The conference cover topics such as .Net, Java, Open Source, Agile, Architecture and Design, Web, Cloud, New Languages and Processes

Workshop: "Hands on Implementation of Clean Architecture for iOS Apps"

Track: Workshop / Time: Wednesday 09:00 - Thursday 16:00 / Location: Trifork Kursuslokale

Target Audience
iOS developers with at least 1 year of experience.

Pre-requisites
Being moderately confident in iOS development. Experience in other mobile platforms, such as Android, might be also valid, but it will require some extra effort from the person attending this workshop.
At least basic concepts about unit testing will be very useful to be able to follow the TDD development.

Requirements
This is a hands-on workshop, so please bring your Mac with you with the latest released version of Xcode installed. AppCode and Android Studio are also welcome, but very limited support will be provided to
those environments.

Contents
During the workshop we will implement together two user stories from scratch for a new iOS application using TDD.
The code will be written in Swift, but I will also provide information about implementation details in other languages, like Objective-C or Java.
Distribution of the contents and scope may vary slightly, in order to maximize the understanding of the bases.

Day 1

Clean Architecture Concepts
Understand the pieces of the architecture and their implementation in iOS.

Implementation of the Interactor
Implement the first user story: show a list of data elements to the user. Define the first version of the immutable entities and transform them into immutable structures with the data to display.

A basic implementation of the entity gateway
Defer the decission of the persistence framework for later. Implement the minimum functionality in a basic object. Implications of the repository pattern.

Implementation of the Presenter/event handler
Creation of the presenter that will talk to the view and present the data.

Implementation of the View
How to make a dumb, but still useful view.

Review and next steps for the second day
We will review the pieces that we have created and understand what is still missing.

Day 2

Connect the pieces and make it all work

Understand the way the pieces are interconnected and its memory management implications. Implement the required object, modify the App delegate and make it work with the storyboard.

Add a second user story
Understand the implications on the interconnections of the modules and on the memory management aspects. Alternative implementations for presenting other view controllers.

Make the second user story work
Implement all the modules required for the second user story. Try and understand how all the pieces fit together.

New orders from the design masters
Understand the implications and impact of changes to some important aspects of our application, like the user interface. Apply one of this changes to our code.

Final review and next steps
Some thoughts on how to extend this architecture: asynchrony, multiple user stories in the same view controller, refactoring, framework substitution, other design patterns, etc.

Jorge D. Ortiz Fuentes, Independent Consultant

Jorge D. Ortiz Fuentes

Biography: Jorge D. Ortiz Fuentes

Jorge is a freelance dedicated to mobile development, security, and systems architecture. As a developer he started to work for the M.I.T. in 1993 and since he has collaborated in many software projects. Most of them were internally for HP where he worked for more than 15 years. During the last 6 years he has been working in different aspects of mobile development. After playing with PalmOS, he learned Android programming for the first Google App contest and immediately started to play with the first iPhone SDK. He often participates as instructor in the best iOS and Android Bootcamps in U.S.A. and Europe. He has recently founded Canonical Examples to help other developers to take a step forward and become senior developers in a very demanding market.
 
Twitter:@jdortiz