Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Test Driven Design - GDG DevFest Istanbul 2016

177,308 views

Published on

TDD is the elengant way of designing software. People scares from it so much, because software design is hard and it requires discipline. In this talk, I tried to describe what TDD is from software design perspective.

Published in: Software
  • Nice !! Download 100 % Free Ebooks, PPts, Study Notes, Novels, etc @ https://www.ThesisScientist.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Finally i found something that changed my life, if you need to change yours just watch the video here http://bit.ly/changesvideo Hope it helps you as it helped me!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Nice !! Download 100 % Free Ebooks, PPts, Study Notes, Novels, etc @ https://www.ThesisScientist.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Girls give in the ass in your city! On our website ➔ girlsx.ga
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Pardon me for dropping this here, I see this platform as a medium and opportunity to clapback at some fellas that took sides during a crossroad moment in my life. Their negative energy thought me some valuable lesson that eventually lead me to the best healer (Dr. Wakina via dr.wakinalovetemple@gmail.com) that brought back my wife. I want them to know that I am back into her life after 2 years in exiled. A great spell work was done by Dr. Wkina, I was able to comprehend the reasons why my marriage was ruined by trusted fellas. I have taken several precaution measures ever since I returned back to my family as advised by Dr. Wakina to avoid future occurrence. It is amazing to say that over 5 months after the love spell our love has been stronger and better, we have also established our personal business across three countries. Guess my last laugh was the best. All thanks to great healer for giving me the best laugh.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Test Driven Design - GDG DevFest Istanbul 2016

  1. TEST DRIVEN DESIGNLEMi ORHAN ERGiN software craftsman @ acm
  2. LEMi ORHAN ERGiN agile software craftsman @ acm /lemiorhan lemiorhanergin.com @lemiorhan managing partner at acm developing since 2001 worked at Sony and eBay/GittiGidiyor consultant, architect, trainer, developer founder of Software Craftsmanship Turkey ex product owner of Agile Turkey Summit meetup.scturkey.org summit.agileturkey.org
  3. Jack W. Reeves The C++ JournalVol. 2, No. 2. 1992 http://user.it.uu.se/~carle/softcraft/notes/Reeve_SourceCodeIsTheDesign.pdf What is So!ware Design?
  4. Source code is the real so!ware design Designing so!ware is an exercise in managing complexity Jack W. Reeves What is Software Design? The C++ JournalVol. 2, No. 2. 1992 http://user.it.uu.se/~carle/softcraft/notes/Reeve_SourceCodeIsTheDesign.pdf
  5. The so!ware design is not complete until it has been coded and tested Testing is part of the process of refining the design Jack W. Reeves What is Software Design? The C++ JournalVol. 2, No. 2. 1992 http://user.it.uu.se/~carle/softcraft/notes/Reeve_SourceCodeIsTheDesign.pdf
  6. Programming Source Code SOFTWARE DESIGN Test and Verification
  7. The very first value of so!ware is… Robert C. Martin Author of Clean Code and Clean Coder Owner of cleancoders.com training site
  8. The very first value of so!ware is to tolerate and facilitate on-going changes Robert C. Martin Author of Clean Code and Clean Coder Owner of cleancoders.com training site
  9. Each city has to be renewed in order to meet the needs of its populace. So!ware-intensive systems are like that. Grady Booch Developed UML Wrote foreword to “Design Patterns” and “Technical Debt” books Istanbul, TurkeyCredit: European Space Imaging
  10. Programming Source Code SOFTWARE DESIGN Refactoring Test and Verification
  11. Everything is part of the design process Jack W. Reeves What is Software Design? The C++ JournalVol. 2, No. 2. 1992 http://user.it.uu.se/~carle/softcraft/notes/Reeve_SourceCodeIsTheDesign.pdf
  12. but… we develop without driving the design
  13. nebulaconcepts and terminology trigger ideas about the design what we really do in general…
  14. proto-star initial classes containing the logic simple structure, basic domain model and behaviors
  15. brown dwarfbasic dependencies, works as we expect utility classes start to occur
  16. main sequence star needless complexity starts, a lot of inter-dependencies manual testing starts to take longer time than usual
  17. hard to add new features too much debugging too many workarounds too complex to know every flow red giant
  18. blue-white super giant single change affects many areas, no reuse - duplication hell, fragile system - unstable prod scary refactoring, silos occur
  19. red super giant huge classes, tons of workarounds, no new features, maintenance mode rules, basic implementations take weeks, no one knows how overall system works, rollbacks a!er deployments, architect saves the company
  20. supernova employee turnovers, frustrated management, blame & fight
  21. black hole deadly loop of total rewrite or exit from the market
  22. Programming Source Code SOFTWARE DESIGN Refactoring Test and Verification
  23. Programming Source Code SOFTWARE DESIGN Refactoring good? Test and Verification
  24. COUPLING When readfile() is changed, do you change writeFile() too? It shows how many places we need to change
  25. Two elements are loosely coupled if they are not shown in the same diff Kent Beck The creator of extreme programming One of the signatories of the Agile Manifesto Pioneered software design patterns and TDD
  26. COHESION Do you search a lot where to change? It shows how easy to find the places we need to change
  27. How many files at any one time is still open for edit shows the level of cohesion Nat Pryce Co-Author of Growing Object-Oriented Software Guided by Tests Early adopter of XP
  28. Programming Source Code SOFTWARE DESIGN Refactoring Low Coupling Test and Verification High Cohesion
  29. Programming Source Code SOFTWARE DESIGN Refactoring is hard and needs discipline! Test and Verification High CohesionLow Coupling
  30. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  31. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  32. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  33. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  34. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  35. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  36. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  37. Programming Source Code Test and Verification SOFTWARE DESIGN Refactoring Test Driven High CohesionLow Coupling
  38. Unit testing frameworks Mocking frameworks Automated testing types Design principles Refactoring techniques Clean code principles LEARN Continuous Integration Source code versioning Notification mechanism Code coverage monitoring Practice TDD via katas Develop via TDD Acceptance testing via TDD Verify by behaviours via BDD ESTABLISH PERFORM
  39. Unit testing frameworks Mocking frameworks Automated testing types Design principles Refactoring techniques Clean code principles LEARN Continuous Integration Source code versioning Notification mechanism Code coverage monitoring Practice TDD via katas Develop via TDD Acceptance testing via TDD Verify by behaviours via BDD ESTABLISH PERFORM
  40. Unit testing frameworks Mocking frameworks Automated testing types Design principles Refactoring techniques Clean code principles LEARN Continuous Integration Source code versioning Notification mechanism Code coverage monitoring Practice TDD via katas Develop via TDD Acceptance testing via TDD Verify by behaviours via BDD ESTABLISH PERFORM
  41. Unit testing frameworks Mocking frameworks Automated testing types Design principles Refactoring techniques Clean code principles LEARN Continuous Integration Source code versioning Notification mechanism Code coverage monitoring Practice TDD via katas Develop via TDD Acceptance testing via TDD Verify by behaviours via BDD ESTABLISH PERFORM
  42. small set of entities few lines in methods follows OOP design guidelines simple design, names are the intensions marbles
  43. If you really want to see something interesting:) ursa minor and polaris
  44. LEMi ORHAN ERGiN agile software craftsman @ acm /lemiorhan lemiorhanergin.com @lemiorhan

×