|
Standardsoftware vs. Individualsoftware
In den letzten Jahren wird immer häufiger die Frage gestellt, was ist
besser Standardsoftware oder eine Individuallösung? Die Beurteilung
ist selbst für Experten schwierig geworden. Diese Abhandlung ist der
Versuch mit naturwissenschaftlichen Methoden und Betrachtung der
Geschichte der Informatik eine Antwort zu finden.
Dazu zunächst folgende Zahlenreihe
der Aufbau dieser Zahlenreihe ist leicht zu verstehen.
Zu einer am Anfang der Zahlenreihe stehenden 5 wird
eine 2 addiert zu der resultierenden Zahl wird
wieder eine 2 addiert usw.
Es ist sofort verständlich, dass eine derartige Zahlenreihe auch mit
Hilfe einer Formel ausgedrückt werden kann.
Jedes Element der obigen Zahlenreihe, lässt sich mit dieser Formel
errechnen. Abstrahiert man diesen Umstand ein wenig und fasst die
Zahlen in der obigen Zahlenreihe als Ereignisse auf, wird klar, dass
man mit Hilfe der Formel Ereignisse voraussagen oder Ereignisse in
der Vergangenheit nachvollziehen kann.
Diesen Vorgang nennt man algorithmische Kompression.
Algorithmische Kompression ist genau das, womit sich die
Naturwissenschaften und insbesondere auch die Informatik
beschäftigt.
Ein interessanter subtiler und leicht zu übersehender Aspekt der
algoritmischen Kompression ist die Tatsache, dass die gefundenen
Algorithmen die Anfangsbedingung enthalten. Die obige Formel gibt also
keinen Aufschluss darüber, warum die 5 am Anfang der Zahlenreihe
steht.
Die Wahl einer anderen Anfangsbedingung z.B. die 2 ergibt eine völlig
andere Zahlenreihe. Demzufolge werden mit einer anderen
Anfangsbedingung auch andere Ereignisse vorhersagbar oder
nachvollziehbar.
Dies ist aber nicht die einzige Schwierigkeit der algorithmischen
Kompression. Es gibt Ereignisfolgen, die sich nicht algorithmisch
komprimieren lassen. Ein weiteres einfaches Beispiel aus der Mathematik
soll das verdeutlichen.
Die Zahlenreihe
besteht, wie man schnell erkennen kann, aus Primzahlen, also Zahlen die
nur durch sich selbst oder durch 1 geteilt werden können. Für eine
derartige Zahlenreihe gibt es keine algorithmische Kompression. Jedes
einzelne Ereignis muss einzeln hingeschrieben werden und auch ein
Computer könnte nur durch testen der Primzahlbedingung
herausfinden, ob eine Zahl eine Primzahl ist oder nicht.
Es gibt also Ereignisse, die nicht voneinander ableitbar sind.
Es gibt auch einzelne Ereignisse, die sich durch keine algorithmische
Kompression, sondern sich nur durch Aufschreiben des einzelnen
Ereignisses selbst beschreiben lassen. Ein weiteres Beispiel aus der
Mathematik ist die Zahl PI oder auch die Eulersche Zahl e.
Zusammenfassung
Die algoritmische Kompression ist das Handwerkszeug der Informatik.
Die Algorithmische Kompression liefert Algorithmen, die die
Anfangsbedingung enthalten.
Nicht jede Ereignisfolge lässt sich algorithmisch
komprimieren.
Es gibt Einzelereignisse, die sich aus keinem vorangegangenen Ereignis
ableiten lassen.
Welche praktische Bedeutung hat diese Betrachtung ?
Auf der einen Seite beschäftigt sich die Informatik mit der Analyse
von Prozesssen und der darin verborgenen Algorithmen, um diese mit
Hilfe von Programmiersprachen in Computern abzubilden. Auf der anderen
Seite steht der Nutzer dieser Algorithmen und erwartet häufig genug
auch, dass mit diesen Algorithmen die Richtigkeit der
Anfangsbedingungen auch geklärt werden kann. Konkret erwartet der
Nutzer auch die Möglichkeit die Richtigkeit seiner
Unternehmensprozesse mit Hilfe der EDV beurteilen zu können, also
Unternehmensentscheidungen auf Grund der Ergebnisse seiner
EDV-Anwendung treffen zu können.
Dass diese Hoffnung nicht erfüllt werden kann, beweist die
vorangegangene Betrachtung. Die Richtigkeit eines Prozesses, der
mittels Algorithmen beschrieben wird, ist damit abhängig von den
gewählten Anfangsbedingungen, die durch die Algorithmen selbst nicht
erklärt werden können.
Zudem gibt es Ereignisse die selbst bei genauester Analyse nicht in
den gefundenen Algorithmen enthalten sind. Diese müssen also einzeln
ausprogrammiert werden.
Dies ist ein weiterer Konflikt zwischen Entwickler und Nutzer. Vom
Entwickler werden derartige Probleme meist nicht bewusst wahrgenommen.
Dem Entwickler ist es verborgen, dass die Algorithmen für die
Beschreibung bestimmter Prozesse gewisse Einzelereignisse nicht
berechnen können, da diese ihm nie geschildert wurden.
Der Nutzer hingegen erwartet selbstverständlich, dass die für einen
bestimmten Bereich eingesetzten Programme auch alle in diesem Bereich
auftretenden Ereignisse bearbeiten können.
Und schliesslich gibt uns die obige Betrachtung einen Ausblick auf die
Tauglichkeit von Standardprogrammen. Standardprogramme sind eine
Zusammenstellung von Algorithmen, die wiederum die Anfangsbedingung
enthalten. Dass diese Anfangsbedingungen für ein allgemeines
Unternehmensmodell zutreffen werden, ist zu erwarten, ob diese aber
auf ein bestimmtes Unternehmen zutreffen werden, ist eher in Frage zu
stellen.
Es ist unvermeidlich, dass man mit dieser Aussage den Unmut der
Mitarbeiter von SAP, Baan, Navision und den vielen anderen
Standardprogrammherstellern wecken wird. Diese werden sofort
entgegenhalten, dass man sich dem Umstand der mangelden
Vollständigkeit und mangelden Anwendbarkeit eines Standardprogrammes
auf alle Unternehmen durchaus bewusst sei.
Als Abhilfe gäbe es aber die soggenannte Customization, also
die vollständige Anpassbarkeit des Programmes an
die Kundenwünsche.
Die obige Betrachtung zeigt aber, dass sich hinter dem Wort
Customization nicht anderes als eine teilweise Neuprogrammierung des
Standardprogrammes versteckt.
Die Informatik bietet nicht nur den rein funktionalen mathematischen
Weg, sondern auf der anderen Seite auch die Möglichkeit Daten zu
speichern. Zum besseren Verständnis ein Beispiel. Man denke sich
einen Computer, in dem alle Ereignisse, die in sein Aufgabengebiet
fallen, fest gespeichert sind und bei Auftreten eines entsprechenden
Ereignisses abgerufen werden können. Man denke sich einen Computer in
dem ein Datenpool abgelegt ist. Dieser Datenpool enthalte sämtliche
Kundenadressen permutiert mit allen angebotetenen Artikeln in Form von
Rechnungen. Kauft ein Kunde nun eine beliebige Wahl an Artikeln, muss
nur die zu diesem Vorgang passende Rechnung herausgesucht und
ausgedruckt werden. Dass dies keine praktikable Lösung ist, soll hier
nicht untersucht werden. Es wird aber damit deutlich, dass die
Informatik zwei Extrema besitzt.
Zum einen die reine Logik und zum anderen die reine Speicherung von Daten.
Man wird vermuten, dass irgendwo dazwischen das Optimum liegt und wird
erwarten, dass man dieses nur kennenlernen muss, um alle zukünftigen
Probleme zu meistern. Die Vermutung mag zutreffen, aber bisher wurde
dieses Optimum noch nicht gefunden.
In dieser Betrachtung ist es kaum erfolgreich sich nun mit der
Geschichte der Informatik zu befassen und zu untersuchen, welche
Methoden in den letzten 70 Jahren auf der Suche nach dem goldenen
Mittelweg nun erfolgreich waren und welche verworfen wurden. Ein
Begriff, der wie eine Schlagzeile im Geschichtsbuch der Informatik
steht, sollte aber herausgriffen werden. Diese Schlagzeile besteht aus
nur einem Wort.
Abstraktion
Mit diesem Begriff ist die Methode gemeint, Probleme so nah wie
möglich am Problem zu beschreiben und nicht ausgiebig Methoden zu
beschreiben, mit denen das Problem schliesslich gelöst werden kann.
Ein Bespiel soll dies verdeutlichen. Eine der Hauptaufgaben von
Computern ist das Sortieren von Datensätzen. Tatsächlich wird der
grösste Anteil an Rechenzeiten weltweit genau für diese Aufgabe
verwendet.
Als die Informatik noch in den Kinderschuhen steckte, war es notwenig,
komplizierte von den technischen Voraussetzungen abhängige Verfahren
zu programmieren, die eine schnelle und sinnvolle Sortierung von Daten
ermöglichte. Die Probleme bestanden in mangelden Resourcen (geringer
Arbeitsspeicher), komplizierte technische Speichermedien, wie externe
Bandlaufwerke langsame Datenübertragungswege usw.
Die Sortieralgorithmen wurden handverlesen und mehrfach neu erfunden.
In heutigen Programmiersprachen ist diese Aufgabe so stark abstahiert,
dass für praktisch beliebig viele Datensätze ein einziges Kommando
genügt nämlich sinnigerweise ,,sort``.
In den zurückliegenden Jahren der EDV-Entwicklung wurden tausende von
Sprachen unterschiedlichster Ausprägung entwickelt, die alle dazu
dienen sollten, perfekt bestimmte Probleme besser und einfacher
zu beschreiben.
Es gibt Sprachen, die sich besonders gut für mathmatische Probleme
eignen und es gibt andere, die besonders gut für die Beschreibung
verwaltungstechnischer Probleme geeignet sind und dritte, die sich vor
allem mit grafischen Darstellungen beschäftigen und wieder andere, mit
denen besonders gut Spiele programmiert werden können. Diese
vielen sehr unterschiedlichen Sprachen sind als Werkzeuge zu
verstehen, die besonders gut für bestimmte Klassen von Problemen
geeignet sind.
Man könnte an dieser Stelle eine Ausführung über Objekt-orientierte
Programmierung erwarten, worauf aber verzichtet werden soll, da es
sich um nicht viel anderes handelt, als eine weitere Methode der
Abstraktion, die in jüngster Zeit besonders gefeiert wird.
Im ersten Teil dieser Untersuchung wurden mehr Fragen aufgeworfen als
Lösungen geboten.
Dennoch ist die Welt voll mit Computern und es finden sich da und dort
auch sehr brauchbare und sinnvolle Lösungen. Wie also sollte ein Weg
in die Zukunft aussehen? Was wird Bestand haben, welche Methoden soll
man anwenden?
Bisher enthielten Programme, die typischerweise in PLI, Cobol oder
Fortran geschrieben waren, sowohl die Manipulation als auch die
Verwaltung der Daten vollständig. Damit entstand ein monolitischer
Block, der bei fehlerhaftem Verhalten unglücklichen Einfluss
auf das ganze System nehmen konnte.
Diese Programme stellen noch einen wesentlichen Anteil aller auf der
Welt eingesetzten Computerprogramme. Es war deshalb erforderlich zu
untersuchen, welchen Aufwand die Erstellung und Wartung derartiger
Programme bedeutet. Diese Programme sind üblicherwiese grosse
monolitische Blöcke mit vielen 100000 Zeilen. Zunächst nahm man an,
dass der zeitliche Aufwand für die Entwicklung derartiger Programme
linear mit der Anzahl der zu programmierenden Zeilen ansteigt. Schnell
zeigte sich, dass diese Annahme nicht realistisch ist und von weiteren
Bedingungen abhängt.
Neben vielen anderen Faktoren hängt es zum einen davon ab,
wieviele Menschen an einem Programm arbeiten und zum anderen davon,
wie stark die Notwendigkeit der Kommunikation zwischen diesen Menschen
ist, um das gewünschte Ergebnis zu liefern.
Es zeigt sich schnell, dass der zeitliche Aufwand unter Berücksichtigung
dieser Faktoren schnell erheblich mit der Grösse des Programmes
ansteigt.
Im besonderen ist es auffällig aufwendig, ein bestehendes grosses
Programm mit neuer Funktionalität zu erweitern. Zu einem Programm mit
600000 Zeilen 50000 Zeilen dazuzuschreiben dauert ein vielfaches länger
als ein einzelnes Programm mit 50000 Zeilen neu zu entwicklen.
Was bedeutet dies ?
für die Erstellung von Individualsoftware? Eine typische
Programmentwicklung beginnt mit einer Art Pflichtenheft, danach wird
ein erster Prototyp entwickelt und zum Einsatz gebracht. Bei der
Nutzung dieses Prototyps ergeben sich Probleme, Missverständnisse und
Fehler werden aufgedeckt. Das Ergebnis wird folglich
überarbeitet. Die neue Version kommt wieder zum Einsatz es zeigen
sich weitere Wünsche es werden weitere Irrtümer aufgedeckt, es
werden Mängel in der Funktionalität und im Umfang der
Funktionalität erkannt. Die Version wird wieder verändert,
erweitert. Bei der nächsten Inbetriebnahme fallen plötzlich
schlummernde Fehler auf, die nun durch die Erweiterung und
Veränderung zu Tage treten. Der Vorgang des änderns, das wieder neu
Inbetriebnehmens wird aufwendiger und immer langwieriger, es entsteht
Frust und Misstrauen bei den Nutzern und Ermüdung bei den
Entwicklern. Doch selbst wenn der Prozess zu einer Erweiterung und
Verbesserung führt, wächst das Volumen des Programmes ständig an
und macht eine zusätzliche Erweiterung immer mühsamer und
langfristiger, bis schliesslich praktisch keine Erweiterung in
sinnvoller Zeit mehr erreichbar ist. Das Projekt steckt fest.
Dies ist bei vielen grossen Systemen bei Banken, Versicherungen im Handel
und in der Industrie schon so abgelaufen.
Gibt es einen Ausweg ?
Dass es einen Ausweg geben muss, ist zu erwarten, denn nichts ahndet die
Wirtschaft so sehr wie Stillstand und so lastete auf der Informatik
ein hoher evolutionärer Druck. Die Antwort, die heute durch die
Informatik gegeben wird heisst
Encapsulation
Um einen zentralen Datenpool scharen sich verschiedenste unabhängige
Anwendungen, die durch die gemeinsamen Daten zu einem Stück werden.
Die Erweiterung kann ohne Einfluss auf alle anderen Anwendungen
geschehen. Die Optimierung einzelner Anwendung kann unabhängig von
allen anderen durchgeführt werden.
Schliesslich kann der Datenpool selbst, unter Einhaltung bestimmter
Spielregeln, für neue Anwendungen erweitert werden, ohne dass bestehende
Anwedungen berührt werden. Anwendungen können sogar wegfallen und
durch andere ersetzt werden.
Warum funktioniert so etwas?
Zunächst einmal steht im Mittelpunkt die erfolgreiche Entwicklung der
relationalen Datenbanken.
Es gab zunächst den einfachen Ansatz der Datenspeicherung. Jedes
Ereignis wurde einzeln gespeichert. Jede Änderung eines Artikels z.B.
führte zu einem neuen Datensatz. Jede änderung einer Adresse
ebenfalls usw.. Das Modell erinnert an das oben beschriebene Extrem
der vollständigen Speicherung mit dem Unterschied, dass nicht
sämtliche Möglichkeiten bereits vorgegeben sind, sondern im Laufe
der Zeit hinzugefügt werden.
Später verstand man, dass diese Speicherung von Daten eine hohe
Redundanz bedeutete und wenig Aussagekraft besass. Man entwickelte ein
neues, sehr erfolgreiches Modell der Datenspeicherung und bewegte sich
so auf der gedachten Linie zwischen reiner Speicherung und reiner
Logic ein wenig in Richtung Logik. Dieses Modell nannten die
Informatiker 3. Normalform.
Der entscheidende Durchbruch, den die dritte Normalform brachte war,
zweifach!
- die Daten wurden redundanzfrei gespeichert und
- die Daten werden in eine Struktur gebracht, die selbst bereits ein
erhebliches Mass an Aussagekraft besitzt.
Zusammen mit diesen Modellen wurde eine eigene Datenbanksprache
entwickelt, die bereits in den 60er Jahren von IBM vorgeschlagen
worden war. Man nannte sie SQL standard query language. Mit ihr
konnte man die Struktur der 3.Normalform in einfachster Form nutzen
und gleichzeitig die Logik der Boolschen Algebra verbinden, die eine
vollkommen geschlossene Gruppe der Mathematik
repräsentiert.
Damit war ein enorm leistungsfähiges Werkzeug geboren, Daten
strukturiert und dicht zu speichern und gleichzeitig in mathematisch
logischer Form beliebig abzurufen.
Gleichzeitig war erstmals der Weg frei, Datenstrukturen von Anwendungen
zu trennen.
Der Siegeszug der Datenbanken ist daher nicht unbegründet. Denn
erstmals -- bereits vor der Erfindung der objektorientierten
Programmierung -- hatte man bereits einen Weg gefunden, die Methode des
Datenaufsuchens und Zusammenstellens so stark zu vereinfachen, dass
Anwendungen erheblich kleiner und von der Datenstruktur unabhängiger
werden konnten.
Programmierer konten nun erstmals Datenbanken nutzen ohne die genaue
Methode des Zusammenstellens, der Speicherung, des Sortierens und
Lesens, verstehen zu müssen. Die Schnittstelle war eine abstrakte
Sprache.
Weitere technische Details sollen nicht Gegenstand dieser Betrachtung
sein. Abschliessend eine Zusammenfassung der wesentlichen Aspekte der
gemachten Ausführungen.
- Der Begriff Customization steht für eine teilweise
Neuprogrammierung von Standardprogrammen.
- Die Methoden der Informatik bieten keine Weg um eine optimale
Unternehmensführung oder gar Unternehmensvisionen zu schaffen.
- Es stellt sich heraus das moderne Datenbanken mit ihren Strukturen
bereits so nah an eine in der Zukunft zu findenden Wahrheit liegen,
dass ihr Einsatz unverzichtbar wird. Das Prinzip der relationalen
Datenbanken und die Struktur der dritten Normalform hat sich in
den letzten 40 Jahren nicht geändert. Die Wahrscheinlichkeit, dass
in den nächsten Jahren ein völlig neues Prinzip das Prinzip der
relationalen Datenbanken ablösen wird, ist eher auszuschliessen.
- Wie Daten manipuliert werden sollen, bleibt jedem freigestellt.
Ob Java, Perl selbst Cobol oder Excel zum Einsatz kommt, ist nicht
von Bedeutung. Die Entkopplung der Anwendung von der Datenspeicherung ist
der entscheidende Durchbruch.
Das Ergebnis der Beurteilung fällt zu Gunsten der Individuallösungen
auf Basis relationaler Datenbanken aus. Untersuchungen beweisen, dass
eine gelungene Individuallösung erheblich mehr leisten wird, als
irgendeine Standardlösung. Selbst der Vergleich von Preis und
Leistung fällt zu Gunsten der Individuallösung aus.
|
|
P
R
O
J
E
K
T
E
|