Software ist immateriell und besteht aus den Sprachen und Notationen, in denen sie formuliert ist.[9]:37 Software kann zwar auf bestimmten Medien gespeichert, gedruckt, angezeigt oder transportiert werden.
Software ist immateriell und besteht aus den Sprachen und Notationen, in denen sie formuliert ist.[9]:37 Software kann zwar auf bestimmten Medien gespeichert, gedruckt, angezeigt oder transportiert werden. Diese sind aber nicht die Software, sondern sie enthalten sie nur.
Es ist zwar vorstellbar, Bits sichtbar und greifbar auf einem Trägermedium zu hinterlegen, doch grundsätzlich ist ‚Software‘ ein abstrakter, von Trägermedien unabhängiger Begriff. Das trifft für den Gattungsbegriff ohnehin zu, aber auch für konkrete Ausprägungen wie ein bestimmtes Anwendungsprogramm.[19] Als Analogie dazu ist es für den Begriff ‚Oper‘ oder ‚Zauberflöte‘ nicht begriffsbestimmend, ob sie im Theater aufgeführt, über Radio/TV übertragen oder als CD verkauft oder gehört wird, ob sie im Opernführer beschrieben oder in der Partitur aufgezeichnet ist.
In Details unterschiedliche Bedeutungen
- Im Zusammenhang mit der Ausführung auf einem Computer wird unter Software primär alles verstanden, was auf dem Rechner ausgeführt werden kann (das Programm im engeren Sinn, bestehend aus Befehlen und Datendefinitionen). Dazu kommen die mit den Programmen verbundenen Ressourcen, die zum Betrieb der Software erforderlich sind. Das sind, abhängig von den verwendeten Entwicklungswerkzeugen, zum Beispiel Konfigurationsdateien, Schriftart-Dateien, Lookup-Tabellen, Datenstrukturen für Datenbanken etc.
- In engstem Sinn wäre unter ‚Software‘ nur von der Hardware ausführbarer Maschinencode zu verstehen. Jedoch fällt darunter auch alles, was durch beliebige ‚interpretierende Systeme‘, die Teil der Systemsoftware sind, ausgeführt werden kann, wie das bei Verwendung höherer Programmiersprachen und Entwicklungsumgebungen nahezu immer der Fall ist.[9]
- So ist auch der Quellcode in der Softwareentwicklung (als wesentlicher Arbeitsgegenstand) und in der Qualitätssicherung (als bedeutender Prüfgegenstand; Details siehe Softwarequalität) ein wesentliches Software-Artefakt.
- Sprachlich wird der Ausdruck ‚Software‘ unterschiedlich verwendet: Er steht für konkret benannte Komponenten (Programm XY, Unterprogramm ABC, Konfigurationsdatei XXX.INI). Er wird als Sammelbegriff für unterschiedliche Gesamtheiten/Mengen von Programmen benutzt,[2] zum Beispiel für eine aus vielen Einzelprogrammen bestehende Buchhaltungssoftware (siehe Software-System), für alle Anwendungen eines Unternehmens („unsere Unternehmenssoftware“), oder als Typ-/Gattungsbegriff für unterschiedliche Arten von Software (wie Grafiksoftware, Standardsoftware, Systemsoftware etc.).
Fließende Grenze zwischen Software und Daten
Zur Verarbeitung bestimmte Daten zählen im allgemeinen Sprachgebrauch nicht zum Begriff Software.[7] Jedoch ist die Grenze zwischen Software und Daten fließend, denn je nach Situation können Daten und Programme in unterschiedlichen Rollen auftreten und die Begriffe dabei vertauscht werden:
- Auf der Dateiebene können Mischformen auftreten, beispielsweise in Office-Dokumenten oder bei einer Tabellenkalkulationsdatei. Hier enthält eine Datei sowohl Daten im Sinne von das Bearbeitete (Texte oder Zelleninhalte) als auch funktionale Anweisungen (Makroanweisungen, Zellformeln).
- Vertauscht sind die Rollen beispielsweise, wenn ein Quellprogramm von einem Compiler in ein Maschinenprogramm umgewandelt wird: Sowohl das Quellprogramm als auch das erzeugte Binärprogramm sind ‚Daten‘, der Compiler ist die Software. Ebenso verwendet ein Interpreter ein Quellprogramm oder ein Emulator ein Binärprogramm als Daten und erzeugt daraus speicherintern den ausführbaren Code. Die so verarbeiteten Programmdateien sind Software, rollenspezifisch aber gleichzeitig Daten.
Dieser Zusammenhang, dass ein Programm sowohl als Daten als auch als Funktion auftreten kann, ist zentral in verschiedenen Disziplinen der Informatik, darunter die theoretische Informatik (u. a. Rekursionstheorie, Automatentheorie, Domaintheorie) und die technische Informatik (z. B. Von-Neumann-Architektur).
Unterscheidung zwischen Hard- und Software
Je nach Zusammenhang ist bei der Unterscheidung zwischen Hard- und Software eine oder mehrere der folgenden Bedeutungen gemeint:
- Leicht veränderbare Komponente (Software) vs. schwer veränderbare Komponente (Hardware) in einem Computerdesign.[1]
- Instruktionskode (Software) vs. universelle Maschine (Hardware).
- Nicht-greifbar im Sinne von Funktionsbestandteilen eines Computersystems, die sich „nicht anfassen lassen“[20] (Software) vs. greifbare Komponenten (Hardware). Software ließe sich über eine Telefonleitung übertragen, Hardware dagegen nicht.
Die Gegensätze sind in der englischsprachigen Begriffsprägung (soft=weich, hard=hart) beabsichtigt.