Six strategies for generalizing software engineering theories