Zusammenfassung
In dieser Folge sprechen wir über das Thema Erweiterbarkeit von Software-Systemen. Wir erklären, dass Erweiterbarkeit die Fähigkeit ist, neue Funktionalitäten problemlos hinzuzufügen und zu implementieren. Im Vergleich zur Änderbarkeit, bei der bestehender Code angepasst wird, geht es bei der Erweiterbarkeit darum, neue Funktionen hinzuzufügen.
Ein Ansatz zur Förderung der Erweiterbarkeit ist die Boy Scout Rule, bei der kleinere Verbesserungen am Code vorgenommen werden, um ihn lesbarer und wartungsfreundlicher zu machen. Ein inkrementeller Ansatz, bei dem neue Funktionen schrittweise hinzugefügt werden, wird ebenfalls empfohlen, anstatt parallel mehrere Features zu entwickeln.
Wir diskutieren über die iterative Entwicklung und wie wichtig es ist, sich auf eine Aufgabe nach der anderen zu konzentrieren, um ungewollte Abhängigkeiten zu vermeiden. Eine angemessene Planung ist hierbei ebenfalls von Bedeutung. Es ist ratsam, Flexibilität zuzulassen und nicht alles bis ins kleinste Detail im Voraus festzulegen, da sich Anforderungen im Laufe der Entwicklung ändern können.
Unser Fokus liegt darauf, die Kundengedanken in den Vordergrund zu stellen und die Anwendung entsprechend zu strukturieren. Die Komponentenorientierung ist ein architektonisches Konzept, bei dem die Anwendung so aufgebaut wird, dass sie die Realität des Kunden widerspiegelt. Durch die Aufteilung der Anwendung nach Fachlichkeit und die Strukturierung des Source Codes in Packages können jederzeit neue Komponenten oder Module hinzugefügt werden, ohne bestehende zu verändern. Dies ermöglicht eine hohe Erweiterbarkeit und Flexibilität.
Wir sind der Ansicht, dass Microservices sinnvoll sind, wenn Skalierung oder spezifische Anforderungen es erfordern. Dabei beginnen wir nicht direkt mit einem riesigen Microservice-System, sondern modularisieren Module, die später zu Microservices werden können. Dadurch bleibt das System weniger komplex und besser beherrschbar.
In Bezug auf die Softwareentwicklung betonen wir die Wichtigkeit der Trennung der Business-Logik von den Methoden, die diese Logik aufrufen. Durch diese Trennung wird der Code übersichtlicher und einfacher zu lesen. Wir wenden diese Herangehensweise bereits unbewusst an und refaktorisieren den Code, um die Business-Logik in separate Funktionen auszulagern. Dies erleichtert das Verständnis und die Fehlerbehebung.
Wir diskutieren auch die Vorteile von Integrationstechniken und der Nutzung von Komposition anstelle von Vererbung in der objektorientierten Programmierung. Klare Integrationsmethoden und eine modulare Auslagerung der Business-Logik führen zu einer besseren Lesbarkeit und Verständlichkeit des Codes.
Abschließend sprechen wir über den Test-First-Ansatz und warum wir große Fans davon sind. Durch die Verwendung von Tests von Anfang an können wir sicherstellen, dass nur das implementiert wird, was tatsächlich benötigt wird, und dass bereits existierender Code weiterhin wie gewünscht funktioniert. Dies gibt uns Sicherheit und erleichtert die Erweiterung des Systems.
Insgesamt haben wir in dieser Folge viel über Erweiterbarkeit gelernt und verschiedene Methoden besprochen, die uns dabei helfen können. Bleibt dran und abonniert unseren Podcast für weitere spannende Themen. Bis zum nächsten Mal! Ciao.
0:00:11 Einführung: Willkommen zur heutigen Folge von „Der Macht der Kraft“
0:00:39 Diskussion über Änderbarkeit und Erweiterbarkeit
0:01:42 Ziel: Neue Funktionalität statt Veränderung
0:03:05 Die Boy Scout Rule für erweiterbaren Code
0:06:03 Boy Scout Mentalität für verbesserte Codequalität und Erweiterbarkeit
0:06:33 Inkrementelles Vorgehen für Erweiterbarkeit
0:08:27 Planung in Maß und schrittweise Anforderungsänderungen
0:10:29 Komponentenorientierung für Kundenfunktionalität und Erweiterbarkeit
0:16:38 Vorteile des Microservice-Ansatzes bei Skalierung
0:18:05 Flexibilität bei Code-Erweiterung durch parallele Komponenten
0:21:11 Integration-Operation-Segregation Principle fördert Code-Lesbarkeit und -Verständnis
0:27:48 Probleme mit Business-Logik und Code-Wiederverwendung
0:29:25 Wiederverwendung in der objektorientierten Programmierung
0:29:48 Teamkomposition vs. Vererbung
0:32:34 Vererbung vs. Encapsulation
0:34:38 Test First – Ein besseres Gesamtdesign durch Tests
0:36:27 Anforderungen in schriftlicher Form versus mündliche Anforderungen
0:38:44 Implementierung basierend auf den benötigten Tests
0:41:15 Vorteile der Test Suite für die Erweiterung einer Anwendung
0:43:29 Wichtigkeit von Tests für die Erweiterbarkeit der Anwendung
Transkript
Transkript hier einfügen