0% found this document useful (0 votes)
49 views21 pages

Continuousdesign 200521011800

This document discusses the fundamentals of continuous software design. It describes continuous design as having roots in extreme programming and requiring evolutionary or emergent design through a high degree of discipline and reacting to feedback. Key aspects of continuous design discussed include making decisions at the last responsible moment when you have the most information, aiming for reversibility by making decisions easy to change, and using testability and refactoring to improve design.

Uploaded by

the4power
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views21 pages

Continuousdesign 200521011800

This document discusses the fundamentals of continuous software design. It describes continuous design as having roots in extreme programming and requiring evolutionary or emergent design through a high degree of discipline and reacting to feedback. Key aspects of continuous design discussed include making decisions at the last responsible moment when you have the most information, aiming for reversibility by making decisions easy to change, and using testability and refactoring to improve design.

Uploaded by

the4power
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 21

The Fundamentals of Continuous Software

Design

May 9th, 2020


About Me
• Senior Architect at Calavista Software
• (Mostly) Agile since 2003
• http://jeremydmiller.com
• shadetreedeveloper@gmail.com
• @jeremydmiller
Extreme Programming
Scrum
Delivering Value

WORKING SOFTWARE BUILDING FEATURES BY CONTINUOUS


BUSINESS PRIORITY DELIVERY
Between Scylla and Charybdis

No Big
Upfront Design
Design Upfront
(BDUF)
What is Continuous Design?
• Roots in Extreme
Programming
• “Evolutionary” or
“Emergent” Design
• Requires a High Degree of
Discipline
• Reacting to Feedback
Design Goals
• Don’t Repeat Yourself
• Explicit
• Simple
• Cohesive
• Decoupled
• Isolated
• In the present
Pull vs Push
• Build it and they will come
• “You aren’t going to need it” – YAGNI
• Do the Simplest Thing That Could Possibly Work
The Last Responsible Moment
Make decisions as late as you can responsibly wait
because that is the point at which you have the most
information on which to base the decision.
Reversibility
“If you can easily change your decisions, this
means it’s less important to get them right –
which makes your life much simpler. ”

Martin Fowler
Low Reversibility

Plumbing through a slab foundation of a house under construction


Examples of Low Reversibility
• Dependencies on External Organizations
• Choosing Client Technologies
• Basic Code Organization Strategies
• Programming Languages
• Architectural Patterns
Examples of High Reversibility
• ASP.Net Core Middleware (The Russian Doll Model)
• Document Databases
• Effective Automated Test Coverage
• Modular Code
Testability and TDD/BDD
• Enables Refactoring
• Feedback
• Improves Reversibility
• Heuristic to improve the low-level design of your code
“Jeremy’s Laws of TDD Design”
• Isolate the Ugly Stuff
• Push, Don’t Pull
• Test Small Before Testing
Big
• Avoid a Long Tail
Refactoring

A disciplined technique for restructuring an


existing body of code, altering its internal
structure without changing its external behavior
Lies, damn lies, and “it’s just going to be some
refactoring”
Bottom Up vs Top Down Design

Avoid being frozen by the fear of what you don’t yet know

Bottom Up  start with individual tasks and assemble the coded


elements later as a structure presents itself

Top Down  start with the basic workflow, leave placeholders for
individual steps later
Spike
• “A very simple program to explore potential
solutions”
• Quick and dirty prototyping
• Throwaway the code
Process Stuff
• Constantly challenge the
design
• Always be thinking
• Socialize the design
• Every developer
contributes
Questions?

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy