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
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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.6k
Structural Engineering in Ruby
shagemann
0
1.6k
Productize Your Services! @ springone 2017
shagemann
0
1.6k
Boulder Ruby Group Beginner's Track - What to Do Next?
shagemann
0
110
GET STARTED WITH COMPONENT-BASED RAILS APPLICATIONS! @ Rocky Mountain Ruby 2015
shagemann
1
180
Get started with Component-Based Rails @ RailsConf 2015
shagemann
3
1.9k
Refactoring towards Component-based Rails Architectures @ RailsConf 2014
shagemann
5
2.1k
The Rich, Flowers, and Piles of Sh%#t - And What To Do About It
shagemann
0
120
Reclaim your architecture @ sbonrails
shagemann
1
140
Other Decks in Technology
See All in Technology
AIがAPIを書く時代に、私たちは何を設計すべきか
nagix
0
210
AI ネイティブな組織に Gemini Enterprise Agent Platform がなぜ必要なのか
asei
1
160
認知負荷をGemini で溶かす — GKE 基盤「Orbit」における AI エージェントの実践
sansantech
PRO
1
230
検索技術知識0のエンジニアが広告検索システムを内製化して運用するまで
lycorptech_jp
PRO
0
210
BigQuery を検索ソースとした AI Agent の作り方って 〇〇 通りあんねん
satohjohn
0
150
サイバー捜査員研修(前半)
nomizone
1
1.4k
データ組織の転換期 一足飛びしない段階的戦略
leveragestech
PRO
0
150
Pavlokで始める電撃駆動開発
sgrsn
0
160
Amazon Bedrock Managed Knowledge BaseDive Deep
ren8k
0
380
現場で使える AWS DevOps Agent 活用ノウハウ - Release Management 機能の検証結果を添えて / AWS DevOps Agent Release Management and Know-How
kinunori
5
920
【CEDEC2026】『ウマ娘 プリティーダービー』 英語版のキャラクターの方言や口調をローカライズするための創造的アプローチ
cygames
PRO
1
150
論語・武士道・産業革命から見る かわるもの、かわらないもの
ichimichi
8
2.2k
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Abbi's Birthday
coloredviolet
3
9k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
480
Ethics towards AI in product and experience design
skipperchong
2
340
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
500
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
First, design no harm
axbom
PRO
2
1.2k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
260
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
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