Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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.4k
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.3k
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
93
GET STARTED WITH COMPONENT-BASED RAILS APPLICATIONS! @ Rocky Mountain Ruby 2015
shagemann
1
140
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
87
Reclaim your architecture @ sbonrails
shagemann
1
110
Other Decks in Technology
See All in Technology
事業部のプロジェクト進行と開発チームの改善の “時間軸" のすり合わせ
konifar
9
2.8k
pmconf2025 - 他社事例を"自社仕様化"する技術_iRAFT法
daichi_yamashita
0
420
.NET 10 のパフォーマンス改善
nenonaninu
2
4.6k
なぜ使われないのか?──定量×定性で見極める本当のボトルネック
kakehashi
PRO
1
680
A Compass of Thought: Guiding the Future of Test Automation ( #jassttokai25 , #jassttokai )
teyamagu
PRO
1
170
Claude Code Getting Started Guide(en)
oikon48
0
140
Digitization部 紹介資料
sansan33
PRO
1
6.1k
知っていると得する!Movable Type 9 の新機能を徹底解説
masakah
0
200
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
9.9k
プラットフォームエンジニアリングとは何であり、なぜプラットフォームエンジニアリングなのか
doublemarket
1
540
freeeにおけるファンクションを超えた一気通貫でのAI活用
jaxx2104
3
570
プロダクトマネジメントの分業が生む「デリバリーの渋滞」を解消するTPMの越境
recruitengineers
PRO
3
390
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
It's Worth the Effort
3n
187
29k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
GitHub's CSS Performance
jonrohan
1032
470k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Embracing the Ebb and Flow
colly
88
4.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
120
20k
A Modern Web Designer's Workflow
chriscoyier
697
190k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
The Language of Interfaces
destraynor
162
25k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
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