in a metaphorical sense, much software also has a shelf life. most software products are released to market with defects, xecurity vulnerabilities, and design flaws. over time, some of these are discovered and patches issued by the vendor (and possibly others, as in the open source environment) which fix bugs and add functionality. the result is that, after some time, the software application is rather different than it was at first release, even with the same version level. since correct inclusion of patches at end user sites is spotty, the actual population of that software application in the field is quite varied; some will have patches 1 and 2, others 1, 2, and 3, some others none, in all possible variations. this increases support difficulty. there have been a few attempts to address this. one commercial attempt is from preemptive.