Individuelle Software punktet mit Flexibilität und Anpassungsfähigkeit, und muss auch nicht teurer sein als ein Standard-Produkt.
Foto: Cronn

Software

Individuelle Software statt schlechter Standard

Gute Software kann Freude bereiten. Was das bedeutet, zeigt Cronn mit individuellen Lösungen, die gegenüber Standard-Produkten mehrere Vorteile bieten.

Individuelle Programmierung hat den Ruf, sehr teuer zu sein und ein Abhängigkeitsverhältnis zum Anbieter zu schaffen - daher ist "möglichst nah an den Standard" eine Leitlinie vieler Unternehmen, wenn es an die Auswahl von Software geht.
Doch wer genauer hinschaut, wird bemerken, dass Marktführer und Vorreiter auf individuelle Lösungen setzen, um sich einen Wettbewerbsvorteil zu verschaffen. Denn Individualsoftware punktet mit größtmöglicher Flexibilität und Anpassungsfähigkeit. Gut gemacht und handwerklich sauber, ist sie ein langlebiges Produkt, das leicht aktuell gehalten und perfekt auf die individuellen Bedürfnisse zugeschnitten werden kann.

Welche Qualität kann ein Standard-Produkt bieten?

Für Unternehmen ist die Qualität einer Standardlösung häufig kaum zu beurteilen. Es ist oft unklar, ob sie das Problem tatsächlich lösen kann, für das sie angeschafft wird. SAP zum Beispiel gilt als Standardtool – seine Einführung ist aber mit hohen Kosten verbunden, das Customizing ebenfalls aufwändig und teuer.

... und was kostet das?

Ganz allgemein sind Standards nicht dafür gemacht, komplexe Anpassungen zu verwalten. Schnell nimmt das Customizing auch einen größeren Umfang ein als ursprünglich angesetzt. Features, die eigentlich im Standardprodukt enthalten sein sollten, müssen dann ergänzt werden. Da es sich dabei nicht um eine Standardproduktentwicklung handelt, zahlt der Kunde natürlich für die Anpassungen.

Standardlösungen schaffen Abhängigkeiten

Aus dem Kauf von Standardprodukten resultiert in der Regel eine gewisse Abhängigkeit: Fachkräfte brauchen für die Anpassung ein spezielle Wissens, welches nur für dieses Standardprodukt benötigt wird und der Kunde ist deshalb häufig nicht in der Lage den Integrator zu wechseln, weil dieses nur beim Lieferanten vorhanden ist. Für die Weiterentwicklung und Anpassung wenig verbreiteter Standardsoftware Entwickler auf dem freien Markt zu finden, gestaltet sich gerade in Zeiten des Fachkräftemangels als schwierige Aufgabe.

Ein weitere Abhängigkeit entsteht durch benötigte Releases: Kunden müssen auf die Erfüllung ihrer Anforderungen warten, bis das nächste Update veröffentlicht wird – im Best Case. Denn in der Regel verfolgt der Anbieter eine andere Produktstrategie als der Kunde: ob seine Wünsche überhaupt umgesetzt werden, ist deswegen bei Weitem nicht sicher. Ist die Anpassung nötig, wird sie als individuelles Customizing abseits der Weiterentwicklungsstrategie wieder kostenpflichtig.

Veraltet und schlecht umgesetzt - dabei geht es auch anders

Hinzu kommt, dass gerade Standardlösungen für Nischenmärkte oft technologisch nicht mehr aktuell sind. Darunter leiden Sicherheit und User Experience gleichermaßen. Mitarbeiter und Unternehmen haben sich in vielen Fällen mit diversen Nachteilen ihrer Systeme abgefunden und daran gewöhnt, dass Standardsoftware manchmal umständlich zu bedienen ist und häufig eine schlechte User Experience bietet. Wer das aber akzeptiert, findet sich mit schlecht geschriebener und schlecht gemachter Software ab. Denn Software kann nicht nur einwandfrei funktionieren – sie kann sogar Freude bereiten: vor allem dann, wenn sie genau auf die Kundenbedürfnisse zugeschnitten, leicht erweiterbar und auf eine stete Anpassung ausgerichtet ist.

