Your SlideShare is downloading. ×
Kent Beck Effective Design
Kent Beck Effective Design
Kent Beck Effective Design
Kent Beck Effective Design
Kent Beck Effective Design
Kent Beck Effective Design
Kent Beck Effective Design
Kent Beck Effective Design
Kent Beck Effective Design
Kent Beck Effective Design
Kent Beck Effective Design
Kent Beck Effective Design
Kent Beck Effective Design
Kent Beck Effective Design
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Kent Beck Effective Design

1,602

Published on

Published in: Technology, Business
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,602
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
43
Comments
0
Likes
7
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Effective Design Kent Beck Three Rivers Institute
  • 2. Economics • Time value of money
  • 3. Unknowns • Needs • Means • Cost • Usefulness
  • 4. Design is Social • Experience • Distribution
  • 5. Theory • Beneficially relating elements • Cost driver: rippling changes – Coupling – Cohesion • Scale-free – Fractal
  • 6. Process Straightforward? yes no Add Feature Isolate Change Refactor Create
  • 7. Create • Principle: safe steps – Going back is expensive • Leap • Parallel • Migrate Old design New design • Simplify • Place Stepping Stone
  • 8. Leap 1. Make new design 2. Move all uses 3. Delete old design + Quick - Risk of it not working for large changes
  • 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. Migrate 1. Move a use + Quick (per migration) + Provides feedback for new design + Low risk - Costly to migrate many uses
  • 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. 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. Refactorings - Isolate changes - Extract/Inline method/object - Eliminate/introduce duplication - Eliminate/introduce abstraction/indirection - Interface - Superclass - Move method - Move field
  • 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

×