Software für Qualität

Um ein super Produkt zu entwickeln, braucht es Teams und Prozesse für Qualitätsmanagement, damit das Produkt gut wird und lohnend im Betrieb ist. Dazu dient das Application Lifecycle Management.

Von der Idee zum Produkt

Modernes Lifecycle- und  Qualitätsmanagement ist agile Planung, Entwicklung, Betrieb und Qualitätssicherung. Dabei wird der Lifecycle gesteuert und Feedback sofort eingesteuert. Es beginnt bei der Entwicklung und geht über Planung und Test bis zu Support und Wartung. Auch die wertvolle Rückmeldung während der Nutzung wird einbezogen in die laufenden Prozesse. Dazu gehört auch Programmplanung, Requirementsmanagement, Portfolio und Testing.

Wir folgen den Prinzipien von DevOps, die sich als Weiterentwicklung der agilen Methoden bewährt haben. Application Lifecycle Management (ALM) ist damit der Oberbegriff.

Disziplinen, die früher getrennt betrachtet wurden oder eher nebenbei passierten:

  • Planung
  • Anforderungen
  • Entwicklung
  • Testing und Qualitätssicherung
  • Build und Deployment
  • Support und Wartung
  • Wenn man DevOps als einen fortlaufenden Prozess versteht, ist ALM der Grundgedanke dahinter.

Application Lifecycle Management integriert die Funktionen, steuert den Ablauf und ermöglicht die Zusammenarbeit. Es bietet eine Plattform für die Collaboration und schliesst alle Disziplinen ein.

Produktionsnahe Umgebungen sollten früh in den Lifecycle einbezogen werden. Damit können Konfiguration, Nutzerfeedback und Bereitstellungsprozesse ebenfalls validiert werden und frühzeitig Fehler verbessern.

Selbst eine Website braucht Wartung und Pflege. Versionen veralten, Sicherheitslücken werden entdeckt oder Feedbackformulare, Capchas und digital Media Schnittstellen werden geändert.

Jedem sein Silo ;-)

Analysten, Entwickler, Tester, Betrieb und Support haben früher im eigenen Silo gearbeitet.

Agiles Testing

Agile Methoden mit iterativen Praktiken führen zu kürzeren Entwicklungszyklen. Der Kern von Application Lifecycle Management (ALM) ist, dieses Denken im gesamten Lebenszyklus der App anzuwenden.

Um die früher schwer planbaren Testzyklen zu verbessern, wird der agile Testansatz empfohlen. Dafür hat sich ein Rhythmus mit Vier-Wochen-Meilensteinen etabliert. Zweck dieses Ansatzes ist es, ein Regelwerk an die Hand zu geben, mit dessen Hilfe man agiles Denken im Unternehmen praktisch umsetzen kann.

Warum Application Lifecycle Management?

Vor dem Agilen Manifest, bevor man erkannte, dass der Wasserfallansatz meist nicht erfolgreich ist, waren die Disziplinen des Lifecycle eher isoliert.
Die Meinungen, wann eine App „fertig“ ist, gehen stark auseinender.

Dabei sind Prozesse nützlicher, die alle Funktionen durchgängig umfassen. Das ermöglicht es eine laufend gute Applikation zu betreiben und kontinuierlich alle paar Wochen neue Features auszuliefern, die funktionieren und hohe Akzeptanz bekommen.
Anwendungen in der Produktionsumgebung werden meist gut überwacht. Tools zur Echtzeit-Erfassung von Systemkennzahlen sind etabliert. Dieses Monitoring findet oft noch isoliert von den Entwicklern statt. Mit der Einbindung des Betriebs hat das Monitoring frühzeitig einen nützlichen Einfluss und kann Feedback geben an die Stellen die es betrifft.

Application Lifecycle Management

Auch gekaufte Software unterliegt unterliegt einem Lebenszyklus. Sie wird konfiguriert und auf die eigenen Vorstellungen angepasst. Auch hier müssen Support und Wartung sichergestellt werden.

Projekt- und Programm-Management

Eine bewährte Methode ist die Nutzung von Dashboards zur Planung, um wichtige Kennzahlen abzurufen. Für Programme, die aus mehreren Projekten mit eigenen Anforderungen und Meilensteinen bestehen, unterstützt ALM mit Funktionen für Project Portfolio Management (PPM).
Früher war PPM eine isolierte Disziplin, aber mittlerweile haben ALM-Tools PPM-Funktionen aufgenommen. Sie können den Status einzelner Projekte visualisieren und Abhängigkeiten der Projekte aufzeigen.

Anforderungsmanagement

Anforderungen werden gesammelt, verwaltet und priorisiert. ALM-Tools unterstützen die Verwaltung von Stories und Use Cases als Teil des Anforderungssprozesses. Anwendungsfälle werden mit Szenarien und Links zu anderen Anforderungen verknüpft. Keine Idee geht verloren. Aber die Frage, Wer macht was und wann, kann einfacher beantwortet werden.
Über einen automatischen Workflow werden Lieferobjekte je nach Rolle und Status weitergegeben und genehmigt. Idealerweise sollten die Tools an die Methodik und Prozesse im Unternehmen angepasst werden und nicht umgekehrt.

Planung und Aufwandsschätzung

Zu den ALM-Funktionen gehört das Planen und Schätzen der Projekte und Aufgaben. Dabei hilft ein ALM-Werkzeug, um Tasks zu definieren um sie zu schätzen und sie dann auf der ursprünglichen Anforderung zu aggregieren. Das erzeugt eine klare Sicht zur Beurteilung von Ideen und Features und ihrer Priorität.

