
Do the
architecturally significant work early
In a
process where IterativeDevelopment is
employed, select the architecturally significant requirements to be done in the
first few iterations.
This is the
basis of the Elaboration Phase in RUP, though interestingly the C2 Wiki
describes it as Exploration Phase and deals with architecture at a more
conceptual level – a key part of their spike is producing the SystemMetaphor, and thus may be more akin to
producing a candidate architecture than proving the architecture. The term has been used for both activities.
There has
been much talk about how to select architecturally significant
requirements. It is often the case that
many requirements have similar architectural impact, we only need a single
representative in these cases for our ‘spike’.
All expected different technological layers should be touched (end-to-end
functionality). All different types of
interface (User and inter-system) should have one example produced. All major non-functional requirements should
have their greatest challenges addressed by some functional requirement.