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
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
840
Structural Engineering in Ruby
shagemann
0
990
Productize Your Services! @ springone 2017
shagemann
0
1k
Boulder Ruby Group Beginner's Track - What to Do Next?
shagemann
0
79
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
98
Other Decks in Technology
See All in Technology
タイミーのレコメンドにおける ABテストの運用
ozeshun
1
160
OCI で始める!! Red Hat OpenShift / Get Started OpenShift on OCI
oracle4engineer
PRO
1
180
プログラム検証入門
riru
6
880
効果的なオンコール対応と障害対応
ryuichi1208
6
3.1k
サーバー管理しないサーバーサービスManaged DevOps Pool
kkamegawa
0
130
『GRANBLUE FANTASY Relink』ソフトウェアラスタライザによる実践的なオクルージョンカリング
cygames
0
170
事前準備が肝!AI活用のための業務改革
layerx
PRO
1
380
Google CloudのLLM活用の選択肢を広げるVertex AIのパートナーモデル
nayuts
0
130
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
46k
突撃! 隣のAmazon Bedrockユーザー 〜YouはどうしてAWSで?〜
minorun365
PRO
3
390
とあるOSSを継続可能にするための取り組みについて / OSS Refactoring Process
bun913
1
210
Cloud Run と GitHub Template Repository による軽量なアプリケーションプラットフォーム/ #nikkei_tech_talk
nikkei_engineer_recruiting
0
110
Featured
See All Featured
Optimizing for Happiness
mojombo
375
69k
Building a Scalable Design System with Sketch
lauravandoore
459
32k
A designer walks into a library…
pauljervisheath
201
24k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
41
6.5k
Testing 201, or: Great Expectations
jmmastey
36
7k
Visualization
eitanlees
142
15k
Designing with Data
zakiwarfel
98
5k
What's in a price? How to price your products and services
michaelherold
242
11k
A Tale of Four Properties
chriscoyier
155
22k
Designing Experiences People Love
moore
138
23k
Documentation Writing (for coders)
carmenintech
65
4.3k
It's Worth the Effort
3n
182
27k
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