Techniken und Best Practices zum Arbeiten mit C++ Legacy Code
Du musst eine komplexe C++ Code Basis ohne Test Suite verstehen und darauf aufbauend weitere Anforderungen realisieren? Du traust Dich nicht den existierenden Code zu ändern, weil dabei Side-Effekte auftreten können, durch die Änderungen möglicherweise andere Module betroffen sind und dadurch an anderen Stellen Fehler entstehen? Mit anderen Worten, Du musst mit C++ Legacy Code arbeiten und willst gerne die besten Strategien und Techniken kennen lernen, wie Du erst einmal ein Sicherheitsnetz aufbauen kannst, so dass Du den existierenden Code schrittweise verstehen und in einen Clean Code refactoren kannst? Dann ist dieser Kurs genau der richtige für Dich! Eine alte komplexe Code Basis ohne Test Suite verstehen zu müssen und damit weiterzuarbeiten, ist mit Abstand das Unangenehmste mit dem Softwareentwickler tagtäglich zu kämpfen haben. Nicht aber, wenn Du die Techniken zum Arbeiten mit Legacy Code beherrschst. Mit dem entsprechenden Know-how und praxisnahen Best Practices wird diese anspruchsvolle Aufgabe zu einer der interessantesten Aufgaben. Erfahre mehr über diese spannende Schulung zum Arbeiten mit C++ Legacy Code...
Nutzen
- Best Practices zum Arbeiten mit C++ Legacy Code kennen lernen
- Bestehende komplexe C++ Code Basis effektiv verstehen
- Erstellen von Sicherheitsnetzen für Legacy Code in Form von Test Suites
- Schrittweises Umwandeln von Legacy Code zu Clean Code mit höher Qualität
- Sichere Weiterentwicklung und Anpassung von bestehenden alten Projekten
- Test Suites anlegen anstelle einer komplett neuen Entwicklung oder eines Big Redesign
- Einarbeitungs- und Entwicklungszeit deutlich verkürzen, wenn Legacy Code zu Clean Code wird
Dieser Working with C++ Legacy Code Kurs ist einer der beliebtesten an der Münchner Coding Akademie. Denn fast jede Firma hat mit Legacy Code zu kämpfen. Der Nutzen dieses Kurses ist sehr hoch, denn die erlernten Techniken lassen sich sofort in die alltägliche Arbeit integrieren und direkt anwenden, so dass die Softwareentwickler schneller und sicherer werden, wenn sie mit Legacy Code arbeiten müssen.
Inhalte
Der Kurs behandelt eine Auswahl folgender Themen:
- Introduction to C++ Unit Testing
- Introduction to Clean Code
- Introduction to Refactoring Patterns
- Golden Master
- Seams
- Test Coverage
- Mutation Testing
- Adding a Feature
- Get a Class into a Test Harness
- Run a Method in a Test Harness
- Breaking Monster Class
- Changing Monster Method
- Dependency Breaking Techniques
Für weitere Details bitte die untenstehende Agenda ansehen.
Vorkenntnisse
Dieser Working with C++ Legacy Code Kurs wurde konzipiert für Softwareentwickler und Programmierer mit soliden und guten C++ Kenntnissen, vergleichbar mit unserem C++-Kurs für Einsteiger.
Vorteilhaft wäre, wenn Du Dich bereits in Unit Test und Clean Code im Umfang unserer Unit Testing und Clean Code Kurse auskennst. Dies ist jedoch keine Voraussetzung, da wir am Anfang des Kurses auch eine kleine Einführung in diese Themengebiete geben werden.
Individuell: wir gehen gezielt auf Dich ein und berücksichtigen Deine Vorkenntnisse, Wunschthemen und Schwerpunkte
Strukturiert und leicht verständlich
Bringe deine Karriere, Studium oder Ausbildung auf die nächste Stufe: mit Zertifikat
Sicher und eigenständig Programme entwickeln (ob privat, beruflich oder für dein Startup)
Viel, viel, viel Praxis: sofort anwendbare Ergebnisse
kleine Gruppen: max. 8 Teilnehmer im 3-Tages-Kurs max. 15 Teilnehmer im Online-Coaching
Von Experten nach der Raed- Methode® entwickelt & auf die Anforderungen von Tech-Unternehmen im Jahr 2020 ausgerichtet
E-Mail-Support auch nach Ende des Kurses
Kursbeschreibung
Das Working with Legacy Code Seminar der Coding Akademie München ist ideal für Entwickler mit grundlegenden C++ Kenntnissen, die in einem laufenden Projekt mit Legacy Code arbeiten. Oder für alle, die ein bestehendes Projekt ohne Test-Suite oder Unit Test betreuen. Im Rahmen des dreitägigen Seminars beleuchten wir den generell schwerer zu testenden Legacy Code. Schließlich liegen die Gründe dafür meist im Verborgenen. Entweder ist kein Unit Test für diesen Code vorhanden. Oder der vorhandene Unit Test reicht nicht aus. Beziehungsweise deckt er nicht alle relevanten Fälle ab. Da kommt dem ein oder anderen Programmierer der Gedanke, das ganze Projekt neu zu programmieren. Was aber nur in den allerwenigsten Fällen notwendig ist. Denn oft sind die Projekte sehr groß, komplex und die daraus entstehende Software wird bereits vermarktet. Das macht es unmöglich, den Code komplett neu und sauber aufzusetzen.
Genau hier setzen wir mit unserem Legacy Code Seminar an. Während den drei Tagen schreibst Du Schritt für Schritt bestimmte Tests für die entsprechenden Module. Das sichert Dich und Dein Projekt ab und lässt Dich in Ruhe den Code verändern, anpassen und mit Clean Code Regeln in einen deutlich besseren Zustand bringen. Deine Software wird dadurch von Tag zu Tag besser. Deine Code Qualität steigt. Änderungen und Anpassungen werden einfacher. Und Du behaltest den ursprünglichen Code bei, was eine reibungslose und sichere Funktion der Anwendung garantiert.
Selbstverständlich schreibst Du den C++ Test und die Codes unter Anleitung ausgewiesener Fachexperten und renommierten C++ Trainern, die an den besten Hochschulen des Landes referieren. Das sichert Dich ab und lässt Dich spielerisch die Kniffe des Legacy Codes verstehen. Mitverantwortlich für dieses gute Gefühl ist auch das angenehme Umfeld in unserem modernen Schulungszentrum. Ob Online oder Offline. Es liegt im Zentrum Münchens und ist bequem mit dem Auto oder den öffentlichen Verkehrsmitteln erreichbar. Bist Du einmal da, darfst Du Dich auf State-of-the-art Rechner freuen – genauso wie auf leckere Snacks und Getränke, die während Deines Legacy Code Seminars auf Dich warten.
Was lernst Du am ersten Tag?
Am ersten Tag müssen wir feststellen, dass Du die nötige Grundlage für diesen Kurs hast. Daher machen wir eine schnelle Einführung in Unit Test sowie in den allerwichtigsten Clean Code Regeln. Natürlich wäre super, wenn Du über gute Kenntnisse in diesem Gebiet verfügst wie in unseren Unit Testing und Clean Code Kurse. Dies ist aber kein Muss. Daher ja die Einführungen in diese Themen. Dann beginnen wir mit den Techniken an, mit denen Du ein Sicherheitsnetz aufbauen kann. Mit Golden Master.
Was lernst Du am zweiten Tag?
Hier lernst Du weitere Techniken wie z.B. Seams und wie Du mit Test Coverage auch feststellen kannst, für was Du noch überhaupt Test schreiben solltest und warum! Danach schauen wir uns gemeinsam die wichtigsten Refactoring Patterns an, die Du brauchst, um mit Legacy Code effizient arbeiten zu können. Denn nachdem Du Dein erstes Sicherheitsnetz in Form von Unit Test Suite erstellt hast, kannst Du beruhigt und entspannt den existierenden komplexen Code ändern und nach jeder Änderung alle Tests starten, um sicher zu sein, dass Du nichts kaputt gemacht hast. Nun stellt sich die Frage, wie ändere ich jetzt den Code sehr effizient und geschickt? Hier spielen Refacotring Patterns ihre volle Stärke aus. Wir zeigen Dir die wichtigsten Refactoring Patterns ohne IDEA dann wie man sie mit Hilfe einer Entwicklungsumgebung wie IntelliJ oder Eclipse schneller sogar anwenden kann.
Hier lernst Du auch wichtige Techniken wie z.B. Du eine Monster Klasse oder Monster Methode brechen kannst und wie Du mit Refactoring Patterns aus einer langen Methode eine oder mehrere Klasse extrahieren kannst.
Was lernst Du am dritten Tag?
Am dritten Tag lernst Du weitere fortgeschrittene Techniken zum Arbeiten mit Legacy Code wie z.B. Mutation Testing, sowie Dependency Breaking Techniques. Dadurch kannst Du die Komplixität von Legacy Code brechen. Der einst legacy Code gewesen, wird schrittweise zu einem verständlichen und angenehmen Code, auf den Du ohne Angst, was kaputt zu machen, aufbauen kannst. Der Legacy Code verschwindet langsam und wird durch Clean Code ersetzt. Dadurch steigt auch die Code Qualität gewaltig und mit ihr natürlich Deine Produktivität.
Wie geht es ab hier weiter?
Nach diesem Kurs kannst Du Dich ziemlich gut mit den besten Techniken und Know-How zum Arbeiten mit Legacy Code. Denn Du lernst jede Technik einzelnen in einem kleinen Workshop und dadurch konzentrierst Du Dich nur auf diese Technik. Leider sind 3 Tage viel zu kurz, um dazu noch ein großes Projekt mit Legacy Code aufzunehmen. In den 3 Tagen können wir sehr froh sein, wenn Du die wichtigsten Techniken zum Arbeiten mit Legacy Code beherrschst.
Nun kam von mehreren Teilnehmern aus verschiedenen Firmen in diesem Kurs den Wunsch nach einem Nachfolgekurs. Ein Kurs der aus einem großen Projekt mit über 5.000 Zeilen komplexen Code ohne Tests besteht. Mit anderen Wörtern: ein echtes Legacy Code Projekt mit komplexer Datenbank Anbindung, mit REST APIs, mit Monster Klassen und Methoden und mit sehr schlechten Dependency, mit starker Koppelung zwischen den Klassen und Modulen und schlechten Schnittstelle und dazu sogar fremde APIs. Ein echtes hässliches Legacy Code Projekt. Unsere Aufgabe in diesem Nachfolge-Kurs besteht daran, dass wir innerhalb von 3 Tagen alle gelernten Techniken aus dem ersten Kurs anwenden und hier sogar fortgeschrittene Unit Testing Techniken wie Test Double Techniken und fortgeschrittene Dependency Breaking Techniken noch lernen werden, um für das hässliche Legacy Projekt schrittweise Test Suite zu erstellen und den Code in Richtung Clean Code refactoren können. Dieser Nachfolge Kurs werden wir Legacy Code in Action.
Deine Trainer
Der C++ Legacy Code Kurs wird von einem der folgenden Trainer durchgeführt:

