Tipps zur Erhöhung der Code-Qualität in der Software-Entwicklung mit Atlassian-Tools

Eine Begebenheit aus dem Jahr 1990 ist auch heute noch lehrreich. AT&T, die große US-amerikanische Telefongesellschaft, wollte die Performanz von Ferngesprächen verbessern und implementierte in diesem Zusammenhang ein komplexes Software-Update. Doch das Projekt ging schief und das Ferngesprächsnetzwerk war neun Stunden lang nicht erreichbar. Die geschätzten Kosten dieses Ausfalls beliefen sich auf etwa 60 Millionen Dollar an entgangenen Ferngesprächsgebühren; in diesem Zeitraum kamen rund 75 Millionen Telefonate nicht zustande.

Später stellte sich heraus, dass jenes Software-Update eine fehlerhafte Code-Zeile enthalten hatte – ein Schneeball, der letztlich zu einer Lawine an kaskadierenden Switch-Fehlern anwuchs und damit zu einem gigantischen Problem führte.

Die Lehre daraus: Schon eine einzige Zeile schlechter Code kann ein großes Unternehmen in eine ernsthafte Krise stürzen. Deshalb ist die Verbesserung der Code-Qualität eine wichtige Anforderung in Software-Projekten. Hier sind ein paar Tipps, wie Entwicklungsteams agieren und wie Atlassian-Tools dabei helfen können.

Code-Konventionen für eine reibungsarme Zusammenarbeit

Viele Software-Teams erstellen für ihre Entwicklungsarbeit Listen mit Richtlinien, die als Coding-Konventionen dienen. Diese umfassen empfohlene Stile und Praktiken für eine bestimmte Programmiersprache. Manchmal etablieren Teams Konventionen auf Basis einzelner Projekte, manchmal gelten sie für das gesamte Unternehmen.

Die Nutzung einer Code-Konvention spornt alle Entwickler an, im selben Stil zu schreiben, was dazu führt, dass Kollegen den Code ihrer Teammitglieder besser verstehen können.Konventionen helfen auch, Dateien und Klassen in großen Projekten schneller zu finden, was vor allem den Einstieg neuer Teammitglieder erleichtert.

Beispielsweise verwenden Java-Entwickler Binnenmajuskel für ihre Namenskonventionen; das erste Wort wird also kleingeschrieben, die folgenden mit großen Anfangsbuchstaben (entwicklerNachname).

Code-Konventionen diktieren eine breite Spanne von Aspekten wie zum Beispiel diese:

  • Namenskonventionen
  • Leerzeichen
  • Operatoren
  • Deklarationen
  • Kommentare
  • Einrückungen
  • Dateiorganisation
  • Architektonische Muster

Analyse mit einem Code Linter

Ein Code Linter ist ein Tool zu statischen Code-Analyse, das den Code automatisch daraufhin prüft, ob er den Code-Konventionen des Projekts oder des Unternehmens entspricht. Ist das nicht der Fall, zeigen Linter diese Fehler als Warnungen.

Während des Entwicklungsprozesses gibt es manchmal den Trend, dass diese Warnungen übersehen werden. Das passiert, wenn das Team Geschwindigkeit höher als Qualität priorisiert. Aber diese kleinen Fehler können sich in kurzer Zeit aufsummieren und schnell zu viel Mehraufwand führen. Um diese Mehrarbeit zu vermeiden, ist das Software-Team gut beraten, die vom Linter entdeckten Fehler schnell zu beheben.

Der genutzte Linter-Typ hängt von der Programmiersprache des Projekts ab – Java, C#, Python usw. Viele Python-Entwickler verwenden zum Beispiel Pylint, um den Code zu analysieren und die Code-Qualität zu wahren. Andere Lösungen sind JSLint, ESLint oder Checkstyle.

Continuous Integration adaptieren

Entwickler mergen ihre Änderungen mehrmals täglich in den Main-Branch. Dieser Prozess wird Continuous Integration (CI) genannt. Jeder Merge initiiert eine automatische Code-Build- und Testsequenz. Wenn ein Fehler auftritt, wird der Build nicht ausgeführt und das CI-System verhindert die Folgeschritte. Das Team erhält einen Bericht und kann das Problem direkt aus der Welt schaffen.

Code-Qualität Continuous Integration

Deshalb ist CI in modernen Software-Unternehmen weit verbreitet. Dieser Ansatz versetzt die Teams in die Lage, den Entwicklungsprozess in kleine Sektionen aufzubrechen, wodurch eine größere Achtsamkeit für Details entsteht. Außerdem erhalten die Entwickler sofortiges Feedback, sodass sie vermeiden können, dass sich in der Deployment-Phase irgendwelche Fehler einschleichen.

