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.5k
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
170
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
130
Other Decks in Technology
See All in Technology
飲食店もAIで。レジ締めやハンディシステムをつくってる話 / Using AI for restaurant management
vtryo
0
210
AWS Summit 2026で見えたSIerにとっての Amazon Quickの位置づけ
maf_0521
0
130
從觀望到全公司落地:AI Agentic Coding 導入實戰 — 流程整合與安全治理
appleboy
0
250
AIで政治は変わるのか? — 中高生と考えたAI時代の民主主義(東海高校サタデープログラム)
eitarosuda
0
200
Terraform 101 (初心者向け) 資料
shuadachi
0
100
ClaudeCodeの公式Memory Architecture
nagatsu
0
120
Text-to-SQLをAgentCoreで実現し、生成されるSQLの精度を定量的に評価する
yakumo
2
180
組織における AI-DLC 実践
askul
0
220
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
10
1.7k
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
300
NDIAS CTF 2026 問題解説会資料
bata_24
0
130
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.2k
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
450
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
850
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.8k
Technical Leadership for Architectural Decision Making
baasie
3
430
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
740
Thoughts on Productivity
jonyablonski
76
5.2k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
240
Ethics towards AI in product and experience design
skipperchong
2
320
Mobile First: as difficult as doing things right
swwweet
225
10k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
250
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