Allaithy Raed
Expert: Java, Python, Clean Code, Clean Software Architektur, Clean Unit Test und TDD, Refactoring Patterns
- Promotion an der LMU im Bereich Programmiersprachen (2022).
Referenzen: 17 Jahre Lehr- und Industrieerfahrung, davon 12 Jahre Dozent an der Ludwig-Maximilians-Universität München für Java, Python, Effiziente Algorithmen, Mehrfach ausgezeichnet für hervorragende Lehre an der LMU, Buchautor für Java & demnächst Python bei den Verlagen Springer und O'Reilly, Entwickler der RAED-Lehrmethode®, Train the Trainer Ausbilder, Team-Schulungen in Java und Python für BMW, VW, BA, SIEMENS, AGFA-Healthcare, TÜV Süd, Schufa AG, ..

Dr. Matthias Hölzl
Expert: Künstliche Intelligenz, Python, C++, Java, JavaScript, Clean Code & Software Architektur
- Promotion an der LMU. Fachbereich: Software Engineering
Referenzen: 30 Jahre Lehr- und Industrieerfahrung. Davon 18 Jahre an der Ludwig-Maximilians-Universität München, zuletzt als Professor für Software and Computational Systems Engineering. Schulung, Technisches Coaching für Maschine Learning, Deep Learning, Prozesse Automatisierung sowie Begutachtung und Verbesserung von Software Architektur bei großen IT Projekten. Python und Java Schulungen für Deutsche Bank, BMW, BA, VKB, etc. Herausgeber und Autor mehrerer Bücher beim Springer-Verlag und Autor zahlreicher wissenschaftlicher Publikationen.

