Skip to content

Softwareprojekte Episode 1 ::: So klappts nicht mit der Software

Diese recht umfangreiche Einleitung soll, nach der Vorgeschichte, auf das Problem gewachsener Softwaresysteme hinführen. Ein monolitisches, nicht wartbares System entsteht nicht innerhalb von wenigen Tagen sondern wird durch viele Einflussfaktoren gebildet. Gründe hierfür können unter anderem sein:
  • Schlechte oder nicht vorhandene Dokumentation
  • Keine Architektur und keine Planung für eine durchgängige Architektur
  • Nicht verstandene Konzepte
  • Stolz
  • Keine Betriebskonzepte
Die folgende Kurzgeschichte zeigt einen möglichen Verlauf, wie es zu einer nicht wartbaren und teuren Softwarelösung kommen kann, auf. Die Giuseppe Connection Ltd. ist ein durchaus erfolgreiches Familienunternehmen. Die Familienmitglieder halten zusammen und ein Austritt aus der Familie ist bisher noch keinem Familienmitglied lebend gelungen. Fred war ein junger, dynamischer Softwareentwickler, der von der Familie für ihr Geldwäschesystem eingestellt wurde. Ihr müsst wissen, dass in so einer Familie viel Geld in den Taschen der schweren Jungs steckt. Und da die schweren Jungs beim Geldeintreiben arg schwitzen wird das Geld schmutzig. Um nun einigermaßen koordiniert das Geld waschen zu können, hat die Familie ihr Geldwäsche System erstellt. Die Funktionsweise ist denkbar einfach. Ein schwerer Junge liefert das schmutzige Geld ab. Es wird dokumentiert wer wieviel Geld gebracht hat. Das Geld wird anderen Familienmitgliedern zugesteckt und die kaufen davon nette Kleinigkeiten beim Kollegen um die Ecke. Der gibt ihnen die Kleinigkeiten und eine Quittung. Das Geld wird dann vom Kollegen auf eine Bank gebracht und die Kleinigkeiten werden vom Kollegen wieder sehr günstig zurückgekauft. Und schon ist das Geld sauber verstaut in einem Banktresor. Naja, mit Geldwäsche kenne ich mich nicht sonderlich gut aus, aber auf alle Fälle hat dieser Ablauf einige Prozeduren, mit denen ein dynamischer Softwareentwickler schnell ein Programm zusammensetzen kann. Fred sollte am Geldwäschesystem eine Änderung vornehmen, die ihm von Giuseppe mit seiner väterlichen und ruhigen Stimme wie folgt erläutert wurde: „Du musst verstehen, es ist nicht leicht den schweren Jungs ihren Anteil zuzustecken. Du musst jedem Jungen das Geld abnehmen und je nach Gewicht des Jungen ihm seinen Anteil gutschreiben. Sonst ist der Junge nicht mehr glücklich und wird untreu. Und dann geht es der Familie nicht gut. Wir wollen glückliche Familienmitglieder, musst du wissen. Deine Aufgabe ist nun, eine Eingabe zu erstellen mit der ich, der Vater der Familie, die Höhe des Anteils jedes schweren Jungen festsetzen kann. Wenn der Junge brav war und sein Geld abgibt, möchte ich ihm seinen zustehenden Anteil geben. Einfache Aufgabe capische?“ Diese Aufgabe erschien Fred wirklich furchtbar einfach. „Kein Problem Giuseppe, das mach ich dir in drei Tagen!“ ,rief Fred freudig aus und schnappte sich seine Kaffeemaschine, eine Pizza und drei Kilo Schokolade und schloss sich im Keller ein.

Er überlegte kurz wie er das lösen will:

