1. Don’t assume similarity among software systems
Does (and should) the reliability of a nuclear power plant shutdown system tell us much about the reliability of an educational game program?
Does (and should) the design of a sorting algorithm tell us much about the design of an event-based GUI?
So, assume differences until proven otherwise: not doing so causes a tremendous amount of confusion in the degree of applicability of different research approaches, tools, etc.