Software [Programme und die zugehörigen Daten.[1] Sie dient dazu, Aufgaben zu erledigen, indem sie von einem Prozessor ausgewertet wird und so softwaregesteuerte Geräte, die einen Teil der Hardware bilden, in ihrer Arbeit beeinflusst.
] ist ein Sammelbegriff für die Gesamtheit ausführbarerIn diesem Sinne wurde der Begriff erstmals 1958 von John W. Tukey benutzt.[2]
Überblick
Im allgemeinen Sprachgebrauch und in der Literatur zu Softwaretechnik wird die Definition eingeschränkt auf Computerprogramme und die mit ihnen eng verbundenen Ressourcen, wie z. B. Konfigurationsdaten neben Icons und Schriftarten, die zum Betrieb notwendig sind.[3] Daten, die zur Verarbeitung bestimmt sind (z. B. digitalisierte Musikstücke), werden hier meist nicht als Software verstanden.[4] Diese Definition wird auch als Softwaresystem oder Softwareprodukt angesehen,[5] das als Beiwerk zusätzlich Bestandteile wie z. B. die Softwaredokumentation in der digitalen oder gedruckten Form eines Handbuchs enthalten kann [6] (und in juristischem Sinn enthalten muss).
Eine weiter gefasste Definition beschreibt Software als Gegenstück zur Hardware, wobei Software hier jede Art von digitalen Daten umfasst, die auf einer Hardware gespeichert sein können,[7] von der Firmware, dem (möglichen) BIOS, dem Betriebssystem, den I/O-Daten bis hin zu allen (möglichen) Dateien eines softwaregesteuerten Gerätes. Dieser Definition nach gehören zur Software auch z. B. Musikdaten auf einer CD. Wobei die CD selbst der Datenträger (die Hardware) ist, auf dem die Software gespeichert wurde, die für ein softwaregesteuertes Gerät, den CD-Spieler, bestimmt ist. Nicht zur Software im Sinn dieser Definition sollten dagegen z. B. 'normale' betriebliche Daten gehören, die durch kaufmännische Software zu verarbeiten sind - und nicht von den oben referenzierten Systemkomponenten.
Juristische Definition
In der Rechtsprechung wird zwischen Individualsoftware und Standardsoftware unterschieden: Bei dem Erwerb von Individualsoftware wird ein Werkvertrag bzw. Werklieferungsvertrag abgeschlossen, der Erwerb von Standardsoftware gilt als Sachkauf.
Zu "Softwaredokumentation": Nach der Rechtsprechung des BGH zum Thema "EDV-Anwenderdokumentationen" ist es als geklärt anzusehen, dass, unabhängig vom in Frage kommenden Vertragstyp, die Softwareüberlassung neben der Überlassung des Programms auch zur Überlassung entsprechender Programminformationen verpflichtet. [8] Hiernach ist sie "neben" der Software zu liefern, gilt also nicht selbst als Teil der Software.
Siehe auch: Seriennummer, Spyware, Langzeitarchivierung, Gebraucht-Software
Wesen und Eigenschaften von Software
Software als Gegenstück zur Hardware
Die physischen Bestandteile eines Computersystems (die Geräte selbst, zuzüglich Kabel, etc.) werden unter dem Begriff Hardware zusammengefasst.
Datenträger als Teil der Hardware weisen eine bestimmte Beschaffenheit auf. In einem für Computer üblichen Binärsystem manifestiert sich die gemeinte Beschaffenheit in Form von gesetzten oder gelöschten Bits, den digitalen Daten, die im Allgemeinen veränderbar sind.
Auch Software-Komponenten werden im Allgemeinen als 'Daten' gespeichert. Sie werden jedoch nicht nur zu Informationszwecken im weitesten Sinn gespeichert und genutzt, sondern sie können (in unterschiedlichen Formen) über Funktionen der Betriebssoftware auf dem Computer 'Funktionen' ausführen.
Der Übergang zwischen Hard- und Software lässt sich an den ersten Spielhallenspielen verdeutlichen, wie das Spiel Breakout. Einstmals bestand deren komplettes Programm (der Ablauf, die Logik) bildlich gesehen aus „vorverdrahteten Schalttafeln“.[9] Sie wurden komplett in Hardware realisiert.[10] Erst später, als solche Spiele auch für Computer programmiert wurden und nicht mehr aus „vorverdrahteten Schalttafeln“, sondern aus digitalen Daten bestanden, gab es diese Spiele auch als Software. Die Daten sind dafür gedacht, von dem Computersystem interpretiert zu werden (mit Hilfe eines Prozessors). Wobei mit Computersystem hier nicht nur der PC gemeint ist, sondern jedes softwaregesteuerte Gerät wie z. B. ein Handy, CD-Player oder moderner TV, etc.
Elektronisch gesetzte Bits haben für sich keine Substanz. Daher lässt sich Software als Gegenstück zur Hardware betrachten,[7] weil Software nichtphysische, Hardware physische Funktionsbestandteile eines softwaregesteuerten Gerätes umschließen. Zur Veranschaulichung der nichtphysischen Gestalt von Software und ihren Einfluss auf die Arbeitsweise solcher Geräte lässt sich ein Computer vorstellen, auf dem ein alternatives Betriebssystem installiert wird. Dafür muss die Hardware nicht erweitert oder ausgetauscht werden, was bedeutet, dass das Gerät äußerlich unverändert wirkt (es wird tatsächlich nur die Eigenschaft der Datenträger verändert; es werden Bits gesetzt bzw. gelöscht). Dennoch arbeitet das System dank der neuen Software anders als zuvor, weil die gesetzten Eigenschaften vom Computer interpretiert werden.
Die Beschaffenheit eines Datenträgers lässt sich faktisch nicht von der Hardware trennen, denn die Beschaffenheit einer Sache gehört zur Sache selbst. Ungeachtet dessen ist es seit John Wilder Tukey üblich, dass Soft- und Hardware getrennt voneinander betrachtet werden.[2]
Software ist im Voraus geleistete geistige Arbeit
Die Programmautoren erarbeiten z. B. ein Lösungsverfahren für die korrekte Trennung aller deutschen Wörter in einem Textverarbeitungsprogramm. Damit ist im Voraus, also bevor diese Tätigkeit überhaupt anfällt, schon für alle Schreiber, die mit diesem Textverarbeitungsprogramm arbeiten, die geistige Arbeit „korrektes Trennen deutscher Wörter“ geleistet. Dabei wird die Eigenschaft von Computern genutzt, auf sie verlagerte Aufgaben erheblich schneller und zuverlässiger ausführen zu können - als dies bisher Menschen möglich wäre. Auch bei der Softwareentwicklung kann mitunter auf „im Voraus“ von Dritten entwickelte Algorithmen zurückgegrieffen werden.
Weitere Eigenschaften von Software
Weitere Eigenschaften von Software sind:
- Einmal erzeugte Software kann mit verhältnismäßig geringen Kosten vervielfältigt werden, die meist durch Datenträger, Werbung und dem Herstellen von Verpackung und zu Papier gebrachten Dokumentationen anfallen.
- Software verschleißt nicht durch Nutzung, unterliegt jedoch mit der Zeit der Softwarealterung.
- Software ist meist austauschbar, aktualisierungsfähig, korrigierbar und erweiterbar, insbesondere dann, wenn Richtlinien eingehalten werden und der Quelltext verfügbar ist.
- Mitunter kann Software vorkonfiguriert werden, um so eine Neuinstallation zu beschleunigen und um Fehler bei der Konfiguration zu minimieren.
- Software tendiert dazu, umso mehr Fehler zu enthalten, je komplexer sie ist. Fehler werden in aktualisierten Softwareversionen oder mithilfe eines Patches behoben. Softwarefehler bezeichnet man auch als Bugs.
- Der Beweis der Fehlerfreiheit ist in der Regel nicht zu erbringen. Nur bei formaler Spezifikation der Software ist der mathematische Beweis ihrer Korrektheit theoretisch überhaupt möglich.
Arten von Software
Software lässt sich nach verschiedenen Kriterien unterscheiden.
- Unterteilung nach der Nähe zur Hardware beziehungsweise Anwender
- Systemsoftware, die für grundlegende Funktionen des Computers erforderlich ist. Hierzu zählen insbesondere das Betriebssystem sowie Gerätetreiber.
- systemnahe Software, der Bereich zwischen Betriebssystem und Anwendungssoftware z. B. Dienstprogramme, Datenbank-Verwaltungswerkzeuge, Programmierwerkzeuge und Middleware.
- Anwendungssoftware, die den Benutzer bei der Ausführung seiner Aufgaben unterstützt und ihm dadurch erst den eigentlichen, unmittelbaren Nutzen stiftet
- Unterteilung nach Art des Auftraggebers
- Standardsoftware: Wird von einem Softwareanbieter erstellt, und kann von Kunden erworben werden
- Individualsoftware: für einen (oder von einem) einzelnen Anwender individuell erstellt
- Software nach der Art der Einbettung
- nicht eingebettete Software (Software, die installiert wird)
- fest in einem Gerät zu dessen Steuerung untergebrachte Software (z. B. in einem ROM), bezeichnet man als Firmware oder auch Eingebettete Software.
- Einstufung nach Nutzungsrecht (Lizenz)
- Adware
- Beerware
- Cardware (auch Postcardware)
- Careware
- Crippleware
- Donationware
- Freeware
- Nagware
- Shareware
- Freie Software
- Unterteilung nach Quellcode-Veränderbarkeit
- Einstufung nach Verfügbarkeit
- Andere Unterteilungen
- Portable Software
- Bananenware (unausgereifte Software)
- Schlangenöl (Programm ohne echte Funktion, wird aber als Wundermittel angepriesen)
- Shovelware (Sammlung von Software, wobei die Quantität zählt)
- Riskware
- Bloatware (mit Funktionen ohne synergetischen Nutzen überladene Software)
Lizenzmodelle
Die Verbreitung und Nutzung von Software unterliegt dem Urheberrecht. Es gibt in diesem Zusammenhang mehrere typische Überlassungsmodelle:
- Verkauf
- Der vollständige Verkauf von Software, inklusive der Überlassung von Weiterverbreitungsrechten, kommt praktisch nur zwischen Unternehmen vor, in der Regel im Rahmen von Auftragsprogrammierung oder beim Verkauf eines Softwareentwicklungsunternehmens.
- Nutzungsrecht
- Bei der meisten Software, die zum Beispiel für PCs „gekauft“ werden kann, wird in Wirklichkeit nur ein Nutzungsrecht überlassen. Dieses Modell ist auch bei der Auftragsprogrammierung üblich, bei der ein Unternehmen ein Programm für den Eigengebrauch eines anderen Unternehmens speziell entwickelt. Bei Freeware ist dieses Recht kostenlos, was nicht mit Freier Software verwechselt werden darf.
- Software as a Service
- Die Software wird bei einem Dienstleister gehostet, die eigentliche Nutzung der Software kann entweder pro Zeitraum oder pro Nutzungseinheit berechnet werden und kann oft mit einem einfachen PC und z.B. per Webbrowser genutzt werden.
- Freie Software/Open Source/GPL
- Freie Software darf von jedem genutzt, beliebig verändert und weiterverbreitet werden. Oft unterliegt dieses Recht gewissen Einschränkungen, wie zum Beispiel der Nennung des Autors oder die Verpflichtung, veränderte Versionen unter die gleiche Lizenz zu stellen (GPL). Software, die nicht zu dieser Gruppe zählt, wird proprietär genannt.
Zwischen den oben genannten Hauptformen der Softwareverbreitung gibt es zahlreiche Zwischen- und Mischstufen.
Siehe auch: Lizenzen der freien Software, Lizenzmanagement
Freie Software und Open Source
→ Hauptartikel: Freie Software und Open Source
‚Freie Software’ ist eine soziale Bewegung, die unfreie Software als gesellschaftliches Problem begreift.[11] Wobei „frei“ hier nicht „kostenlos“ bedeutet (‚Freie Software’ ist nicht dasselbe wie ‚Freeware’), sondern die Freiheiten für die Gesellschaft meint, die ein derart lizenziertes (auch kommerzielles) Produkt bietet. In den Augen der von Richard Stallman 1985 gegründeten Free Software Foundation (FSF) ist die Entscheidung für oder gegen Freie Software deshalb primär eine ethische und soziale Entscheidung.
Dagegen begreift die 1998 gegründete Open Source Initiative (OSI) quelloffene Software als bloßes Entwicklungsmodell, wobei die Frage, ob Software quelloffen sein sollte, dort eine rein praktische und keine ethische Frage ist. Die FSF wirft der OSI daher eine Ablenkung von den wesentlichen Punkten vor.[12] Eric S. Raymond hat den Begriff ‚Open Source’ in der Annahme eingeführt, dass das unpopuläre Thema ‚Freiheit’ Geldgeber für solche Projekte abschrecken könne.
Auch wenn es sich heute um zwei unterschiedliche Bewegungen mit unterschiedlichen Ansichten und Zielen handelt, verbindet sie die gemeinsame Wertschätzung für quelloffenen Code, was in zahlreichen Projekten mündet, in denen sie zusammenarbeiten.
Erstellung von Software
→ Hauptartikel: Softwaretechnik
Die Entwicklung von Software ist ein komplexer Vorgang. Dieser wird durch die Softwaretechnik, einem Teilgebiet der Informatik, systematisiert. Hier wird die Erstellung der Software schrittweise in einem Prozess von der Analyse über die Softwaremodellierung bis hin zum Testen als wiederholbarer Prozess beschrieben.
In aller Regel wird die Software nach der Entwicklung mehrfach angepasst und erweitert. Der Software-Lebenszyklus kann durchaus mehrere Jahre betragen.
Auswahl von Software
Die Anschaffung von Software bringt häufig hohe Investitionskosten mit sich. Häufig ist sie als Mittel zur Umsetzung strategischer Entscheidungen vorgesehen oder soll Unternehmensprozesse maßgeblich verbessern. Zur Vermeidung von Fehlinvestitionen oder von späteren negativen Erfahrungen sollte der Anschaffung ein systematischer Entscheidungsprozess vorausgehen, besonders wenn unter mehreren Alternativen ausgewählt werden soll.
Eine der möglichen Methoden zur Entscheidungsfindung ist die Scoring Methode, definiert nach 'Wirtschaftslexikon' als Punktbewertungsmethode ... bei der versucht wird, qualitative Faktoren und subjektive Einschätzungen zu quantifizieren, um sie vergleichbar zu machen.
Der Auswahlprozess für Software sollte, angelehnt an die in Entscheidung beschriebene allgemeine Vorgehensweise folgende Schritte umfassen:
- Feststellen eines Entscheidungsbedarfes
- Ermitteln von grundsätzlich in Frage kommenden Alternativen
- Definieren und Beschreiben von Entscheidungskriterien - inkl. Gewichtungsfaktoren. Die Beschreibung soll i. S. einer Anforderung formuliert sein, damit eindeutige Bewertungen (z. B. mit Ja/Nein, oder als Prozentwert) möglich sind.
- Validierung der Entscheidungskriterien je Alternative - z. B. nach Präsentationen, Tests oder Ähnlichem. Durch Verwendung von Wertungskennziffern (Noten, Prozent ...) wird die Beurteilung formal quantifiziert, kommentierende Texte erläutern zusätzlich.
- Auswerten der Validierung mit Entscheidungsvorschlag: Errechnen und aggregieren der Wertungen (ggf. mit Gewichtung) zu einem numerischen "Gesamturteil". Die Erfüllung der Pflichtkriterien ist gesondert zu überprüfen.
- Entscheidung - mit Protokollierung der Begründung, möglichst von allen Entscheidungsträgern akzeptiert
Die Entscheidungskriterien und ihr Detaillierungsgrad sollten sich an der Tragweite der Entscheidung und der Art der auszuwählenden Anwendung orientieren. Sie sollten möglichst vollständig, überschneidungsfrei und mit einer Gewichtung definiert sein.
Zur praktischen Durchführung werden häufig Anwendungen zur Tabellenkalkulation verwendet. Bei Nutzung einer Entscheidungssoftware (Decision Support Software, DSS) können alle Entscheidungsinformationen sofort, schnell, detailliert und übersichtlich erfasst, berechnet und dokumentiert werden.
Als Entscheidungskriterien für Software sollten Anforderungen definiert werden, die z. B. die folgenden Bereiche betreffen:
Funktionale Anforderungen:
- Welche Daten kann die Software verwalten / verarbeiten? Objekte, Attribute inkl. Ausprägungen, Beziehungen
- Welche interaktiven Bearbeitungsfunktionen bietet die Software?
- Welche Auswertungen bietet die Software?
Technische Anforderungen:
- Integrationsfähigkeit in die bestehende IT-Landschaft; z.B. internetfähig
- Performance / IT-Belastung
- Entwicklungsqualität der Lösung
Anforderungen zur Architektur:
- Bedienbarkeit / Ergonomie / Hilfesystem
- Berechtigungsprüfungen, Vier-Augen-Prinzip
- Mandantenfähigkeit / Mehrsprachigkeit
- Versionierungsfunktionen, historische Sicht auf die Daten
- Anpassbarkeit z.B. über Parameter
- Zusätzliche Auswertungen individuell erstellbar?
Sonstige Kriterien:
- Kosten (z. B. mittels einer Total Cost of Ownership (TCO)-Betrachtung)
- Standardsoftware oder Individualentwicklung? Projektunterstützung des Herstellers
- Verbreitung der Software
- Hersteller / Zukunftsträchtigkeit, Verbreitung, Lebenszyklus der Software-Lösung
- Support: Updatefrequenz, Reaktionszeit bei Softwarefehlern
Wenn die Unterlagen zur Entscheidung im Kaufvertrag als Grundlage berücksichtigt sind, sind ggf. spätere Gewährleistungsforderungen einfacher durchzusetzen.
Siehe auch
Literatur
- John W. Tukey: The Teaching of Concrete Mathematics. In: The American Mathematical Monthly. Vol. 65, no. 1 (Jan. 1958), pp 1–9. (Erstmalige Verwendung des Begriffs Software im heutigen Sinn)
- F. R. 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), 69.
- Sebastian von Engelhardt: Die ökonomischen Eigenschaften von Software. In: Jenaer Schriften zur Wirtschaftswissenschaft. 14/2006, Friedrich-Schiller-Universität Jena, Wirtschaftswissenschaftliche Fakultät, ISSN 1611-1311.
Weblinks
- Software Wiki
- Geschichte der Softwareprogrammierung
- Software’s origin (englisch)
- Ursprung des Wortes Software (englisch)
Einzelnachweise
- ↑ Wolfgang Lassmann: Wirtschaftsinformatik. ISBN 978-3-409-12725-7.
- ↑ a b linfo.org – Software Definition, 1958, Januar-Ausgabe des American Mathematical Monthly (Titel: The Teaching of Concrete Mathematics). Tukey schreibt: „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.“
- ↑ http://www.wissen.de/wde/generator/wissen/ressorts/technik/computer/index,page=1207964.html
- ↑ Auszug aus lexikon.meyer.de: „[...] Im allgemeinen Sprachgebrauch wird die Bezeichnung Software meist nur auf Programme bezogen, nicht aber auf andere Daten [...]“ (eine Verlinkung dahin ist nicht mehr möglich, da „Meyers Lexikon Online“ zum 23. März 2009 eingestellt wurde).
- ↑ Stefan Schneider: Empirische Evidenz für die Relevanz des Geschäftsmodells Softwareentwicklung und -absatz. ISBN 978-3-8350-0197-8.
- ↑ Lehr- und Übungsbuch Informatik 1. Hanser Verlag, 2003, Seite 311
- ↑ a b linfo.org – Software Definition, Zitat: „[…] In a broader sense it can also refer to all information (i.e., 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 […]“
- ↑ Beckmann, in: CR 9/98, S.519 ff.
- ↑ Steve Wozniak: iWoz – Wie ich den Personal Computer erfand und Apple mitgründete. Deutscher Taschenbuchverlag 2008, ISBN 978-3-423-34507-1, S. 144-149
- ↑ http://www.qaptainqwerty.com/2007/03/iwoz.html
- ↑ The Selected Essays of Richard Stallman (aktualisierte Fassung): "Open Source ist ein Entwicklungsmodell. Freie Software ist eine soziale Bewegung. Für die Open-Source-Bewegung ist nicht-freie Software eine suboptimale Lösung. Für die Freie-Software-Bewegung ist nicht-freie Software ein soziales Problem und Freie Software ist die Lösung."; ursprüngliche Fassung: "Für die Freie-Software-Bewegung ist Freie Software ein ethisches Gebot ... nicht-freie Software ist ein gesellschaftliches Problem ..."
- ↑ http://www.gnu.org/philosophy/free-software-for-freedom.de.html