Enabling Knowledge Reuse through Total Traceability in the context of Software Development