S.O.L.I.D. Software Development 12 January 2010 (Martin Verboon, Patrick Kalkman, Stan Verdiesen)
12 january 2010 S.O.L.I.D. software development S.O.L.I.D. software development Software development is not a Jenga game!
Intention of this meeting Hand out concrete tips that can help during (software) design and development by introducing S.O...
Agenda <ul><li>Introduction </li></ul><ul><li>Theory </li></ul><ul><ul><li>Single Responsibility Principle (SRP) </li></ul...
Introduction – why necessary? S.O.L.I.D. software development <ul><li>S.O.L.I.D. is useful as reference while designing ap...
Introduction – helpful principles S.O.L.I.D. software development <ul><li>Principles of object oriented (class) design: </...
Single Responsibility Principle (SRP) S.O.L.I.D. software development Just because you can, doesn’t mean you should 12 jan...
Single Responsibility Principle (SRP) S.O.L.I.D. software development <ul><li>“ There should never be more than </li></ul>...
Single Responsibility Principle (SRP) 12 january 2010 S.O.L.I.D. software development
Open-Closed Principle (OCP) 12 january 2010 S.O.L.I.D. software development Open chest surgery is not needed when putting ...
Open-Closed Principle (OCP) 12 january 2010 S.O.L.I.D. software development <ul><li>“ Software entities should be open for...
Open-Closed Principle (OCP) 12 january 2010 S.O.L.I.D. software development Adding new interval requires switch to change ...
Open-Closed Principle (OCP) 12 january 2010 S.O.L.I.D. software development Step 1
Dependency Inversion Principle (DIP) 12 january 2010 S.O.L.I.D. software development Would you solder a lamp directly to t...
Dependency Inversion Principle (DIP) 12 january 2010 S.O.L.I.D. software development <ul><li>“ Depend upon abstractions; <...
Dependency Inversion Principle (DIP) 12 january 2010 S.O.L.I.D. software development BITS = Background Intelligent Transfe...
Workshop introduction 12 january 2010 S.O.L.I.D. software development <ul><li>Examples are handed out to every group </li>...
Interactive workshop 12 january 2010 S.O.L.I.D. software development <ul><li>2 examples + 1 optional example </li></ul><ul...
Workshop results 12 january 2010 S.O.L.I.D. software development
Conclusion 12 january 2010 S.O.L.I.D. software development <ul><li>SOLID design principles not new but provide concrete ch...
Upcoming SlideShare
Loading in …5
×

LetsGrow SOLID Software development

2,696 views

Published on

Presentation of a workshop that two colleagues and I did at LetsGrow.com. The workshop explains SOLID software development.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,696
On SlideShare
0
From Embeds
0
Number of Embeds
370
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

