Architecture-neutral. Software that is not created with the target platform in mind. Software is frequently created to optimize the performance of a particular hardware platform, but it must be updated to work on different hardware. There is always a tradeoff to be made.