Individuelle Software muss gut gemacht sein

Häufig kommt individuelle Software aber erst dann zum Tragen, wenn es für das zu lösende Problem keine offensichtlichen, zu lizensierenden Standardprodukte gibt. Doch eine individuell programmierte Lösung kann auch dann eine gute Wahl sein, wenn es Standards als Alternativen gibt. Die Voraussetzung: Sie muss gut gemacht sein.

Gute Individualsoftware vereint gleich mehrere Eigenschaften: Damit der Code lesbar ist, kommen im Best Case allgemein anerkannte Methoden zum Einsatz, wie eine moderne, objektorientiere sowie plattformunabhängige Programmierung in der etablierten Sprache Java.

Clean Code macht es für alle einfacher

Auch der Clean Code Ansatz ist ein gängiges Verfahren, um die Verständlichkeit des Codes zu verbessern. Bezeichnungen im Code erhalten sprechende Namen statt individueller Variablen und der Code wird so aufgebaut, dass er gut lesbar ist. Durch regelmäßiges Refactoring wird eine aufgeräumte Struktur sichergestellt. Die daraus resultierende Verständlichkeit legt die Basis dafür, den Code fortlaufend bearbeiten und Fehler selbst beheben zu können – egal, ob die Lösung inhouse mit der eigenen IT oder von einem Dienstleister entwickelt wurde.

Qualitätmerkmal Open Source

Gute Individualsoftware nutzt Open Source. Heute ist das ein Merkmal für Qualität, da es aus einem breiten Wissenspool schöpfen kann. Der Ansatz, bevorzugt Open Source mit dem frei verfügbaren Quellcode zu verwenden, spart zum einen Lizenzkosten: Mit relationalen Datenbanken MySQL und MariaDB fallen keine Lizenzen an, wie etwa bei der proprietären Infrastruktur von Oracle – sie sind in 99 % der Fälle ausreichend. Zum anderen ist die Software auch in der Test- und Entwicklungsumgebung frei verfügbar. Man benötigt keine zentrale Testdatenbank. Für lizensierte Produkte werden dagegen auch dafür Kosten aufgerufen, nicht selten müssen sich mehrere Entwickler eine Lizenz teilen, was den Workflow erheblich stört.

Automatisierte Tests und Refactoring erhöhen Struktur und Qualität

Ein weiteres Charakteristikum guter Individualsoftware ist die Prüfung des Codes durch automatisierte Tests. So wird sichergestellt, dass bei Bug Fixes nicht durch die Lösung eines Problems an anderer Stelle ein neues erschaffen wird. Sowohl die Software als auch der Source Codes gewinnen dadurch erheblich an Qualität. Programmierfehler werden frühzeitig erkannt und im Ergebnis steht eine deutlich stabilere, besser strukturierte Software.

Eine Strukturverbesserung der Quelltexte sollte jederzeit problemlos möglich sein. Automatisierte Tests machen ein solches automatisches Refactoring im Sinne des Clean Codes möglich. Traditionell kann das Refactoring Probleme bereiten, da der Code zwar mit dem Ziel angepasst wird, ihn besser les- und wartbar zu machen, seine Funktionalität aber nicht verändert werden darf. Bei derartigen Änderungen können sich leicht Fehler einschleichen. Werden sie dagegen automatisiert und durch ebenfalls automatisierte Tests überprüft, wird garantiert, dass die Funktionalität gegeben ist und sich keine Fehlfunktionen eingeschlichen haben. Über das Refactoring kann außerdem sichergestellt werden, dass die Software zeitgemäß bleibt – in der Folge altert sie nicht so schnell.

Foto: Cronn
Durch die Automatisierung von Tests können Fehler bereits während der Entwicklung erkannt und behoben werden. Gepaart mit einer geschickten Auswahl der Testebene je Testfall werden teure manuelle Tests auf ein Minimum reduziert und eine erhebliche Zeit- und Kostenersparnis erreicht.

