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.