How to avoid spaghetti<br />architectures?<br />Worldwide OutSystems <br />Certified Professionals Meet-up<br />Paulo Garr...
OurGoals<br />Share our experience with you<br />Give you tips for creating good architectures<br />
Pedro Queirós<br />2.000.000<br />software units<br />
Paulo Garrudo<br />25<br />agile projects<br />
Design<br />Implementation<br />Documentation<br />Evaluation<br />
Invoicing<br />CRM<br />SAP Integration<br />Impact<br />FleetManagement<br />Human Resources<br />Worldwide OutSystems <b...
Productivity<br />
Team Happiness<br />
LowReusability<br />
Out of Control<br />
Thefirsttwotests…<br />Can you deploy quickly?<br />test #1<br />Does the team complain about "code clashing"?<br />test #...
Design<br />
Design<br />Design first, develop second<br />Keep it simple, yet modular<br />Don’t focus on optimization details<br />Va...
Design<br />Did you validate your architecture with peers?<br />test #3<br />Can you identify the core modules?<br />test ...
Implementation<br />
Implementation<br />Create well defined modules<br />Simplify with abstraction<br />Isolate integrations<br />Use a Model ...
Implementation<br />Can you foresee module changes  for new requirements? <br />test #6<br />Is it clear which module is r...
Documentation<br />
Documentation<br />Just do it!<br />Protect your architecture from 3rd parties<br />Be ware: code still “compiles” with a ...
Documentation<br />Is the team aware of the system’s architecture? <br />test #9<br />Why are you changing?<br />test #10<...
Evolution<br />
Evaluation<br />Iteratively and during the project<br />Grow your team’s architecture knowledge<br />Keep an updated list ...
Disclamer<br />Loremipsumdolorsitamet, consecteturadipiscingelit. Quisqueiaculisvehiculanisinecvenenatis. Integerpretiumel...
Thankyou!<br />Paulo Garrudo<br />paulo.garrudo@outsystems.com<br />Pedro Queirós<br />pedro.queiros@outsystems.com<br />
Upcoming SlideShare
Loading in …5
×

OutSystems Certified Professionals Meet Up - How To Avoid Spaghetti Architectures

1,260 views

Published on

Certified Professionals Meet-up:
Paulo and Pedro worked in some of the most complex projects delivered with the Agile Platform. They will share with you a set of tips and best practices about architecture design and refactoring. You will be able to apply these in your own projects and avoid spaghetti architectures that would eventually kill your project.

  • Be the first to comment

