Software – insbesondere große Projekte – sind die Hölle, wenn man den kompletten Code von Hand schreibt. Durch diese Hölle müssen aber die meisten Projekte durch, weil sie eine Technik noch nicht kennen oder können. Die Rede ist von Software Composition.
Software Composition ist ureigens erst einmal das Zusammensetzen, also „Komponieren“ von Software. Wozu tut man das? Um Crosscutting Concerns zu entflechten. Das bedeutet, man steigert die Wiederverwendbarkeit seines Codes, indem man ihn unabhängig vom aktuellen Projekt programmiert.
Um das ganze etwas anschaulicher zu machen nehmen wir mal das Beispiel „Logging“. Traditionell programmiert würde man den Logging-Code quer über sein Projekt verteilen. Das macht die bisherigen Funktionen schwerer lesbar, weil überall Log-Aufrufe verstreut sind – und das Logging nur EIN Aspekt der kompletten Software ist. Wenn noch Aspekte wie Zugriffsregeln, Persistenz und Transaktionsfähigkeit hinzukommen, behandelt nur noch ein kleiner Teil des Codes wirklich die aktuelle Geschäftslogik.
Noch schlimmer: Lernt man neue Programmierer ins Projekt ein, müssen diese erst einmal die „Hygieneregeln“ des Codes kennen lernen: Wie greift man auf das Zugriffsregel-System zu, welche Ereignisse muss man loggen, wie verwendet man das Transaktionssystem.
Software Composition versucht jetzt, diese sich überlappenden Aspekte zu entflechten. In dem einen Stück Code soll nur die Geschäftslogik programmiert werden. Ein anderes Stück Code soll für alle Funktionen die Zugriffsrechte einstellbar machen – z.B. durch eine Zugriffsmatrix. Entflechten heißt hier wirklich physisch: sie auf mehrere Dateien aufteilen, damit jemand, der den Zugriffs-Code baut, sich nicht um das Logging kümmern muss.
Fazit: Software Composition ist ein mächtiges Werkzeug, um komplexen Code zu entflechten. Es ermöglicht, eine komplexe Software im Code einfach zu halten, auch wenn viele Aspekte aufeinanderprallen. Wenn du mehr über Kompositionstechniken erfahren willst und wie man diese konkret umsetzt, abonniere diesen Podcast.
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More