Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
iOS Application Architecture
Search
Oliver Eikemeier
October 29, 2015
Programming
1
110
iOS Application Architecture
Zalando teck talk held at October 29, 2015
Oliver Eikemeier
October 29, 2015
Tweet
Share
More Decks by Oliver Eikemeier
See All by Oliver Eikemeier
One weird trick that will make your development life easier forever
eik
2
94
Other Decks in Programming
See All in Programming
チーム力を高めるスクラム実践法:カンバン公開と課題攻略について - ニフティのスクラムトーク Vol. 2 - NIFTY Tech Talk #18
niftycorp
PRO
1
110
今、知っておきたい! 生成AIエージェントの世界
elith
3
340
What We Can Learn From OSS
inouehi
0
400
FigmaとPHPで作る1ミリたりとも表示崩れしない最強の帳票印刷ソリューション
ttskch
39
18k
[SF Ruby, March 2024] Rails on Wasm
palkan
0
380
Changed Rules: Architectures with Lightweight Stores
manfredsteyer
PRO
0
230
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
120
元気予報
suu_mire0726
0
860
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.7k
ゆるい個人開発のススメ
kuroppe1819
10
940
Elm 0.19.0 Changes
bkuhlmann
0
480
Blue/Greenデプロイの導入による 運用フローの改善
kudoas
1
350
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
503
110k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
60
14k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
18
1.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
76
41k
Designing with Data
zakiwarfel
95
4.8k
Principles of Awesome APIs and How to Build Them.
keavy
120
16k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
658
120k
Building Flexible Design Systems
yeseniaperezcruz
318
37k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
The Pragmatic Product Professional
lauravandoore
24
5.8k
Optimizing for Happiness
mojombo
370
69k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Transcript
Modular iOS Application Architecture 1 — © Zalando SE, 2015
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
Modules should be - Developed independently - Build independently -
Tested independently - Changed or replaced independently 3 — © Zalando SE, 2015
Building Blocks Part 1 How can we assemble an App
out of independent modules? 4 — © Zalando SE, 2015
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
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
The Dependency Inversion Principle Abstractions should not depend upon details.Det
Details should depend upon abstractions. Det Details: Implementation details 7 — © Zalando SE, 2015
Building Blocks Part 2 → Inversion of ControlIoC IoC Martin
Fowler ‘04, martinfowler.com/articles/injection.html 8 — © Zalando SE, 2015
Inversion of Control Just declare static dependencies, leave object graph
composition to the framework 9 — © Zalando SE, 2015
Case Study We use a Service Locator as an IoC
container → But Address the Common Problems of a Service Locator 10 — © Zalando SE, 2015
Case Study Sample App: How do we do it? 11
— © Zalando SE, 2015
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
Case Study Sample App: Decorate me. 13 — © Zalando
SE, 2015
Is It Any Good? Yes! 14 — © Zalando SE,
2015
Is It Any Good? Yes! → Proven: Used over the
last two years → First Use: Monolithic Objective-C legacy App 15 — © Zalando SE, 2015
Is It Any Good? Yes! → Makes development fast, modules
testable → Plays well with Continuous Integration 16 — © Zalando SE, 2015
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
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
Thank You! Questions?A A The Answer is Yes, now what's
Your Question? 19 — © Zalando SE, 2015