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.1k
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
890
Structural Engineering in Ruby
shagemann
0
1k
Productize Your Services! @ springone 2017
shagemann
0
1.1k
Boulder Ruby Group Beginner's Track - What to Do Next?
shagemann
0
80
GET STARTED WITH COMPONENT-BASED RAILS APPLICATIONS! @ Rocky Mountain Ruby 2015
shagemann
1
130
Get started with Component-Based Rails @ RailsConf 2015
shagemann
3
1.3k
Refactoring towards Component-based Rails Architectures @ RailsConf 2014
shagemann
5
1.5k
The Rich, Flowers, and Piles of Sh%#t - And What To Do About It
shagemann
0
64
Reclaim your architecture @ sbonrails
shagemann
1
99
Other Decks in Technology
See All in Technology
飲食店データの分析事例とそれを支えるデータ基盤
kimujun
0
220
型チェック 速度改善 奮闘記⌛
tocomi
1
180
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
4
250
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
950
OCI Vault 概要
oracle4engineer
PRO
0
9.8k
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
230
日経電子版のStoreKit2フルリニューアル
shimastripe
1
160
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
640
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
3
360
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
3
670
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.9k
Platform Engineering for Software Developers and Architects
syntasso
1
530
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
20
1.1k
How to Ace a Technical Interview
jacobian
276
23k
GraphQLとの向き合い方2022年版
quramy
43
13k
The World Runs on Bad Software
bkeepers
PRO
65
11k
KATA
mclloyd
29
14k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Producing Creativity
orderedlist
PRO
341
39k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
How STYLIGHT went responsive
nonsquared
95
5.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
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