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
970
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
680
Structural Engineering in Ruby
shagemann
0
920
Productize Your Services! @ springone 2017
shagemann
0
950
Boulder Ruby Group Beginner's Track - What to Do Next?
shagemann
0
72
GET STARTED WITH COMPONENT-BASED RAILS APPLICATIONS! @ Rocky Mountain Ruby 2015
shagemann
1
120
Get started with Component-Based Rails @ RailsConf 2015
shagemann
3
1.2k
Refactoring towards Component-based Rails Architectures @ RailsConf 2014
shagemann
5
1.4k
The Rich, Flowers, and Piles of Sh%#t - And What To Do About It
shagemann
0
53
Reclaim your architecture @ sbonrails
shagemann
1
94
Other Decks in Technology
See All in Technology
今年のRubyKaigiはProfiler Year🤘
osyoyu
0
390
The AI Revolution Will Not Be Monopolized: Behind the scenes
inesmontani
PRO
1
160
家族アルバム みてねにおけるGrafana活用術 / Grafana Meetup Japan Vol.1 LT
isaoshimizu
1
1k
非同期推論システムによるコスト削減と信頼性向上
koki_nishihara
1
360
.NET Profiler in 2024.
kkamegawa
2
1.5k
今さら聞けないDocker入門 〜 Dockerfileのベストプラクティス編
devops_vtj
7
930
EMとして2023年度に頑張ったこと / What we did well in FY2023 as a EM
pauli
1
250
チームでロジカルシンキングに改めて向き合っている話 〜学習環境と実践⽅法〜
sansantech
PRO
3
3.3k
How to do well in consulting–Balkan Ruby 2024
irinanazarova
0
140
Autonomous Database Cloud 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
15
35k
TechFeed Experts Night#27 〜 フロントエンドフレームワーク最前線 (Svelte)
baseballyama
2
590
Cloud Service Mesh に触れ合う
phaya72
1
230
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
13
8.3k
Git: the NoSQL Database
bkeepers
PRO
423
63k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.1k
[RailsConf 2023] Rails as a piece of cake
palkan
27
4k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Imperfection Machines: The Place of Print at Facebook
scottboms
261
12k
The Illustrated Children's Guide to Kubernetes
chrisshort
32
46k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
33
6k
Building Effective Engineering Teams - LeadDev
addyosmani
31
1.9k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Designing for humans not robots
tammielis
247
25k
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