I have seen this called the "spiral", "component assembly", or "incremental release" design lifecycle. From what I can tell from this recent About.com article, it is also called "evolutionary", "emergent", and "continuous" design. Is it all the same thing or are there subtle differences?
Regardless of what it is called, I think it is a good way to go.

2 comments:
Hi David,
My name is Kevin Taylor and I posted the blog entry on http://java.about.com regarding "Continuous Design." Releasing early and often is one part of this concept. This gives you frequent feedback from your users as to what they want added next. Of course, this changes frequently as they see each new release.
But, the crux of "Continuous Design" is writing code using very simple idioms and architecture. Doing the simplest thing that will work to solve the current problem. Then, as the code needs more complex/sophisticated design patterns, the existing "simple" designs are refactored to accommodate the new complexity.
An example of this is conditional logic. First you may create a simple if/else to handle conditional logic. But, at some point you may start to see the same if/else crop up elsewhere. Or you need to add another else, (if/elseif/else). At this point you refactor the code to use polymorphism or strategy or ...
Best,
--Kevin
Hi Kevin,
I am on your About.com mailing list. Good stuff.
Post a Comment