OutSystems Certified Professionals Meet Up - How To Avoid Spaghetti Architectures

  1. 1. How to avoid spaghetti<br />architectures?<br />Worldwide OutSystems <br />Certified Professionals Meet-up<br />Paulo Garrudo<br />Pedro Queirós<br />
  2. 2. OurGoals<br />Share our experience with you<br />Give you tips for creating good architectures<br />
  3. 3. Pedro Queirós<br />2.000.000<br />software units<br />
  4. 4. Paulo Garrudo<br />25<br />agile projects<br />
  5. 5. Design<br />Implementation<br />Documentation<br />Evaluation<br />
  6. 6. Invoicing<br />CRM<br />SAP Integration<br />Impact<br />FleetManagement<br />Human Resources<br />Worldwide OutSystems <br />Certified Professionals Meet-up<br />Paulo Garrudo, Expert Deliver Manager<br />Pedro Queirós, Expert Developer<br />
  7. 7. Productivity<br />
  8. 8. Team Happiness<br />
  9. 9. LowReusability<br />
  10. 10. Out of Control<br />
  11. 11. Thefirsttwotests…<br />Can you deploy quickly?<br />test #1<br />Does the team complain about "code clashing"?<br />test #2<br />
  12. 12. Design<br />
  13. 13. Design<br />Design first, develop second<br />Keep it simple, yet modular<br />Don’t focus on optimization details<br />Validate your design with peers<br />Listen to the business<br />
  14. 14. Design<br />Did you validate your architecture with peers?<br />test #3<br />Can you identify the core modules?<br />test #4<br />Can you map your business into the architecture? <br />test #5<br />
  15. 15. Implementation<br />
  16. 16. Implementation<br />Create well defined modules<br />Simplify with abstraction<br />Isolate integrations<br />Use a Model View Controller pattern<br />
  17. 17. Implementation<br />Can you foresee module changes for new requirements? <br />test #6<br />Is it clear which module is responsible for an integration? <br />test #7<br />Can you reuse/replace a module? <br />test #8<br />
  18. 18. Documentation<br />
  19. 19. Documentation<br />Just do it!<br />Protect your architecture from 3rd parties<br />Be ware: code still “compiles” with a broken architecture<br />
  20. 20. Documentation<br />Is the team aware of the system’s architecture? <br />test #9<br />Why are you changing?<br />test #10<br />
  21. 21. Evolution<br />
  22. 22. Evaluation<br />Iteratively and during the project<br />Grow your team’s architecture knowledge<br />Keep an updated list of tests/metrics <br />
  23. 23.
  24. 24. Disclamer<br />Loremipsumdolorsitamet, consecteturadipiscingelit. Quisqueiaculisvehiculanisinecvenenatis. Integerpretiumelementummetusconsecteturgravida. Etiamorcisapien, interdumbibendumvulputate eu, lobortisnecpurus. Insedduinisl, neccondimentumaugue. Maecenasfeugiatsemperhendrerit. Etiamconsequatblanditnunc, necviverrasapiencursus quis. Utaliquetipsumacnisivenenatis porta. Sedutrisus urna, tinciduntinterdum massa. Maurisconvalliserat a risusvenenatisaccumsan. Praesentmetusfelis, fringillaegetelementumnon, semper a purus. Morbiac justo quis magna eleifendplacerat. Etiamrhoncusvenenatiselit, velimperdietarcuconvallisid.Aliquampellentesquedoloregetestdignissimtristique. Curabiturinmolliselit. Sed vitae nislnisl. Maurisvehicula porta quamegetmattis. Morbilectusvelit, volutpat quis tincidunt quis, adipiscingiddiam.<br />Suspendissepotenti. Utaliquetullamcorperauctor. Aeneanlobortiseuismodipsum, quis rhoncusfelisiaculisnec. Nunctinciduntaccumsan porta. Nullaviverramauris quis loremhendreritornare. Pellentesque porta rhoncusodio, eu accumsanleoelementumid.Inlectusrisus, pulvinar eu scelerisqueeget, porttitorsednibh. Vestibulumetpretiumpurus. Inrisus justo, vestibulumidvulputateet, rhoncus quis dui. Quisquenequetortor, ultriciesacpellentesquevel, tempor eu nibh. Sed quis lectusnecelitauctorsemperac vitae dui. Pellentesquehendreritpharetratincidunt. Nullaturpis massa, dignissimidmolestieat, volutpatindolor. Vestibulum sem arcu, auctorsedconguesitamet, feugiatidnisi. Maurisnecdiam quis estfacilisis porta egetnondolor. Aliquameratvolutpat. Quisqueutnisllacus, inpharetranibh. Namfringillamalesuadaenim, egetcommodoligulasodalesvel. Praesentvulputateplaceratfelis vitae volutpat. Pellentesquevelpulvinarfelis.<br />Nullafacilisi. Uttincidunt justo eu magna pretiumnonaliquam urna faucibus. Nullam vitae malesuadaleo. Fusce eu turpis a metusultricieslaoreet. Integerlacuslorem, convallisidcommodonec, laoreetin magna. Nuncaliquetfeugiatelit, egetegestasturpisdictumfacilisis. Sed vitae dignissimneque. Vestibulumfeugiat, ligula quis egestasplacerat, ante justo imperdiet libero, egetsemperrisusipsumsitameterat. Quisquesodalesconsecteturenim, ultriciesplaceratquamvehicula vitae. Aliquamsedneque vitae felisfacilisisimperdiet. Proinintellus eros, fringillafermentumnibh.<br />
  25. 25. Thankyou!<br />Paulo Garrudo<br />paulo.garrudo@outsystems.com<br />Pedro Queirós<br />pedro.queiros@outsystems.com<br />

×