Software-Qualitätssicherung

Unser Qualitätsanspruch an Software

Wir als Unternehmen, als Team und als Mitarbeitende stellen einen hohen Qualitätsanspruch an unsere Software. Denn wir kennen die Folgen und Probleme, die entstehen, wenn bei der Softwareentwicklung die Qualitätssicherung vernachlässigt wurde. Wurden Architektur und Code nicht sorgfältig nach maßgeblichen Qualitätskriterien erstellt, werden die Pflege und spätere Weiterentwicklungen zeitintensiv und teuer.

Vor allem in der Investitionsgüterindustrie mit sehr langen Produktlebenszyklen zahlen sich ein konstanter Fokus und stetige Investition in qualitätssichernde Maßnahmen mittel- bis langfristig immer aus. Deshalb wenden wir konsequent Maßnahmen zur Qualitätssicherung an und haben diese Prozesse in unserer Arbeitsweise verankert. Der Qualitätsaspekt ist Teil unseres Mindset, quasi Teil unserer DNA.

Worauf legen wir im Softwareentwicklungsprozess Wert?

Wer ist von Auswirkungen mangelnder Softwarequalität betroffen?

Bereits während der Softwareentwicklung wirkt sich eine mangelhafte Qualitätssicherung negativ aus: Agile Methoden können kaum genutzt werden, laufende Softwaretests sind schwierig und das ganze Team ist frustriert, wenn immer wieder viel Zeit für die Fehlersuche aufgewendet werden muss.

Die Vernachlässigung qualitätssichernder Maßnahmen vor und während des Softwareentwicklungsprozesses zeigen sich u.a. in undurchdachten Architekturen und schlecht lesbarem Quellcode.

 

Selbst wenn eine entwickelte Software die funktionalen Anforderungen gerade noch erfüllt, entstehen mittel- bis langfristig negative Auswirkungen. Davon sind während und nach der Zusammenarbeit alle Projektbeteiligten betroffen.

Icon Person als Symbol für Anwender

Anwender

  • erhält mangelhafte, schlecht bedienbare Software
  • im schlimmsten Fall verursacht Software Systemausfälle
  • hohes Frustrationslevel
  • höherer Schulungsaufwand aufgrund kürzerer Nutzungsdauer der Software
Icon Person und Dokument als Symbol für Auftraggeber

Auftraggeber

  • hohe Kosten durch zeitintensive Fehlerbehebungen
  • unwirtschaftliche Lösung, keine Wiederverwendung programmierter Funktionen
  • Abhängigkeit von Dienstleister, interne Weiterentwicklung aufgrund unverständlichen Codes unmöglich
  • Anhäufung technischer Schulden
  • im Worst Case droht Abbruch des Softwareprojekts
Icon einer Person vor Bildschirm mit Code-Zeichen als Symbol für den Beruf der Softwareentwicklerin

Entwickler

  • hoher Zeitaufwand für Fehlersuchen und -behebungen
  • hohes Frustrationslevel
  • sinkende Motivation
  • erschwerte Teamarbeit, kaum kollaboratives Arbeiten möglich

Technische Schulden

Fehlt die Bereitschaft, zu Beginn eines Softwareentwicklungsprojekts in den notwendigen Aufwand zur Qualitätssicherung zu investieren, riskiert der Auftraggeber den Aufbau „Technischer Schulden“. Auch zu hoher Zeitdruck und unklare Anforderungen können diesen Effekt begünstigen. Vergleichbar mit finanziellen Schulden, Zinsen und Zinseszinseffekt potenzieren sich diese Altlasten v. a. bei einer längeren Lebensdauer von Software mit allen nachteiligen Konsequenzen.

Technische Schuld kann somit als aufgeschobene Investition in die innere Qualität  gesehen werden. Dies geht so lange gut, bis die technische Schuld so hoch ist, dass es Auswirkungen auf das Projekt hat. Änderungen am schlechten Code werden nur behelfsmäßig durchgeführt, wodurch sich die Mängel an der Software weiter erhöhen. Am Ende beeinträchtigt die Tilgung der technischen Schuld alle Prozesse von der Entwicklung, über die Wartung bis zur Weiterentwicklung.

Grafik zeigt Auf- und Abbau technischer Schulden
Aufbau und Tilgung technischer Schulden
Bild von Wolfram Schäfer

Investiert man von Beginn an in ein ausgereiftes Konzept, eine saubere Architekturen und in agile Prozesse sinkt zwar zunächst meist die Entwicklungsgeschwindigkeit. Doch dieser Aufwand zur Vermeidung technischer Schulden rechnet sich unserer Erfahrung nach in jedem Fall.

Wolfram Schäfer

Geschäftsführer IT Engineering Software Innovations

Vorteile agiler Softwareentwicklung

Wir setzen konsequent auf agile Entwicklungsprozesse, da sich dadurch unschlagbare Vorteile für die Software, das Miteinander im Team und somit für das gesamte Projekt ergeben.

