Frank PientkaInnovation und Technologie

Aus der Software-Küche: Spaghetti, Lasagne oder doch lieber Nudelauflauf?

In der Software-Entwicklung gibt es viele Köche und Rezepte. Am Anfang steht meist die Frage nach der zu verwendenden Architektur. Oft ist diese durch die geplante Systemumgebung oder eingesetzte Technologie schon vorgegeben. Meist wird das genommen, was man am besten kennt. Besser ist es jedoch, wenn zunächst die nicht-funktionalen Anforderungen mit allen Stakeholdern gesammelt werden und daraus priorisierte und durch Szenarien beschriebene Qualitätsmerkmale abgeleitet werden. Mit einem Systemkontextdiagramm wird zunächst das abgegrenzt, was nicht Teil des zu realisierenden Systems ist, aber trotzdem als Schnittstelle berücksichtig werden muss. Damit kann man eher vermeiden, dass ein Gericht aufgetischt wird, das nicht dem Wunsch der Besteller und Nutzer entspricht.

Hat man einen Chefkoch, sprich Architekten im Team, so hängen viele Entscheidungen oft von der jeweiligen Kochschule ab. Meist fängt man mit einer Zwei- oder Drei-Schichtenarchitektur, bestehend aus Frontend, Middleware und Backend, an. Das allein reicht jedoch nicht aus, um ein gutes Gericht herzustellen. Hier sind Best Practices sowie Richtlinien- und Muster-Rezeptsammlung, ähnlich wie gute Kochbücher, hilfreich, wenn sich doch einige neue Anforderungen oder durch neue Zutaten auch neue Herausforderungen stellen.

Eine Schichtenarchitektur ist zwar gut, um die internen Spezialisten gezielt einzusetzen. Je länger ein Projekt dauert, führt das leider dazu, dass zwischen den Schichten immer mehr Spaghetti-Code entsteht. Hier wird es immer schwieriger, die Einhaltung der gewünschten Anhängigkeiten zwischen den Schichten einzuhalten und beim entstandenen Code die Fachlichkeit von der Technik zu trennen. Oft sind beide über das gesamte System verstreut. Kommen neue Anforderungen dazu, werden oft künstliche weitere Schichten hinzugenommen, die das Problem eher verschlimmern als verbessern. Je länger das Projekt andauert, desto wahrscheinlicher gehen solche Strukturen verloren und das Produkt sieht dann eher wie ein Nudelauflauf als eine ursprünglich geplante Lasagne aus.

Hier hilft es auch nicht, eine schöne Béchamelsauce drüber zu gießen oder mit Käsestücken zu verfeinern, um zumindest dem Benutzer eine attraktive Oberfläche zu präsentieren. Spätestens, wenn man größere Änderungen vornehmen möchte, fällt die schöne Schichtenarchitektur auseinander. Hier ist es sicher ehrlicher, kleine Auflaufformen (wenige einfache Strukturen, statt komplexe) und Töpfe (fachliche Vertikale oder Module genannt) statt einem großen Pott, mit speziellen Soßen, Nudeln und Gewürzmischungen zu verwenden, um den individuellen Anforderungen besser und vor allem schneller begegnen zu können.

Manchmal ist es auch sinnvoll, die Nudelsorte, Gewürzmischung oder Zutaten zu variieren. Das Wissen über kleine spezialisierte Einheiten braucht dann nicht mehr auf einzelne Köpfe verteilt zu werden, sondern wird vom gesamten Kochteam geteilt. Vieles, was sich beim Kochen bewährt hat, lässt sich auf die Software-Küche übertragen, um besser schmackhafte Nudelgerichte zu servieren, als doch wieder beim Resteessen des Nudelauflaufes zu landen.

Schlagwörter: