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.5k
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.4k
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
150
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
120
Other Decks in Technology
See All in Technology
"まず試す"ためのDatabricks Apps活用法 / Databricks Apps for Early Experiments and Validation
nttcom
1
220
20260410 - CNTUG meetup #72 - DiskImage Builder 介紹:以 Kubespray CI 打造 RockyLinux 10 Cloud Image 為例
tico88612
0
110
ADOTで始めるサーバレスアーキテクチャのオブザーバビリティ
alchemy1115
2
260
OpenClaw初心者向けセミナー / OpenClaw Beginner Seminar
cmhiranofumio
0
360
GitHub Copilotを極める会 - 開発者のための活用術
findy_eventslides
6
3.6k
LLM とプロンプトエンジニアリング/チューターを定義する / LLMs and Prompt Engineering, and Defining Tutors
ks91
PRO
0
310
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
2
17k
Babylon.js Japan Activities (2026/4)
limes2018
0
200
制約を設計する - 非決定性との境界線 / Designing constraints
soudai
PRO
6
2.4k
DIPS2.0データに基づく森林管理における無人航空機の利用状況
naokimuroki
0
150
【PHPカンファレンス小田原2026】Webアプリケーションエンジニアにも知ってほしい オブザーバビリティ の本質
fendo181
0
490
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.4k
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
106
240k
We Are The Robots
honzajavorek
0
210
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Automating Front-end Workflow
addyosmani
1370
200k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
710
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
320
Ethics towards AI in product and experience design
skipperchong
2
250
Thoughts on Productivity
jonyablonski
76
5.1k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
390
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