SlideShare a Scribd company logo
1 of 25
How to avoid spaghetti architectures? Worldwide OutSystems  Certified Professionals Meet-up Paulo Garrudo Pedro Queirós
OurGoals Share our experience with you Give you tips for creating good architectures
Pedro Queirós 2.000.000 software units
Paulo Garrudo 25 agile projects
Design Implementation Documentation Evaluation
Invoicing CRM SAP Integration Impact FleetManagement Human Resources Worldwide OutSystems  Certified Professionals Meet-up Paulo Garrudo, Expert Deliver Manager Pedro Queirós, Expert Developer
Productivity
Team Happiness
LowReusability
Out of Control
Thefirsttwotests… Can you deploy quickly? test #1 Does the team complain about "code clashing"? test #2
Design
Design Design first, develop second Keep it simple, yet modular Don’t focus on optimization details Validate your design with peers Listen to the business
Design Did you validate your architecture with peers? test #3 Can you identify the core modules? test #4 Can you map your business into the architecture?  test #5
Implementation
Implementation Create well defined modules Simplify with abstraction Isolate integrations Use a Model View Controller pattern
Implementation Can you foresee module changes  for new requirements?  test #6 Is it clear which module is responsible for an integration?  test #7 Can you reuse/replace a module?  test #8
Documentation
Documentation Just do it! Protect your architecture from 3rd parties Be ware: code still “compiles” with a broken architecture
Documentation Is the team aware of the system’s architecture?  test #9 Why are you changing? test #10
Evolution
Evaluation Iteratively and during the project Grow your team’s architecture knowledge Keep an updated list of  tests/metrics
Disclamer 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. 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. 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.
Thankyou! Paulo Garrudo paulo.garrudo@outsystems.com Pedro Queirós pedro.queiros@outsystems.com

More Related Content

Similar to OutSystems Certified Professionals Meet Up - How To Avoid Spaghetti Architectures

Gamification of Chaos Testing
Gamification of Chaos TestingGamification of Chaos Testing
Gamification of Chaos TestingBram Vogelaar
 
BEGINNERS GUIDE TO SOFTWARE TESTING BY C.PADMINI
BEGINNERS GUIDE TO SOFTWARE TESTING BY C.PADMINIBEGINNERS GUIDE TO SOFTWARE TESTING BY C.PADMINI
BEGINNERS GUIDE TO SOFTWARE TESTING BY C.PADMINIsuhasreddy1
 
Continuous Delivery for Agile Teams
Continuous Delivery for Agile TeamsContinuous Delivery for Agile Teams
Continuous Delivery for Agile TeamsMike Bowler
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
Saurabh Resume Testing - 2.6 Yrs Exp
Saurabh Resume Testing - 2.6 Yrs ExpSaurabh Resume Testing - 2.6 Yrs Exp
Saurabh Resume Testing - 2.6 Yrs Expsaurabh patra
 
Odinstar 2017 - Real World Automating to Support Testing
Odinstar 2017 - Real World Automating to Support TestingOdinstar 2017 - Real World Automating to Support Testing
Odinstar 2017 - Real World Automating to Support TestingAlan Richardson
 
recapitulando: de métodos ágeis até lean startup
recapitulando: de métodos ágeis até lean startuprecapitulando: de métodos ágeis até lean startup
recapitulando: de métodos ágeis até lean startupPedro Axelrud
 
Learning shot 'how to measure performance in agile projects'
Learning shot  'how to measure performance in agile projects' Learning shot  'how to measure performance in agile projects'
Learning shot 'how to measure performance in agile projects' Fernando Ostanelli
 
Offshoring software development in Switzerland: You can do it
Offshoring software development in Switzerland: You can do itOffshoring software development in Switzerland: You can do it
Offshoring software development in Switzerland: You can do itAlexandre Masselot
 
Pin the tail on the metric v01 2016 oct
Pin the tail on the metric v01 2016 octPin the tail on the metric v01 2016 oct
Pin the tail on the metric v01 2016 octSteven Martin
 
Testing for the deeplearning folks
Testing for the deeplearning folksTesting for the deeplearning folks
Testing for the deeplearning folksVishwas N
 
Reversed Tests Pyramid - Agile Prague 2014
Reversed Tests Pyramid - Agile Prague 2014Reversed Tests Pyramid - Agile Prague 2014
Reversed Tests Pyramid - Agile Prague 2014Wiktor Żołnowski
 