LetsGrow SOLID Software development

  1. 1. S.O.L.I.D. Software Development 12 January 2010 (Martin Verboon, Patrick Kalkman, Stan Verdiesen)
  2. 2. 12 january 2010 S.O.L.I.D. software development S.O.L.I.D. software development Software development is not a Jenga game!
  3. 3. Intention of this meeting Hand out concrete tips that can help during (software) design and development by introducing S.O.L.I.D. design principles S.O.L.I.D. software development 12 january 2010
  4. 4. Agenda <ul><li>Introduction </li></ul><ul><li>Theory </li></ul><ul><ul><li>Single Responsibility Principle (SRP) </li></ul></ul><ul><ul><li>Open-Closed Principle (OCP) </li></ul></ul><ul><ul><li>Dependency Inversion Principle (DIP) </li></ul></ul><ul><li>Interactive workshop </li></ul><ul><li>Presenting workshop results </li></ul><ul><li>Conclusion </li></ul>15 min. 20 min. 15 min. 10 min. S.O.L.I.D. software development 12 january 2010
  5. 5. Introduction – why necessary? S.O.L.I.D. software development <ul><li>S.O.L.I.D. is useful as reference while designing applications </li></ul><ul><li>Managing dependencies makes maintainability easier </li></ul><ul><ul><li>Consists of creating dependency ‘firewalls’ </li></ul></ul><ul><li>Various principles and techniques available for building dependency firewalls </li></ul>12 january 2010
  6. 6. Introduction – helpful principles S.O.L.I.D. software development <ul><li>Principles of object oriented (class) design: </li></ul><ul><ul><li>Single Responsibility Principle (SRP) </li></ul></ul><ul><ul><li>Open-Closed Principle (OCP) </li></ul></ul><ul><ul><li>Liskov Substitution Principe (LSP) </li></ul></ul><ul><ul><li>Interface Segregation Principle (ISP) </li></ul></ul><ul><ul><li>Dependency Inversion Principle (DIP) </li></ul></ul>12 january 2010
  7. 7. Single Responsibility Principle (SRP) S.O.L.I.D. software development Just because you can, doesn’t mean you should 12 january 2010
  8. 8. Single Responsibility Principle (SRP) S.O.L.I.D. software development <ul><li>“ There should never be more than </li></ul><ul><li>one reason for a class to change ” </li></ul><ul><li>Simplest principle, hardest to get right </li></ul><ul><li>Finding and separating responsibilities may be hard to do </li></ul><ul><li>When violated: fragile design that breaks in unexpected ways when changed </li></ul>12 january 2010
  9. 9. Single Responsibility Principle (SRP) 12 january 2010 S.O.L.I.D. software development
  10. 10. Open-Closed Principle (OCP) 12 january 2010 S.O.L.I.D. software development Open chest surgery is not needed when putting on a coat
  11. 11. Open-Closed Principle (OCP) 12 january 2010 S.O.L.I.D. software development <ul><li>“ Software entities should be open for extension, but closed for modification ” </li></ul><ul><li>Abstraction is the key </li></ul><ul><li>Extend behavior instead of changing old code that already works  reusability and maintainability </li></ul><ul><li>When violated: cascading changes to dependent modules during changes </li></ul>
  12. 12. Open-Closed Principle (OCP) 12 january 2010 S.O.L.I.D. software development Adding new interval requires switch to change = changing working code Adding new interval requires switch to change = changing working code Adding new types requires switch to change = changing working code
  13. 13. Open-Closed Principle (OCP) 12 january 2010 S.O.L.I.D. software development Step 1
  14. 14. Dependency Inversion Principle (DIP) 12 january 2010 S.O.L.I.D. software development Would you solder a lamp directly to the electrical wiring in a wall?
  15. 15. Dependency Inversion Principle (DIP) 12 january 2010 S.O.L.I.D. software development <ul><li>“ Depend upon abstractions; </li></ul><ul><li>Do not depend upon concretions ” </li></ul><ul><li>High level modules should: </li></ul><ul><ul><li>depend upon abstraction of low level modules </li></ul></ul><ul><ul><li>force low level modules to change </li></ul></ul><ul><li>When violated: lower level module changes can force high level modules to change </li></ul>
  16. 16. Dependency Inversion Principle (DIP) 12 january 2010 S.O.L.I.D. software development BITS = Background Intelligent Transfer System; for downloading updates
  17. 17. Workshop introduction 12 january 2010 S.O.L.I.D. software development <ul><li>Examples are handed out to every group </li></ul><ul><li>Write down found principles on given paper; including possible solution </li></ul><ul><li>Hang up paper when finished </li></ul><ul><li>Maximum of 20 minutes </li></ul><ul><li>Presentation of results </li></ul>
  18. 18. Interactive workshop 12 january 2010 S.O.L.I.D. software development <ul><li>2 examples + 1 optional example </li></ul><ul><li>Write results on paper </li></ul><ul><li>Hang up paper when finished </li></ul><ul><li>Time limit: 20 minutes </li></ul>-
  19. 19. Workshop results 12 january 2010 S.O.L.I.D. software development
  20. 20. Conclusion 12 january 2010 S.O.L.I.D. software development <ul><li>SOLID design principles not new but provide concrete checklist </li></ul><ul><li>Start by recognizing SOLID principles </li></ul><ul><li>Also read the (L)SP and the (I)SP principles </li></ul><ul><li>Can be used when creating new designs </li></ul><ul><li>Can be used to improve existing designs </li></ul>

×