Software is not user-friendly and hard to learn
There is a lot of solutions that requires additional training for users (e.g. engineering or design software), but when we talk about day-to-day business solutions, platforms should be created as low-touch solutions and easily accessible for any type of user.
Technology is obsolete and/or not supported
Technology world is rapidly changing from month to month. Having the software developed few years ago, you might face outdated technology (no longer supported) on many levels from the code, to server and user-interface. Great examples are old frameworks that contains deprecated functions or integration interfaces no longer supported by 3rd parties.
The software is no longer functional
All the functions and features that have been useful years ago, might be not needed anymore today. Your current software system that has not been developed by the years to map current processes or needs of users, might not only be legacy but also create frustration because of workarounds that people have to make.
You can’t add new features or integrated with new 3rd party solutions
In case the maintenance of the software is so hard that you can’t add any new feature or the risk of crushing the system is to high, you should consider your software as legacy and this is really critical issue. Expanding the functionality and following business change should be one of the main assumption in rapidly changing world, so instead of creating limitation and barriers, the software should be flexible enough to support organizations and people.