Tester’s fate in an agile
Tester’s fate in an agileTester’s fate in an agile
Tester’s fate in an agiletspascoal
 
Clean Code - Increase your agility through higher quality software
Clean Code - Increase your agility through higher quality softwareClean Code - Increase your agility through higher quality software
Clean Code - Increase your agility through higher quality softwareEric Reichwaldt
 
Scrum And The Enterprise
Scrum And The EnterpriseScrum And The Enterprise
Scrum And The EnterpriseJames Peckham
 

Similar to OutSystems Certified Professionals Meet Up - How To Avoid Spaghetti Architectures (20)

Gamification of Chaos Testing
Gamification of Chaos TestingGamification of Chaos Testing
Gamification of Chaos Testing
 
Testing by padamini c
Testing by padamini cTesting by padamini c
Testing by padamini c
 
BEGINNERS GUIDE TO SOFTWARE TESTING BY C.PADMINI
BEGINNERS GUIDE TO SOFTWARE TESTING BY C.PADMINIBEGINNERS GUIDE TO SOFTWARE TESTING BY C.PADMINI
BEGINNERS GUIDE TO SOFTWARE TESTING BY C.PADMINI
 
Continuous Delivery for Agile Teams
Continuous Delivery for Agile TeamsContinuous Delivery for Agile Teams
Continuous Delivery for Agile Teams
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
Why more than half of ML models don't make it to production
Why more than half of ML models don't make it to productionWhy more than half of ML models don't make it to production
Why more than half of ML models don't make it to production
 
Saurabh Resume Testing - 2.6 Yrs Exp
Saurabh Resume Testing - 2.6 Yrs ExpSaurabh Resume Testing - 2.6 Yrs Exp
Saurabh Resume Testing - 2.6 Yrs Exp
 
Odinstar 2017 - Real World Automating to Support Testing
Odinstar 2017 - Real World Automating to Support TestingOdinstar 2017 - Real World Automating to Support Testing
Odinstar 2017 - Real World Automating to Support Testing
 
recapitulando: de métodos ágeis até lean startup
recapitulando: de métodos ágeis até lean startuprecapitulando: de métodos ágeis até lean startup
recapitulando: de métodos ágeis até lean startup
 
Learning shot 'how to measure performance in agile projects'
Learning shot  'how to measure performance in agile projects' Learning shot  'how to measure performance in agile projects'
Learning shot 'how to measure performance in agile projects'
 
Offshoring software development in Switzerland: You can do it
Offshoring software development in Switzerland: You can do itOffshoring software development in Switzerland: You can do it
Offshoring software development in Switzerland: You can do it
 
Pin the tail on the metric v01 2016 oct
Pin the tail on the metric v01 2016 octPin the tail on the metric v01 2016 oct
Pin the tail on the metric v01 2016 oct
 
Testing for the deeplearning folks
Testing for the deeplearning folksTesting for the deeplearning folks
Testing for the deeplearning folks
 
Reversed Tests Pyramid - Agile Prague 2014
Reversed Tests Pyramid - Agile Prague 2014Reversed Tests Pyramid - Agile Prague 2014
Reversed Tests Pyramid - Agile Prague 2014
 
Tester’s fate in an agile
Tester’s fate in an agileTester’s fate in an agile
Tester’s fate in an agile
 
Preocupações Desenvolvedor Ágil
Preocupações Desenvolvedor ÁgilPreocupações Desenvolvedor Ágil
Preocupações Desenvolvedor Ágil
 
Unleash The Monkeys
Unleash The MonkeysUnleash The Monkeys
Unleash The Monkeys
 
Clean Code - Increase your agility through higher quality software
Clean Code - Increase your agility through higher quality softwareClean Code - Increase your agility through higher quality software
Clean Code - Increase your agility through higher quality software
 
Scrum And The Enterprise
Scrum And The EnterpriseScrum And The Enterprise
Scrum And The Enterprise
 
Python and test
Python and testPython and test
Python and test
 

