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.