I had an interesting inquiry with a client that began with this question - "What is the defniition of a legacy application?" Yikes, I thought - this will be one of those long-ranging, rhetorical discussions that - at the end of the day - lacks the kind of decisive answer clients typically seek during inquiries. The client actually had a good reason for wanting an externally published, formal definition - an external entity was attempting to measure the company's risk by quantifying its exposure to "legacy."
There is a lot of noise lately from 2 camps - one swears that the availability of people with mainframe skills is drying up rapidly - they either forecast dire shortages, or note problems hiring for certain positions internally. Most of the trade press articles are firmly in this camp.
Once apon a time ... the definition of an application was easy - firms built accounts payable, general ledger, purchasing, order entry, and other applications to meet the automation needs of the business. The applications were written as monolithic collections of functionality that were dedicated to accomplishing key business functions and had relatively clear boundaries.
However, over the years, technology shifts have resulted in "applications" that don't fit the earlier simplistic definitions. DLLs, Services / SOA, ASPs and Software-as-a-Service (SaaS) all bent the definition of an "application" from its previous form. Looking forward, Cloud computing promises to alter the definition once again.