Email the Author
You can use this page to email Yair Carreno about Clean Architecture in iOS.
About the Book
It isn't easy to control what cannot be measured.
That's. When Clean Architecture is applied to solutions, one consequence is to provide mechanisms to measure and test every critical software piece in the solution.
The challenge is not only about starting a project with an architecture that allows its progressive evolution but also keeping it on an upward curve in terms of its quality attributes.
To the extent that the Solution Architecture allows flexible measurements, testing, and scaling, the indications will be better for the project and, therefore, for the company.
This work is based on the principles of Clean Architecture, the style of architecture that Robert C. Martin introduced us years ago. It is a text focused on solutions designed for iOS; however, it could affirm that 90% of the concepts also apply to Android solutions.
The first thing that is developed in the book is the design principles that are the basis for using the following themes. Concepts such as dependency inversion, inversion of control and dependency injection are exposed for your clear understanding, with the additional purpose of knowing how to differentiate between one concept or another.
Then the relationship between the components is reviewed through levels and layers. This analysis is necessary to locate each element with its respective responsibilities in the right place.
Once the parts are located, the need arises to communicate them with each other. This is where the reader is oriented to the ports and adapters chapter to determine the appropriate integration mechanisms between components of different layers and levels.
Continuing with the development of the topic, we go down a little more in detail to analyze the alternatives for organizing the components in directories or folders and what might be the limits established between them.
In this way, two essential chapters are reached in the design of a mobile solution, the Design patterns, and Considerations in Architecture.
Design patterns expose those known and recommended patterns to apply to mobile solutions. Innovative pattern variables are also presented that could be useful for startups and companies specialized in this type of service.
In the chapter that develops considerations in architecture, a set of arguments is presented that could answer questions that we as a product development team usually ask ourselves daily while implementing it under the Clean Architecture framework. That is a chapter that I hope is controversial due to the particular existence of opinions in another sense, that is precisely one of the objectives that I seek to achieve with this work. To lead the reader to debate and carry out their analyses, they apply the most appropriate solution in their solutions.
Subsequently, to complement the two previous chapters, the orchestration strategies between local data (in memory or cache) and remote data (external APIs and other sources) are developed. A plan that sooner rather than later should be considered in most solutions.
And finally, the topic developed in the chapter on implementation details corresponds to techniques used properly in iOS that help to apply Clean Architecture in a source code environment.
With this content and a couple of annexes, the present work is closed, which I hope will be of liking and utility for the reader.
About the Author
Yair is a Software Architect specialized in mobile solutions. For more than a decade he has been designing and developing products for different companies in different areas such as finance, entertainment, social.
He likes to teach and share his knowledge in one of his most passionate fields, software design, and development.