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
960
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
670
Structural Engineering in Ruby
shagemann
0
910
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
コンパウンドスタートアップのためのスケーラブルでセキュアなInfrastructure as Codeパイプラインを考える / Scalable and Secure Infrastructure as Code Pipeline for a Compound Startup
yuyatakeyama
3
4.6k
Terraformあれやこれ/terraform-this-and-that
emiki
8
1.3k
Reducing Cross-Zone Egress at Spotify with Custom gRPC Load Balancing Recap
koh_naga
0
190
Janus
bkuhlmann
1
490
開発生産性向上サービスを作るFindyが自分たちで開発生産性を爆上げした組織づくりの歩み / Findy's path to boosting its own development productivity 2024-04-17
ma3tk
3
470
Azure犬駆動開発の記録/GlobalAzureFukuoka2024_20240420
nina01
1
180
DevOpsメトリクスとアウトカムの接続にトライ!開発プロセスを通して計測できるメトリクスの活用方法
ham0215
2
230
本当のAWS基礎
toru_kubota
0
380
推しは推せるときに推せ! プロダクトにフィードバックしていこう
nakasho
0
240
Tableau事例紹介 / Tableau Case Study of Eureka
kazuya_araki_tokyo
1
180
AOAI をきっかけに 社内の Azure 管理を見直した話
recruitengineers
PRO
1
200
2024/4/26 コンピュータ歴史博物館解説告知
toshi_atsumi
0
210
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
59
3.9k
What's in a price? How to price your products and services
michaelherold
237
11k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
154
14k
The Brand Is Dead. Long Live the Brand.
mthomps
48
28k
Product Roadmaps are Hard
iamctodd
43
9.7k
A Modern Web Designer's Workflow
chriscoyier
689
190k
BBQ
matthewcrist
80
8.8k
Music & Morning Musume
bryan
41
5.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
Six Lessons from altMBA
skipperchong
20
3k
The Invisible Side of Design
smashingmag
294
49k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
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