Was ist Bananen-Software?

Bananen-Software – ein ungenießbares Früchtchen

Was ist eigentlich Bananen-Software?

Bananen-Software oder auch Bananaware bezeichnet in der Softwareentwicklung eine Lösung, die anstatt mit Qualität vor allem durch unausgereifte Funktionen auffällt und Ihre Leute ganz schön auf Trapp halten kann – was nicht immer lustig ist. Die Metapher mit der Banane liegt auf der Hand: Geerntet wird grün (unreif), denn gelb und reif wird die Banane von alleine im Handel oder beim Kunden in der heimischen Obstschale. Neben Bananen-Software haben sich auch Begriffe wie „Continuous beta“ oder „Perpetual beta“ (etwa dauerhafte Vorab-Version) durchgesetzt. Neben mangelndem Qualitätsbewusstsein und Kostendruck seitens des Kunden, gibt es durchaus Softwareentwicklungs-Strategien, die ganz bewusst auf diesem Konzept beruhen.  

Um nicht bei Ihrem eigenen individuellen Softwareentwicklungs-Projekt das grüne Wunder zu erleben, knöpfen wir uns Bananen-Software mal ganz genau vor: 

  • Warum wird Bananen-Software entwickelt und wie wird Sie erkannt?
  • Welche Strategien der Softwareentwicklung rechtfertigen Bananen-Software?
  • Wann sollte ich Bananen-Software vermeiden und was hilft dagegen?

Bananen-Software (k)ein Problem?

Digitale Fehler, realer Schaden – ein Beispiel aus der Automobil-Branche

Wussten Sie, dass 2020 etwa 30 Millionen Fahrzeuge zurückgerufen wurden und etwa sieben Prozent davon aufgrund von Software-Fehlern? Mein Gott, das kann doch mal passieren, denken Sie sich vielleicht. Mitte 2021 waren es schon über 18 Millionen und raten Sie mal, was die Top Ursachen waren: 

  • Insassenschutz, mehr als die Hälfte
  • Elektrik/Elektronik, etwa 18%
  • Mangelhafte Software, etwa 15%
  • Fahrwerk, 8%
  • Bremsanlagen, 6%

Probleme in der Softwareentwicklung haben also extrem zugenommen und machen zum anderen einen nicht zu unterschätzenden Anteil an sicherheitsrelevanten Reklamationen aus. Haupttreiber ist vor allem der schärfer werdende Konkurrenzdruck und immer kürzere Entwicklungszeit. Die Ära als man noch stolz auf die Unverwüstbarkeit von Trabbi und Käfer war, ist vorbei. Heute gilt „Geiz ist geil“ – auch wenn der ein oder andere Wir-hassen-teuer-Beschwörer aufgrund des eigenen drohenden Untergangs sich mit solchen markigen Sprüchen nun etwas zurückhält. 

Wie konnte es nur so weit kommen? Die Gründe liegen häufig in einem zunehmend mangelnden Qualitäts-Bewusstsein. Denn die meisten Softwareentwickler lieben ihren Job und würden am liebsten den ganzen Tag an ihrer Software feilen, gäbe es da nicht den wirtschaftlichen Druck. 

Wie funktioniert das Bananenprinzip

Warum gibt es eigentlich Bananen-Software? Ist Qualität nicht mehr wichtig?

Was für die Autoindustrie im Großen gilt, gilt auch für die individuelle Softwareentwicklung im Kleinen. Folgendes fiktives Szenario: Sie wollen eine Webanwendung entwickeln und vergleichen zwei IT-Dienstleister. Der eine bietet Ihnen die Stunde Softwareentwicklung für 150 Euro an, der andere für 75 Euro. Für wen entscheiden Sie sich? Glauben Sie mir: Egal was Sie für die 150 Euro auch kriegen, ob Rechte am Quellcode, ob zusätzliche Software-Tests, ob Beratungsstunden, egal ob Ihre Leute Doktor-Titel haben oder weltbekannte Programmier-Gurus sind, Sie werden sich häufig für die 75-Euro-Billig-Bude entscheiden. Denn mit den ganzen Nerd-Schmakazien, die Ihnen geboten werden, können Sie fachlich eh nichts anfangen. Seien Sie mal ehrlich.  

Aber wie machen die anderen das bloß mit den 75 Euro? Nun, da gibt es einen ganzen Sack von Taschenspielertricks, den Sie als IT-Dienstleister für Softwareentwicklung nutzen können: 

  • Trick 1: Der Quellcode ist laut Gesetz Ihrer, ist Ihre Software-Lösung erstmal etabliert und soll von einem anderen migriert oder weiterentwickelt werden, können Sie richtig absahnen
  • Trick 2: Wozu sich unnötig lange mit einer Zeile Code beschäftigen: Klick, Klick, läuft doch? Und der Fehler eben? Wird schon nicht wieder vorkommen!
  • Trick 3: Bananen-Software – lagern Sie einfach einen Teil des Entwicklungsprozesses auf den Kunden aus. Der wollte doch Billigsoftware! Gilt als stillschweigende Zustimmung!

