Your SlideShare is downloading. ×
0
Effective Design

Kent Beck
Three Rivers Institute
Economics

• Time value of money
Unknowns

•   Needs
•   Means
•   Cost
•   Usefulness
Design is Social

• Experience
• Distribution
Theory

• Beneficially relating elements
• Cost driver: rippling changes
  – Coupling
  – Cohesion
• Scale-free
  – Fractal
Process

          Straightforward?
              yes no

          Add Feature

                   Isolate Change


     ...
Create

• Principle: safe steps
    – Going back is expensive
•   Leap
•   Parallel
•   Migrate          Old design   New ...
Leap



1.   Make new design
2.   Move all uses
3.   Delete old design
+    Quick
-    Risk of it not working for large ch...
Parallel



1.   Make new design
+    Quick
+    Safe—doesn’t disturb existing uses
+    Often used in framework evolution...
Migrate



1.   Move a use
+    Quick (per migration)
+    Provides feedback for new design
+    Low risk
-    Costly to m...
Simplify


•   Eliminate constraints
•   Reduce needs
    –   One, not many
    –   Few, not many
    –   Special case, no...
Place Stepping Stone


1. Build a language (framework) in which getting
   to the new design is easier
+ Quicker
- What if...
Refactorings

-   Isolate changes
-   Extract/Inline method/object
-   Eliminate/introduce duplication
-   Eliminate/intro...
Conclusion

• Plan backwards from adding
  straightforward features
• Move in safe steps
• Make progress when you can’t se...
Upcoming SlideShare
Loading in...5
×

Kent Beck Effective Design

1,637

Published on

Published in: Technology, Business

Transcript of "Kent Beck Effective Design"

  1. 1. Effective Design Kent Beck Three Rivers Institute
  2. 2. Economics • Time value of money
  3. 3. Unknowns • Needs • Means • Cost • Usefulness
  4. 4. Design is Social • Experience • Distribution
  5. 5. Theory • Beneficially relating elements • Cost driver: rippling changes – Coupling – Cohesion • Scale-free – Fractal
  6. 6. Process Straightforward? yes no Add Feature Isolate Change Refactor Create
  7. 7. Create • Principle: safe steps – Going back is expensive • Leap • Parallel • Migrate Old design New design • Simplify • Place Stepping Stone
  8. 8. Leap 1. Make new design 2. Move all uses 3. Delete old design + Quick - Risk of it not working for large changes
  9. 9. Parallel 1. Make new design + Quick + Safe—doesn’t disturb existing uses + Often used in framework evolution - Costly to maintain two designs - Need to figure out how to have them both run
  10. 10. Migrate 1. Move a use + Quick (per migration) + Provides feedback for new design + Low risk - Costly to migrate many uses
  11. 11. Simplify • Eliminate constraints • Reduce needs – One, not many – Few, not many – Special case, not general + Quick + Safe - What if it isn’t really progress? - What if you ignore the wrong constraint?
  12. 12. Place Stepping Stone 1. Build a language (framework) in which getting to the new design is easier + Quicker - What if it doesn’t make the new design easier? - Every extra bit is expensive for uses and maintainers - Responsibility of language designers and implementors is much broader than application developers (build, debug, analyze)
  13. 13. Refactorings - Isolate changes - Extract/Inline method/object - Eliminate/introduce duplication - Eliminate/introduce abstraction/indirection - Interface - Superclass - Move method - Move field
  14. 14. Conclusion • Plan backwards from adding straightforward features • Move in safe steps • Make progress when you can’t see the end • If you can’t make progress, add the feature anyway
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×