Software ComponentsWhy - How - WhatStephan Hagemann - 2016-11-03 - RUG-B@shageman
View Slide
WRITE BETTERSOFTWARE@shageman
@shageman
WHAT IS ACOMPONENT?@shageman
Labeled Content+ Explicit Dependencies@shageman
A depends on B …AB@shageman
thus B can not depend on AABX@shageman
and this doesn’t work eitherABXC@shageman
X and Y as the same thing@shagemanYX
Uncle Bob says… I like to draw these lines. Architecture is the art ofdrawing lines. With the interesting rule that once you havedrawn the lines, all the dependencies that cross that line goin the same direction…@shageman
This is why objects are typically not components…@shageman
WHY COMPONENTS?@shageman
Growing size@shageman
Exploding complexitySIZEPOSSIBLEINTERACTIONS@shageman
Effect of structureVS@shageman
SIZEPOSSIBLEINTERACTIONSReduced explodingcomplexity@shageman
Communication@shageman
Collaboration@shageman
Creation@shageman
Maintenance@shageman
Comprehension@shageman
HOW TO IMPLEMENTCOMPONENTS?@shageman
Code!!@shageman
And in other languages?Ruby/Rails: Gems + EnginesJava: ModulesGo: packagesJavascript: packages (in npm lingo)C: file compiling + linking@shageman
HOW TO DETERMINEWHAT SHOULD BE ACOMPONENT?@shageman
SUMMARY@shageman
Components =Labeled Content+ Explicit Dependencies@shagemanWHAT
Components improve…communicationcreationcollaborationmaintenancecomprehensioncomplexity@shagemanWHY
In Ruby and Rails…gems and engines can be used as components@shagemanHOW
https://leanpub.com/cbra/c/rugb@shagemanDiscount Code!
Further readinghttps://leanpub.com/cbrahttp://cbra.infohttps://github.com/shagemanhttp://appcontinuum.io@shageman
THANKS!@shagemanhttps://leanpub.com/cbra/c/rugb