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
0
1.5k
Software Components @ RUG-B
shagemann
November 03, 2016
Tweet
Share
More Decks by shagemann
See All by shagemann
Gradually Modularizing your Monolith with Ruby Packs and Packwerk
shagemann
0
1.4k
Structural Engineering in Ruby
shagemann
0
1.4k
Productize Your Services! @ springone 2017
shagemann
0
1.4k
Boulder Ruby Group Beginner's Track - What to Do Next?
shagemann
0
96
GET STARTED WITH COMPONENT-BASED RAILS APPLICATIONS! @ Rocky Mountain Ruby 2015
shagemann
1
150
Get started with Component-Based Rails @ RailsConf 2015
shagemann
3
1.7k
Refactoring towards Component-based Rails Architectures @ RailsConf 2014
shagemann
5
1.9k
The Rich, Flowers, and Piles of Sh%#t - And What To Do About It
shagemann
0
90
Reclaim your architecture @ sbonrails
shagemann
1
120
Other Decks in Technology
See All in Technology
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
2025年 山梨の技術コミュニティを振り返る
yuukis
0
150
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.9k
Eight Engineering Unit 紹介資料
sansan33
PRO
0
6.1k
Node vs Deno vs Bun 〜推しランタイムを見つけよう〜
kamekyame
1
260
re:Invent2025 セッションレポ ~Spec-driven development with Kiro~
nrinetcom
PRO
2
170
AWS re:Invent2025最新動向まとめ(NRIグループre:Cap 2025)
gamogamo
0
150
小さく、早く、可能性を多産する。生成AIプロジェクト / prAIrie-dog
visional_engineering_and_design
0
340
田舎で20年スクラム(後編):一個人が企業で長期戦アジャイルに挑む意味
chinmo
1
1.1k
AI との良い付き合い方を僕らは誰も知らない (WSS 2026 静岡版)
asei
1
230
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
60k
Featured
See All Featured
It's Worth the Effort
3n
187
29k
New Earth Scene 8
popppiees
0
1.3k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
What the history of the web can teach us about the future of AI
inesmontani
PRO
0
390
Measuring & Analyzing Core Web Vitals
bluesmoon
9
720
Facilitating Awesome Meetings
lara
57
6.7k
What's in a price? How to price your products and services
michaelherold
246
13k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
100
Building Adaptive Systems
keathley
44
2.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.3k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
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