Agilität ist für uns die Fähigkeit zur Anpassung an neue Gegebenheiten, weswegen Software „automatisch“ wandelbar entwickelt wird.

  • Anforderungen müssen nicht von Beginn an „starr“ festgelegt sein, sondern werden in dem Maße präzisiert, wie es für ihre Umsetzung notwendig ist
  • somit können auch schlecht einschätzbare Aufwände und Risiken kontrolliert werden
  • die kontinuierliche Verbesserung ist ein Kernaspekt von Agilität, somit ist auch die entwickelte Software auf Weiterentwicklung ausgelegt
Grafik zeigt Prozess der agilen Softwareentwicklung

Methoden zur Qualitätssicherung

Continuous Development

Um die stetige, schrittweise Weiterentwicklung von Software zu ermöglichen, braucht es Prozesse, die diese Vorgehensweise unterstützen. Nur eine durchgängige Prozesskette, die in hohem Maße automatisiert ist, ermöglicht diese Arbeitsweise, auch Continous Development genannt. Neue Releases und damit auch neue Funktionalitäten können damit den Anwendern möglichst direkt und schnell zur Verfügung gestellt werden.

Continuous Integration (CI)

In einem automatisierten Prozess werden die einzelnen Komponenten zu einer Anwendung zusammengefügt. Das Ziel ist die Qualitätssteigerung der Software.

Continuous Delivery (CD)

Techniken, Prozesse und Tools, die den Softwareauslieferungsprozess verbessern. So kann in Kombination mit agilen Methoden qualitativ hochwertige Software entwickelt werden.

Continuous Deployment (CD)

Releaseprozess, bei dem Änderungen am Code automatisiert und sofort an Endnutzer ausgeliefert werden. Fehler werden aufgrund kleiner Entwicklungsschritte schnell identifiziert.

Weitere qualitätssichernde Maßnahmen

Code Reviews

Regelmäßige Code Reviews sind das effizienteste Verfahren, um Softwarequalität nachhaltig zu steigern. Durch die kontinuierliche Analyse des Quellcodes nach dem "Vier-Augen-Prinzip" durch andere Entwickler wird eine iterative Optimierung möglich.
  • Berücksichtigung und Steigerung nicht-funktionaler Qualitätsmerkmale
  • Einbindung von Kompetenzen anderer Entwickler
  • Erzielung einer wartbaren und erweiterbaren Software

Automatisierte Softwaretests

Verschiedene Test-Szenarien werden regelmäßig und automatisiert ausgeführt, um den manuellen Testaufwand zu minimieren. Softwaretools übernehmen die wiederkehrende Überprüfung relevanter Funktionen der Softwareanwendung, um deren stabilen Betrieb sicherzustellen.
  • geringer manueller Aufwand für das wiederkehrende Testing
  • automatisierte Überprüfung von Funktionsabläufen
  • regelmäßiges Testen der Softwareanwendung ist möglich

Source Code Management

Source Code Management bzw. Systeme zur Versionsverwaltung stellen kontinuierlich den Verlauf der Codeentwicklung dar und unterstützen dadurch eine verteilte, dezentrale Arbeitsweise innerhalb des Entwicklerteams.
  • paralleles Arbeiten am gleichen Quellcode möglich
  • ortsunabhängige Softwareentwicklung möglich
  • hohe Transparenz und Nachvollziehbarkeit durch Versionierung aller Änderungen

Refactoring & Restrukturierung

Refactoring & Restrukturierung zielen auf die Optimierung von Software hinsichtlich Architektur und Code ab. Während Software bei der Restrukturierung an neue Technologien angepasst wird, hat Refactoring die Strukturverbesserung des Quellodes zum Ziel.
  • Steigerung der Performance einer Software
  • Erleichterung der Weiterentwicklung einer Software
  • Zukunftssicherheit

Clean Code

Clean Code beschreibt eher ein Prinzip bzw. eine generelle Haltung in der Softwareentwicklung und stellt weniger eine konkrete Methode dar. Dabei werden vier zentrale Werte als Grundlage für nachhaltige, effiziente und erfolgreiche Softwareentwicklung definiert:

Wandelbarkeit

Die Software kann ohne erheblichen Zusatzaufwand an neue Anforderungen angepasst und um neue Features erweitert werden.

Korrektheit

Sowohl funktionale als auch nicht-funktionale Anforderungen an die Software werden erfüllt.

Produktionseffizienz

Software kann effizient und zu angemessenen Kosten entwickelt, verbessert und erweitert werden und ist langlebig.

Kontinuierliche Verbesserung

Entwickler sammeln ständig Erfahrung, reflektieren diese, lernen daraus und teilen ihr Wissen.

Wie können wir Sie unterstützen?

Sie suchen einen Entwicklungspartner für die Umsetzung komplexer Softwareprojekte im industriellen Umfeld?