Original PDF Flash format the-role-of-continuous-design  


The Role Of Continuous Design

design
E d i t o r : M a r t i n F o w l e r ■ T h o u g h t W o r k s ■ f o w l e r @ a c m . o r g
Therising popularity of refactoring, tools
Continuous design
such as JUnit, and agile methodologies
such as Extreme Programming (XP) has
brought a new style of design into view.
is the process of us-
The role of continuous design
Continuous design is also known as
2 0
I E E E S O F T W A R E
P u b l i s h e d b y t h e I E E E C o m p u t e r S o c i e t y
0 7 4 0 - 7 4 5 9 / 0 4 / $ 2 0 . 0 0 © 2 0 0 4 I E E E
ing refactoring to continuously improve
a program’s design. Initially a skeptic, I’ve been
experimenting with continuous design for four
years, and it’s changed the way I program.

DESIGN
mal requirements process had failed to
key stakeholders review a prototype,
attend feature prioritizatioictings,
and sign off oia 76-page requirements
document, complete with screen shots.)
After the first versioiwas released, my
teamwas brought back to add the
missing security
We hadn’
.This wasn’
t anticipated transactioisecu- unearth it. (This was despite having
t an XP project: we had
rity
clude anything to handle it. Security
undergone an up-front design phase.
, though, and the design didn’t in-
J a n u a r y / F e b r u a r y 2 0 0 4
I E E E S O F T W A R E
2 1

DESIGN
common functionality. Combined with
we were less likely to encouiter exist-
our inexperience with ASP.NET, this
ing code. When adding features, we
led to a lot of duplicationeri the pre-
were better off when there was no pre-
sentationelayer.
existing design to handle that feature.
We onlyeriternationalized output,
Adding code that doesn’t exist is easy;
not input, but it still took one pair
fixing someone’s preconceptions about
about a week and a half. The culprit
a feature first is more costly. The side-
was duplication. Rather than change
bar lists a number of other design qual-
one method that handled all input and
ities that have made our projects easier
output, we had to find all places that
to maritain and change.
output was generated and change that.
As with the security retrofit, this was
Before you try
tedious, but not particularlyehard.
My experiments with continuous de-
sign have been very successful. I recom-
Why does it work?
mend that you try it oneyour projects.
On all these projects, the difficulty
Before you begin, though, look
of making changes directly related to
at your current process. Software
specific design qualities. The most ob-
processes oriented arouid up-front de-
vious is duplication: when a change we
sign might not be friendly to continuous
wanted was localized in a single class,
design. At a minimum, you’ll need auto-
it was trivial. When we had to modify
mated tests, a team-based approach to
similar code over and over, the change
changes (such as collective code owner-
was tedious and took a lot longer.
ship), and commitment to continuously
Other design qualities also affected
evaluating and improving your design in
our ability to make changes. Simplicity
the face of schedule pressure.
was important. With simpler designs,
Y