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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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.6k
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
人とエージェントが高め合う協業設計
kintotechdev
0
760
[Droidcon Orlando '26] The Android Lens: Applying Mobile Forensics to AI Performance
amanda_hinchman
1
110
生成AI×AWS CDK×AWS FISで"振り返れる"ミニGameDayをつくろう
yoshimi0227
2
530
【公開用】AI_Dev_Ex2026_AI_登壇資料
matsuritechnologies
PRO
1
490
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
620
文字起こし基盤の信頼性
abnoumaru
0
120
『モデル + ハーネス』で読み解く AIエージェント入門
oracle4engineer
PRO
2
170
事業成長とAI活用を止めないデータ基盤アーキテクチャの設計思想
hiracky16
0
540
41歳でAWSが好きすぎてITエンジニアになったおっさんの話
yama3133
1
740
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
1
280
AI時代こそ、スケールしないことをしよう -「作る人」から「なぜ作るか」を考える人へ / Do Things That Don't Scale in the AI Era — From How to Why
kaminashi
1
100
現場との対話から始める “作る前に問い直す”業務改善
mochico50
1
230
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Everyday Curiosity
cassininazir
0
260
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
340
Un-Boring Meetings
codingconduct
0
350
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
550
Odyssey Design
rkendrick25
PRO
2
730
The Curious Case for Waylosing
cassininazir
1
440
Practical Orchestrator
shlominoach
191
11k
Designing Experiences People Love
moore
143
24k
Marketing to machines
jonoalderson
1
5.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