Beliebte CI-Tools am Markt sind beispielsweise Bitbucket Pipelines und Bamboo von Atlassian, Jenkins oder CircleCI.

Kommentare sinnvoll nutzen

Manchmal schreiben Entwickler Kommentare, die nicht nötig sind, um den Code zu verstehen. Diese Art Ballast kann dazu führen, dass die Teammitglieder zusätzliche Zeit aufwenden müssen, um sich durch den Code zu arbeiten. Andere Entwickler kommentieren wiederum zu wenig, was die Qualität des Codes mindern kann, weil andere Programmierer quasi raten müssen, was sie da gerade lesen.

Das Ziel des Teams sollte ein goldener Mittelweg sein. Im Idealfall fügen die Entwickler nur dann Kommentare hinzu, wenn sie das Gefühl haben, dass es das wert ist und dass die Anmerkungen der Code-Basis um zusätzlichen Wert bereichern. Die folgenden Richtlinien können dabei Orientierung bieten:

Kommentare für komplexe Funktionen schreiben: Teammitglieder sollten Funktionen mit komplexer Logik mit Kommentaren versehen. Sie dienen quasi als Abkürzungen, die erklären, was das Ziel der Funktion ist. Das spart anderen Entwicklern Zeit, da sie es nicht erst selbst herausfinden müssen.

Einführende Kommentare für jede Datei: Diese Art von Kommentaren kann ein zusammenfassendes Bild von Ziel und Umfang des Codes zeichnen. Am besten ist es, wenn Kollegen sich die Datei ansehen und in 30 Sekunden verstehen, worum es geht.

Kommentare über jeder Klasse: Diese Kommentare erklären den Zweck und Umfang einer Klasse innerhalb einer Datei. Wenn die Klasse beispielsweise LocationService benannt ist, kann hier ein Kommentar wie der folgende in einer Java-Applikation hinzugefügt werden:

/* The class below will help to find a location record
 with a unique identifier. It returns a location */
public class LocationService {
 rest of the code goes here
}

Code-Qualität mit Jira- und Bitbucket-Apps verbessern

Für Entwicklungsteams, die Jira für das Tracking des Entwicklungsprozesses und Bitbucket für die Code-Verwaltung nutzen, stehen etliche hochwertige Erweiterungs-Apps bereit, die zur Verbesserung und Effizienzmaximierung der Code-Qualität beitragen können. Hier sind nur drei davon:

  • Awesome Graphs for Bitbucket – Diese App bietet in die Tiefe gehende Diagramme und Graphen, die Beteiligungsstatistiken und andere Daten aus den Git-Repositories visualisieren. Auf diese Weise ist es möglich, die Team-Performance einzuschätzen, besondere Produktivzeiten der Teams zu ermitteln oder sehr produktive Teammitglieder zu identifizieren.
  • Yet Another Commit Checker – Die Erweiterung bringt unterschiedliche Code-Qualitäts-Checks mit, die global aktiviert oder auf bestimmte Repos und Projekte beschränkt werden können.
  • Sonar for Bitbucket – Wie der Name schon sagt, geht es hier um die Integration von Bitbucket mit SonarQube, um Programmierfehler in der Anwendung zu finden. SonarQube ist ein Tool, das bei der kontinuierlichen Inspektion der Code-Qualität hilft. Die Integration bietet Merge-Checks, um die konfigurierten Qualitätsstandards durchzusetzen, sodass das Team keine suboptimalen Ergebnisse in den Haupt-Branch ausliefert.

Wollen Sie mehr über die Software-Entwicklung mit dem Atlassian-Toolstack wissen? Interessieren Sie sich für speziellen Features und Anwendungsfälle von Jira, Bitbucket und/oder Bamboo? Möchten Sie weitere nützliche Apps in Ihren Entwicklungszyklus integrieren? Melden Sie sich bei uns – wir sind Atlassian Platinum Solution Expert und unterstützen Sie bei allen Aspekten rund um die Atlassian-Produkte und die Marketplace-Apps.

Weiterführende Infos

Qualität, funktionale und nichtfunktionale Anforderungen in der Software-Entwicklung
Continuous Integration ist die praktische Grundlage für Continuous Delivery
Wie Code Insights für Bitbucket andere Entwickler-Tools integriert und Pull-Requests beschleunigt
Code-Qualität optimieren mit SonarQube und Bamboo

In dieser Jira-Schulung lernen erfahrene Projektleiter, IT-Admins, Scrum Master und Agile Coaches, wie sie Projekte in Jira administrieren und verwalten können.

Schreibe einen Kommentar