A typical software development practice is to do a high level design to get the basic components or subsystems, then divide the team up to implement the required functions, then integrate everything in the last few weeks of the project.
This back-end-loads all the integration risk at the end of the
DevelopmentInterval. It practically ensures that on the slight chance some piece doesn't happen according to plan you are stuck at your project delivery date with a jumble of components that do absolutely nothing a user can use.
An alternative approach is to build your software in
HorizontalStripes across the whole system. These stripes are chunks of user recognizable functions,
UserStories, groups of
UseCase's, or
ImpliedRequirements.
Integrate continuously as you go. That way if you get into trouble on the last stripe of a development interval, you at least have the first N stripes already running.
This practice is heavily supported by using a
WorkQueue to plan your project and report status; each row on the
WorkQueue is a stripe across the system.
The stripes correspond to the "micro-v's" discussed in
ValidationVee.
--
BillBarnett
Also known as VerticalSlices