“Legacy” is a slang term for technology that’s already in place in an organization – the old stuff as opposed to the new stuff. So, a “legacy system” is an existing computer system or application program which continues to be used because the user (typically an organization) does not want to replace or redesign it. A “legacy device” is an existing (and possibly outdated) hardware device, such as a computer or phone server.
Many software engineers consider legacy systems to be potentially problematic. Legacy systems often run on obsolete (and usually slow) hardware, and spare parts for these computers become increasingly difficult to obtain. These systems are often hard to maintain, improve, and expand because there is a general lack of understanding of the system within the organization. The original system designers may have left the company, leaving no one behind (and limited documentation) to explain how it works. Integration with newer systems can be difficult because new software may use completely different technologies.
If legacy software runs only on older hardware, the cost of maintaining the system may eventually outweigh the cost of replacing both the software and hardware unless some form of emulation or backward compatibility allows the software to run on new hardware.
However, many of these systems still meet the basic needs of the organization. The organization might not be able to afford stopping them, and some can’t afford to update them, either.
We are pretty sure that most organizations have moved beyond the microfiche, however.