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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
shagemann
November 03, 2016
Technology
1.6k
0
Share
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.5k
Structural Engineering in Ruby
shagemann
0
1.5k
Productize Your Services! @ springone 2017
shagemann
0
1.5k
Boulder Ruby Group Beginner's Track - What to Do Next?
shagemann
0
100
GET STARTED WITH COMPONENT-BASED RAILS APPLICATIONS! @ Rocky Mountain Ruby 2015
shagemann
1
160
Get started with Component-Based Rails @ RailsConf 2015
shagemann
3
1.8k
Refactoring towards Component-based Rails Architectures @ RailsConf 2014
shagemann
5
2k
The Rich, Flowers, and Piles of Sh%#t - And What To Do About It
shagemann
0
100
Reclaim your architecture @ sbonrails
shagemann
1
130
Other Decks in Technology
See All in Technology
AI: Making Admin and Users, Lives Better
kbmsg
0
120
「SaaSの次の時代」に重要性を増すステークホルダーマネジメントの要諦 ~解像度を圧倒的に高めPdMの価値を最大化させる方法~
kakehashi
PRO
3
2.6k
生成AI時代のドキュメントに対する期待の整理と実践から得た学び / Rethinking Documentation for LLM: Lessons from Practice
bitkey
PRO
1
100
AIはハッカーを減らすのか、増やすのか?──現役ホワイトハッカーから見るAI時代のリアル【MEGU-Meet】
cscengineer
PRO
0
210
20年前の「OSS革命」に学ぶ AI時代の生存戦略
samakada
0
490
The Journey of Box Building
tagomoris
4
3.6k
扱える不確実性を増やしていく - スタートアップEMが考える「任せ方」
kadoppe
0
320
巨大プラットフォームを進化させる「第3のROI」
recruitengineers
PRO
2
1.3k
Do Ruby::Box dream of Modular Monolith?
joker1007
1
360
CloudTrail を見つめ直してみる
kazzpapa3
1
120
ネットワーク運用を楽にするAWS DevOps Agent活用法!! / 20260421 Masaki Okuda
shift_evolve
PRO
2
230
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.4k
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
150
The SEO Collaboration Effect
kristinabergwall1
1
430
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
180
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Ruling the World: When Life Gets Gamed
codingconduct
0
210
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.2k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
Evolving SEO for Evolving Search Engines
ryanjones
0
180
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
380
Art, The Web, and Tiny UX
lynnandtonic
304
21k
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