Microsoft codenames are given by Microsoft to products it has in development, before these products are given the names by which they appear on store shelves. Many of these products (new versions of Windows in particular) are of major significance to the IT community, and so the terms are often widely used in discussions prior to the official release. Microsoft usually does not announce a final name until shortly before the product is publicly available. It is not uncommon for Microsoft to reuse codenames a few years after a previous usage has been abandoned.
There has been some suggestion that Microsoft may move towards defining the real name of their upcoming products earlier in the product development lifecycle so as to avoid needing product codenames.