Das Ergebnis: Sie können schnell und billig liefern. Die Testung der Software übernimmt der Kunde – quasi als unfreiwilliges Versuchskaninchen in Ihrem Softwareentwicklungsprojekt. Oder sollte ich besser sagen „Softwareentwicklungs-Experiment“? 

Perpetual betaBananen-Software mit System

Wenn Softwareentwicklung ein bisschen Banane sein darf

Probieren geht über Studieren oder wie der alte Murphy vermeidlich sagte: „Kein Schlachtplan überlebt den Feindkontakt“. Software muss halt an die frische Luft, denn viele Probleme tauchen erst im produktiven Betrieb auf.
Der alte Open Source Haudegen Tim O’Reilly sagte mal:
„Users must be treated as co-developers, in a reflection of open source development practices (even if the software in question is unlikely to be released under an open source license.) The open source dictum, ‚release early and release often‘, in fact has morphed into an even more radical position, ‚the perpetual beta‘, in which the product is developed in the open, with new features slipstreamed in on a monthly, weekly, or even daily basis. It’s no accident that services such as Gmail, Google Maps, Flickr, del.icio.us, and the like may be expected to bear a ‚Beta‘ logo for years at a time.“

Sie haben ganz richtig gehört: Sie bekommen schnell und regelmäßig Ihre Updates und werden dafür zum Co-Entwickler befördert. Was für eine Ehre. Aber keine Sorge, damit ist sicherlich nicht gemeint, dass Software gänzlich ungetestet auf den Markt kommt. Vielmehr geht es darum, möglichst eng mit dem Kunden zusammenzuarbeiten, da vieles einfach nicht im stillen Keller durch Softwareentwicklungs-Werkzeuge real getestet werden kann. Durch den frühen Kontakt mit dem rauen Alltag des End-Nutzers sollen möglichst schnell Software-Fehler aufgedeckt und vor allem unnötige Funktionen vermieden werden.

Banane gut alles gut

Wie Sie in der Softwareentwicklung Bananen-Lösungen vermeiden

Da Sie jetzt wissen, was Bananen-Software ist, welchen Schaden sie anrichten kann und warum es manchmal hilfreich ist, ein bisschen Banane zu sein, stellt sich die Frage, wie man in der Softwareentwicklung vermeidet, ins verkehrte Früchtchen zu beißen. 

Richtige und ausreichende Software-Tests 

Überlegen Sie mit Ihrem Softwareentwickler, welche technischen und fachlich-inhaltlichen Tests für Ihre Lösung am wichtigsten sind. Nicht zu unterschätzen ist dabei die Entwicklung einer entsprechenden Testumgebung für verschiedene Szenarien: 

  • Testung von Hardware-Komponenten, z.B. PLCs, Sensoren, Motoren, etc.
  • Integration von Drittanbieter-Diensten, z.B. Cloud-APIs
  • Testung von Datenbanken-Operationen (Abfragen, Lesen, Schreiben, usw.)

Neben dem Aufbau einer möglichst realistischen Infrastruktur, gibt’s in der Softwareentwicklung eine Reihe an Möglichkeiten, um Programm-Routinen automatisiert immer und immer wieder ohne viel manuelles Heckmeck in typischen Anwendungsfällen auf Fehler zu überprüfen. Zu diesem Werkzeugkasten gehören: 

  • Unit Tests: Hier wird jede Software-Komponente einzeln getestet., frei nach dem Motto: Wenn jeder einzelne Bestandteil fehlerfrei funktioniert, ist die Wahrscheinlichkeit sehr groß, dass auch das Gesamtsystem läuft.
  • Integrationstests: Hier verlässt man die Froschperspektive und schaut sich auch das Zusammenspiel von zwei oder mehreren Software-Komponenten an. Ein typisches Beispiel ist die Daten-Beschaffung über eine URL via API. Eine Komponente stellt die API bereit, die andere nutzt diese, um Daten zu verarbeiten.
  • End-to-End-Tests (E2E): Hier wird aus Nutzersicht, ein kompletter Prozess getestet, z.B. eine Warenbestellung, oder aus Dienstleistersicht, dass wofür der Kunde eigentlich am Ende bezahlt. End-to-End bezieht sich dabei auf die Tatsache, dass A alle Programm-Teile von der Datenbank bis zum Frontend (Ende) und zurück und B ein kompletter Prozess, z.B. vom Start-Button bis zum Jetzt-Bestellen-Button (Ende) durchgespielt wird.

