Qualität und Nachhaltigkeit

Qualitätsmanagement

Unser Verständnis von Qualitätsmanagement setzt sich aus unterschiedlichen Teilbereichen zusammen, die im Zusammenspiel dafür sorgen, dass wir unseren Kunden das bestmögliche Ergebnis liefern. Sehr gute Qualität sorgt für eine nachhaltig gute Software.

Unter Qualitätsmanagement verstehen wir das bestmögliche Zusammenspiel aller Teilbereiche der Softwareentwicklung, um unseren Kunden nachhaltige Software von bester Qualität liefern zu können.

Nachhaltigkeit

Betrachtet man den kompletten Lebenszyklus einer Software - von der Idee, der Erstentwicklung inklusive dem Go-Live, über die jahrelange Anpassungs- und Wartungsphase bis zum “Abschalten” der Software - wird man feststellen, dass der größte Nutzen, aber wahrscheinlich auch die meisten Aufwände, während der Anpassungs- und Wartungsphase entstehen. Nachhaltig ist die Softwareentwicklung dann, wenn zu jedem Zeitpunkt der Nutzen größtmöglich und die erforderlichen Aufwände dafür so gering wie möglich ausfallen. Je früher Maßnahmen für BEIDE Ziele getroffen werden, um so eher wird eine konstant gute Balance der Software erreicht. Desto wahrscheinlicher ist es, eine gute Balance zwischen reibungslosem Betrieb und erweiterbarer Software zu finden und auf Dauer zu gewährleisten.

Qualität durch Nutzen

Qualitätsmaßnahmen werden häufig nur unter technischen Aspekten betrachtet. Jedoch, im Fokus einer Software steht der Nutzen. Nur Software die tatsächlich genutzt wird, kann echten Mehrwert liefern. Für uns geht deswegen eine gute Qualität auch mit Nutzenmanagement einher. Die Vision des Kunden verstehen, die Ziele und Anforderungen klar abstecken und priorisieren, frühes Feedback einholen und kontinuierliche Verbesserung in enger Zusammenarbeit mit dem Kunden sind Schlüsselfaktoren für einen hohen Nutzen. Agiles arbeiten ist die Basis für eine nutzenorientierte Arbeitsweise.

Nutzen durch Usability

Ein weiterer Aspekt der die Nutzung einer Software fördert ist die Usability. Gerade im Frontend soll es nicht nur gut aussehen, sondern schnell, flüssig und angenehm bedienbar von der Hand gehen. Die User Experience bekommt zurecht immer mehr Stellenwert und ist ein wichtiges Thema, wenn es um Nutzenmaximierung geht. Dies gilt im übrigen nicht nur für das Frontend sondern auch für APIs.

Ob Desktop, Tablet oder Smartphone. Eine intuitive und flüssige Interaktion gewinnt immer mehr an Bedeutung. Denn das Nutzungserlebnis spiegelt wider, wie sich der Anwender fühlt, wenn er die Software bedient. Um das Erleben und den Mehrwert der Software zu maximieren, steht hier der Nutzer im Mittelpunkt. So kann Zielgruppen- und Nutzergerecht Software entwickelt werden, die nicht nur den ästhetischen Ansprüchen, sondern auch den echten Bedürfnissen der Anwender gerecht wird. Je nach Zielgruppe gilt dies selbstverständlich auch für APIs und nicht nur für Software mit einem grafischen User Interface.

Qualität durch guten Code, Tests, Logging und Monitoring

Je länger eine Software genutzt wird, um so mehr lohnt es sich in guten Code zu investieren. Was heute gut genug ist, kann morgen befriedigend sein und übermorgen schon ziemlich viel Aufwand verursachen. Less is more, keep it stupid simple, lesbar, hinreichend dokumentiert und getestet sind einige wichtige Eigenschaften, die guten Code ausmachen. Eine hohe Testabdeckung bedeutet dabei nicht automatisch guten Code. Tests müssen sinnvoll und den Anforderungen entsprechen. Ob BDD, TDD, … oder welche Testing-Tools zum Einsatz kommen ist sicher Projektabhängig und kann nicht dogmatisch festgelegt werden.

Nach dem Deployment können ebenfalls Fehler in der Software auftreten, die erst durch die Nutzung oder im Zusammenspiel mit anderen Systemen auf der Produktivumgebung zustanden kommen. Oder, die Produktivumgebung selbst ist instabil und fehleranfällig. Idealerweise gibt die Software selbst Kennzahlen aus, die mehr als den Zustand an/aus beschreiben. Durch ein gutes Logging und Monitoring kündigen sich manche Fehler frühzeitig an und können vor Eintritt verhindert werden.

Auf lange Sicht zahlen sich Investitionen in guten Code und das Monitoring aller involvierten Systeme definitiv aus!

Qualität durch passende Architektur und Technologien

Microservices und Container sind in aller Munde und in der heutigen Zeit, in der es auf Flexibilität und Geschwindigkeit ankommt, oft eine gute Wahl. Sie haben aber auch ihren “Preis” in Form von hohem Administrationsaufwand und hohen Anforderungen im Security-Management, was wiederum hohe Anforderungen an das Skill-Set und die Erfahrung der Softwareentwickler stellt. Nur wenn das Entwicklungsteam die eingesetzten Technologien beherrscht und sie den allgemeinen Anforderungen aus dem Business entsprechen, ist die Voraussetzung für gute Qualität gegeben.

Qualität durch Automatisierung

Sich wiederholende und funktionierende Prozesse zu automatisieren erhöht die Qualität des Ergebnisses ungemein. Wenn ein Prozess automatisiert ist, ist er in der Regel schneller, er ist dokumentiert und er wird exakt ausgeführt. In der Softwareentwicklung eröffnen passenden Technologien und Tools eine Menge Möglichkeiten, Entwicklungsprozesse zu automatisieren. Angefangen beim automatisierten Aufsetzen und Konfigurieren von virtuellen Betriebssystemen, Netzen, Datenbanken und Serverplattformen bis hin zu Continuous Integration und -Delivery inklusive automatisierter Tests. Im Idealfall muss sich der Softwareentwickler “nur” noch überlegen, wie er die Anforderungen in guten Code umsetzt und diesen schreiben. Alles andere ist automatisiert.

Qualität durch Erfahrung und Ausprobieren

Wir entwickeln seit 2002 Software für Kunden. Seit dem haben wir viel ausprobiert und vieles falsch gemacht, aber auch viel gelernt. Wir versuchen möglichst schnell Dinge auszuprobieren und damit Erfahrung zu sammeln, egal, ob es um neue Technologien oder Methoden geht. So sind wir am Puls der Zeit und können mit gutem Gewissen entscheiden, ob wir das Neue jetzt schon einsetzen oder ihm lieber noch etwas Zeit zum Reifen geben.