Cloudogu Logo

Hallo, wir sind Cloudogu!

Experten für Software-Lifecycle-Management und Prozess­auto­mati­sierung, Förderer von Open-Source-Soft­ware und Entwickler des Cloudogu EcoSystem.

featured image Wie man die Qualität von Software verbessert
24.02.2016 in Quality

Wie man die Qualität von Software verbessert


Daniel Huchthausen
Daniel Huchthausen

IT Consultant


In unserem vorherigen Post haben wir Qualität als „den Grad der Übereinstimmung mit expliziten oder impliziten Anforderungen und Erwartungen“ definiert und die verschiedenen Begriffe der Definition näher betrachtet. Dabei wurde deutlich, dass Qualität mit gründlich definierten Anforderungen beginnt. In diesem Beitrag wollen wir noch einen Schritt weiter gehen und zeigen, welche Schritte zur Verbesserung der Qualität unternommen werden können.

Qualität erfordert Akzeptanzkriterien

Ein großer Schritt in die richtige Richtung zur Verbesserung der Qualität ist die Bestimmung von Akzeptanzkriterien für Anforderungen. Dadurch erhalten Sie messbare Kriterien, mit denen Sie Ihr Produkt vergleichen können. Sobald die Akzeptanzkriterien bekannt sind, kann das Entwicklungsteam Maßnahmen ergreifen, um sicherzustellen, dass die Kriterien erfüllt werden. Sie können zum Beispiel neue Aspekte zu ihren Definitions of Done (DoD) hinzufügen oder sie können Unit- und Integrationstests schreiben. Im Folgenden möchten wir Ihnen einige Maßnahmen vorstellen, die Sie ergreifen können, um Ihre Softwarequalität über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu verbessern.

Software quality process

Anforderungen analysieren

Während der Analysephase sollten Sie folgende Dinge tun:

  • Kunden und Interessengruppen einbeziehen: Wie bereits erwähnt, ist es wichtig, Kunden und Interessengruppen so früh wie möglich in den Entwicklungsprozess einzubeziehen. Auf diese Weise lernen Sie die Anforderungen und Erwartungen kennen und erhalten Feedback zum Produkt. Dadurch wird das Risiko von „Anpassungen in letzter Minute“ verringert.
  • Bestimmung der Abnahmekriterien: Im letzten Post haben wir bereits erwähnt, dass es sehr wichtig ist, messbare Kriterien zu haben. Jede definierte Anforderung muss mindestens ein Akzeptanzkriterium haben, um sicherzustellen, dass die Qualität bewertet werden kann.

### Entwerfen Sie Ihre Software-Entwicklungspipeline

In der Entwurfsphase sollten Sie sich Gedanken über die Entwicklungspipeline machen und dabei diese Dinge berücksichtigen:

  • Entwurf der Systemarchitektur: Oft scheint es notwendig zu sein, schnell erste Ergebnisse zu produzieren, aber wenn Sie sich am Anfang Zeit nehmen, um die Architektur der Anwendung zu entwerfen, können Sie später viel Zeit sparen. Mit einer gründlich konzipierten Anwendung sind Sie auf Änderungen und Erweiterungen, die sich ergeben werden, „vorbereitet“.
  • Einrichten von Quality Gates: Quality Gates sind Metriken über Ihren Code. Mit Hilfe statischer Code-Analysen, z.B. mit SonarQube, können Sie laufend Kennzahlen über den Code berechnen. Häufig verwendete Metriken sind zum Beispiel „Code Coverage“, „Anzahl der Bugs“, „Anteil des kommentierten Codes“ oder „Code Duplications“. Werden die Qualitätskriterien nicht erfüllt, kann die Anwendung nicht gebaut werden.
  • Einrichtung des Entwicklungsprozesses: Zusätzlich zu den Quality Gates und der Systemarchitektur sollten Sie über Ihren Softwareentwicklungsprozess nachdenken. Möglicherweise müssen Sie Ihren Standardprozess anpassen, um die Anforderungen Ihrer Kunden zu erfüllen. Ihr Prozess sollte Regeln für Verzweigungen, die Durchführung automatisierter Tests, Commit- und Build-Häufigkeit festlegen.

Implementierung Ihrer Qualitätsmetriken

