Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Software Components @ RUG-B

Affa5b7b3a311fcf5f868859d586b410?s=47 shagemann
November 03, 2016

Software Components @ RUG-B

Affa5b7b3a311fcf5f868859d586b410?s=128

shagemann

November 03, 2016
Tweet

Transcript

  1. Software Components Why - How - What Stephan Hagemann -

    2016-11-03 - RUG-B @shageman
  2. WRITE BETTER SOFTW ARE @shageman

  3. @shageman

  4. WHAT IS A COMPONENT? @shageman

  5. Labeled Content + 
 
 Explicit Dependencies @shageman

  6. Labeled Content + 
 
 Explicit Dependencies @shageman

  7. @shageman

  8. Labeled Content + 
 Explicit Dependencies @shageman

  9. @shageman

  10. @shageman

  11. @shageman

  12. @shageman

  13. @shageman

  14. A depends on B … A B @shageman

  15. thus B can not depend on A A B X

    @shageman
  16. and this doesn’t work either A B X C @shageman

  17. X and Y as the same thing @shageman Y X

  18. 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
  19. This is why objects are typically not components… @shageman

  20. @shageman

  21. WHY COMPONENTS? @shageman

  22. Growing size @shageman

  23. Exploding complexity SIZE POSSIBLE INTERACTIONS @shageman

  24. Effect of structure VS @shageman

  25. SIZE POSSIBLE INTERACTIONS Reduced exploding complexity @shageman

  26. @shageman

  27. Communication @shageman

  28. Collaboration @shageman

  29. Creation @shageman

  30. Maintenance @shageman

  31. Comprehension @shageman

  32. HOW TO IMPLEMENT COMPONENTS? @shageman

  33. None
  34. Code!! @shageman

  35. And in other languages? Ruby/Rails: Gems + Engines Java: Modules

    Go: packages Javascript: packages (in npm lingo) C: file compiling + linking @shageman
  36. HOW TO DETERMINE WHAT SHOULD BE A COMPONENT? @shageman

  37. SUMMARY @shageman

  38. Components = Labeled Content + 
 Explicit Dependencies @shageman WHAT

  39. Components improve… communication creation collaboration maintenance comprehension complexity @shageman WHY

  40. In Ruby and Rails… gems and engines can be used

    as components @shageman HOW
  41. @shageman

  42. @shageman

  43. https://leanpub.com/cbra/c/rugb @shageman Discount Code!

  44. Further reading https://leanpub.com/cbra http://cbra.info https://github.com/shageman http://appcontinuum.io @shageman

  45. THANKS! @shageman https://leanpub.com/cbra/c/rugb