OutSystems Certified Professionals Meet Up - How To Avoid Spaghetti Architectures

  • 1. How to avoid spaghetti architectures? Worldwide OutSystems Certified Professionals Meet-up Paulo Garrudo Pedro Queirós
  • 2. OurGoals Share our experience with you Give you tips for creating good architectures
  • 3. Pedro Queirós 2.000.000 software units
  • 4. Paulo Garrudo 25 agile projects
  • 6. Invoicing CRM SAP Integration Impact FleetManagement Human Resources Worldwide OutSystems Certified Professionals Meet-up Paulo Garrudo, Expert Deliver Manager Pedro Queirós, Expert Developer
  • 11. Thefirsttwotests… Can you deploy quickly? test #1 Does the team complain about "code clashing"? test #2
  • 13. Design Design first, develop second Keep it simple, yet modular Don’t focus on optimization details Validate your design with peers Listen to the business
  • 14. Design Did you validate your architecture with peers? test #3 Can you identify the core modules? test #4 Can you map your business into the architecture? test #5
  • 16. Implementation Create well defined modules Simplify with abstraction Isolate integrations Use a Model View Controller pattern
  • 17. Implementation Can you foresee module changes for new requirements? test #6 Is it clear which module is responsible for an integration? test #7 Can you reuse/replace a module? test #8
  • 19. Documentation Just do it! Protect your architecture from 3rd parties Be ware: code still “compiles” with a broken architecture
  • 20. Documentation Is the team aware of the system’s architecture? test #9 Why are you changing? test #10
  • 22. Evaluation Iteratively and during the project Grow your team’s architecture knowledge Keep an updated list of tests/metrics
  • 23.
  • 24. Disclamer 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. 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. 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.
  • 25. Thankyou! Paulo Garrudo paulo.garrudo@outsystems.com Pedro Queirós pedro.queiros@outsystems.com

