software n : (computer science) written programs or procedures or rules and associated documentation pertaining to the operation of a computer system and that are stored in read/write memory; "the market for software is expected to expand" [syn: software system, software package, package] [ant: hardware]
- US English /sAftwEr\`/
- Encoded computer instructions, usually modifiable (unless
stored in some form of unalterable memory such as ROM). Compare hardware.
- 1958: The "software" comprising the carefully planned interpretive routines, compilers, and other aspects of automative programming are at least as important to the modern electronic calculator as its "hardware" of tubes, transistors, wires, tapes and the like. — The Teaching of Concrete Mathematics, John W. Tukey, in The American Mathematical Monthly, vol. 65, no. 1 (Jan. 1958), pp 1-9.
- 1953 As originally conceived, the word "software" was merely an obvious way to distinguish a program from the computer itself. A program comprised sequences of changeable instructions each having the power to command the behavior of the permanently crafted machinery, the "hardware." Softword: Provenance for the Word ‘Software’ by Paul Niquette ISBN 1-58922-233-http://niquette.com/books/softword/part0.htm
- software assurance
- software cracking
- software engineering
- software tests
- system software
encoded computer instructions
- Afrikaans: sagteware, programmatuur
- Catalan: programari
- Chinese: 软件 (ruǎnjiàn), 軟體 (ruántǐ) (Taiwan)
- Croatian: programska oprema, napudbina, mekušje, mekovlje, mekotvorina, softver
- Dutch: software , programmatuur
- Finnish: ohjelmisto, ohjelma
- French: logiciel
- German: Software
- Hebrew: תוכנה
- Indonesian: piranti lunak
- Interlingua: software
- Irish: bogearraí m|p
- Italian: software
- Japanese: ソフトウェア, ソフト
- Korean: 소프트웨어 (sopeuteuweeo)
- Maltese: softwer
- Norwegian: programvare
- Persian: نرمافزار
- Portuguese: software, programa
- Russian: программное обеспечение (programmnoye obespecheniye)
- Serbian: softver
- Slovak: softvér
- Spanish: software, programa
- Swedish: mjukvara
- Turkish: yazılım
- Vietnamese: phan mem
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.
"Software" is sometimes used in a broader context to mean anything which is not hardware but which is used with hardware, such as film, tapes and records.
Relationship to computer hardwareComputer software is so called to distinguish it from computer hardware, which encompasses the physical interconnections and devices required to store and execute (or run) the software. In computers, software is loaded into RAM and executed in the central processing unit. At the lowest level, software consists of a machine language specific to an individual processor. A machine language consists of groups of binary values signifying processor instructions which change the state of the computer from its preceding state. Software is an ordered sequence of instructions for changing the state of the computer hardware in a particular sequence. It is usually written in high-level programming languages that are easier and more efficient for humans to use (closer to natural language) than machine language. High-level languages are compiled or interpreted into machine language object code. Software may also be written in an assembly language, essentially, a mnemonic representation of a machine language using a natural language alphabet. Assembly language must be assembled into object code via an assembler.
The term "software" was first used in this sense by John W. Tukey in 1958. In computer science and software engineering, computer software is all computer programs. The theory that is the basis for most modern software was first proposed by Alan Turing in his 1935 essay Computable numbers with an application to the Entscheidungsproblem.
TypesPractical computer systems divide software systems into three major classes: system software, programming software and application software, although the distinction is arbitrary, and often blurred.
- System software helps run the computer hardware and computer system. It includes operating systems, device drivers, diagnostic tools, servers, windowing systems, utilities and more. The purpose of systems software is to insulate the applications programmer as much as possible from the details of the particular computer complex being used, especially memory and other hardware features, and such as accessory devices as communications, printers, readers, displays, keyboards, etc.
- Programming software usually provides tools to assist a programmer in writing computer programs, and software using different programming languages in a more convenient way. The tools include text editors, compilers, interpreters, linkers, debuggers, and so on. An Integrated development environment (IDE) merges those tools into a software bundle, and a programmer may not need to type multiple commands for compiling, interpreting, debugging, tracing, and etc., because the IDE usually has an advanced graphical user interface, or GUI.
- Application software allows end users to accomplish one or more specific (non-computer related) tasks. Typical applications include industrial automation, business software, educational software, medical software, databases, and computer games. Businesses are probably the biggest users of application software, but almost every field of human activity now uses some form of application software
Program and libraryA program may not be sufficiently complete for execution by a computer. In particular, it may require additional software from a software library in order to be complete. Such a library may include software components used by stand-alone programs, but which cannot work on their own. Thus, programs may include standard routines that are common to many programs, extracted from these libraries. Libraries may also include 'stand-alone' programs which are activated by some computer event and/or perform some function (e.g., of computer 'housekeeping') but do not return data to their calling program. Libraries may be called by one to many other programs; programs may call zero to many other programs.
Three layerssee also Software architecture Users often see things differently than programmers. People who use modern general purpose computers (as opposed to embedded systems, analog computers, supercomputers, etc.) usually see three layers of software performing a variety of tasks: platform, application, and user software.
OperationComputer software has to be "loaded" into the computer's storage (such as a hard drive, memory, or RAM). Once the software has loaded, the computer is able to execute the software. 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 control flow of instructions.
Data movement is typically from one place in memory to another. Sometimes it involves moving data between memory and registers which enable high-speed data access in the CPU. Moving data, especially large amounts of it, can be costly. So, this is sometimes avoided by using "pointers" to data instead. Computations include simple operations such as incrementing the value of a variable data element. More complex computations may involve many operations and data elements together.
Instructions may be performed sequentially, conditionally, or iteratively. Sequential instructions are those operations that are performed one after another. Conditional instructions are performed such that different sets of instructions execute depending on the value(s) of some data. In some languages this is known as an "if" statement. Iterative instructions are performed repetitively and may depend on some data value. This is sometimes called a "loop." Often, one instruction may "call" another set of instructions that are defined in some other program or module. When more than one computer processor is used, instructions may be executed simultaneously.
A simple example of the way software operates is what happens when a user selects an entry such as "Copy" from a menu. In this case, a conditional instruction is executed to copy text from data in a 'document' area residing in memory, perhaps to an intermediate storage area known as a 'clipboard' data area. If a different menu entry such as "Paste" is chosen, the software may execute the instructions to copy the text from the clipboard data area to a specific location in the same or another document in memory.
Depending on the application, even the example above could become complicated. The field of software engineering endeavors to manage the complexity of how software operates. This is especially true for software that operates in the context of a large or powerful computer system.
Currently, almost the only limitations on the use of computer software in applications is the ingenuity of the designer/programmer. Consequently, large areas of activities (such as playing grand master level chess) formerly assumed to be incapable of software simulation are now routinely programmed. The only area that has so far proved reasonably secure from software simulation is the realm of human art— especially, pleasing music and literature.
Kinds of software by operation: computer program as executable, source code or script, configuration.
Quality and reliabilitySoftware reliability considers the errors, faults, and failures related to the creation and operation of software.
LicenseSoftware license gives the user the right to use the software in the licensed environment, some software comes with the license when purchased off the shelf, or an OEM license when bundled with hardware. Other software comes with a free software licence, granting the recipient the rights to modify and redistribute the software. Software can also be in the form of freeware or shareware. See also License Management.
PatentsThe issue of software patents is controversial. Some believe that they hinder software development, while others argue that software patents provide an important incentive to spur software innovation. See software patent debate.
Ethics and rights for software usersBeing a new part of society, the idea of what rights users of software should have is not very developed. Some, such as the free software community, believe that software users should be free to modify and redistribute the software they use. They argue that these rights are necessary so that each individual can control their computer, and so that everyone can cooperate, if they choose, to work together as a community and control the direction that software progresses in. Others believe that software authors should have the power to say what rights the user will get.
See alsoportal Software
- system software
- application software
- computer program
- Software as a Service
- Origins of computer terms
- Software industry
- Custom Software
- Computer programming
- List of basic computer programming topics
- List of computer programming topics
- Programming language
- Software development process
- Software engineering
- Software license
- Proprietary software
- Free software
- Open source software
- Copyright infringement of software
- History of free software
- World's largest software companies
software in Afrikaans: Sagteware
software in Arabic: برمجيات
software in Asturian: Programa d'ordenador
software in Min Nan: Nńg-thé
software in Bosnian: Softver
software in Breton: Meziant
software in Bulgarian: Програмно осигуряване
software in Catalan: Programari
software in Czech: Software
software in Danish: Computerprogram
software in German: Software
software in Estonian: Tarkvara
software in Spanish: Software
software in Esperanto: Programaro
software in Basque: Software
software in Persian: نرمافزار
software in French: Logiciel
software in Galician: Programa informático
software in Gujarati: સૉફ્ટવેર
software in Classical Chinese: 軟體
software in Korean: 컴퓨터 소프트웨어
software in Hindi: सॉफ्टवेयर
software in Croatian: Programska podrška
software in Indonesian: Perangkat lunak
software in Interlingua (International Auxiliary Language Association): Software
software in Inuktitut: ᐊᕿᑦᑐᖅ ᖃᕆᑕᐅᔭᐅᑉ ᑎᑎᕋᕐᕕᖓ/aqittuq qaritaujaup titirarvinga
software in Icelandic: Hugbúnaður
software in Italian: Software
software in Hebrew: תוכנה
software in Kurdish: Nermalav
software in Latin: Res informatica
software in Latvian: Programmatūra
software in Luxembourgish: Software
software in Lithuanian: Programinė įranga
software in Hungarian: Szoftver
software in Malayalam: സോഫ്റ്റ്വെയര്
software in Malay (macrolanguage): Perisian komputer
software in Dutch: Software
software in Newari: सफ्टवेर
software in Japanese: ソフトウェア
software in Norwegian: Dataprogram
software in Norwegian Nynorsk: Programvare
software in Low German: Software
software in Polish: Oprogramowanie
software in Portuguese: Software
software in Romanian: Software
software in Russian: Программное обеспечение
software in Albanian: Software
software in Sicilian: Software
software in Simple English: Software
software in Slovak: Softvér
software in Slovenian: Programska oprema
software in Finnish: Tietokoneohjelma
software in Swedish: Programvara
software in Tagalog: Software
software in Tatar: Sanaq programı
software in Thai: ซอฟต์แวร์
software in Vietnamese: Phần mềm
software in Turkish: Yazılım
software in Ukrainian: Програмне забезпечення
software in Venetian: Software
software in Yiddish: ווייכווארג
software in Chinese: 软件