Immer wieder stellen mir Freunde,
Kollegen oder Verwandte Fragen zum Thema Software. Viele der Fragen habe ich
längst vergessen. Manche gaben Veranlassung einen Blog-Eintrag zu verfassen. Eine
kleine Auswahl von Fragen, die mir in den letzten Wochen gestellt wurden, und
meine dazu gehörigen Antworten habe ich im Folgenden aufgeschrieben. Manche
Antworten sind vielleicht nicht so konkret wie erwartet. Sie stellen dann nur
eine Orientierungshilfe dar. Die Fragesteller sind nur durch Angabe ihres
Berufes oder ihrer Altersgruppe angedeutet, also anonymisiert.
A. Der Physiker
Wie stellt man Prozesse und Abläufe am
besten dar?
Will man den zeitlichen Verlauf eines
Prozesses genau beschreiben, benutzt man eine prozedurale Sprache. Dasselbe
gilt für Algorithmen. Ein wichtiges Hilfsmittel sind visuelle Darstellungen,
z.B. Flussdiagramme. Interessiert nur die Beziehung zwischen den Werten am
Anfang und den Werten am Schluss, so reicht eine funktionale Darstellung. Eine
Funktion stellt man sich am besten als Tabelle mit zwei Spalten vor, wobei die
Werte in der ersten Spalte alle von einander verschieden sind (oder eindeutig).
Sollen nur gewisse Beziehungen zwischen Eingabewerten und Ausgabewerten
ausgedrückt werden, verwendet man Zusicherungen. Das sind relationale oder
logische Ausdrücke. Welche Werte in Beziehung gesetzt werden, ist in jeder
Situation verschieden. Vollständigkeit wird nicht angestrebt. Mit Werten sind
beliebige Zeichen oder Zeichenketten (z. B. Texte, Töne, Bilder) gemeint und
nicht nur Ziffern.
NB: Eine verwandte Frage wurde in einem Blog-Eintrag vom Februar 2012 behandelt. Dort hieß es. ‚Wie spezifiziert und
abstrahiert man Prozesse?‘
Was ist der Unterschied zwischen Daten
und Information?
Daten sind Signale oder Zeichen, die
Menschen oder Maschinen vom Hintergrund eines Trägermediums unterscheiden
können, und zwar visuell, akustisch oder haptisch (taktil). Manche Maschinen
haben ‚Sinne‘, die beim Menschen nicht vorkommen, z.B. um Magnetfelder oder
radioaktive Strahlung zu erkennen. Information sind Daten, die sich gezielt umformen
oder mit anderen Begriffen in Verbindung bringen lassen. Daten werden dann von
jemandem benutzt, um etwas ganz anderes darzustellen oder erfahrbar zu machen,
etwa Finger für Zahlen oder Muscheln für Geld. Diese Fähigkeit haben nur
Lebewesen. Dazu gehören Einzeller genauso wie Pflanzen, Tiere und Menschen. Wenn
von ‚Big data‘ gesprochen wird, dann ist nicht nur Information gemeint. Man
hofft, in den großen Geröll- oder Abfallhaufen, welche die Natur oder wir
Menschen schaffen, noch etwas Verwertbares zu finden.
Was versteht man unter einer
Zufallsverteilung?
Eine Zufallsverteilung ist eine Folge
von Zeichen, für die keine kürzere, aber gleichwertige Darstellung oder
Beschreibung bekannt ist als die vorliegende Folge selbst. Insbesondere ist
kein Programm bekannt, das eine kürzere Folge erzeugen könnte. Immer, wenn eine
Sache dadurch definiert wird, was sie nicht ist, hilft das Praktikern nicht
sehr. Echte Zufallszahlen können nur mittels eines physikalischen Prozesses
erzeugt werden, etwa Münzwurf oder Würfeln. Computer können nur
Pseudo-Zufallszahlen generieren. Diese sind im Grunde vorhersehbar, aber
dennoch nützlich.
NB: Die obige Definition geht auf Greg Chaintin zurück, dessen
Algorithmische Informationstheorie große Beachtung fand.
B. Der Ökonom
Wie erhalte ich eine stabile
Software-Umgebung?
Will man ein stabiles Software-System
haben, muss man alle Funktionen, die man benötigt, vorab prüfen und dann nichts
mehr ändern. Wenn die Hardware keinen Ärger macht, läuft die Software dann bis
ans Ende der Tage einwandfrei. Das Problem besteht nur darin, abzuschätzen, was
ich zwischen heute und dem Tag der Verschrottung der Hardware an zurzeit noch
unbekannten Anwendungen brauche. Wenn etwas Neues kommt, darf ich nicht sagen,
dass kann das alte System bestimmt auch noch, und lasse es drauf ankommen, dass
es kracht. Richtig wäre es, für neue, nicht vorher geplante Anwendungen immer
ein neues Software-System zu kaufen und zu installieren. Da man für die
unbekannte Zukunft gerüstet sein will, aktualisiert man sein System. Jede Veränderung
macht ein System instabil, vor allem wenn sie völlig unnötig war. Man muss
nicht jede Änderung sofort installieren. Wartet man zu lange, akkumulieren sich
die Änderungen und ihr Einspielen wird riskant.
Warum passt sich Software nicht besser
an meine Gewohnheiten an?
Die Personalisierung von Software ist
eine typische Falle, wo Nachteile die Vorteile fast immer überwiegen. Der weitverbreitete,
uralte Denkfehler wird durch das Wort ,software‘ verursacht. In Wirklichkeit
ist Software weniger nachgiebig als Hardware. Hardware kann verbogen werden.
Bei Software muss jede Anpassung geplant und eingebaut werden. Ein Mensch kann
sich aufgrund von Übung anpassen, Software nicht. Würde sie sich anpassen,
würde dies den Nutzer nach jeder Änderung mit einer neuen Schnittstelle
konfrontieren und irritieren. Software, die sich den Nutzern anpasst, ist bei
mehreren gleichzeitigen Nutzern nicht mehr wartbar. Das Erfolgsgeheimnis guter
Software ist, dass man sich auf das konzentriert, was vielen Nutzern gemeinsam
ist. Um das herauszufinden, muss man viele einzelne Nutzer beobachten. Von sich
auf andere zu schließen, reicht nicht immer.
NB: Wird das gesamte Wissen, das die
Unterschiede zwischen Nutzern beschreibt, in Tabellen erfasst, also
parameterisiert, ist der eigentliche Code scheinbar stabil. Das Problem ist
quasi verschoben und – weil systematisierende Vorarbeit investiert wurde – auch
leichter handhabbar.
Warum erscheinen Software-Systeme so
verwirrend und komplex?
Da jedes Software-System aus vielen
Teilkomponenten besteht, müssen diese wie ein Uhrwerk zusammenarbeiten. Diese
Kooperation erfolgt, je nach Anwendung, in unterschiedlicher Weise. Ihre
Kommunikation geschieht mittels der Daten, die sie austauschen oder
hinterlassen. Mal wird die eine Komponente vor der andern aufgerufen, mal ist
es umgekehrt. Alle zu erwartenden Nutzungen müssen überprüft werden. Wie bei
einem Uhrwerk muss der Nutzer das Zusammenspielen aller Teile nicht (immer)
sehen. Es kann ihn sogar stören, wenn er den Teilen bei ihrer Arbeit zuschaut.
Es ist entweder ein Zeichen von Anmaßung bzw. Selbstüberschätzung oder aber
blanke Not, wenn Nutzer die Teile separat bestellen, installieren und warten.
Es wird vielfach als sportliche Übung gepriesen, große Systeme selbst aus
Bausteinen verschiedener Hersteller zu bauen. Weder die frühere IBM noch Steve
Jobs glaubten an dieses Ideal. Keine andere bedeutende Industrie hat das Ideal
der Software-Industrie bisher übernommen. Auch Automobil- und Flugzeugbau
benutzt viele Komponenten von
Zulieferern. Sie werden jedoch vom Systemintegrator unter einer einheitlichen
Nutzer-Schnittstelle versteckt.
Warum kostet Software soviel?
Die Erstellung von Software ist teuer. Das
gilt insbesondere für qualitativ gute und funktional nützliche Software. Sobald ein Software-Produkt sich gut, d.h. besser als erwartet, verkauft, kann man die Preise senken (ein echtes Paradox). Software nur für die eigene Nutzung zu entwickeln, ist ökonomisch
meist unvertretbar. Hat man die Entwicklungskosten abgedeckt, sind zusätzliche
Kopien bei jedem Preis größer Null profitabel. Wer viele Kopien verkaufen kann,
wird daher sehr reich. Kostenlose Software stammt von jemandem, der Software
zum Zeitvertreib und Vergnügen entwickelt oder der von jemandem bezahlt wird,
der etwas von mir will. Sehr viel Software entsteht, um damit Werbung für
andere Produkte oder Dienste zu machen. Dass man direkt für Software bezahlt,
ist ein Geschäftsmodell, das sich auf dem Rückzug befindet. Software dient
immer mehr als Türöffner für andere Geschäfte. Sie wird daher versteckt,
verschenkt oder subventioniert.
C. Der Rentner
Muss ich mich noch im Ruhestand mit
Computern abgeben?
Computer sind noch weniger Pflicht für
Senioren als es das Fernsehen ist. Wer es sich leisten kann, kann Vergnügen und
Vorteile haben. Ein Computer kann den Ruhestand erträglicher und abwechslungsreicher
machen. Mein Kollege Rul Gunzenhäuser und ich haben einmal 18 Tätigkeiten beschrieben, bei denen
Senioren von Computern profitieren können. Das war vor drei Jahren. Heute
würden wir noch einige Dinge mehr erwähnen. Sollten diese Anwendungen alle für
Sie uninteressant sein, macht es keinen Sinn, sich Computer aufschwätzen zu
lassen. Ich ließ mir im Alter auch nicht alles aufschwätzen, von dem andere
Leute große Stücke hielten, wie z. B. Wandern und Radfahren.
Am 28.4.2014 schrieb Klaus Küspert aus Jena:
AntwortenLöschenIm Zeitalter der Web-Services hat es sich natürlich schon besser entwickelt, dass auch Bausteine/Systeme verschiedener Hersteller zusammenarbeiten können. Jedenfalls besser als früher, als es solche Schnittstellen noch nicht gab und damit Heterogenität eine noch größere Herausforderung und Gefahr dargestellt hat. Und es wird auch immer populärer, Open-Source-Komponenten zu benutzen. Ich kenne massig kommerzielle Unternehmen, die die Suchmaschine Solr ̶ oder früher Lucene ̶ einbinden. usw. Ich bin eigentlich auch kein Open-Source-Fan, aber die Realitäten sind eben teils so und die Leute kommen damit klar. Ich kenne auch große Systeme, wo etwa ein kommerzielles DBMS durch MySQL oder PostgreSQL ersetzt wurde. Hätte ich vor 5-6 Jahren kaum glauben wollen.
NB (Bertal Dresen): Etwas nochmals selbst zu entwickeln, was mir andere Leute als Geschenk anbieten, auf die Idee käme ich wirklich nur ganz im Extremfall. Dessen ungeachtet, warte ich weiter auf Autos und Flugzeuge aus nicht-kommerziell erworbenen Komponenten.
Prozesse und Abläufe jeder Art beschreibe ich am ehesten in Form sog. Collaboration Cards.
AntwortenLöschenIch will damit nicht sagen, dass Diagramme graphischer Form nutzlos sind: Sie werden aber nie genug Information enthalten können und können daher nur erster Orientierung dienen.
Mich würde interessieren, was Sie (oder andere Leser dieses Kommentars) zu meinem auf jener Seite genannten Beispiel 2 sagen.
Zum Thema 'Prozess-Beschreibung' lässt sich sehr viel mehr sagen, als in meinem Tipp geschehen. Flussdiagramme für die Visualisierung des Prozessflusses ist nur ein Beispiel, dazu ein uraltes.
LöschenMuss ein Informatiker sein Leben lang programmieren?
AntwortenLöschenMeine Antwort: Hauptamtlich programmieren wird auch er oft nur wenige Jahre. Viele also verlernen wirklich, dann noch selbst ein nicht-triviales Programm zu schreiben. Das aber ist schlecht, denn sie haben dadurch ja auch verlernt, die eigene Arbeit gelegentlich durch selbst erzeugtes Hilfswerkzeug zu unterstützen.
Nebenbei: Ich habe nie verstanden, warum die meisten SAP-Berater NICHT programmieren können (und es offensichtlich auch nie wirklich konnten). Wie können sie denn da auf Dauer wirklich nützlich sein? Hat jemand darauf eine überzeugende Antwort?
Konkreter: Kann es Sinn machen, eine 12 Mann starke SAP-Abteilung zu haben, in der nur ganze zwei Personen programmieren können?
Am 1.5.2014 schrieb Peter Mertens aus Nürnberg:
AntwortenLöschenDer Satz [mit dem Paradox] ist im Auge jedes Kaufmannes/Betriebswirtes eine Banalität, kein echtes Paradoxon. Bei Software-Produkten mit dem hohen Anteil an Fixkosten und dem in aller Regel geringen Anteil an variablen Kosten bzw. hohen Fixkosten-Deckungsbeiträgen (verkürzt: Nur Kosten des Kopierens und Übertragens) gilt das erst recht. Daraus resultieren überdurchschnittlich hohe Anreize, möglichst rasch möglichst viele Kunden zu gewinnen. Zu den absatzpolitischen Instrumenten gehören dann auch massive Preissenkungen, die man sich ja wegen der niedrigen Grenzkosten leisten kann, und bei Erfolg im Markt enorme Gewinne und Unternehmenswerte des Softwareproduzenten.
NB (Bertal Dresen): Was da geschieht, läuft dem intuitiven Verhalten von Marktteilnehmern zuwider. Das Wort Paradox ist wohl zu stark. Die Situation verleitet dazu, durch niedrige Preise einen hohen Marktanteil zu sichern.