Software is a set of instructions, data or programs used to operate computers and execute specific tasks. Opposite of hardware, which describes the physical aspects of a computer, software is a generic term used to refer to applications, scripts and programs that run on a device. Software can be thought of as the variable part of a computer and hardware the invariable part.
Software is often divided into application software, or user downloaded programs that fulfill a want or need, and system software, which includes operating systems and any program that supports application software. The term middleware is sometimes used to describe programming that mediates between application and system software or between two different kinds of application software. For example, middleware could be used to send a remote work request from an application in a computer that has one kind of operating system to an application in a computer with a different operating system.