Computer software, or just software, is the collection of computer programs and related data that provide the instructions telling a computer what to do. The term was coined to contrast to the old term hardware (meaning physical devices). In contrast to hardware, software is intangible, meaning it "cannot be touched".[1] Software is also sometimes used in a more narrow sense, meaning application software only. Sometimes the term includes data that has not traditionally been associated with computers, such as film, tapes and records.[2] Examples of computer software include:

• Application software includes end-user applications of computers such as word processors or Video games, and ERP software for groups of users. • Middleware controls and co-ordinates distributed systems. • Programming languages define the syntax and sematics of computer programs. For example, many mature banking applications were written in the COBOL language, originally invented in 1959. Newer applications are often written in more modern programming languages. • System software includes operating systems, which govern computing resources. Today large applications running on remote machines such as Websites are considered to be system software, because the end-user interface is generally through a Graphical user interface (GUI), such as a web browser. • Testware is software for testing hardware or a software package. • Firmware is low-level software often stored on electrically programmable memory devices. Firmware is given its name because it is treated like hardware and run ("executed") by other software programs. • Shrinkware is the older name given to consumer bought software, because it was often sold in reatail stores in a shrinkwrapped box. • Device drivers control parts of computers such as disk drives, printers, CD drives, or computer monitors. • Programming tools help conduct computing tasks in any category listed above. For programmers, these could be tools for debugging, or reverse engineering older legacy systems in order to check source code compatibility. [b]