Frage

Was dazu führt, dass ein Computerprogramm in a wird Big Schlammball? Ist es möglich, sich von diesem Anti-Muster zu erholen? Gibt es bewährte Refactoring -Methoden, die angewendet werden können?

War es hilfreich?

Lösung

Ein großer Schlammball tritt normalerweise aufgrund eines der folgenden auf:

  • Änderung der AnforderungS - Sie architekten eine Lösung mit einer Reihe von Anforderungen, die sich im Laufe der Zeit ändern, und jetzt sind Sie wahrscheinlich ein anderes Publikum gerecht, das dasselbe Produkt mit leicht unterschiedlichen Anforderungen verwenden möchte. Sie backen diese Anforderungen in dasselbe Produkt und haben einen BBOM.

  • Änderung der Entwickler - Das ursprüngliche Produkt wurde von einer Reihe von Entwicklern mit bestimmten Design- und architektonischen Annahmen erstellt, die für eine völlig neue Reihe von Entwicklern, die das Produkt für die Wartung oder Weiterentwicklung „übernehmen“, nicht ganz offensichtlich sind. Die neuen Entwickler treffen ihre eigenen Annahmen und im Laufe der Zeit verschlechtert sich das Produkt in einen Haufen unbemerdiger Müll.

  • Inkompetenz - Von den Entwicklern (sie sind sich der Anti-Muster nicht bewusst), das Management (zu anspruchsvoll, mangelnde Kenntnisse des Produkts) oder die Benutzer (sie wissen nicht wirklich, was sie brauchen). Das ist schwer zu lösen.

Manchmal besteht die beste Lösung darin, die Anwendung für die neuen Anforderungen umzuschreiben. Dies ist jedoch normalerweise das schlimmste Szenario. Die umständliche Lösung besteht darin, alle neuen Entwicklung zu stoppen, zunächst eine Reihe von Tests zu schreiben und dann die gesamte Lösung neu zu gestalten und neu zu fordern. Dies könnte jedoch Jahre dauern, abhängig von der Größe des Produkts.

Andere Tipps

BBOMS, denen ich begegnet bin, wurden normalerweise in einem darwinischen Prozess organisch erstellt. Es geht ungefähr so:

  1. Anfangs wird ein System erstellt (nicht entworfen) und schlecht dokumentiert.

  2. Originalressourcen erstellen an anderer Stelle mehr Havok, so dass es für dieses "Legacy" -System nicht einmal eine mündliche Geschichte gibt.

  3. Frisches Blut wird hereingebracht. Diese Entwickler versuchen, die Funktionsweise verschiedener Systemteile aufzudecken, aber es ist wie mehrere blinde Männer, die versuchen, den Elefanten zu verstehen, wenn man den Schwanz, ein Bein und einen der Kofferraum gepackt hat. Sie nehmen Änderungen vor, fühlen sich aber nie wirklich sicher.

  4. Auf diese Weise "entwickelt" ein System durch die blinde natürliche Selektion, aber parallel dazu ist eine Entwicklung der unlösbarsten, nicht reproduzierbaren Fehler, die genau bestehen bleiben, weil sie unter dem Radarbildschirm bleiben, bis sie natürlich bei einer Kundeninstallation auftauchen.

Ich habe den Begriff (BBOM) immer einer Code-Basis zugeschrieben, in der "alles von allem abhängt", und es ist schwierig, den Code zu finden, den Sie ändern möchten, und wenn Sie eine Änderung vornehmen Der Ort, damit es wieder funktioniert. Sie benötigen die gesamte Code-Basis, um eine einzelne geänderte Klasse/Datei zu testen. Onkel Bob nennt dies am Morgen nach dem Syndrom (hier nach acyclischer Abhängigkeit Prinzip).

Es ist ziemlich unvermeidlich, dass eine Codebasis wird (ahem) übertragen in ein BBOM in Ermangelung einer grundlegenden Abhängigkeitskontrolle, da es nicht von Entwicklern durchgeführt werden kann, die nicht mehr als den Code sehen, den sie derzeit bearbeiten.

In meinem Fall war ein Element meiner Software in dieses Muster eine "temporäre Lösung" vor etwa zwei Jahren, bei der ständig neue Funktionen (immer mit Dringlichkeit) auf Kosten eines Umschreibens hinzugefügt wurden.

Wenn es keine Bewirtschaftungsschmerzen verursacht, haben sie keinen Anreiz, ihn zu ändern. "Ja, wenn Sie nächsten Monat Zeit haben, können Sie es neu schreiben, aber wir brauchen es nur, für diesen Fall gerade zu arbeiten." Sobald das neue Feature vorliegt, wird das Umschreiben vergessen.

Ich habe seit zwei Jahren erklärt, dass es sich um ein schlechtes Stück Code handelt (die Implikation ist, dass es unsichtbare Fehler gibt).

Das einzige Mal, dass ich mich mit einem "BBOM" -Szenario auseinandersetzen musste, mussten wir im Grunde die Anforderungen mit den Benutzern überdenken und daraus schließen, was wir aus dem schrecklichen Code konnten. Wie bei allen BBOMs macht sich das Problem normalerweise nicht deutlich, wenn eine gewartetes/verbesserte Verbesserung erforderlich ist. (Kein Luxus der Codeüberprüfung in diesem Laden, die Kriterien lauteten leider "tut es, was sie wollen?") Und der "Autor" ist längst vorbei.

Refactoring war in diesem Fall nicht einmal möglich.

Das relevante Zitat aus dem Artikel von Wikipedia, in dem Sie beantwortet werden, lautet:

Programmierer, die die Kontrolle eines großen Mud-Projekts kontrollieren, werden nachdrücklich aufgefordert, es zu untersuchen und zu verstehen, was er erreicht, und dies als lose Grundlage für eine formelle Reihe von Anforderungen für ein gut gestaltetes System zu verwenden, das es ersetzen könnte.

Dies könnte etwas Licht auf die ursprüngliche Frage geben.

http://en.wikipedia.org/wiki/big_ball_of_mud

Ein großer Schlammball ist ein Softwaresystem, dem eine wahrnehmbare Architektur fehlt. Obwohl sie aus technischer Sicht unerwünscht werden, sind solche Systeme in der Praxis aufgrund des Geschäftsdrucks und des Entwicklerumsatzes üblich. Sie wurden daher als Design-Anti-Muster erklärt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top