

|
Computer software (or simply software) is that part of a computer system that consists of encoded information, as opposed to the physical computer equipment (hardware) which is used to store and process this information. The term is roughly synonymous with computer program but is more generic in scope.
The term "software" was first used in this sense by John W. Tukey in 1957. In computer science and software engineering, computer software is all information processed by computer systems, programs and data. The concept of software was first proposed by Alan Turing in an essay.
Contents |
Computer software is so called in contrast to computer hardware, which is the physical substrate which is required to store and execute (or run) the software. In computers, software is loaded in RAM and executed on the central processing unit. At the lowest level, software consists of a machine language specific to an individual processor. Machine language consists of groups of binary values signifying processor instructions and data. Software is generally written in high-level languages that are easy and efficient for humans to use. High-level languages are compiled into machine language.
Software has historically been considered an intermediary between electronic hardware and data, which the hardware processes according to instructions defined by the software. As computational science becomes increasingly complex, the distinction between software and data becomes less precise. Data has generally been considered as either the output or input of software. However, data is not the only possible output or input. For example, configuration information can also be considered input, although not necessarily considered data. The output of a particular piece of software may be the input for another piece of software. Therefore, software may be considered an interface between hardware, data, or software.
Practical computer systems divide software into three major classes: system software, application software and programming software, although the distinction is somewhat arbitrary, and often blurred.
Software program is usually the directly executable part of a software. Software libraries are software components that are used by stand-alone programs, but which cannot be executed on their own.
Users often see things differently than programmers. People who use modern general purpose computers (as opposed to embedded systems) usually see three layers of software performing a variety of tasks: platform, application, and user software.
See also: Software architecture.
Look back to Computer software
Computer software has to be "loaded" into the computer's storage (also known as memory and RAM).
Once the software is loaded, the computer is able to operate the software. Computers operate by executing the computer program. This involves passing instructions from the application software, through the system software, to the hardware which ultimately receives the instruction as machine code. Each instruction causes the computer to carry out an operation -- moving data, carrying out a computation, or altering the flow of instructions.
Kinds of software by operation: computer program as executable, source code or script, configuration.
Software reliability considers the errors, faults, and failures related to the creation and operation of software.
See Software quality, Software testing, and Software reliability.
The issue of software patents is very controversial, since while patents protect the ideas of "inventors", they are widely believed to hinder software development. See Hacker ethic