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
Software Components @ RUG-B
Search
shagemann
November 03, 2016
Technology
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Software Components @ RUG-B
shagemann
November 03, 2016
More Decks by shagemann
See All by shagemann
Gradually Modularizing your Monolith with Ruby Packs and Packwerk
shagemann
0
1.5k
Structural Engineering in Ruby
shagemann
0
1.6k
Productize Your Services! @ springone 2017
shagemann
0
1.6k
Boulder Ruby Group Beginner's Track - What to Do Next?
shagemann
0
110
GET STARTED WITH COMPONENT-BASED RAILS APPLICATIONS! @ Rocky Mountain Ruby 2015
shagemann
1
170
Get started with Component-Based Rails @ RailsConf 2015
shagemann
3
1.9k
Refactoring towards Component-based Rails Architectures @ RailsConf 2014
shagemann
5
2.1k
The Rich, Flowers, and Piles of Sh%#t - And What To Do About It
shagemann
0
120
Reclaim your architecture @ sbonrails
shagemann
1
130
Other Decks in Technology
See All in Technology
小さいから、全部わかる。— 常駐AI "xangi" のすすめ
sugupoko
0
290
【Claude Code】鹿野さんに聞く 私の推しの並行開発環境 大公開 / claude-code-parallel-2026-07-15
tonkotsuboy_com
9
5.5k
証券システムを10年Scalaで作り続けるということ - 関数型まつり2026
krrrr38
3
830
プロンプト_きのこカンファレンス2026_LT
yurufuwahealer
0
150
なぜ人は自分のプロジェクトを 「なんちゃってアジャイル」と 自嘲するのか
kozotaira
0
280
AI時代のエンジニアキャリアについて今一度考える
sakamoto_582
2
1.5k
AI時代の EM への処方箋
staka121
PRO
0
120
SRE本の知られざる名シーン / The Hidden Gems of Google SRE Book
nari_ex
1
330
プロダクトだけじゃない、社内プロセスにおける自動化・省力化ノススメ
kakehashi
PRO
1
3.5k
ループエンジニアリングでE2Eテストを実践
noriyukitakei
0
340
Zoom2Youtube.Claude
kawaguti
PRO
3
490
AI Agent SaaS を支える自社仮想化基盤への挑戦と実運用 / ai-agent-saas-virtualization
flatt_security
2
3.7k
Featured
See All Featured
Building Applications with DynamoDB
mza
96
7.1k
4 Signs Your Business is Dying
shpigford
187
22k
Building Adaptive Systems
keathley
44
3.1k
Scaling GitHub
holman
464
140k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
340
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
210
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Side Projects
sachag
455
43k
Transcript
Software Components Why - How - What Stephan Hagemann -
2016-11-03 - RUG-B @shageman
WRITE BETTER SOFTW ARE @shageman
@shageman
WHAT IS A COMPONENT? @shageman
Labeled Content + Explicit Dependencies @shageman
Labeled Content + Explicit Dependencies @shageman
@shageman
Labeled Content + Explicit Dependencies @shageman
@shageman
@shageman
@shageman
@shageman
@shageman
A depends on B … A B @shageman
thus B can not depend on A A B X
@shageman
and this doesn’t work either A B X C @shageman
X and Y as the same thing @shageman Y X
Uncle Bob says … I like to draw these lines.
Architecture is the art of drawing lines. With the interesting rule that once you have drawn the lines, all the dependencies that cross that line go in the same direction… @shageman
This is why objects are typically not components… @shageman
@shageman
WHY COMPONENTS? @shageman
Growing size @shageman
Exploding complexity SIZE POSSIBLE INTERACTIONS @shageman
Effect of structure VS @shageman
SIZE POSSIBLE INTERACTIONS Reduced exploding complexity @shageman
@shageman
Communication @shageman
Collaboration @shageman
Creation @shageman
Maintenance @shageman
Comprehension @shageman
HOW TO IMPLEMENT COMPONENTS? @shageman
None
Code!! @shageman
And in other languages? Ruby/Rails: Gems + Engines Java: Modules
Go: packages Javascript: packages (in npm lingo) C: file compiling + linking @shageman
HOW TO DETERMINE WHAT SHOULD BE A COMPONENT? @shageman
SUMMARY @shageman
Components = Labeled Content + Explicit Dependencies @shageman WHAT
Components improve… communication creation collaboration maintenance comprehension complexity @shageman WHY
In Ruby and Rails… gems and engines can be used
as components @shageman HOW
@shageman
@shageman
https://leanpub.com/cbra/c/rugb @shageman Discount Code!
Further reading https://leanpub.com/cbra http://cbra.info https://github.com/shageman http://appcontinuum.io @shageman
THANKS! @shageman https://leanpub.com/cbra/c/rugb