Nicht alles lässt sich automatisiert testen

Gut designte Software ist immer gut testbar – wird sie aber nicht bereits mit automatisierten Tests entwickelt, sind diese im Nachhinein nur sehr schwer zu realisieren. Gerade über viele Jahre gewachsene Standardsoftware lässt sich oft nicht gut automatisiert testen. Und auch wenn sie selbst mit Tests entwickelt wurde, kann das individuelle Customizing meist nicht mehr über Tests abgedeckt werden. Dabei muss das Schreiben von Software mit Tests nicht zwangsläufig teurer sein als die ohne – allerdings brauchen die Entwickler Erfahrung und Routine, da sie zunächst zusätzlich zum Code die Tests mitentwickeln.

Keine Angst vor Change Requests

Change Requests, das Ändern der ursprünglichen Spezifikation, ist häufig ein negativ belegtes Thema, da es oft mit hohen Kosten für den Kunden einhergehen kann. Doch gerade die Anpassbarkeit einer Lösung ist zentral für das Bestehen am Markt: Branchengrößen wie zum Beispiel Google, Amazon oder Facebook müssen ihre Softwareprodukte schnell adaptieren, Features verändern oder aufrüsten können, v.a. wenn die Konkurrenz neue bessere Features bietet. Gleichzeitig muss sichergestellt werden, dass diese Anpassungen vorgenommen werden, ohne das Gesamtsystem instabil zu machen.

Automatisierte Tests stellen diese Veränderbarkeit und Flexibilität der Software sicher: Sie erlauben, Change Requests, also veränderte Funktionalitäten, so schnell und unkompliziert behandeln zu können, wie das normalerweise bei kleineren Bug Fixes der Fall ist. Bei dieser Art des Programmieransatzes lassen sich grundsätzlich Folgekosten oder Störungen in der Produktion minimieren.

Durchgängige Lösung statt Flickenteppich

Egal, ob Software von der Stange oder individuelle Lösung: Beide müssen an die bestehende Umgebung angebunden und integriert werden, um Insellösungen zu verhindern. Individualsoftware bringt hier den Vorteil, dass die Gesamtlösung von vorneherein Schnittstellen einplant und Teile besser aufeinander abgestimmt werden können. Gute Individualsoftware schafft auch dann keine Insellösungen, wenn kein Gesamtsystem aufgesetzt wird, sondern nur für einzelne Bereiche und Anforderungen Lösungen entworfen werden: In einer übergeordneten Konzeption kann geregelt werden, dass das Zusammenspiel funktioniert.

Amazon und Rewe setzen auf Individualsoftware

Individualsoftware kann nicht zuletzt ein entscheidender Faktor sein, um sich vom Wettbewerb zu differenzieren. Ein gutes Beispiel hierfür sind Amazon oder Rewe: beide setzen kein Standardprodukt für ihren Online-Shop ein, sondern haben diesen selbst entwickelt. Die Individualentwicklung ist hier der bessere Weg, weil der Wettbewerb nicht die gleichen Lösungen kaufen kann.

Fazit: Nicht unbedingt teurer, aber besser!

Individualsoftware muss weder teurer als Standardprodukte sein, noch ein Abhängigkeitsverhältnis schaffen. Richtig gemacht, kann sie nicht nur individuell auf Kundenbedürfnisse zugeschnitten werden, sondern ist auch leicht erweiterbar und auf stete Anpassung ausgerichtet. Dank automatisierter Tests läuft sie stabil und schafft dem Unternehmen einen Wettbewerbsvorteil, weil businesskritische Teile sich vom Wettbewerb abheben. Software muss also nicht nur fehlerfrei sein: Sie kann Anwendern und Technikern gleichermaßen Freude bereiten.

Jobst Eßmeyer, Software-Entwickler und Geschäftsführer der Cronn GmbH