Dr. Stefan Behnel
Expert: Python, Pytest, Unit Test und TDD, Clean Code, Clean Software Architektur, Fast Python, Cython
- Promotion an der TU Darmstadt zum Dr. Ing. in Softwarearchitektur
Referenzen: 15 Jahre Erfahrung als Consultant, Software-Entwickler und Software-Architekt in den Branchen Finanzdienstleistung, Autoindustrie, Verlag und Touristik im Bereich High-Performance Python und Open-Source, Hauptentwickler von Cython, auf Cython basiert die Data Sience Bibliothek PANDA. Python Schulungen für Dräger, Apple, Sky Deutschland, IT-Firmen, ...

Dr. Max Meier
Expert: .NET/C#, Software Architektur, Microservice, API-Design, Unit Test und TDD, SQL-Datenbanken
- Promotion an der LMU im Fachbereich Softwaretechnik
Referenzen: 15 Jahre Berufserfahrung als Softwareentwickler, Softwarearchitekt und Berater in den Branchen Systemgastronomie, E-Commerce, Versicherungen, Interaktive Medien. Konzeption, Entwurf, Durchführung und Leitung von großen Softwareprojekten als der führende Architekt. Diverse Schulungen in C#, Microservices, Unit Test und Datenbanken für VW und verschiedene IT-Firmen.

