Dienstleistungen

Allgemein

Die Wartung von Software kann besonders bei größeren, komplexen Systemen eine sehr fordernde Tätigkeit sein. Deshalb sollte in Abhängigkeit von Größe und Komplexität der passende Wartungsprozess gewählt werden. Bei sehr kleinen Softwaresystemen empfiehlt sich eine pragmatische Vorgehensweise.

Bei Altsystemen ("Legacy Systems"), die in produktivem Einsatz sind, ist besondere Vorsicht geboten, da sie meist nur unter Einhaltung von Abwärtskompatibilität gewartet und weiterentwickelt werden können. Auch die verwendeten Werkzeuge (Betriebssystem, IDE, Compiler, ...) können genauso wie der Code selbst schon in die Jahre gekommen sein.

Ich bin spezialisiert auf die Entwicklung und Wartung von C++-Systemen, helfe Ihnen aber auch gerne bei anderen Technologien weiter!


Allgemeine Analyse Ihres Softwaresystems

Um ein Softwaresystem warten zu können, muss es zunächst verstanden werden. Die Analyse eines Softwaresystems ist nicht nur die Grundlage für eine seriöse Aufwandsabschätzung sondern vor Allem auch für die optimale Entscheidungsfindung.

Strategieentwicklung für die Zukunftssicherheit Ihrer Software

Damit die Evolution Ihrer Software nicht in einer Sackgasse landet und Sie ihr volles Potential nutzen können, empfiehlt es sich, eine entsprechende Strategie zu entwickeln um für zukünftige Entwicklungen gewappnet zu sein.

Anforderungsanalyse

Die Erstellung einer professionellen Anforderungsspezifikation (Lastenheft) ist die Grundlage für den Erfolg Ihrer Neuentwicklung. Eine gute Anforderungsanalyse spart Kosten nicht nur bei der Entwicklung sondern über den gesamten Lebenszyklus der Software.

Neuentwicklung

Wenn Sie Unterstützung bei einer Neuentwicklung brauchen oder diese ganz vergeben möchten, stehe ich gerne mit meiner Erfahrung zur Verfügung.

Korrektive Softwarewartung

Es gibt in der Praxis keine fehlerfreien Softwaresysteme. Gut versteckte Bugs können durch kleinste Veränderungen am Code selbst oder an der Laufzeitumgebung zu Tage gefördert werden. Ein klassisches Beispiel sind sogenannte Race Conditions, bei denen die korrekte Ausführung eines Algorithmus vom tatsächlichen Timing abhängt. Solche Fehler können zum Beispiel durch einen Hardwarewechsel schwerwiegende Beeinträchtigungen hervorrufen oder das System sogar unbenutzbar machen. Im Zuge einer korrektiven Softwarewartung können solche Probleme behoben werden. Idealerweise würde man solche Fehler aber präventiv vor einem Hardwarewechsel identifizieren und eliminieren (was in der Praxis unter Umständen nicht immer möglich ist).


Problemanalyse

Softwarefehler welche in produktivem Umfeld auftreten sollten zunächst analysiert und idealerweise unter Laborbedingungen nachgestellt werden. Abhängig von der Beschaffenheit des Bugs kann das Finden der Ursache sehr aufwändig sein. Bei leicht reproduzierbaren Fehlern lässt sich in der Regel auch die Ursache sehr schnell finden.

Problembehebung

Basierend auf einer ordentlichen Problemanalyse mit bekannter Ursache ist die Behebung des Fehlers üblicherweise keine große Herausforderung mehr. Es ist sinnvoll, vor etwaigen Änderungen automatisierte Tests zu erstellen, welche den Fehler abdecken. Sind noch keine Tests vorhanden, ist es von Vorteil, wenn auch noch Tests für das gesamte betroffene Modul geschrieben werden, um Regressionsfehler aufgrund eines Bugfixes zu vermeiden.

Adaptive Softwarewartung

Sich verändernde Bedingungen für den Betrieb bestehender Software sind keine Seltenheit. Ich übernehme gerne die Entwicklung neuer Schnittstellen oder die Migration auf eine andere Laufzeitumgebung (z.B. anderes Betriebssystem, Wechsel auf 64-bit).


Entwicklung neuer Schnittstellen

Ändern sich extern angebundene Dienste, kann es erforderlich sein, die entsprechende Schnittstelle anzupassen oder eine neue Schnittstelle zu implementieren.

Migration

Ist ein Wechsel des Betriebssystems geplant oder erforderlich, sind unter Umständen Anpassungen am Code, der Build-Umgebung oder dem Deploy-Prozess erforderlich.

Perfektionierende Softwarewartung

Alle Änderungen, die über die bestehende Funktionalität hinausgehen, sind ebenfalls Teil meines Leistungsumfanges. Hierzu zählen zum Beispiel Erweiterungen der Funktionalität oder Performanceoptimierungen. In Hinblick auf die Zukunftssicherheit einer Software kann bei fehlender oder unzureichender Dokumentation auch die nachträgliche Erarbeitung sinnvoll sein.


Erweiterung Ihrer Software

Bei der Erweiterung von Legacy Systemen ist besonders darauf zu achten, Regressionsfehler zu vermeiden. Wie bei anderen Wartungsaspekten auch, ist gegebenenfalls ein vorheriges Refactoring empfehlenswert.

Leistungsoptimierung

Im Zuge einer Leistungsoptimierung verbessere ich gerne die Performance Ihrer Software nach zuvor definierten Parametern.

Dokumentation

Ein gut dokumentiertes Softwaresystem lässt sich effizienter warten. Ist keine Dokumentation vorhanden, lässt sich diese auch nachträglich erarbeiten.


Haben Sie noch Fragen?

Ich freue mich auf Ihre Anfrage und beantworte gerne Ihre Fragen!

Jetzt eine Anfrage schicken