A neophyte in the software world might ask a seemingly
legitimate question once all modules have been unit tested: "If they
all work individually, why do you doubt that they'll work when we put
them together?" The problem, or course, is putting them together --
interfacing. Data can be lost across an interface; one module can
have an inadvertent, adverse affect on another; sub-functions,
when combined, may not produce the desired major function;
individually acceptable imprecision may be magnified to
unacceptable levels; global data structures can present problems.
Sadly, the list goes on and on