Editor's Notes

  1. 1.Pedro Queirós is building agile projects since 2006, and is has been responsible for almost 2 million software units (and counting) Paulo Garrudo along with 9 years of agile experience he join the knowledge of more than 25 projects.2.We have 10 items that will help you finding out if your architecture is on the right path and kicking off the right way3.Several examples will be giving along with the checklist
  2. 1.Pedro Queirós is building agile projects since 2006, and is has been responsible for almost 2 million software units (and counting) Paulo Garrudo along with 9 years of agile experience he join the knowledge of more than 25 projects.2.We have 10 items that will help you finding out if your architecture is on the right path and kicking off the right way3.Several examples will be giving along with the checklist
  3. 1.Pedro Queirós is building agile projects since 2006, and is has been responsible for almost 2 million software units (and counting) Paulo Garrudo along with 9 years of agile experience he join the knowledge of more than 25 projects.2.We have 10 items that will help you finding out if your architecture is on the right path and kicking off the right way3.Several examples will be giving along with the checklist
  4. Section of our presentation.Impact – if you don’t do nothing what can happen to your projectDesign – how should you startImplementation – during the development phase you must be on top of thingsDocumentation – knowledge, decisions, and awarenessEvaluation – don’t let your decisions vanish, buttheymustbe fine tune.
  5. Impact – if you don’t do nothing what can happen to your project
  6. Productivity could be better?EXAMPLE: small changes must be made to several componentes, only to deliver what you want?
  7. - Team unhappy    - if the architecture is good but you dont explain it    - if the architecture is bad and they can't change it    - too complex (to many layers): hard to implement, test, troubleshoot, fix, etc
  8. Reusabilitywith high cost    - you need to remove business logic, or 3rd party integration from your “isolated” module?EXAMPLE: do you have a CRM module that is also responsible for managing the make/model of vehicles? (this is not a core element of you module)
  9. Manager (architect)    - Impactanalysisof a smallchangecanbepainful    - scalability    - robustness 
  10. #1Can you execute deployment quickly using solutions? “metric of 30min to 1 hour”EXAMPLE: imaging a projectthattakes 6 hours to deploy, is a signofspagetti? Maybenot, wecanbe a resultofhaving 2.500.000 Software Units#2 Do you have complaints related with "code clashing" from the development team?Theycannottestthecodethatchanged, mainlybecausetheyneed to publish a solution to refreshthedepences. (Toomanylayers???)Yourdevelopmentteamisalwaysworkingonthesame espace?
  11. Design – how should you start
  12. Do it always upfront, usually 1.5weeks before the first development task (for a 12 weeks project)straightforward approachbottom upstart designing the coreslower to implement and to get results, but it will be more stable and robustup to bottomcan be used also, but if the project grows, its less robust and more adverse to change Don't focus too much on this topic, but take into consideration during the processEXAMPLE: you don’t need to know upfront if you will map 3 fields from ERP system (3rd party software) Peer validationget advice from other similar projectsthe more information you get, the better your decision will be
  13. #5 Did you discuss the architecture with others when designing it?#4 - Can you identify which modules are core?EXAMPLE: #5 - Can you map your business into the architecture? EXAMPLE: Did you use meaningful names to your database entities?EMPLOYEE EMPLOYEE _EXTENDEXTRA_EMPLOYEE
  14. Implementation – during the development phase you must be on top of things
  15. Well defined modulesEXAMPLE: you should avoid to centralize you data model for the entire solution. Abstraction layerEXAMPLE: do you use a 3rd party data structure along with your solution, just to avoiding a “mapping”?IntegrationsEXAMPLE: there are SAP integrations that expose structure with 30 attributes and the attribute name don’t make sense to the business.Authentication should be inside the integration module (the consumers should not handle this)authentications for integrations is done inside the moduleModel View Controller (MVC) Do it for a Module, not for the whole solution. First split your factory in Modules, then apply the MVC, not the opposite.MVC should be implemented in Single eSpace applications as in multi-eSpaceEXAMPLE: All lookups in the same eSpaceDevelopmentTraceability during implementationSingle eSpace or multi-eSpace:size (Mb, loads) -> Metrics (limit size to split)OS platform allows parallel development EXAMPLE: if you have 10 developers you don’t need to create 10 espaces, but you don’t want to centralize everything.
  16. #6 Change ControlAre you aware which modules should be affected by a change, but the impact was greater?EXAMPLE: Why the EnterpriseManager has been changed to include a new menu entry?#7 Module responsible for a integrationDid you isolate integration module correctly?EXAMPLE: You need to integrate with a webservice to send SMS all over your application, why do you add this webreference to all modules? #8 Reuse a module EXAMPLE: If you try to create a solution with the ServiceCenter, that only includes your isolated module responsible, check each modules you “really need” to make it works by seeing the dependencies list.
  17. Documentation – knowledge, decisions, and awareness
  18. Use SS to document your core architecture, so that in the future someone that does not understand the architecture breaks it (remember that the code will still compile)Enforce your architecture with 3rd parties. If they need "all together" try explaining you need them separated or else just create an extra module/eSpace that exposes the methods the way they want (but keeping your architecture) (eg, the business wants something that breaks, eg everything in the same screen)Everything seams to be on the right path, because you can compile your code, but be aware that during runtime you can get error.EXAMPLE:havingtwodatabaseentitiesthatmustbeinsync, butyoudidn’t centralize thisneedusing a action.
  19. #9 Do your developers do know the architecture or do they keep asking the same questions over and over again? EXAMPLE:When you assign a task to a developer, do you explain the "big picture" and the architectural impact.I just want to map a new attribute from the 3rd party system, how can I tests it? The code is there, but I cannot see the result.#10EXAMPLE: you need to expose the list of vehicles that a customers has, but you need also the send all the invoices to the 3rd party software. Do you change the CRM module to expose those both thing OR you create a extra module (GOOD)?
  20. Evaluation – don’t let your decisions vanish, buttheymustbe fine tune.
  21. During the project it's important to evaluate your architecture.From time to time apply all these tests to your architecture.The developers should also be aware of all these tests to help you evaluate the architecture and provide feedback during development.Tests/metrics that you can easily extract from project/platformEXAMPLE:you can use the service center to assess your solution during development by checking how many outdated consumers do you have; if your core modules use strange producers; how many references to a webservice do you have; Create solutions to assess the module dependency matrix
  22. During the project it's important to evaluate your architecture.From time to time apply all these tests to your architecture.The developers should also be aware of all these tests to help you evaluate the architecture and provide feedback during development.Tests/metrics that you can easily extract from project/platformEXAMPLE:you can use the service center to assess your solution during development by checking how many outdated consumers do you have; if your core modules use strange producers; how many references to a webservice do you have; Create solutions to assess the module dependency matrix
  23. Bear in mind that each case is a case and there are exceptions.Like we said before, we shared your experience.