software used to solve specific problems or perform specific tasks
programs that help users solve specific computing problems.
software that has been developed to solve a particular problem, perform useful work on general tasks or provide information. they are not included/necessary for a device.