You have a deployed, managable, and terribly inter-coupled Version 3
source code base. It accepts maintenance-style changes gracefully. And
it is all written in Glorious WaterFall Style - a database with an ER
diagram that attracts venture capitalists like honey attracts flies, a
textbook Persistence and Object layer that could support anything, and
a monolithic Biz Rules layer with everything coupled into everything
else. And a GUI layer that could use some polish.
The system would need a refactor session to support UnitTests, and can
only barely support DesignByContract.
You feel the urge to create a Version 4, with a re-worked feature set,
and a lot of functionality farmed out to 4th Party libraries & new
distributed components. Do you:
A> Refactor V3 to create the Spike Solution for V4.
B> Analyze V3 & start V4 over from scratch.
Please, no theory. That's getting easy. Only those who have BeenThere,
DoneThat, and BoughtTheTeeShirt need apply. Debate the criteria latent
in the code (and the team) that must be inspected to reveal A or B.
Oh, one more thing. V3 supports an in-house production line. It must
always exist, and must always accept upgrades. That means A adds risk
to the in-house production installation just to keep it featurized and
bug-free, and B deeply forks the code base, forcing duplicate efforts
over the same feature increments.
--Phlip
Sent via Deja.com http://www.deja.com/
Before you buy.
> Do you:
>
> A> Refactor V3 to create the Spike Solution for V4.
>
> B> Analyze V3 & start V4 over from scratch.
C> Go find a hot IPO and build something else altogether. ;-)
--
Andrzej Jan Taramina
Chaeron Consulting Corporation
Chaeron: http://www.chaeron.com
Sightings: http://www.chaeron.com/sightings/
NOTE: Remove Spamicide (tm) before replying!!!
> You feel the urge to create a Version 4, with a re-worked feature set,
> and a lot of functionality farmed out to 4th Party libraries & new
> distributed components. Do you:
>
> A> Refactor V3 to create the Spike Solution for V4.
>
> B> Analyze V3 & start V4 over from scratch.
I suspect the answer depends on _why_ you feel the urge. If it's just
an urge, I suggest taking two tablets and resting until it passes. If
you're compelled to add new features, and at the same time required to
maintain continuity, perhaps the best answer is
C> Both of the above
Regards
Dave
--
Thomas Consulting.
Innovative and successful developments with Unix, Java, C, and C++.
Now in bookstores:
The Pragmatic Programmer. www.pragmaticprogrammer.com/ppbook/
If V3 works, you are better off refactoring it into V4 -- even if this means
you must retrofit it with unit tests.
If V3 has severe quality problems (i.e. doesn't work) then it is probably
better to scrap it.
--
Robert C. Martin | OO Mentoring | Training Courses:
Object Mentor Inc. | rma...@objectmentor.com | OOD, Patterns, C++, Java,
PO Box 85 | Tel: (800) 338-6716 | Extreme Programming.
Grayslake IL 60030 | Fax: (847) 548-6853 | http://www.objectmentor.com
"One of the great commandments of science is:
'Mistrust arguments from authority.'" -- Carl Sagan
>Do you:
>
> A> Refactor V3 to create the Spike Solution for V4.
>
> B> Analyze V3 & start V4 over from scratch.
>
>Please, no theory. That's getting easy. Only those who have BeenThere,
>DoneThat, and BoughtTheTeeShirt need apply. Debate the criteria latent
>in the code (and the team) that must be inspected to reveal A or B.
Of course, "it depends". My gut always wants to start over.
With a system that has to run all the time, I've found that a
tail-chase with the new system following the old is really awful. That
may make any start-over approach, whether A or B or some other, very
risky.
Much as I'd hate to be there, the best answer might not be to start
over at all, but to refactor V3 over time, converting it piecemeal
into a system that has good structure and can be maintained.
I can't as yet write rules for how I would decide. I'm sure I could,
but there are lots of things I can do pretty well but can't as yet
teach. This is one of 'em.
Regards,
Ron Jeffries
http://www.XProgramming.com
Meditation is futile. You will be aggravated.