Success and Failure Factors in Software Reuse