Für Reviews und für die Revision dient ebenfalls ein Workflow, der sicherstellt, dass zugewiesenen Aufgaben beim Testing einem Freigabeprozess folgen, der jederzeit nachvollziehbar ist.

Entwicklung und Taskplanung

Obwohl das Programmieren meist nicht als Teil von Application Lifecycle Management betrachtet wird, hat es sich bewährt, die Versionierung zu integrieren. Die meisten ALM-Tools bieten Quellcodeverwaltung, entweder proprietär oder als Integration mit Tools wie Git oder Subversion.
Mit der Integration wird die Aufgabenplanung und Aufwandsschätzung auch für die Entwickler ermöglicht und alle Fehler und Issues können direkt einer Version (eig. Revision) zugeordnet und damit schnell behoben werden.

Testmanagement und Qualitätssicherung

Einen der grössten Vorteile gegenüber isoliertem Projektmanagement bietet Application Lifecycle Management für die Steuerung von Testing und Qualitätssicherung.
Es werden Testfälle mit Priorität erfasst, aus Anforderungen abgeleitet oder damit verknüpft. Mit einem ALM-Tool werden Testschritte und Parameter für Testfälle definiert, damit sie variiert und wiederholbar ablaufen können. Damit erhöht sich die Testabdeckung und die Qualtität verbessert sich stetig.

Testautomatisierung

Ein wichtiger Bereich ist die Unterstützung für automatisierte Tests, da Anwendungen immer mehr Schnittstellen und APIs benutzen, was das Testen immer komplexer werden lässt. Daher ist es kaum mehr möglich, alles jedes Mal manuell zu testen, wenn eine neue Version rauskommen soll. Bewährt haben sich folgende Punkte:

  • Konsequentes Automatisieren repetitiver Tests
  • Varianten durch Parametrisierung und Testdatengenerierung vervielfältigen
  • Durchgängige Automatisierung für jeden Build durch alle Stages
  • Automatisierung unabhängig machen von Veränderungen der Benutzeroberfläche
  • Entwicklungsarbeit an der Automatisierung in die Planung einbeziehen
  • Kennzahlen festlegen, um die Automatisierung bewerten zu können

DevOps

DevOps ist die Verschmelzung der Aufgaben aus den Bereichen von Entwicklung und Betrieb zu einem zusammenhängenden Ganzen. Der vernachlässigte Teil im Lifecycle war lange Support und Wartung.

Bislang lieferten die Entwickler an den Betreiber, der die Umgebungen bereitstellte. Oft hatten entwicklungsnahe Umgebungen wenig mit produktionsnahen gemeinsam. Mit dem Schritt zu DevOps wird der Betrieb zum Bestandteil des Lifecycle.

Supportfälle und Feedback der User sind wichtige Informationen. Es liefert Input für Verbesserungen und User Stories für die nächsten Iterationen. Im ALM geht dieser Input nicht verloren und steht an den richtigen Stellen zur Verfügung.

Adieu Wasserfall!

Niemand kann alles im Vorhinein wissen

Testdatenmanagement

Applikationen mit starkem Datenbezug wie Partner- und CRM-Systeme oder Vertragsverwaltungen und die personalisierte Datenanreicherung durch digital Marketing stellen das Datenmanagement vor neue Aufgaben.
Die steigende Menge von Attributen in einem Kunden-System mit Daten aus sozialen Netzen, Kundenkarten, Geoinformationen o.ä. führt zu steigender Komplexität von Testfällen. Die automatisierte Erzeugung von Testdaten erhöht erheblich die Testabdeckung.

Ob synthetische Daten oder ein Produktionsdaten-Abzug mit Anonymisierung ist abhängig vom Datenmodell, vom Schnitt der Testfälle oder der Einbindung von externen Testern. Die Anonymisierung von Produktivdaten ist nutzlos, wenn eine Re-Personalisierung möglich ist. Das muss ausgeschlossen sein.
Oft haben die Daten Abhängigkeiten über verschiedene Systeme hinweg. Diese können über Mockups abgefangen werden. Die Schnittstellen dafür werden im ALM-Tool zur Verfügung gestellt.

Qualität durch Collaboration

Die effimag will Teams dabei unterstützen, schneller auf Veränderungen reagieren und diese speditiv gestalten zu können. Für die Softwareentwicklung bedeutet das, dass Feedback zeitnah sein muss, damit man aus jeder Änderung lernen kann. Dieses Prinzip verlangt von Unternehmen, Collaboration und Kommunikationskanäle aufzubauen, über die alle Stakeholder und Nutzer Feedback geben und ohne Verluste Informationen austauschen können.
Informationen müssen dann gefunden werden, wenn sie gebraucht werden.
E-Mail, Excel oder Meetings sind nicht ideal. Notizen gehen verloren, Protokolle sind unbeliebt oder nicht vorhanden oder sind nicht auffindbar, wenn die Information von anderen gebraucht werden.

Unsere Tools für Application Lifecycle Management bieten eine Plattform zur intelligenten Ablage und einem integrierten Messenger, mit dem Benutzer unabhängig vom Standort kommunizieren können. Workflows unterstützen die Zuweisung und Weiterleitung von Informationen und Aufgaben abhängig von der Rolle der Teammitglieder.