Dienstag, 15. April 2025

CCD Praktiken

Die Werkzeuge eines Softwareentwicklers sind heutzutage ausgereift und unterstützen die Programmierung und Wartung der Softwaresysteme.

IntelliJ IDEA (TM) integriert unterschiedliche Projekttypen, Programmiersprachen und Systeme in eine Entwicklungsumgebung und unterstützt mit Code Completion und Refaktorisierungswerkzeugen den Entwicklungsprozess. Vielfältige Plugins für alle möglichen Einsatzgebiete stehen ebenfalls zur Verfügung. Source Code Conventions können in der Entwicklungsumgebung konfiguriert und im Team geteilt werden.

Versionskontrollsysteme wie GIT sind in die Entwicklungsumgebung integriert und unterstützen die Verwaltung der Software Quellen optimal. GIT und andere Versionskontrollsysteme erlauben die Verwaltung der Software Quellen ohne die Angst haben zu müssen, dass etwas verloren oder kaputt geht. Die Historie in der Versionskontrolle ist eine wichtige Quelle für die Weiterentwicklung und Fehlerbehebungen im Quellcode. Nur mit einer Versionskontrolle gelingt die Zusammenarbeit in einem Team von Softwareentwicklern.

Im Gitlab sind die Pipelines konfiguriert, die bei einem Commit anlaufen, um Prüfungen vor dem Push in die Versionskontrolle vorzunehmen. Prüfungen können sein, dass alle Unit- und Integrationstests fehlerfrei ausgeführt werden konnten. Scanner prüfen auf CVEs, Pipeline Jobs deployen in Cluster Umgebungen und Taggen die Software, noch bevor die gebauten Artefakte für das Deployment in die entsprechenden Umgebungen verschoben werden.

Das Tracking von Issues mit JIRA (TM) oder anderen Tracking-Systemen unterstützt die Arbeit und Kommunikation in einem cross-funktionalen Scrum Team optimal. Die Stati des Tracking Systems zeigen den Team-Mitgliedern die Verarbeitungsschritte und Übergabepunkte an. Prioritäten und der Bedarf an der Softwareentwicklung beteiligter Personen wird bestmöglich unterstützt, sodass die Kommunikation im Team auch außerhalb der Entwicklungsumgebung und der Welt des Quellcodes unterstützt und transparent wird.

Warum das alles?!

Ganz einfach, die Werkzeuge geben uns Stabilität, Sicherheit sowie Vertrauen in die Software und verbessern den Entwicklungsprozess und die Qualität des Quellcodes erheblich. Die Produktqualität wird enorm gesteigert. Aus Sicht von CCD sind die Werkzeuge, die wir in der Softwareentwicklung heute einsetzen, unter Praktiken angesiedelt.

Roter Grad - Versionskontrolle: Voraussetzung für jeden professionellen Softwareentwickler, steigert die Produktivität und fördert die Verbesserung des Quellcodes. Die Versionskontrolle ist auch eine Wissensquelle und Medium zum Austausch von Wissen.

Oranger Grad - Issue Tracking: Notwendig, um in einem agilen Team zusammenarbeiten zu können. Schnittstelle zwischen den Anforderungen und der Implementierung der Software. Kommunikationsdrehscheibe für alle Teammitglieder, vom Product Owner bis zur Qualitätssicherung.

Oranger Grad - Automatisierte Integrationstests 
und Gelber Grad - Automatisierte Unit-Tests: Unabdingbar als Sicherheitsnetzwerk gedacht um Fehler und Seiteneffekte möglichst frühzeitig erkennen zu können. Garantiert das Deployment stabiler Softwarestände in die Laufzeit- und Cluster-Umgebungen.

Oranger Grad - Reviews: Wesentlich, um Fehler im Quellcode oder Verbesserungspotential frühzeitig im Quellcode zu erkennen. Neben dem Pair Programming eine gute Möglichkeit um Wissen weiterzugeben und Implementierungen zu diskutieren sowie freizugeben.

Grüner Grad - Continous Integration (CI): Unabdingbar, Software darf nur automatisiert getestet und gebaut werden. Die Automatisierung in den Build-Pipelines kann flexibel an die Bedürfnisse eines Softwaresystems und Erfordernisse der Produktionsqualität angepasst werden. In der Summe unterstützen automatisierte Prozesse die Entwicklung, um angstfrei hochwertige Software-Artefakte in gleichbleibender Qualität zur Verfügung zu stellen.

Blauer Grad - Continous Delivery (CD): Erforderlich, das automatisierte Deployment in eine Laufzeit- oder Cluster-Umgebung ist genauso wichtig, wie die Automatisierung der Testdurchläufe. Erfolgreiche Deployments zeigen auf, dass die Software Services richtig für eine Umgebung konfiguriert sind und dass die Software funktioniert. Optimalerweise werden nach dem Deployment noch einmal Tests automatisiert ausgeführt, die integrative Use Cases und das Zusammenspiel mehrerer Services testen.