Softwarequalität: Kriterien „guter“ Softwareprodukte und die Rolle von Clean Code
Auf welche Softwarequalitätsmerkmale es aus technischer & wirtschaftlicher Sicht ankommt und wie Clean Code Development dabei helfen kann, diese zu erreichen
Standardsoftware vs. Individualsoftware: Hat sich ein Unternehmen dafür entschieden, Geschäftsprozesse zu digitalisieren, stellt sich schnell die Frage, mit welcher Softwarelösung man dieses Vorhaben idealerweise abbildet. Braucht es wirklich die (vermeintlich) teure und langwierige Eigenentwicklung? Viele Interessenten aber auch unserer Kunden fragen uns häufig: „Gibt es denn solch eine Software nicht schon von der Stange?“ Unsere Antwort lautet dann meisten: „Jein.“ Oder „Es kommt darauf an.“ Worauf es ankommt und für was eher Standard- und eher Individualsoftware geeignet ist? Diese Fragen zu beantworten, ist Ziel dieses Artikels.
Bevor wir Standardsoftware vs. Individualsoftware antreten lassen und uns damit auseinandersetzen, für welche Zwecke, welcher Softwaretypus eher geeignet ist, sollten wir die beiden Begrifflichkeiten kurz definieren. Analogien gibt es hierbei gewiss wie Sand am Meer. Wir bedienen uns in diesem Artikel dem „Häuslebauer“ Vergleich – oder anders ausgedrückt: Fertighaus vs. Architektenhaus.
Der Begriff Standardsoftware ist sehr allumfassend und schließt von einfachen Tabellenkalkulationsprogrammen wie MS Excel bis zu mächtigen ERP-Tools von SAP oder Oracle alles mit ein. Wir betrachten im Zuge dieses Artikels vor allen Dingen den B2B-Bereich und damit die sogenannte Branchensoftware. Hierunter versteht man Softwarelösungen, die explizit für spezifische Branchen (Maschinenbau, Automotive, Bausektor, Handel, etc.) entwickelt wurden. Was all die Kategorien und Unterkategorien eint, ist die Tatsache, dass es sich um standardisierte Massenprodukte handelt. Ähnlich dem Fertighaus decken die Lösungen also die Wünsche und Anforderungen einer breiten Masse ab. Ein gewisser Grad an Customizing ist zwar möglich (so wie verschiedene Schnitte und Anbauelemente für ein Fertighaus ausgewählt werden können, können auch einzelne Softwarebausteine zu- oder abbestellt werden), die Module an sich sind jedoch ebenfalls standardisiert. Damit Standardsoftware mit anderen Systemen kommunizieren und in die bestehende IT-Landschaft eingebettet werden kann, sind Schnittstellen zu eben diesen Systemen notwendig. Vergleichbar wären hier Adapter für die unterschiedlichen Anschlüsse bei einem Fertighaus – speziell, wenn es außerhalb der EU gefertigt wird. Diese Schnittstellen können bereits standardmäßig im Leistungsspektrum enthalten sein oder müssen für einen Aufpreis gekauft oder neu entwickelt werden.
Individualsoftware hingegen wird – wie der Name schon sagt – individuell für einen bestimmten Zweck und ein bestimmtes Unternehmen konzipiert und entwickelt. Da die Software von Grund auf neu entworfen wird, dauert das in der Regel natürlich erheblich länger, als der Griff zur standardisierten Branchensoftware. Genau wie beim Hausbau: Zunächst muss der Bauherr seine Wünsche und Anforderungen kundtun. Dann macht der Architekt Entwürfe und bespricht diese mit dem Auftraggeber, dem Bauunternehmer und dem Statiker. Nach einigem Hin und Her steht schließlich ein von allen Seiten abgenickter Bauplan, der dann Stein für Stein und Ziegel für Ziegel umgesetzt werden kann. All diese Schritte sind beim Fertighaus nicht nötig – genauso wenig wie bei der Standardsoftware. Und all diese Schritte bergen Risiken, etwas zu übersehen, zu vergessen oder schlichtweg falsch zu planen. Risiken, die zwar immer bestehen, jedoch durch eine strukturierte Vorgehensweise minimiert werden können. Hält man sich an Best Practices, geht alles gut und nimmt man die Mehrzeit in Kauf, wird man allerdings mit exakt dem Haus belohnt, das man sich schon immer erträumt hat. Ober eben mit dem Softwareprodukt, das genau die unternehmensspezifischen Prozesse abbildet, die es abbilden soll. Und das genau für die Anwenderinnen und Anwender geschrieben wurde, die es später auch nutzen. Da die Software eigens entwickelt wird, kann sie von Grund auf so geplant werden, dass sie sich perfekt in die IT-Landschaft des Unternehmens integrieren lässt. Schnittstellen sind dann lediglich zu ergänzenden Systemen notwendig.
Nachdem nun geklärt ist, was unter den beiden Softwaretypen verstanden wird, stellen wir sie nun einander gegenüber: Standardsoftware vs. Individualsoftware. Dabei betrachten wir folgende Kriterien: Verfügbarkeit, Einführung, Schnittstellen, Anpassungen und Weiterentwicklungen, Schulungen, Updates und Releases, Kosten, Bilanzierung, Nutzungs- und Eigentumsrechte und Abhängigkeiten.
Wie im vorigen Kapitel bereits ersichtlich wurde, ist Standardsoftware sehr viel schneller verfügbar als Individualsoftware. Bei eher geringer Komplexität sind die Systeme via Download meist sofort einsatzbereit (bspw. MS Excel). Bei komplexeren Lösungen, die zuvor konfiguriert und an unterschiedliche Systeme angebunden werden müssen, ist eine längerdauernde Implementierung durch den Anbieter oder spezielle Dienstleister nötig (bspw. ERP-Systeme). Inkludiert man Auswahl und Evaluierung, kann man bei komplexen Systemen von unter einem bis zu mehreren Monaten ausgehen, bis die Standardsoftware verfügbar ist.
Auch bei Individualsoftware kommt es auf die Komplexität an. Je nachdem wie viele Anforderungen abgedeckt werden sollen, muss hier jedoch mit Entwicklungszeiten von mehreren Monaten bis zu mehreren Jahren gerechnet werden. Es lohnt sich jedoch speziell in die konzeptionelle und organisatorische Vorarbeit viel Zeit zu investieren, da diese erheblich Auswirkung auf die gesamte Entwicklungszeit hat.
Auch hier ist es wieder eine Frage der Komplexität. Einfache Softwarelösungen können mit wenig Schulungsaufwand implementiert werden. Ist die Lösung weit verbreitet, gibt es außerdem gute Dokumentationen sowie Tutorials im Netz. Anders sieht es jedoch aus, will man mit Standardsoftware sehr komplexe und gleichzeitig unternehmenseigene Prozesse abbilden. Da Standardsoftware nicht exklusiv für die Geschäftsprozesse entwickelt wurde, die sie abbilden soll, müssen dann meistens die Prozesse an sich angepasst werden. Je nachdem wie eingreifend diese Anpassungen sind, geht die Implementierung nicht ohne Change-Management sowie ausgiebigen Schulungen einher. Solch Änderungen und Workarounds wirken sich auch auf die Usability der Standardsoftware aus – sie wird weniger intuitiv nutzbar. Das bedeutet, dass auch die Bedienung der Software einen erhöhten initialen Schulungsaufwand erfordert. Je nachdem kann eine Einführung dann einen längeren Zeitrahmen in Anspruch nehmen, bis sich alle Prozesse wieder eingependelt haben und die gewünschten Effizienzsteigerungen spürbar werden.
Individualsoftware hingegen wird exakt für die Prozesse konzipiert und entwickelt, die sie abbilden soll. Auf Prozesseben ist demnach kein zusätzlicher Schulungsaufwand nötig – es sei denn durch die Software wird ein komplett neuer Geschäftsbereich erschlossen. Da die Rolle des Anwenders heutzutage immer wichtiger wird, gewinnt das UX-Design auch in Enterprise Lösungen immer stärker an Gewicht. Der große Vorteil: die Usability kann, verglichen mit Standardlösungen, mittels Usability-Testing-Verfahren auf eine sehr viel enger zugeschnittenen Zielgruppe optimiert werden. Das macht die Individualsoftware nicht nur intuitiver nutzbar, sondern schmälert auch den folgenden Schulungsaufwand maßgeblich. Damit ist die Einführung sehr unkompliziert und erfordert wenig bis gar keinen Zusatzaufwand. Die gewünschten Effizienzsteigerungen stellen sich unmittelbar ein.
Wie in der Definition bereits beschrieben, benötigt standardisierte Branchensoftware meistens spezielle Schnittstellen, um in die IT-Landschaft eines Unternehmens implementiert werden zu können. Je nachdem wie gängig die unternehmenseigenen Systeme sind, sind diese Schnittstellen entweder im Leistungsumfang der Standardsoftware inkludiert oder können zugebucht werden. Bei exotischeren oder in sich bereits sehr heterogenen Systemen müssen Schnittstellen erst eigens entwickelt werden.
Einer der großen Vorteile von Individualsoftware ist, dass die Architektur der Lösung an die jeweilige IT-Landschaft des Auftraggebers angepasst wird. Auch hier eignet sich der Blick auf die Hausbau-Analogie: Ein Fertighaus kann nur in gewissen Grenzen auf das Grundstück angepasst werden, auf dem es gebaut wird. Das Architektenhaus hingegen wird perfekt auf die Größe und Erschließung des Grundstücks zugeschnitten.
Hier kommt es bei Standardsoftware auf das Modell des Anbieters, eventuelle weitere Dienstleister sowie natürlich auf die eigentlichen Wünsche des Unternehmens an. Manch Standardsoftware-Anbieter stellt beispielsweise einen Pool zu Verfügung, über welchen die Softwarenutzer ihre Wünsche nach neuen Features formulieren können. Gibt es in solch einem User-Voice-Pool genügend Stimmen für das ein oder andere Feature, wird es entwickelt und im nächsten Release, neben allgemeinen Updates und Bug-Fixes, zur Verfügung gestellt. Je mehr Customizing möglich ist oder falls es noch einen Customizing-Dienstleister zwischen Anbieter und Unternehmen gibt, desto individueller können Anpassungen sein. Allerdings muss man sich meistens auf lange Wartezeiten einstellen. Sei es wegen fester Release-Zyklen oder da Änderungen in den sehr viel umfangreicheren, meist historisch gewachsenen Quellcodes von Standardsystemen einfach mehr Zeit in Anspruch nehmen.
Individualsoftware ist hier sehr viel flexibler. Zum einen, da es eben nur den einen Kunden gibt, der neue Anforderungen formuliert sowie Updates und Releases dimensioniert und terminiert. Zum anderen, da der Quellcode an sich bereits sehr viel schlanker oder, besser gesagt, spezifischer auf das jeweilige Unternehmen zugeschnitten ist. Je sauberer, testbarer und modularer der Quellcode dabei aufgebaut ist, desto einfacher können neue Features oder Änderungen realisiert und mit dem nächsten Release eingespielt werden. Speziell hier greifen die Vorteile des Clean Code Development, die eben auf diese Qualitätsmerkmale einzahlen.
Auf den ersten Blick ist Standardsoftware meist die günstigere Alternative, vergleicht man sie mit Individualsoftware. Jedoch gilt auch hier: Es kommt darauf an. Neben möglichen Extrakosten für Implementierung, Anpassungen oder kundenspezifische Releases – die wie schon aufgeführt, stark vom Komplexitätsgrad abhängig sind –, muss hierbei vor allem auf die Lizenzkosten geachtet werden. Je mehr Mitarbeiter die Lösung nutzen, je mehr davon Adminrechte haben und je länger die Software in Betrieb sein wird, desto erheblicher fallen auch die Nutzungskosten aus.
Individualsoftware ist verglichen mit Standardsoftware oft als die sehr viel kostenintensivere Alternative verschrien. So pauschal und einfach ist es hierbei aber auch nicht. Natürlich spart man sich bei der Standardsoftware die einmalige und oft auch hohe Investition in die Entwicklung. Jedoch muss in diesem Zusammenhang auch die Product Lifetime betrachtet werden: Je langfristiger die Softwarelösung Einsatz findet, desto überschaubarer werden die Entwicklungskosten. Zusätzlich fallen die laufenden Kosten für Wartung, Support und ggf. Cloud-Hosting nach Roll-Out in den meisten Fällen sehr viel geringer aus als die Lizenzkosten der Standardlösung.
Letztendlich muss bei den Kosten der Einzelfall betrachtet und beide Alternativen gegengerechnet werden. Dabei müssen neben vielen weiteren Faktoren vor allen Dingen folgende Größen miteinbezogen werden: Entwicklungskosten und -dauer, Anzahl der Nutzer, Anzahl der Admins sowie die potenzielle Laufzeit der Lösung.
Eine Frage, die häufig weniger Betrachtung findet, ist die nach der Ergebniswirksamkeit bei Standardsoftware vs. Individualsoftware. Jedoch lohnt sich auch hier ein Blick, um die Vorurteile der beiden Typen zu relativieren.
Handelt es sich bei der Standardsoftwarenutzung um ein mietähnliches Vertragsmodell mit monatlichen Lizenzkosten, so sind diese als Aufwendungen voll ergebniswirksam. Sie mindern also den Jahresüberschuss, was sich negativ auf das Jahresergebnis auswirkt, jedoch positiv für die Besteuerung sein kann.
Kosten, die mit Individualsoftware einhergehen sind meist im Anlagevermögen aktivierungsfähig, wenn die Software: a) durch das Unternehmen selbst oder b) mit einem Entwicklungspartner über einen Dienstvertrag entwickelt wurde. In beiden Fällen sind sämtliche Kosten dann nicht ergebniswirksam und erhöhen das Jahresergebnis.
Je nachdem, welche Verträge abgeschlossen wurden, hat man bei Standardsoftware lediglich eingeschränkte Eigentums- und Nutzungsrechte. Nutzt ein Unternehmen die standardisierte Lösung nach Schema F, birgt dieser Sachverhalt kaum Gefahren oder Risiken. Je stärker die Standardsoftware jedoch durch Customizing individualisiert wurde, um interne Geschäftsprozesse abzubilden, desto heikler wird auch dieses Thema. Speziell wenn spezifische Geschäftsprozesse Wettbewerbsvorteile darstellen oder diese unterstützen. Denn dann besteht die Gefahr, dass der Standardsoftware-Anbieter die individualisierte Lösung kurzerhand als neue Branchenversion unter seinem eigenen Namen vertreibt – direkt in die Hände der Konkurrenz.
Individualsoftware hingegen gehört komplett dem auftraggebenden Unternehmen, das demnach auch uneingeschränkte Eigentums- und Nutzungsrechte an der Software hat. Möchte man also mit und durch die Softwarelösung Wettbewerbsvorteile realisieren, lohnt es sich Individualsoftware in Betracht zu ziehen.
Ob es sich um Anpassungen, Weiterentwicklungen, Release-Zyklen, Nutzungsrechte oder Kostenmodelle handelt: Bei Standardsoftware ist man als Unternehmen teilweise, meist jedoch voll abhängig vom Softwarehersteller. Wie sehr diese Abhängigkeiten ins Gewicht fallen, hängt wiederum davon ab, wie stark die Software in Abläufe und Prozesse eines Unternehmens involviert ist und diese mitbestimmt. Eine der größten Gefahren ist dabei ein End-Of-Life – die Standardsoftware wird vom Hersteller nicht mehr weiterentwickelt oder gar komplett eingestellt. Die Gründe dafür können unterschiedlicher Natur sein: der Hersteller möchte eine andere, neue Produktlinie in den Markt drängen, das Produkt wurde von einem Wettbewerber gekauft, die bisherige Lösung lässt sich nicht mehr ohne Weiteres weiterentwickeln oder das Unternehmen ist insolvent.
Bei Individualsoftware kommt es auf die Art und Weise der Entwicklung an, wie abhängig man als Kunde vom Softwarehersteller ist. Zwar gehört, je nach geschlossenem Vertrag, der Quellcode dem Auftraggeber, der diesen auch hausintern oder mit anderen Dienstleistern weiterentwickeln könnte. Jedoch hängt das sehr stark von der Güte des Codes ab. Denn ist der Quellcode – vorsätzlich oder fahrlässig – so kryptisch geschrieben, dass nur die Originalentwickler weiter damit arbeiten können, begibt man sich unwissentlich auch in eine Form von Abhängigkeit. Auch hier kann die Arbeit nach Clean Code Development Sicherheit bieten, da sie äußerst lesbaren und nachvollziehbaren Quellcode gewährleistet – auch für externe Entwickler.
Kosten und Zeitersparnisse rücken in den Hintergrund, sobald die Software den Kern der Geschäftstätigkeit abbildet und Wettbewerbsvorteile unterstützt – oder diese gar ausmacht.
Versuchen wir nun die Eingangs formulierte Frage zu beantworten: Wofür ist eher Individualsoftware und wofür eher Standardsoftware geeignet?
Grundsätzlich gilt: „Das Rad muss nicht ständig neu erfunden werden.“ Speziell branchenübergreifende Standardprozesse, wie Lohnbuchhaltung, CRM oder Warenwirtschaft können gut mit Standardsoftware abgebildet werden, da sie branchenunabhängig sehr ähnlich sind. Und wenn es doch komplexer und spezifischer werden soll, lohnt sich der Blick in das breite Angebot der Branchenlösungen. Schließlich wurden diese Systeme nicht einfach so ins Blaue entwickelt, sondern adressieren branchenspezifische Zielgruppen, Personas und Prozesse. Hat man eine Lösung gefunden, die alle oder zumindest einen großen Teil der Anforderungen abdeckt und deren Implementierungs- und Lizenzkosten im Budget sind, muss nicht von Grund auf neu entwickelt werden. Dann spart Standardsoftware Zeit, Ressourcen und ist am Ende die wirtschaftlich sinnvollere und nachhaltigere Alternative.
Kosten und Zeitersparnisse rücken jedoch in den Hintergrund, sobald die Software den Kern der Geschäftstätigkeit abbildet und Wettbewerbsvorteile unterstützt – oder diese gar ausmacht. Zu viele Prozessanpassungen, Workarounds sowie das Risiko Vorteile gegenüber der Konkurrenz zu verspielen, können Standardlösungen schnell ineffizient und sogar gefährlich machen. Über 20 Jahre Erfahrung in der Entwicklung individueller B2B-Software haben uns gezeigt, dass unsere Kunden dann zu Individualsoftware greifen, wenn es sich um äußerst komplexe Anwendungen handelt oder wenn sie dadurch erhebliche Wettbewerbsvorteile heben konnten. Ein gutes Beispiel, das beide Punkte abdeckt, sind die Digital Services der LEWA GmbH – eine IIoT-Plattform mit Smart Monitoring Lösung und Kundenportal für Industriepumpen.
Auf welche Softwarequalitätsmerkmale es aus technischer & wirtschaftlicher Sicht ankommt und wie Clean Code Development dabei helfen kann, diese zu erreichen
Agile Produktentwicklung: Scrum Masterin Sarah Schnur & Head of Product Owner Steven Kolbenschlag beantworten die wichtigsten Fragen.