Solche Tests können Sie sich getrost als Software vorstellen, die Software testet. Schön automatisiert und nach Belieben in einer gebetsmühlenartigen Dauerschleife – zu Schade, dass das keine echten Kunden-Bestellungen sind. Das verursacht natürlich einen gewissen Aufwand. Als Belohnung vermeidet man aber peinliche Unannehmlichkeiten gegenüber Kunden, Lieferanten und Behörden. Oder wollen Sie Ihrem Zulieferer erklären, warum Ihre Software-Lösung auf eigene Faust 100 Chargen Premium-Material kauft, obwohl Sie nur 10 bestellen wollten. Tja! Eine kleine Null für die Software, eine große Null für Ihre Buchhaltung. 

Wer den Schritt der automatisierten Software-Tests nicht gehen will, kann natürlich auch händisch seine Software ausprobieren: 

  • Explorative Tests: Sie schauen sich Ihre Anwendung einfach an und überlegen, wie diese sich im Fehler- und im Idealfall verhalten muss. Mit explorativen Tests sollen Fehler und Grenzfälle aufgedeckt werden, die bis dato noch nicht bekannt waren. Diese Art von Tests ist für Mitarbeiter geeignet, die eine gewisse Terrier- und Wühler-Mentalität mitbringen – und vor allem nicht programmieren wollen.
  • Protokollbasierte Tests: Und täglich grüßt das Murmeltier – bei diesen Tests werden nach einem Protokoll, sequentiell verschiedene Anwendungsfälle überprüft. Verläuft ein Test positiv, machen Sie Ihren grünen Haken. Verläuft ein Test weniger positiv, klingelt beim Softwareentwickler das Telefon. 

Da manuelles Testen immer mit personellem Aufwand und damit auch mit dem einen oder anderen Euro verknüpft ist, sollten Sie sich mit Ihrem Softwareentwickler offen und transparent über die Aufgabenverteilung austauschen. 

Nicht auf der Banane ausrutschen – rechnen Sie nach 

Empirisch betrachtet, macht das liebe Testen etwa 20% der Gesamt-Projektzeit bzw. -Kosten aus. Bei komplexen Anwendungen, wie z.B. Micro Services (viele kleine Web-Dienste), kann der Anteil sich auch auf 30-50% erhöhen. Plant Ihr Dienstleister weniger ein, heißt das für Ihre Mitarbeiter mehr Arbeit und jede Menge Opportunitäts-Kosten. Denn monotone Klick-Marathons können ganz schön aufs Gemüt drücken und sind nicht jedermanns Sache – schließlich hat Ihr Ingenieur oder Ihre Buchhalterin besseres zu tun. Entsprechend sollten Sie hier nochmal mit Ihrem IT-Dienstleister für Softwareentwicklung nachschleifen bzw. nachrechnen, was die schwere Bürde eines Software-Tests-Sisyphos Ihnen kostentechnisch wert ist. 

Das Beste zum Schluss – Gehen Sie zum professionellen Dienstleister für Softwareentwicklung 

Sie sehen: Gut Ding will Weile haben. Wollen Sie sich nicht zum Affen machen und Bananen-Software vermeiden, muss im Voraus getestet werden. Ein professioneller Dienstleister für Softwareentwicklung, wie die PI Informatik, wird dieses Thema offen ansprechen und die hinsichtlich Ihrer personellen und finanziellen Ressourcen richtige Test-Strategie mit Ihnen entwickeln. Ob nun automatisiert mit Unit-, Integrations- oder gar End-to-End-Tests oder einfach durch wildes, aber schnelles und kostengünstiges Herumklicken bleibt Ihnen überlassen. Hierbei haben Sie als Kunde natürlich auch die freie Entscheidung, wer für welche Tests verantwortlich ist. Für den Fall, dass Sie sich unsicher sind, haben wir bei uns ein gemütliches Sofa, auf dem wir ganz offen darüber reden können. 

Fazit: Am Ende können Sie sich frei entscheiden, ob Sie sich bei ungetesteter Billig-Bananen-Software die Haare raufen oder einfach das Ergebnis professioneller Softwareentwicklung genießen wollen.

Noch nicht genug von Bananen-Software? – hier gibt’s mehr …

Alle Quellen zum Nachlesen

Wow, dieser Beitrag über Bananen-Software ist echt gut!

Weitere Beiträge aus diesem Bereich interessieren mich auch

Kein Problem. Einfach liken oder vernetzen. Wir teilen unser Wissen regelmäßig in folgenden Kanälen:

Sie haben Fragen oder Anregungen?

Kontaktieren Sie uns noch heute: