Software is the various kinds of programs used to operate computers and related devices. A program is a sequence of instructions that tells a computer what operations to perform. Programs can be built into the hardware itself, or they may exist independently in a form known as software. Hardware describes the physical components of computers and related devices.
The two main types of software are system software and application software. Application software is programs that do work users are directly interested in. System software includes operating systems and any program that supports application software. Middleware is sometimes used to describe programming that mediates between application and system software or between two different kinds of application software (for example, converting data from one file format to another file format).
Software is typically distributed on floppy disks, CD-ROMs, and the Internet. It is typically stored on an external long-term memory device, such as a hard drive or magnetic diskette. When the program is in use, the computer reads it from the storage device and temporarily places the instructions in random access memory (RAM). The process of fetching and then performing the instructions is called "running," or "executing," a program. Software programs and procedures that are permanently stored in a computer's read-only memory (ROM) are called firmware.
System software controls a computer's internal functioning, mainly through an operating system (OS), and also controls such peripherals (attached devices) as monitors, printers, and storage devices. The operating system allows all of the hardware and software systems to work together. It manages the computer's operations, controlling devices and overseeing other programs, called applications.
An operating system consists of programs and routines that coordinate operations and processes, translate the data from various input and output devices, regulate data storage in memory, allocate tasks to various processors, and provide functions that help programmers to write software. Popular OSs include Windows by Microsoft, Linux, UNIX, and the Macintosh OS. It is often stored in a computer's read-only memory (ROM).
In some specialized, or embedded, computers the operating instructions are contained in their circuitry; common examples are the microcomputers found in calculators, wristwatches, automobile engines, and microwave ovens. Firmware or microcode is programming that is loaded into a special place area on a microprocessor or read-only memory on a one-time or infrequent basis so that thereafter it seems to be part of the hardware.
Application software directs the computer to execute commands given by the user and may be said to include any program that processes data for a user. Application software includes:
- CAD/CAM software.
- Database management.
- Presentation software.
- Inventory and payroll programs.
- Specialized scientific applications.
- Graphics software for graphic designers.
- Productivity software, such as word processors, spreadsheets, and tools for use by most computer users.
- Vertical market or industry-specific software (for example, for banking, insurance, retail, and manufacturing environments).
Software can be purchased or acquired as
- public domain software (free with no restrictions),
- liteware (shareware with some capabilities disabled),
- freeware (free software but with copyright restrictions),
- shareware (usually intended for sale after a trial period),
- and free software (software whose users agree not to limit its further distribution).
Software is usually packaged on CD-ROM and diskettes. Today, much purchased software, shareware, and freeware is downloaded over the Internet. Some of it is free (freeware) or inexpensive, and can be used on a trial basis before buying (shareware).
The most popular Internet software, browsers, enables the user to access the WWW with a 'graphical user interface' (GUI) which provides a very easy-to-use 'point-and-click' interface. This software has opened up the Internet.
Web software can be categorised by where it runs: on the originating web server, or on the user/client side. Both kinds perform some functions which ultimately are seen by the user in a web browser - we exclude software which performs other functions, such as web page validation, spidering, or links checking. Thus, web software is intended to interact with a web browser, either directly (client side) or indirectly (server side).