Prof. Dr. Peer Kröger
Expert: Künstliche Intelligenz, Data Science, Big Data, SQL/NoSQL Datenbank, Python, Java
- Promotion an der LMU. Im Fachbereich Data Science
Referenzen: Jahrelange Erfahrung in der Umsetzung von Data Science Projekten sowie in der Beratung und in Schulungen u.a. in der Automobil-Industrie, bei Finanzdienstleistern und im Mittelstand. Ca. 150 wissenschaftlich begutachtete Publikationen (über 8000 mal zitiert) zum Thema Data Science, Data Mining, Maschinelles Lernen. KI Mitglied des KI-Kompetenzzentrums Munich Center for Machine Learning (MCML) an der LMU München sowie Professor für Informationssysteme und Data Mining an der CAU zu Kiel (Lehrstuhlinhaber).
ZERTIFIKAT
Selbstverständlich erhältst Du als Teilnehmer an den Techniken zum Arbeiten mit C++ Legacy Code Kurs ein Zertifikat. Voraussetzung dafür ist die komplette Teilnahme an allen Kurseinheiten und Programmier-Aufgaben und die erfolgreiche Programmierung eines kleinen Abschlussprojektes. Das allerdings wird Dir nach dieser intensiven C++ Legacy Code Schulung mehr Freude als Stress bereiten.
Agenda
Die Agenda ist aufgrund der zahlreichen Fachbegriffe in englischer Sprache verfasst. Beschreibungen sowie Kursmaterial erhalten Sie auf Deutsch. Den Kurs kannst Du wahlweise in deutscher oder englischer Sprache buchen.
Alle Seminarinhalte werden individuell an die Wünsche unserer Teilnehmer angepasst. Sie können je nach Wissensstand variieren und werden gemeinsam mit dem Seminarleiter an Tag 1 definiert. Bei diesem Working with C++ Legacy Code Seminar hast Du die Wahl aus folgenden Themen:
Arbeiten mit C++ Legacy Code Tag 1
Nötige Grundlagen
- JUnit 5 Grundlagen
- Clean Code Grundlagen
- Refactoring Patterns Grundlagen
Reasons to Change Software
- Adding a feature
- Fixing a bug
Sicherheitsnetz Aufbauen
- Golden Master
- Seams
- Test Coverage
- Mutation Test
Adding a Feature
- Test Driven Development
- Programming by Difference
Arbeiten mit C++ Legacy Code Tag 2
Get a Class into a Test Harness
- Irritating Parameter
- Hidden Dependency
- Construction Blob
- Irritating Global Dependency
- Horrible Include Dependencies
- Onion Parameter
- Aliased Paremter
Run a Methode in a Test Harness
- Hidden Method
- Language Feature
- Undetectable Side Effect
What Methods should I test?
- Reasoning about Effects
- Reasoning Forward
- Effect Propagation
- Effect Analysis
Need to make a Change
- Many Changes in One Area
- Interception Points
- Characterization Tests
- Characterizing Classes
- Targeted Testing
- A Heuristic for Writing Tests
- My Application is all APIs Calls
- My Application has no Structure
- May Project is not object oriented
Arbeiten mit C++ Legacy Code Tag 3
Breaking Monster Class
- Seeing Responsibilites
- Single Responsibility Principle
- Moving Forward
Changing Monster Method
- Hidden Class
- Extract Till You Drop
Dependency-Breaking Techniques
- Adapt Parameter
- Break Out Method Object
- Definition Completion
- Encapsulate Global References
- Expose Static Method
- Extract and Override Call
- Extract and Override Factory Method
- Extract and Override Getter
- Extract Implementer
- Extract Interface
- Introduce Instance Delegator
- Introduce Static Setter
- Link Substitution
- Parameterize Constructor
- Parmeterize Method
- Primitivize Parameter
- Pull up Feature
- Push Down Dependency
- Replace Function with Function Pointer
- Replace Global Reference with Getter
- Subclass and Override Method
- Supersede Instance Variable
- Template Redefinition
- Text Redefinition