Sobald Sie Ihre Entwicklungspipeline und Ihre Qualitätskriterien festgelegt haben, müssen Sie herausfinden, wie Sie Ihre Ziele erreichen können, indem Sie sie in Ihrer Pipeline umsetzen:

  • Verfolgung von Metriken: Die Festlegung von Akzeptanzkriterien ist nur der erste Schritt. Sie sollten die Akzeptanzkriterien auch in Codeanalyse-Metriken übertragen, die Sie verfolgen können.
  • Bestimmung von Definitions of Done (DoD): Die DoD sind ein wichtiger Bestandteil von Scrum, aber auch wenn Sie Scrum nicht verwenden, können Sie sie nutzen. Sie definieren alle notwendigen Schritte, die erforderlich sind, um eine Aufgabe abzuschließen und sie als erledigt zu markieren. Elemente können obligatorische Tests, nicht-funktionale Anforderungen oder Quality Gates sein. Reduzierung der Komplexität: Allgemein gesprochen: Komplexer Code enthält mit größerer Wahrscheinlichkeit Fehler, und es ist schwieriger, neue Funktionen hinzuzufügen und sie zu verstehen. Daher ist es ratsam, eine geringe Komplexität anzustreben. Komplexität kann zum Beispiel mit Cyclomatic Complexity von SonarQube gemessen werden. Implementierung von automatisierten Tests: Es ist nicht ratsam, eine 100%ige Testabdeckung des Codes anzustreben, sondern automatisierte Tests dort einzusetzen, wo es sinnvoll ist und der Aufwand angemessen ist. Sie können sowohl Integrations- oder Leistungstests als auch UI-Tests automatisieren. Wenn Sie anfangen, z. B. Unit-Tests zu verwenden, ist es nicht ratsam, den gesamten Code auf einmal mit Tests zu versehen, sondern immer dann, wenn Sie neue Teile des Codes hinzufügen oder ältere ändern.

Verwenden Sie Tests zur Sicherung der Qualität

Nachdem Sie Ihre Qualitätsmetriken implementiert haben, müssen Sie Ihre Software testen, um festzustellen, ob sie die Kriterien erfüllt:

  • Verwendung von manuellen Tests: Testen Sie alle Aspekte Ihrer Anwendung und verwenden Sie dafür verschiedene Ansätze. Es gibt kein ‘Einer passt für alle’. Verwenden Sie manuelle Tests, um das Benutzererlebnis zu bewerten und für Tests, die nicht einfach automatisiert werden können.
  • Verwendung von automatisierten Tests: Führen Sie Ihre automatisierten Tests regelmäßig durch, um sicherzustellen, dass das Produkt ordnungsgemäß funktioniert. Je nachdem, wie lange es dauert, sie auszuführen, müssen Sie entscheiden, zu welcher Tageszeit und wie oft Sie sie ausführen können. Die Durchführung von Tests sollte die Entwicklung nicht verlangsamen.
  • Kunden und Interessengruppen einbeziehen: Es reicht nicht aus, die Interessengruppen zu Beginn des Projekts einzubeziehen, sie sollten auch während der Entwicklung und des Testens des Produkts einbezogen werden. Sobald es etwas zu sehen gibt, sollten die Betroffenen um ihr Feedback gebeten werden.

Während der Produktentwicklung können Sie diesen Zyklus mehrmals durchlaufen, z.B. wenn Sie Scrum nach jedem Sprint anwenden. Durch diese Maßnahmen verlagern Sie Ihren Softwareentwicklungsprozess in Richtung eines qualitätsorientierten Rahmens. Qualität ist ein ganzheitlicher Ansatz, daher beginnen die Maßnahmen bei der Anforderungsanalyse, erstrecken sich über Codekonventionen und Entwicklungsprozesse bis hin zum Testen - alle Teile des Softwareentwicklungsprozesses müssen berücksichtigt werden. Auch wenn es einige Zeit dauert, sich an den neuen Prozess zu gewöhnen, und es den Anschein haben mag, dass Sie langsamer vorankommen, werden Sie diese Zeit bis zum Ende des Projekts in der Regel wieder zurückgewinnen, weil Sie weniger Änderungen vornehmen und einen zufriedenen Kunden haben werden.

Qualität bedeutet messbare Akzeptanzkriterien

Wie bereits erwähnt, kommt es bei der Qualität darauf an, dass man messbare Akzeptanzkriterien findet. Bei der Qualität geht es nicht um die Anzahl der Fehler in einer Anwendung, sondern um den Grad der Übereinstimmung mit den definierten Anforderungen und Erwartungen (natürlich soll ein qualitativ hochwertiges Produkt „fehlerfrei“ sein, denn Fehler bedeuten, dass das Produkt nicht wie erwartet funktioniert, und das führt zu einem geringen Grad der Übereinstimmung mit den Spezifikationen). In diesem Beitrag haben wir verschiedene Maßnahmen aufgezeigt, die Sie ergreifen können, um sicherzustellen, dass Ihr Produkt eine hohe Qualität hat.