For validating a reusable component, the component source code is needed because the reusable component is generalized from the component. It is also difficult to handle the exceptions which are rarely defined in the component specification, without the source code.
By formal component specification, the system is completely specified before development. It is effective in discovering specification errors and omissions. Verification can be formally done using mathematical arguments, that the code of a software system is consistent with its specification. And hence a formal component specification can simplify the problems of validation.