Software [ ˈsɒf (t) wɛː ] ( dt. = Soft goods [from] soft = easily changeable components […], complement to ' hardware ' for the physical components ) is a collective term for programs and the associated data . It can also be used as accessories such. B. contain software documentation in digital or printed form of a manual.
Software determines what a software-controlled device does and how it does it (roughly comparable to a manuscript). The hardware (the device itself) executes software (works it off) and puts it into action. Software is the entirety of information that has to be added to the hardware so that a software-controlled device can be used for a defined range of tasks.
Due to the software-controlled working principle , rigid hardware can work individually. Today it is used not only in classic computers, but also in many embedded systems , such as washing machines, cell phones, navigation systems and modern televisions.
To this day, the term software has not been uniformly nor clearly defined. That goes u. a. back to the fact that "within software technology [...] a uniform, solid, consistent and systematic concept formation is hindered by a high speed of innovation and practical relevance". There are therefore various definitions that often only differ in details depending on the author and context.
In common parlance, the term software is usually only related to programs, but not to other data. In addition, the source text, other data or the documentation can also be added depending on the definition.
In addition, the software also used as a generic term for different types of programs (graphics software, application software, standard software, security software u. V. A.).
The term software is a made-up word that was used for the first time by John W. Tukey in the American Mathematical Monthly in 1958 as a counterpart to the much older word hardware . Hardware refers to all physical components of a computer. In this sense, software - as the counterpart to hardware - could basically be understood as all electronically stored data. However, this view is not sufficient as a definition.
Definitions according to ISO / IEC standard 24765
The current ISO / IEC standard 24765 replaced the DIN standard 44300 and contains the following definitions for software:
- Software is a program or a set of programs that are used to operate a computer.
- Software are programs and the associated documentation.
- Software are programs and, if applicable, the associated documentation and other data that are necessary to operate a computer.
Which of these definitions applies depends on the respective context, although here too the transitions are fluid.
Software as a program
In software engineering , software consists of “computer programs in every form, from source text to directly executable machine code ”. Computer programs often consist of several components that can also be distributed over several files.
Software as a program and documentation
In software law (often in connection with the acquisition of software), software is also referred to as a software product that “includes additional components such as B. the documentation can or must contain in digital or printed form ". This also applies to copyright law , where the design material belongs to the software, like the source text, also known as the source program . I.e. the copyright protection applies i. d. Usually also for the source code [as subject of protection].
Software as a program, documentation and data
In addition to the program itself (and possibly the documentation), some definitions also mention other data as belonging to the software ("associated data"). The IEEE glossary for software developers gives examples of such non-executable software parts, such as fonts , graphics, audio and video recordings, templates , dictionaries, documents and information structures (such as database records ).
There are also software definitions that include all data that the computer program uses and also include the documentation. In contrast, there are also definitions that exclude both the documentation and the data intended for processing.
However, a clear dividing line is not defined that describes which data are actually meant (e.g. the data to be processed) or which data are 'necessary' or 'associated'.
In the 1950s, software and hardware were still connected and perceived as a unit. The software was part of the hardware and was called program code. In 1958 the statistician John W. Tukey coined the term software for the first time.
Later, the decision of the US government in the 1970s brought about a novelty that IBM had to calculate and list software and hardware separately on invoices. This corresponded to an official recognition of the solitary nature of software and a definitive separation of hardware and software or a delimitation of software from hardware.
This development was followed in the 1970s by the establishment of companies that for the first time only dealt with software and only developed software and no hardware. These companies included Microsoft in the USA and SAP in Germany . The existence of such companies appears to be a matter of course in the 21st century, but was a significant innovation at the time.
The logical transition between hardware and software can be illustrated by the early arcade games, such as the game Breakout , which was published in April 1976. At that time, their complete program (the process, the logic) consisted of “pre-wired switchboards”. The arcade machine produced by Atari did not use a processor . Just one year later, when the game was being programmed for the computer and people began to differentiate between the terms 'hardware' and 'software' in processor-controlled devices, Breakout was available as software. The game no longer consisted of “pre-wired control panels”, but of instructions for a processor, including the additional information required for processing, which was stored together on a data carrier.
Special features of software
Software is immaterial
Software is immaterial and consists of the languages and notations in which it is formulated. Software can be stored, printed, displayed or transported on certain media. However, these are not the software, they just contain it.
It is conceivable to store bits in a visible and tangible way on a carrier medium, but in principle 'software' is an abstract term that is independent of carrier media. This applies to the generic term anyway, but also to specific forms such as a specific application program. As an analogy, the term 'opera' or 'magic flute' does not determine whether it is performed in the theater, broadcast on radio / TV or sold or heard on CD, whether it is described in the opera guide or recorded in the score .
Different meanings in details
- In connection with the execution on a computer, software is primarily understood to mean everything that can be executed on the computer (the program in the narrower sense, consisting of commands and data definitions). In addition, there are the resources associated with the programs that are required to operate the software. These are, depending on the development tools used , for example configuration files , font files , lookup tables , data structures for databases, etc.
- In the narrowest sense, 'software' would only mean machine code that can be executed by the hardware . However, this also includes everything that can be executed by any 'interpreting systems' that are part of the system software , as is almost always the case when using higher-level programming languages and development environments .
- In software development (as a central work item) and in quality assurance (as an important test item ; see software quality ), the source code is also an essential software artifact.
- The term 'software' is used in different ways : It stands for specifically named components (program XY, sub-program ABC, configuration file XXX.INI). It is used as a collective term for different sets / quantities of programs, for example for an accounting software consisting of many individual programs, for all applications of a company ("our company software"), or, as already mentioned, as a type / generic term for different types of Software (such as graphics software, standard software, system software, etc.).
Fluid boundary between software and data
In general usage, the term software does not include data intended for processing. However, the boundary between software and data is fluid, because depending on the situation, data and programs can appear in different roles and the terms can be mixed up:
- Mixed forms can occur at the file level , for example in Office documents or in a spreadsheet file. Here, a file contains both data in the sense of what has been edited (text or cell contents) and functional instructions ( macro instructions, cell formulas).
- The roles are reversed , for example, when a source program is converted into a machine program by a compiler : Both the source program and the generated binary program are 'data', the compiler is the software. An interpreter also uses a source program or an emulator uses a binary program as data and uses it to generate the executable code in the memory. The program files processed in this way are software, role-specific but at the same time data.
This relationship, that a program can appear both as data and as a function, is central in various disciplines of computer science, including theoretical computer science (including recursion theory , automaton theory , domain theory ) and technical computer science (e.g. Von Neumann architecture ).
Differentiation between hardware and software
Depending on the context, the distinction between hardware and software means one or more of the following meanings:
- Easily changeable component (software) vs. Hard-to-change component (hardware) in a computer design.
- Instruktionskode (software) vs . universal machine (hardware).
- Non-tangible in terms of functional components of a computer system, which " can not be touched " (software) vs . tangible components (hardware). Software can be transmitted over a telephone line, but hardware cannot.
The opposites are intended in the English-language term ( soft = soft, hard = hard).
Different perspectives on software
Software can be viewed from many different angles, for example:
Interaction with the hardware (execution)
"There is a certain distribution of tasks between hardware and software : the hardware guarantees [...] quantity, i.e. speed and storage capacity, the software ensures [...] the mapping of the requirements [...] to the structurally primitive hardware"
Although attributes such as flexibility, individuality, performance, etc. are sometimes ascribed to the term 'software', ultimately everything that the computer 'actually does' is not performed by the software, but exclusively by the hardware . Software only 'describes' what should be done and in what form it happens.
For this purpose, the machine code of the software is loaded into the main memory of the computer at the lowest level using the operating system (i.e. also by its machine commands) and fed to the arithmetic unit step by step (see command counter ) for execution. This working principle applies to any type of software, even if it is e.g. B. is executed by interpreters : These are also software whose machine code is also executed as described on the hardware interface and the machine commands are only generated internally in the memory. Also compiler , macro processors and any other type of system software are running on this principle.
The machine code must be available in a form / structure that can be interpreted and executed by the hardware via the interface implemented in it. With their content and structure, the commands indicate what is to be done, which data areas in the main memory are to be used or changed (via addressing information contained in the command ) and, if necessary, at which point the program is to be continued.
During execution, many layers work together and as a whole lead to changes in the status of the hardware or ultimately to the intended results, such as the output of a print line, data access or the display of field content on the screen. In applications developed in higher programming languages, hundreds of thousands or millions of machine commands can often be run through for relatively simple functions (such as reading from the database).
The parallel execution of several programs / processes, which is possible in modern computers, is essentially brought about by the operating system, which initiates and manages the change from one task to the other when certain events occur . See also multitasking .
The software also makes a significant contribution to how efficiently the hardware is used. Depending on the design of the algorithms, different system performances can be achieved with the same hardware.
The development of software is a complex process. This is systematized by software technology, a branch of computer science . Here, the creation of the software is described step-by-step in a process from analysis to software modeling to testing as a repeatable process.
As a rule, the software is adapted and expanded several times after development. The software life cycle can be several years.
- Software is using certain procedures, methods and , tools' developed . Different development stages are run through, in each of which different intermediate states of the software arise: Analysis activities (numerous development documents)> programming (source code)> in operation (machine code or executable code). In the narrower sense of execution on the computer, only the latter is considered to be 'software'. See also software development .
- In this context, software is the subject of processing by system programs. For example, if a compiler reads the source code of a program, processes it and generates machine or intermediate code, from its point of view these are 'data'.
- Once software has been generated, it can be reproduced at relatively low cost , which is usually incurred through data carriers, advertising and the production of packaging and documentation put on paper.
- Software does not wear out with use, but is subject to the time of software aging .
- Software is mostly interchangeable, capable of being updated, correctable and expandable, especially if existing guidelines are adhered to and the source code is available.
- Software tends to have more errors , the more complex it is. Errors are reported in updated software versions or by means of a patch and i. d. Usually fixed after performing software tests. Software errors are also referred to as program errors or "bugs".
- Because software can be developed using many different programming languages and in many different operating systems and system environments , software standards are required to make information 'understandable' and interchangeable across systems and companies. See also electronic data exchange (examples), programming style .
Selection of software
In the decision to purchase software, i. E.g. the use of standard software or the own production ( individual software ). This decision often entails high costs, especially in a business environment. Such decisions can also be the basis for implementing the corporate strategy or should significantly improve corporate processes. To avoid bad investments, a systematic decision-making process should precede the purchase .
Operation of software
- Depending on the area of application, the use of software requires a certain degree of organization in order to use the parts that belong together correctly and to replace them with new versions (for example in larger companies in release management ).
- Sometimes software can be preconfigured to speed up a new installation and to minimize errors in configuration.
Software from the perspective of business administration and work sociology
Essentially applicable to business application software, software can be viewed from an (business) economic point of view as 'intellectual work done in advance', i.e. as an investment . For example, the program authors develop a solution procedure for the correct separation of all German words in a word processing program. This means that the intellectual work of “correctly separating German words” is already done in advance, i.e. before this activity actually occurs, for all writers who work with this word processing program. This makes use of the ability of computers to carry out tasks that have been transferred to them much faster and more reliably than was previously possible for humans. Particularly in software development, there is intensive use of algorithms and code parts developed “in advance” - as parts of a program (“ software reuse ”).
A similar connection is seen in the sociology of work : Such software-based measures are suitable for significantly changing work content and processes. The spectrum ranges from the provision of simple aids (e.g. for totalizing or averaging) to the complete redesign of processes (by concentrating previously separate or by breaking down previously centralized workflows) - or even to their complete replacement by IT solutions. Brödner u. a. call this "materialized" brain work. See also rationalization , optimization , Taylorism .
Categorization of software
According to ISO / IEC 2382, software is structured (and designated) as follows:
- System software : Application-independent software that enables or supports the execution of application software (e.g. operating system , as well as device drivers and utility programs )
- Support software, d. H. Programs that help with development, maintenance or provide a non-application-specific service (e.g. editors, compilers , virus scanners, database management systems , ...)
- Application software that supports the user in carrying out his tasks and only thereby gives him the actual, direct benefit (e.g. a spreadsheet).
Subdivision according to the degree of individuality
- Standard software is created by a software provider for use by several / many customers who can purchase this software.
- Individual software is created or modified for a single user to solve a specific task, alternatively by a software provider or by a company's own developers or development departments.
Legally, a distinction is made in the acquisition of software between custom software and standard software: For custom software will work contract or work delivery contract concluded, the acquisition of standard software is considered tangible purchase.
Subdivision according to the type of results produced
These arise in the course of the software manufacturing process and can be, for example:
- Source code , intermediate code , machine code , device drivers and other required modules (as program library supplied)
- Installers and related instructions
- Other documents such as the documentation for software developers and software users
Software according to the type of embedding
- Non-embedded software which later installed is
- Software that is permanently housed in a device to control it (e.g. in a ROM or as part of an embedded system ) is referred to as firmware or also as embedded (or 'embedded') software
Classification according to right of use ( license )
- Adware , software with advertisements
- Cardware (also Postcardware)
- Free software
Subdivision according to source code availability
Classification according to availability
- Abandonware , outdated products that are no longer maintained and supported
- Vaporware , software that does not appear or appears late after being announced
Other software terms
- Portable software : Can run on different computers (types)
- Native software: Created or compiled to run on a specific computer system. The program code uses the individual functionality of a certain system type, general validity and portability are not considered development goals.
- Banana ware (immature software that "matures" after delivery)
- Snake oil (program with no real function, but is touted as a miracle cure)
- Shovelware (collection of software, where quantity counts)
- Bloatware ( software overloaded with functions without synergetic benefits)
- Used software
- The complete sale of software, including the granting of redistribution rights, occurs practically only between companies, usually in the context of contract programming or the sale of a software development company.
- Right of use
- Most software that can be “bought” for PCs , for example , is actually only granted one right of use. This model is also common in contract programming, where one company develops a program specifically for another company's use. In the case of freeware , this right is free of charge, which must not be confused with free software .
- Software as a service
- The software is hosted by a service provider, the actual use of the software can be calculated either per period or per unit of use. it often takes place on a simple PC and e.g. B. instead of using a web browser.
- Free software / Open Source / GPL
- Free software can be used by anyone, changed at will and redistributed. This right is often subject to certain restrictions, such as naming the author or the obligation to put modified versions under the same license (GPL). Software that does not belong to this group is called proprietary .
There are numerous intermediate and mixed stages between the main forms of software distribution mentioned above.
Free software and open source
'Free software' is a social movement that sees non-free software as a social problem. Whereby “free” does not mean “free of charge” (“free software” is not the same as “ freeware ”), but rather means the freedoms for society that offers such a licensed (also commercial) product. In the eyes of the Free Software Foundation (FSF) founded by Richard Stallman in 1985, the decision for or against free software is therefore primarily an ethical and social decision.
In contrast, the Open Source Initiative (OSI), founded in 1998, understands open source software as a mere development model, whereby the question of whether software should be open source is a purely practical and not an ethical question. The FSF therefore accuses the OSI of distracting from the essential points. Eric S. Raymond introduced the term 'open source' on the assumption that the unpopular topic of 'freedom' could deter funders for such projects.
Even if there are two different movements today with different views and goals, they share a common appreciation for open source code, which results in numerous projects in which they work together.
- Software crisis
- Software quality
- ISO / IEC 9126 (software quality according to ISO)
- Software company
- John W. Tukey : The Teaching of Concrete Mathematics. In: The American Mathematical Monthly. Vol. 65, no.1 , Jan. 1958, p. 2. (First use of the term software in today's sense), JSTOR 2310294
- FR Shapiro: Origin of the term software: Evidence from the JSTOR electronic journal archive. In: IEEE Annals of the History of Computing. 22, April-June 2000, p. 69.
- Sebastian von Engelhardt: The economic properties of software . (= Jena writings on economics. 14/2006). Friedrich Schiller University Jena, Faculty of Economics, (ideas.repec.org) .
- Software wiki
- History of software programming
- Software's origin (English)
- Origin of the word Software (English)
- Duden, Informatik: a subject dictionary for studies and practice. Dudenverlag, Mannheim et al. 1993, ISBN 3-411-05232-5 .
- Wolfgang Lassmann: Business informatics : reference work for study and practice. Gabler, Wiesbaden 2006, ISBN 3-409-12725-9 , chap. 4.1 Basics. Quote "Software is a collective term for the entirety of the programs, the associated data and the necessary documentation that allow tasks to be carried out with the help of a computer." (Books.google.de)
- Text and exercise book computer science: Basics and overview. Volume 1, Hanser Verlag, 2003, ISBN 3-446-22543-9 , p. 311. (books.google.de)
- Tessen Freund: Software engineering by modeling knowledge-intensive development processes. Berlin 2007, ISBN 978-3-940019-11-0 , chap. 2.1.1 “Software”, p. 25, quote from Edmunds “Software includes computer programs and data that is used by these programs […] Software determines what a computer does and how it does it.” ; (books.google.de)
- Tessen Freund: Software engineering by modeling knowledge-intensive development processes. Berlin 2007, ISBN 978-3-940019-11-0 , chap. 2.1.1 “Software”, p. 25, quotation from Rothhardt; (books.google.de)
- Helmut Balzert: Textbook of software technology. 2nd Edition. Spektrum Akademischer Verlag, 2000, ISBN 3-8274-0480-0 , p. 23 f.
- excerpt from lexikon.meyer.de, software: " [...] In general usage, the term software is mostly only related to programs, but not to other data [...] " (a link to this is no longer possible because " Meyers Lexikon Online "was discontinued on March 23, 2009)
John W. Tukey : The Teaching of Concrete Mathematics. In: The American Mathematical Monthly. Vol. 65, no.1 , Jan. 1958, p. 2. (First use of the term software in today's sense), JSTOR 2310294 .
Tukey writes: “Today 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 . "
- Jochen Ludewig, Horst Lichter: Software Engineering. 1st edition. dpunkt Verlag, 2007, ISBN 978-3-89864-268-2 , p. 34. (dpunkt.de; reading sample, PDF) Quote “Software includes programs, processes, rules, as well as documentation and data related to the operation of a computer system have to do."
- linfo.org - Software Definition , quotation: “[…] In a broader sense it can also refer to all information (ie, both programs and data) in electronic form, and it can provide a distinction from hardware, which refers to media and systems on which software can exist and be used [...] "
- ISO IEC 24765: 2010, quotation "[Software is] 1. all or part of the programs, procedures, rules, and associated documentation of an information processing system 2. computer programs, procedures, and possibly associated documentation and data pertaining to the operation of a computer system 3. program or set of programs used to run a computer " ISO / IEC / IEEE 24765: 2010 on the ISO homepage
- Definition of computer program , Wirtschaftslexikon gabler.de
- Definition program , business lexicon gabler.de
- softwarepatents.eu , "Program code in its linguistic form as a work of language"
- Software and Systems Engineering Vocabulary ; IEEE Computer Society, 2012, p. 1, note on ISO / IEC 26514: 2008 4.46
- Rights in Technical Data , law.cornell.edu
- Stefan Schneider: Empirical evidence for the relevance of the business model software development and sales. In: Stefan Schneider: Interpretation of the International Financial Reporting Standards on the accounting object software development. DUV, Wiesbaden 2006, ISBN 3-8350-0197-3 , pp. 58-71. Quote "In addition to the computer program, software also includes the data necessary for operation and the associated documentation."
- Steve Wozniak : iWoz - How I invented the personal computer and co-founded Apple . Deutscher Taschenbuchverlag, 2008, ISBN 978-3-423-34507-1 , pp. 144-149.
- Legal framework for service-oriented architectures with web services. Univ.-Verlag Göttingen, Göttingen 2010, ISBN 978-3-941875-29-6 , p. 35: "Because software is the subject of a creative achievement that cannot be touched, its quality is sometimes denied."
- Helmut Balzert: Textbook of software technology: basic concepts and requirements engineering. 3. Edition. Spektrum, Akad. Verlag, Heidelberg 2009, ISBN 978-3-8274-1705-3 , p. 9: “Software is an immaterial product. Software cannot be touched or seen. "
- Klaus Wüst: Microprocessor technology: Fundamentals, architectures, circuit technology and operation of microprocessors and microcontrollers. Springer-Verlag, 2009, ISBN 978-3-8348-0461-7 , chap. 7.5.4 ISA - Instruction Set Architecture The ISA [this form] is exactly what needs to be known for the creation of machine programs . (books.google.de)
- Rajiv D. Banker, Srikant M. Datar, Dani Zweig: Software Complexity and Maintainability (PDF) Proceedings of the Tenth International Conference on Information Systems, 1989, pp. 247-255. ( citeseerx.ist.psu.edu; PDF ( Memento of August 8, 2014 in the Internet Archive ))
- The programmed head. In: P. Brödner, D. Krüger, B. Senf: A social history of data processing . 1982, ISBN 3-8031-2082-9 , p. 53.
- ISO / IEC 2382-1: 1993 - Information technology - Vocabulary - Part 1: Fundamental terms. (iso.org)
- Georg Herzwurm: Basics of operating systems. (PDF) (No longer available online.) Uni Stuttgart, January 18, 2006, p. 5 (33) , archived from the original on July 16, 2014 ; accessed on November 23, 2015 .
- Native software. Enzyklopedia.com
- The Selected Essays by Richard Stallman (updated version): “Open source is a development model. Free software is a social movement. Non-free software is a suboptimal solution for the open source movement. For the free software movement, non-free software is a social problem and free software is the solution. " Original version :" For the free software movement, free software is an ethical imperative ... non-free software is a social problem ... "
- Why free software is better than open source. on: gnu.org