System software is any computer software which manages and controls computer hardware so that application software can perform a task. Operating systems such as Microsoft Windows Mac OS X or Linux are prominent examples of system software. System software contrasts with application software which are programs that enable the end-user to perform specific productive tasks such as word processing or image manipulation.
System software performs tasks like transferring data from memory to disk or rendering text onto a display device. Specific kinds of system software include loading programs Operating systems device drivers programming tools compilers assemblers linkers and utility software.
Software libraries that perform generic functions also tend to be regarded as system software although the dividing line is fuzzy; while a C runtime library is generally agreed to be part of the system an OpenGL or database library is less obviously so.
If system software is stored on non-volatile memory such as integrated circuits it is usually termed firmware.
Computer software is a general term used to describe a collection of computer programs procedures and documentation that perform some tasks on a computer system. The term includes application software such as word processors which perform productive tasks for users system software such as operating systems which interface with hardware to provide the necessary services for application software and middleware which controls and co-ordinates distributed systems.
Computer hardware is the physical part of a computer including the digital circuitry as distinguished from the computer software that executes within the hardware. The hardware of a computer is infrequently changed in comparison with software and hardware data which are "soft" in the sense that they are readily created modified or erased on the computer. Firmware is a special type of software that rarely if ever needs to be changed and so is stored on hardware devices such as read-only memory ROM where it is not readily changed and is therefore "firm" rather than just "soft".
Most computer hardware is not seen by normal users. It is in embedded systems in automobiles microwave ovens electrocardiograph machines compact disc players and other devices. Personal computers the computer hardware familiar to most people form only a small minority of computers about 0.2% of all new computers produced in 2003. See Market statistics.
Application software is a subclass of computer software that employs the capabilities of a computer directly and thoroughly to a task that the user wishes to perform. This should be contrasted with system software which is involved in integrating a computer's various capabilities but typically does not directly apply them in the performance of tasks that benefit the user. In this context the term application refers to both the application software and its implementation.
A simple if imperfect analogy in the world of hardware would be the relationship of an electric light bulb an application to an electric power generation plant a system. The power plant merely generates electricity not itself of any real use until harnessed to an application like the electric light that performs a service that benefits the user.
Typical examples of software applications are word processors spreadsheets and media players.
Multiple applications bundled together as a package are sometimes referred to as an application suite. Microsoft Office and OpenOffice.org which bundle together a word processor a spreadsheet and several other discrete applications are typical examples. The separate applications in a suite usually have a user interface that has some commonality making it easier for the user to learn and use each application. And often they may have some capability to interact with each other in ways beneficial to the user. For example a spreadsheet might be able to be embedded in a word processor document even though it had been created in the separate spreadsheet application.
User-written software tailors systems to meet the user's specific needs. User-written software include spreadsheet templates word processor macros scientific simulations graphics and animation scripts. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is.
In some types of embedded systems the application software and the operating system software may be indistinguishable to the user as in the case of software used to control a VCR DVD player or Microwave Oven.