„Ich baue eine Eingabemaske mit der Giuseppe seine schweren Jungs erfassen kann. Da gibt er einen Namen, das Gewicht des Jungen und seine ihm zustehenden Prozente ein. Das Ganze speichere ich ab. Wenn Geld reinkommt, wird der Betrag dem jeweiligen schweren Jungen zugewiesen und über eine einfache Prozentrechnung bekommt der schwere Junge seinen Betrag.“ Gesagt, getan. Keine vierhundert Zeilen Code später hatte Fred sein System fertig. Er gab es Giuseppe und der war hell begeistert. „Eccelente! Ich kann endlich meine schweren Jungs sinnvoll verwalten. Jetzt habe ich aber noch ein Problem. Ich kann gar nicht sehen, welche schweren Jungs bisher bei mir arbeiten. Mach mir noch eine Anzeige um alle Jungs darstellen zu können.“ Und wieder war Fred glücklich, dass IT so einfach ist. Dreihundert weitere Zeilen Code und er lieferte eine Liste, mit der Giuseppe alle Jungs anzeigen lassen konnte. „Hm, das ist nicht schlecht. Aber ich möchte auch wissen wieviel jeder Junge im vergangenen Monat an Geld eingebracht hat.“ Also wieder in den Keller und schnell noch eine Liste basteln in der die Gelder der Jungs aufgelistet wurden. „Ja das ist schon brauchbar. Ich habe aber ein Problem. Ein paar der schweren Jungs fühlen sich ungerecht behandelt. Ich möchte jetzt wissen wann ich bei welchem Jungen die Prozentsätze angepasst habe.“ Fred setzte mittlerweile wegen der Schokoladenzufuhr an Gewicht an und glich sich allmählich an die schweren Jungs an. Sein System war nun schon recht komplex. Er musste aus dem bestehenden Code nun die Prozentsätze herausziehen und in eine Historie einbauen. Da Giuseppe ziemlich ungeduldig war, arbeitete er zwei Nächte durch und sah nun aus wie ein geübter Hacker auszusehen hat: Bleich, blutunterlaufene Augen und sich irgendwie nur noch am Kaffeebecher haltend. Die Zusammenarbeit mit Giuseppe ging ein paar Monate in diesem Modus weiter. Giuseppe stellte eine Aufgabe, Fred setzte sie um. Das Geldwäschesystem hatte nun mehrere hundert Komponenten, die Programmteile waren sehr unübersichtlich und Fred baute mehr Fehler ein, als er korrigieren konnte. Kurz vor Giuseppes Geburtstag machte Fred einen fatalen Fehler. Giuseppe wollte eine neue Funktion und Fred sagte: „Ich arbeite jetzt schon seit einem Jahr für dich. Ich möchte mehr Geld von dir haben. Ich bin der einzige der dein Geldwäschesystem versteht und bin somit sehr wichtig für deine Familie.“ Giuseppe antwortete: „Mein Junge, du verstehst das nicht ganz richtig. Niemand droht mir und niemand fordert von mir etwas. Ich verteile die Gaben, niemand sonst.“ Fred kam nicht mehr zur Arbeit und eine Woche später trat im Geldwäschesystem ein Fehler auf. Keine Gelder konnten mehr an die schweren Jungs ausgezahlt werden. Die fanden das nicht sonderlich nett und steckten Fred in Betonschuhe. Fred versank im Familienteich und konnte nicht lange genug die Luft anhalten. Er liegt vermutlich immer noch am Grund und isst heute keine Pizza mehr. Für die Familie waren die Probleme jedoch nicht gelöst. Wer sollte das Geldwäschesystem wieder zum Laufen bringen? Wie können die schweren Jungs bezahlt werden? Giuseppe organisierte drei neue Familienmitglieder die sich um das Geldwäschesystem von Fred kümmern sollten. Sie erreichten, dass das System wieder Gelder auszahlte. Aber sie klagten über diverse Probleme:
  • Die Programmstrukturen sind unübersichtlich
  • Der Code ist nur unzureichend dokumentiert
  • Eine Architektur ist nicht festzustellen
  • Jede Änderung verursacht irgendwo anders einen Fehler
  • Es ist besser neue Funktionen mit neuen Datenstrukturen zu schreiben als die alten zu verwenden
  • Wichtige Komponenten, wie Zugriffskontrolle und Backup, sind nicht vorhanden
Was ist hier schief gegangen? Giuseppe und seine Familie haben diverse Fehler begangen:
  • Die Familie ist im Prinzip von Freds Wissen abhängig. Die erstellte Software kann als Legacy Code angesehen werden. Fred kann die Software aus begreiflichen Gründen nicht mehr warten.
  • Die Familie hat sich in eine Abhängigkeit begeben, da sie nicht dafür sorgte, dass das Wissen von Fred auf andere Familienmitglieder übertragen wurde.
  • Durch die nicht vorhandene Dokumentation und Architektur wird es den drei neuen Familienmitgliedern sehr schwer fallen neue Funktionen anzubringen und das System zu warten.
Fred hat ebenfalls diverse Fehler begangen:
  • Offensichtlich ist es nicht sehr ratsam sich gegen Giuseppe aufzulehnen ;)
  • Er war stolz und sich nicht darüber im Klaren das jeder Mitarbeiter ersetzbar ist.
  • Seine Vorgehensweise ohne Dokumentation und Betriebskonzept ein komplexes System zu erstellen, war definitiv nicht brauchbar, um das System für längere Zeit betreiben zu können.
Es ist somit nicht ratsam darauf zu vertrauen, dass die Software ohne sinnvolle Strukturen erstellt und gewartet wird. Mitarbeiter verlassen das Unternehmen, Anforderungen an bestehende Systeme ändern sich und der Betrieb einer Software muss durch geeignete Maßnahmen gesichert werden. In der nächsten Episode will ich beginnen zu erläutern, wie ein mögliches Projekt aussehen kann, um auf dem bestehenden Legacy Code aufzubauen und wie eine Migration auf einen wartbaren Code durchgeführt werden kann.

Trackbacks

Softwareprojekte Episode 2 ::: Ein möglicher Versuch » miradlo bloggt am :

"" vollständig lesen
[...] Vorgeschichte und Episode 1 ::: So klappts nicht mit der Software beschrieben die Problematik, hier folgt ein möglicher [...]

Softwareprojekte Episode 4 ::: Testen hilft » miradlo bloggt am :

"" vollständig lesen
[...] bisherige Teile Episode 1, Episode 2 und Episode 3 über die Vorgehensweisen bei Softwareprojekten starteten mit der [...]

Episode 6: Grenzen des Refactorings ::: Softwareprojekte » miradlo bloggt am :

"" vollständig lesen
[...] Episode 1 wurde ein Kommentar geschrieben der mir zeigte das auch noch andere Mitstreiter das Problem des [...]

Kommentare

Jeena Paradies am :

Jeena Paradies Ein sehr interessantes Thema, vor allem für mich, der in unserer Firma einige solcher Projekte übernehmen musste und jetzt erst einmal alles reverseengeneeren muss was mich, die Firma und schlussendlich den Kunden einen Haufen Geld kostet.

Andererseits weiß ich, dass wenn ich die Firma verlasse, dann werden die Projekte andere nach mir übernehmen und wieder alles reverseengeneeren müssen. Deshalb bin ich schon auf die folgenden Beiträge gespannt.

roland am :

roland Ich werde in den nächsten Episoden zuerst einmal ein paar Punkte des Reverse Engineerings betrachten. In ein paar Episoden werde ich mich auch um die Grenzen des Reverse Engineerings kümmern und aufzeigen das es sich meiner Meinung nach um einen kontinuierlichen Prozess handelt. Bis bald!

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
BBCode-Formatierung erlaubt
Gravatar, Twitter, Favatar Autoren-Bilder werden unterstützt.
tweetbackcheck