Individuelle Softwareentwicklung – Chancen und Perspektiven

 

Warum individuell entwickelte Software immer wichtiger wird

Die Betrachtung der Entwicklung neuer, erfolgreicher Geschäftsmodelle zeigt, dass Software heute ein zentraler Schlüsselfaktor für innovative und wettbewerbsfähige Unternehmen ist. Unabhängig davon, ob es sich um Handel, Fertigungsindustrie, Finanzdienstleister, Medien oder andere Branchen handelt, ist die Bedeutung softwaregestützter Prozesse unübersehbar. Studien und Umfragen untermauern diese Entwicklung, auf die im Verlauf des Textes genauer eingegangen wird.

Historische Entwicklung

In den frühen Phasen der IT-Nutzung konzentrierten sich Unternehmen auf die interne Datenhaltung. Typische Anwendungen waren Finanz- und Rechnungswesen, Gehaltsabrechnung, Materialwirtschaft, Angebotserstellung und Customer Relationship Management. Von den 1950er- bis in die 1990er-Jahre entwickelten große Unternehmen diese Systeme häufig intern. Doch ab den 1990er-Jahren setzte sich Standardsoftware zunehmend durch.

Je spezifischer jedoch ein Anwendungsbereich ist, desto weniger geeignet sind standardisierte Lösungen. Aus Kostengründen greifen Unternehmen oft dennoch darauf zurück, auch wenn diese nicht vollständig den Anforderungen entsprechen. Dies führt häufig zu ineffizienten Prozessen und behindert die Weiterentwicklung und Transformation.

Fortschritte in der Individualsoftwareentwicklung

Dank Open-Source-Komponenten und verbesserten Software-Engineering-Methoden ist die Entwicklung individueller Software heute wesentlich effizienter. Viele Arbeitsschritte sind automatisiert, die Methoden standardisiert, und leistungsfähige Entwicklungstools mit integrierter Künstlicher Intelligenz unterstützen die Entwickler.

Die Verbreitung breitbandiger Internetzugänge und mobiler Endgeräte hat Unternehmenssoftware auf eine neue Ebene gehoben. Konsumenten und Unternehmenskunden sind direkt an die Systeme der Unternehmen angebunden, wodurch Software eine entscheidende Rolle für die Wahrnehmung des Unternehmens spielt. Unternehmen nutzen Software heute nicht nur zur Optimierung interner Prozesse, sondern immer mehr auch zur Differenzierung über neue Services und eine optimale User Experience (UX).

Grenzen von Standardsoftware

Standardsoftware kann kaum als Unterscheidungsmerkmal dienen. Einzigartige Produkte oder Dienstleistungen lassen sich nur schwer über Standardlösungen überzeugend umsetzen. Stattdessen sind Benutzerfreundlichkeit, Funktionsumfang und Innovationen entscheidende Kriterien, die Konsumenten oder Unternehmenskunden überzeugen.

Ergebnisse aus der Praxis

Eine Studie von techconsult im Auftrag von Eckart & Partner (siehe: Eckart & Partner, techconsult Studie) zeigt die Relevanz individueller Softwareentwicklung:

  • 74 % der IT-Verantwortlichen sehen in Individualsoftware einen Schlüsselfaktor für den Unternehmenserfolg.

  • 77 % betrachten Individualsoftware als Instrument zur Erlangung von Wettbewerbsvorteilen.

  • 53 % entscheiden sich für individuelle Lösungen, weil Standardsoftware ihre Anforderungen nicht abdeckt.

  • 40 % sind bereit, höhere Kosten für die Qualität und Passgenauigkeit von Individualsoftware zu tragen.

  • 73 % schätzen die schnellere Umsetzung neuer Geschäftsideen durch individuelle Software als strategischen Vorteil ein.

Fazit

Individuelle Softwareentwicklung gewinnt in einer zunehmend digitalisierten Welt weiter an Bedeutung. Sie ermöglicht Unternehmen, sich von der Konkurrenz abzuheben, spezifische Anforderungen zu erfüllen und innovative Services schneller zu realisieren. Unternehmen, die auf individuelle Lösungen setzen, investieren nicht nur in ihre IT, sondern sichern langfristig ihre Wettbewerbsfähigkeit und Innovationskraft.

erfolg mit individualsoftware

Video Transkript:

Mein Name ist Michael Schaffler. Ich bin bei CIIT Software für die technische Leitung zuständig und arbeite an verschiedenen Softwareentwicklungsprojekten mit und gebe auch Schulungen für Softwareentwickler, also allgemein für IT-Profis. Ganz allgemein kann man im Prinzip drei verschiedene Kategorien von Software unterscheiden. Auf der einen Seite gibt es unveränderbare Softwareprodukte, die also gekauft werden können und dann entweder von Privatpersonen oder von Unternehmen genutzt werden können, ohne dass diese die Möglichkeit haben, diese Software an ihre Bedürfnisse anzupassen. Auf der anderen Seite gibt es Standardsoftware, die kundenspezifisch angepasst werden kann, d.h. im Prinzip bis zu einem gewissen Grad an die Bedürfnisse des Kunden angepasst werden kann. Und die dritte Ebene ist dann eben die Individualsoftware. Das ist also Software, die ganz speziell für Kunden entwickelt wird und die im Prinzip einer maßgeschneiderten Lösung für Kunden entspricht. Ja, da ist ein Anwendungsbereich drauf. Wenn man jetzt zum Beispiel eine Buchhaltungssoftware betrachtet, dann muss die Buchhaltungssoftware bestimmte gesetzliche Anforderungen erfüllen. Und es ist ganz klar, die Buchhaltung, die Software muss funktionieren, weil es einfach ganz klar definiert ist, welche Zahlen zum Beispiel in einer Bilanz oder in einer Steuererklärung auftauchen. Und die müssen eben eingehalten werden. Für so einen Anwendungsfall ist eben Standardsoftware optimal und es würde überhaupt keinen Sinn machen, Individualsoftware zu entwickeln, wenn die Anforderungen ganz klar sind. Auf der anderen Seite, im anderen Extrem haben Sie einfach Unternehmen, die einfach ein Geschäftsmodell haben, das einzigartig ist. Die haben also ein Unternehmen, also nehmen wir einen Kunden, zum Beispiel als Beispiel von uns gibt es die Firma bzw. Vinpilot, die macht Steuerungsanlagen für Weinkeller, die also den Gärprozess in Weintanks selbstständig steuern. Diese Software ist sehr individuell. Es gibt nur wenige Unternehmen auf der Welt, die eine solche Software brauchen. Und wenn es eben verschiedene Anbieter gibt, dann versuchen sie sich über die Software zu differenzieren, um eben ihren Kunden einen Zusatznutzen, eine Zusatzleistung, eine Zusatzfunktionalität zu bieten, die sie von ihren Mitbewerbern am Markt unterscheidet. Und das wäre eben das andere Extrem. Wir haben einen Anwendungsfall, der einzigartig ist, und darüber hinaus ist das Unternehmen darauf angewiesen, seine eigene Software so zu gestalten, dass es einen Wettbewerbsvorteil gegenüber der Konkurrenz hat. Und das ist die Domäne der Individualsoftwareentwicklung. Wenn man zurückblickt, ich sage mal in die 60er, 70er Jahre, da war fast jede Software Individualsoftware. Dann hat sich im Laufe der 80er, 90er Jahre in bestimmten Bereichen die standardisierte Software durchgesetzt, weil man eben immer wiederkehrende Anforderungen dann als Produkte angeboten hat. Und in der letzten Zeit ist eben die Entwicklung eingetreten, dass die Unternehmen immer mehr versuchen, sich über ihre Software oder über ihren elektronischen Auftritt zu differenzieren. Sie können heute, wenn sie zum Beispiel einen Amazon Marketplace machen, nicht einfach ein Webshopprogramm von der Stange nehmen, sondern sie wollen eben bestimmte Features, bestimmte Einstellungen, tolle Aktionen und so weiter über ihre Software abbilden können, damit sie eben auch auf dieser Seite für den Kunden einen Mehrwert gegenüber ihren Mitbewerbern darstellen. Und genau diese Unternehmen, die also über ihre Software versuchen, sich von der Konkurrenz zu differenzieren, das hat in den letzten Jahren massiv zugenommen und das ist der Grund, warum die Individualsoftware so unglaublich explodiert ist von ihren Anwendungsfällen, von dem Bedarf an Softwareentwicklern, weil eben die Unternehmen damit letztendlich ihre eigene Wettbewerbsfähigkeit am Markt verbessern können. Individualsoftware ist eine Anfangsinvestition, die natürlich nicht unerheblich ist, d.h. Software entwickeln zu lassen ist relativ teuer. Das ist letztendlich eine Ingenieurleistung. Aber der Vorteil von Individualsoftware ist, dass man, wenn man eben einen entsprechenden Vertrag mit seinem Softwarelieferanten hat oder die Software selbst entwickelt, dass man dann alle Rechte an dieser Software hat. Also zum Beispiel bieten wir unseren Kunden an, dass sie eben auch immer die Rechte an der Software für die Weiterentwicklung erwerben. Das heißt, diese Anfangsinvestition wird einmal getätigt und dann hat man die Software. Wenn Sie jetzt skalieren wollen, größenmäßig, um auf die Frage zurückzukommen, dann haben Sie eben keine zusätzlichen Kosten, sondern Sie müssen die Software eben nutzen können. Ohne jetzt in einem Unternehmen zusätzliche Lizenzen bezahlen zu müssen. Und das ist ein unglaublicher Vorteil gegenüber einer Software. Das wissen Sie. Oder wissen wir alle, dass die Hersteller bzw. Anbieter von Standardsoftware immer mehr versuchen, in ein Subskriptionsmodell einzusteigen? Das heißt, alle Softwareanbieter haben versucht, vom Lizenzkauf auf ein Abonnementangebot umzusteigen. Zum Teil gibt es Anbieter, bei denen man gar keine Lizenz mehr kaufen kann, sondern ein Abonnement abschließen muss. Nun, diese Abonnements sind in der Regel nutzerbasiert. Das heißt, pro Nutzer zahlen sie und dann eben pro Mast. Und so weiter. Das heißt also, die Subskriptionsmodelle haben den großen Nachteil, sobald sie skalieren wollen, haben sie einfach unglaublich viel höhere Kosten, um diese Software nutzen zu können. Das ist ein ganz wesentlicher Vorteil der Individualsoftware. Wenn Sie jetzt eine Individualsoftware entwickeln lassen und Sie haben die Rechte daran, dann können Sie natürlich jederzeit Ihre Individualsoftware anpassen und dann sehr schnell, es entstehen neue Marktsituationen, die es notwendig machen, schnell und innovativ oder überhaupt reagieren zu können. Sie wollen also ein neues Geschäftsmodell etablieren usw., dann können Sie das mit Ihrer Individualsoftware sehr einfach machen, indem Sie diese einfach erweitern. Wenn Sie jetzt auf eine Standardsoftware oder Custom meist der Standardsoftware setzen, dann sind Sie letztendlich auf die Bereitschaft des Anbieters angewiesen, diese Software in eine entsprechende Richtung weiterzuentwickeln. Und dann kann es sehr schnell passieren, dass der Anbieter die Software eben nicht in diese Richtung weiterentwickelt. Selbst wenn er es tut, haben alle Ihre Konkurrenten diese Funktionen ebenfalls implementiert. Das heißt, Sie können sich nicht differenzieren oder werden sogar in Ihrer Entwicklung behindert. Das heißt, sie können einfach bestimmte Features nicht implementieren und dann haben Sie natürlich die Wahl. Sie können dann sagen, ja gut, ich nehme einen anderen Anbieter. Aber wenn Sie den Anbieter der Standardsoftware haben und letztendlich wechseln wollen, dann haben Sie wieder gigantische Migrationsaufwände, die dann also vom Aufwand sehr schnell in den Größenbereich kommen, wo sie eigentlich schon selbst hätten entwickeln können. Und deshalb bietet gerade die Individualsoftware eine viel, viel größere Flexibilität, die alle Projektionen, Erweiterungen, Reaktionen auf den Markt, Anforderungen usw. ermöglicht. Ja, das ist in der Tat eine sehr gute Frage. Also die Individualsoftware hat eben auch den Vorteil, dass sie in jedes System integriert werden kann. Die Softwareindustrie ist heute so weit, dass sie letztendlich zu jeder guten Softwareanwendung eine maschinelle Schnittstelle anbietet, also nicht nur eine menschliche Schnittstelle anbietet, sondern eine maschinelle Schnittstelle, über die dann andere Systeme angebunden und integriert werden können. Und das kann man eben in der Individualsoftware sehr gut nutzen, indem man einfach die bestehenden Systeme des Unternehmens anbindet. Und das ist dann egal, ob das Standardsysteme sind oder hochkomplexe Systeme oder andere Individualsoftware-Systeme. Ich kann einfach alles integrieren. Dann gibt es natürlich spezielle, auch Integrationslösungen und so weiter. Aber grundsätzlich ist es ohne Probleme möglich, sowohl Schnittstellen anzubieten für andere Softwaresysteme, die sich anbinden wollen oder auf der anderen Seite eben auch andere Softwaresysteme aufzurufen. Auch hier haben wir die Flexibilität, jederzeit alles in die Software zu integrieren. Ja, bei der Automatisierung von Arbeitsprozessen muss man sagen, dass die Individualsoftware noch einmal einen ganz eigenen Wert hat. Warum? Wir haben eben. Oder man kann eben verschiedene Arten von Software unterscheiden. Das wäre einmal auf der einen Seite die Software, die ich eben brauche, in meiner Kundenbeziehung oder in meiner Außendarstellung. Das wäre das eine. Das wären dann eben Softwareprodukte oder Individualsoftware, die eben sozusagen die Kundenbeziehung oder die Leistungen, die ich dem Kunden bringe, verbessern können. Auf der anderen Seite hat natürlich jedes Unternehmen rein interne Prozesse. Und da muss man sagen, unterscheiden sich die Unternehmen genauso stark voneinander wie in ihrer Außendarstellung. Und wenn ich jetzt eine Standardsoftware in meinem Unternehmen einsetze, heißt das letztendlich immer, dass ich meine Prozesse, die ich habe, an diese Software anpassen muss. Das heißt, die Software zwingt mich in bestimmte Prozesse und das kann zu einem erheblichen oder zu einem erheblichen Effizienzverlust führen. Denn um optimal zu funktionieren, möchte ich meine Prozesse so gestalten können, wie ich es für notwendig halte. Oder wie es die Unternehmensleitung für notwendig erachtet. Und wenn ich eben Individualsoftware habe, dann kann ich die Software an die Prozesse anpassen und damit die Prozesse optimieren. Das heißt also, der Einsatz von Standardsoftware behindert oft die Optimierung der Prozesse, der internen Prozesse im eigenen Unternehmen. Die Dauer der Softwareentwicklung hängt natürlich stark von der Komplexität der Software ab. Und wir empfehlen unseren Kunden immer, mit einer möglichst einfachen, wenn es geht, irgendwie einfachen Variante der Software zu beginnen. Wir haben bei einfachen Softwaresystemen, die wir also möglichst schnell entwickeln wollen, eine Durchlaufzeit von, ich sage jetzt mal, wenigen Wochen, also 1 bis 2, 3 Monate vielleicht und dann ist die Software einsatzbereit. Also, wenn Sie heute nicht ein neues Sofa bestellen, das ein bisschen individualisiert ist, dann haben Sie wahrscheinlich längere Lieferzeiten, als wenn Sie sich ein gut funktionierendes, sehr erfahrenes, agiles Softwareunternehmen suchen und von dem eine Software entwickeln lassen. Die können sehr schnell sein. Natürlich braucht man sehr komplexe Systeme, die eben viele Features und auch komplexe Features beinhalten. Die können natürlich auch entsprechend längere Entwicklungszeiten bedeuten. Die Funktionen einer Software werden immer vom Kunden vorgegeben, wobei wir dem Kunden natürlich beratend zur Seite stehen. Es ist immer so, dass der Kunde natürlich eine Wunschliste hat, was die Software alles können soll. Und das ist wieder einer der wichtigsten Schritte, diese Kundenwünsche zu priorisieren. Und im Softwareentwicklungsprozess macht man das immer so, dass man die hoch priorisierten Anforderungen des Kunden zuerst umsetzt und dann eben weiter entwickelt, bis man in die feineren Verästelungen der Software kommt und dann eben unter Umständen Features, die ein nice to have darstellen, vielleicht später interpretiert. Das heißt, die wichtigsten Funktionen priorisieren, diese zuerst entwickeln und dann hat der Kunde auch sofort einen Nutzen von seiner Software. Für die Wahl der Programmiersprachen und damit des gesamten Ökosystems der Programmiersprachen sind mehrere Aspekte ausschlaggebend. Ein Aspekt ist natürlich die Innovationsfähigkeit der jeweiligen Plattform. Das heißt, wie schnell passt sich eine Plattform neuen Anforderungen an? Gehen wir zum Beispiel in den Bereich KI? Dann kann ich mich fragen, gibt es in meiner Programmiersprache mit den Frameworks, Bibliotheken usw. Produkte, die ich verwende? In der Softwareentwicklung bin ich eben in der Lage, eine KI-basierte Lösung umzusetzen. Oder bin ich in der Lage, Cloud-native Anwendungen zu entwickeln, also Anwendungen, die so gebaut sind, dass sie nativ in der Cloud laufen? Bin ich in der Lage solche Lösungen damit zu entwickeln? Also das heißt, die technische Machbarkeit letztendlich, die muss bei allen Neuentwicklungen gegeben sein. Dabei nutzt man natürlich Plattformen, die eine hohe Verbreitung haben. Warum? Plattformen mit einer hohen Verbreitung haben immer eine viel höhere Wahrscheinlichkeit, sich an moderne Entwicklungen anzupassen. Das ist der eine Aspekt. Der zweite Aspekt ist die Investitionssicherheit, die ich in die Technologie habe. Was ganz wichtig ist, wenn ich eben eine Software entwickle, dass die zugrunde liegende Technologie, also die Programmiersprache, das Betriebssystem, die Bibliotheken, die Frameworks usw. auch langfristig noch verfügbar sind. Auch hier spielt die Größe der Anbieter, die diese Basistechnologien zur Verfügung stellen, eine Rolle. Im Idealfall ist es Open Source Software, das heißt, auch wenn eine Firma irgendwann aufhört oder sich in eine andere Richtung entwickelt, besteht sie weiter und wird von anderen Firmen weiterentwickelt. In der Softwareindustrie gibt es dafür zahlreiche Beispiele. Und der dritte Aspekt ist die Verfügbarkeit von Experten in diesem Bereich. Also wenn man Investitionssicherheit haben will und eine Software, die eine lange Lebensdauer hat, dann braucht man auch Leute, die diese Software weiterentwickeln können. Und da ist es eben besonders wichtig, eine Technologie zu wählen, die von vielen Menschen beherrscht wird. Das heißt, die an Universitäten gelehrt wird, die als gute Programmiersprache oder Framework anerkannt ist und so weiter. Das heißt, man versucht so ein bisschen mit dem Strom zu schwimmen und dann die entsprechenden Leute vom Arbeitsmarkt zu holen, die im Idealfall diese Technologien schon in ihrer Ausbildung oder in ihrer Berufserfahrung gelernt haben. Und dann haben sie natürlich einen wesentlich geringeren Schulungsbedarf, wenn sie neue Mitarbeiter in ihr Unternehmen holen wollen. Aus Kundensicht bedeutet das natürlich, wenn ich jetzt als Kunde eine Software entwickeln lasse und ich bin mit meinem Anbieter nicht zufrieden und ich verwende die Technologie, die eine hohe Verbreitung hat, dann kann ich sehr schnell den Anbieter wechseln und sagen, okay, jetzt suche ich mir ein anderes Unternehmen, weil die Wahrscheinlichkeit, dass andere Unternehmen diese Technologie beherrschen, eben entsprechend hoch ist. Also die drei Dinge, auf die ich achten würde. Also das erste ist eben eine moderne Technologie, mit der ich eine technische Machbarkeit von modernen Technologien realisieren kann. Das Zweite ist eine Technologie, die eine hohe Investitionssicherheit hat, weil sie eben eine hohe Wahrscheinlichkeit hat, dass es sie auch in fünf oder zehn Jahren noch gibt. Und das dritte wäre dann die Verfügbarkeit von Spezialisten in diesem technischen Bereich, also in dieser Programmiersprache oder in dieser Frequenz. Der Hauptgrund, warum man eben Software im Bereich STANDARD Software abdecken muss, sind natürlich Security Themen, weil eben Schwachstellen bekannt werden oder Sicherheitslücken bekannt werden und diese Schwachstellen, sobald sie bekannt werden, eben von böswilligen Personen ausgenutzt werden, also von Hackern ausgenutzt werden. Bei Individualsoftware sind natürlich Security Themen auch ein wichtiger Grund, Software abzugeben, also die Technologien, die da involviert sind, auch in den Versionen abzudecken, wenn eben auch Security Probleme haben kann und dann ist aber der häufigste Grund, die Software abzugeben, eigentlich eine Weiterentwicklung der Features. Und das ist etwas, was von den Anwendern der Software oder auch von den Kunden sehr geschätzt wird. Zum Beispiel. Also wenn Sie eine Software anbieten für Ihre Kunden. Bleiben wir bei dem Beispiel, zum Beispiel Steuerung eben von Gärprozessen in Weinkellern, und Sie bringen eine neue Version heraus, die einfach ein neues Feature beinhaltet. Dann freuen sich die Kunden und die Kunden fühlen sich dann bestätigt in ihrer Entscheidung, auf diese Software gesetzt zu haben. Das heißt, die schrittweise Erweiterung des Funktionsumfangs ist ein ganz, ganz wesentliches Element, um Kundenbindung und Kundenzufriedenheit zu erzeugen. Jeder kennt das, der zum Beispiel ein Auto hat, dass oder wie es upgedatet wird oder der ein Handy hat, dass ein Betriebssystem upgedatet wird. Man freut sich über jede kleine Veränderung, die einem einen persönlichen Nutzen bringt und ist froh, wenn man ein kleines Update für sein Gerät bekommt. Und das können Sie mit der Individual Show in einem sehr hohen Maße und sehr schnell tun. Denn wenn Sie ein Feedback von Ihrem Kunden haben, wie er Ihre Software nutzt und was Sie gerne anders hätten, dann können Sie das sofort mit Ihrer Entwicklungsfirma umsetzen. Wenn man sich für eine Standardsoftware entschieden hat, ist diese Umsetzung oft nicht möglich. Oder Sie müssen sehr lange warten, bis vielleicht irgendwann dieses Feature hoffentlich umgesetzt wird. Softwaresysteme sind eben sehr komplexe Systeme und alle komplexen Systeme haben Fehler und deswegen ist die Fehlerbehebung in Softwaresystemen ein ständiger Prozess. Wir wissen alle, dass selbst Unternehmen, die Milliardenumsätze machen wie Microsoft oder SAP und so weiter, Fehler in ihrer Software haben oder auch Automobilhersteller zum Beispiel diese wirklich gigantischen Budgets haben und trotzdem nicht alle Fehler entdecken. Und natürlich ist es auch bei Individualsoftware so, dass die Fehler mehr Aufwand bedeuten als die Entwicklung selbst. Das ist sicher nicht richtig. Vor allem auch deshalb, weil die Softwaretechnik in den letzten Jahren wesentliche Fortschritte in der Qualitätssicherung gemacht hat. Das heißt, die Qualitätssicherung ist heute in einem hohen Maße automatisiert und damit gelingt es eben, die Fehlerquote zu reduzieren. Die Qualität einer Software wird durch sehr unterschiedliche Qualitätssicherungsmaßnahmen sichergestellt. So gibt es zum einen konstruktive Qualitätssicherungsmaßnahmen und zum anderen analytische Qualitätssicherungsmaßnahmen. Konstruktive Maßnahmen wären zum Beispiel, für die richtige Ausbildung und Weiterbildung der Mitarbeiter zu sorgen. Analytische Maßnahmen wären z.B. die richtigen Werkzeuge zu verwenden, einen definierten Entwicklungsprozess zu haben, in dem genau festgelegt ist, in welchen Schritten die Software entwickelt wird und wie sie qualitätsgesichert wird. Ja, und zu den analytischen Maßnahmen gehört eben auch, dass man Tests macht. Und das, was man heute macht, ist, dass man eben für jedes Stück Software einen Test entwickelt, der diese Komponente, diese Softwarekomponente automatisiert testet. Das nennt man testgetriebene Entwicklung, vom Konzept her ist es sogar so, dass man, bevor man überhaupt eine Software schreibt, den eigentlichen Test schreibt und erst dann eine Software schreibt, die möglichst diesen Test besteht. Das nennt man testgetriebene Entwicklung. Und bei jeder Änderung der Software werden dann alle diese automatisierten Tests wieder und wieder ausgeführt. Eine ganz große Fehlerquelle ist eben das Ändern der Software. Das heißt, man ändert die Software und baut damit versehentlich Fehler ein. Und diese automatisierten Tests, die sorgen eben dafür, wenn man Änderungen an der Software vornimmt und versehentlich sozusagen eine andere Funktionalität mit einem Fehler dann behaftet. Dass diese automatisierten Tests dann diesen Fehler entdecken. Das heißt, bei jeder kleinen Änderung an der Software wird die gesamte Funktionalität der Software in wenigen Minuten komplett automatisiert getestet. Das sind also automatisierte Integrationen oder Units. Das ist und das ist eben sehr wichtig, das als festen Bestandteil des Entwicklungsprozesses zu machen. Andere Aspekte, die dann wieder in die konstruktive Qualitätssicherung fallen würden, sind die Automatisierung möglichst vieler Schritte im Softwareentwicklungsprozess. Das bedeutet, dass so wenig menschliche Interaktion wie möglich erforderlich ist, um die Software zu implementieren. Das reduziert die Fehlerquote erheblich. Eine weitere analytische Qualitätssicherungsmaßnahme sind Code Reviews. Was ist das? Wenn ein Entwickler Code schreibt, dann wird der Code nicht einfach so in den anderen Code integriert, sondern es findet ein Code Review statt, bei dem ein Kollege sich den Code noch einmal genau anschaut. Das ist also bei allen wichtigen Softwareprodukten der Fall. Wenn Sie jetzt zum Beispiel Betriebssysteme nehmen oder andere wichtige technologische Produkte, die also massenhaft eingesetzt werden, dann haben Sie in all diesen Firmen immer so genannte Peer Reviews etabliert. Und das bedeutet eben, dass jemand noch einmal über die Änderungen der Software geht und dann eben möglichst Fehler entdeckt. Das wäre also ein Review. Es gibt auch die Möglichkeit der automatisierten Codeanalyse. Das sind also Tools, die darauf spezialisiert sind, Fehler in der Software zu finden, ganz automatisiert. Und da gehören natürlich auch moderne KI-Komponenten dazu, die eben dann entsprechend auf intelligente Art und Weise Fehler in der Software finden. Naja, und dann hat man schließlich und letztendlich noch Tests, die eben von Menschen auf der Anwenderebene durchgeführt werden. Und das lässt man am besten von echten Anwendern machen, weil die dann die Software so benutzen, wie echte Anwender eben die Software benutzen. Bzw. sie machen eben die Fehler, die echte Menschen machen. Bei der Bedienung der Software. Und die führen dann eben auch oder zeigen dann oft Schwachstellen der Software auf. Und deswegen ist ein menschlicher Test, also ein Endnutzertest oder wie auch immer man das nennen will, auch immer wichtig. Dann gibt es noch andere Aspekte der Software. So, das waren jetzt eher die funktionalen Aspekte der Software. Es gibt auch nicht-funktionale Aspekte der Software. Zum Beispiel das Performance Antwortzeitverhalten wäre die Skalierbarkeit in Bezug auf die Anzahl der Requests, die die Software benötigt. Auch hierfür werden spezielle Tests durchgeführt. Das heißt, die Software wird künstlich unter Last gesetzt und dann wird beobachtet, wie schnell sie reagieren kann bzw. wo die Grenze erreicht ist, dass die Software nicht mehr richtig funktioniert und dann zum Schluss natürlich noch Qualitätssicherungsmaßnahmen in Bezug auf die Sicherheit, so genannte Penetration Tests. Das heißt, es gibt eben spezialisierte Software, die Anwendungsoberflächen oder Software auf Schwachstellen testen kann. Also gelingt es mir zum Beispiel einen Datensatz auszulesen, ohne angemeldet zu sein. Gelingt es mir die Authentifizierung auszuhebeln, in irgendeiner Art und Weise solche Tests. Und die sollen dann eben Schwachstellen in Bezug auf die Sicherheit aufzeigen. Also man sieht, es gibt einen ganzen Bogen, eine ganze Palette von verschiedenen Tests, die eben eingesetzt werden, um Software sicher und fehlerfrei zu machen. Und all diese Methoden werden gerade in der Individualsoftwareentwicklung eingesetzt, um eine möglichst hohe Qualität der Software zu erreichen. Ja, die Open-Source-Software, die basiert eben auf dem Gedanken, dass bestimmte Software vielleicht in der Entwicklung mit anderen geteilt werden kann oder der Aufwand für die Entwicklung geteilt werden kann. Das ist das eine. Es gibt viele Unternehmen, die in Open Source Software investieren, also zum Beispiel jetzt in ein Betriebssystem wie Linux oder in ein Betriebssystem wie Android oder zum Beispiel eben in Datenbanktechnologien usw. und dort investieren, genauso wie andere Unternehmen dort investieren. Und alle teilen sich so den Entwicklungsaufwand. Ohne komplizierte Abrechnungsmodelle oder ähnliches. Also das ist ein Aspekt von Open Source Software. Die Vorstellung, dass irgendwelche Privatpersonen Open Source Software entwickeln. Das stimmt nur zu einem sehr geringen Teil. Also die großen Open Source Projekte werden von großen Firmen finanziert, die sich davon einen gemeinsamen Nutzen versprechen. Ein anderer Aspekt von Open Source Software ist, dass Softwarehersteller versuchen, über Open Source Software eine hohe Verbreitung zu erreichen. Denn wenn ich eine Software kostenlos anbiete oder den Code zur Verfügung stelle, dann erreiche ich, dass viele diese Software nutzen, weil sie kostenlos ist. Und dann machen es viele Anbieter so, dass sie eben einen bestimmten Teil der Funktionalität, der eine bestimmte Premiumfunktionalität darstellt, dann kostenpflichtig machen. Das heißt, Open Source Software ist eben ein Vehikel für Unternehmen, um eine weite Verbreitung ihrer eigenen Software zu suchen und damit ihre Marktanteile im Markt zu erhöhen. Also das sieht man zum Beispiel im Linux-Bereich sehr stark. Ja, und letztendlich dann gibt es eben auch Open Source Software, Open Source, Open Source Software, die aus einem gewissen Idealismus heraus entwickelt wird, also dass das Ideal von Software eigentlich ein Allgemeingut sein sollte, das der ganzen Menschheit zugute kommt. Man sieht diese ideelle Sucht nach Open Source Software gerade im Linux-Bereich sehr stark. Man sieht das aber auch teilweise bei ganz modernen Unternehmen, also zum Beispiel die Firma Tesla mit ihrem Chef Elon Musk hat eben sehr viele Patente öffentlich gemacht und bietet diese eigentlich geschützten geistigen Eigentumswerte als Gemeingut an, einfach weil man das Ideal hat, die Welt zu elektrifizieren oder die Mobilitätswelt zu elektrifizieren. Das heißt, auch das findet man sehr oft in der Open Source Bewegung, also eine ideologische Komponente sozusagen. Insgesamt muss man sagen, dass gerade der Einzelne so etwas wie ein besonders hoher Nutznießer dieser Open-Source-Bewegung geworden ist, weil ich eben durch die Integration von Open-Source-Komponenten relativ kostengünstig gute und qualitativ sehr hochwertige Software produzieren kann. Ja, die Zusammenarbeit im Softwareentwicklungsteam muss man sich so vorstellen, dass man eben verschiedene Stellen an der Software hat, an denen gearbeitet werden kann. Wenn ich das jetzt zum Beispiel mit einem Hausbau vergleiche: Ein Arbeiter baut die Fenster ein, ein anderer verputzt die Wände, ein anderer streicht dann die Wände, da gibt es schon Abhängigkeiten. Ich kann natürlich keinen Maler die Wand streichen lassen, wenn sie noch nicht verputzt ist oder so. Aber grundsätzlich ist es so, dass es verschiedene Stellen im Code gibt, an denen entwickelt wird. Das ist die typische Art der Zusammenarbeit. Also dass eben an verschiedenen Stellen im Code von verschiedenen Entwicklern gearbeitet wird. Es kann natürlich sein, dass ein Entwickler auf Code von anderen Entwicklern angewiesen ist, den er aufruft oder verwendet oder was auch immer. Und dann gibt es natürlich Abhängigkeiten und deswegen ist eben eine sehr gute Kommunikation innerhalb der Softwareentwicklung Steams wichtig, also tägliche Meetings, in denen dann eben abgesprochen wird, wer an welchen Teilen der Software arbeitet. Und das tun die Mitarbeiterinnen und Mitarbeiter in der aktiven Softwareentwicklungsmethodik eigenverantwortlich. Das heißt, jeder entscheidet selbst, an welchen Aufgaben er arbeiten möchte. Und das fördert eben auch die Motivation der Mitarbeiter sehr stark. Und dann hat man natürlich im Zusammenspiel oder in der Integration der verschiedenen Arbeitspakete auch eine technische Abhängigkeit. Das heißt, wenn ein Entwickler den Code ändert, dann muss das nicht mit dem Code des anderen Entwicklers übereinstimmen. Und wenn ich das zusammenbringe, den Code, dann muss die Software insgesamt noch funktionieren. Und da spielen natürlich wieder Qualitätssicherungsaspekte eine Rolle, aber vor allem eben auch die richtigen Werkzeuge. Also es gibt eben sogenannte Software Versionskontrollsysteme oder Softwarelösungen, Kontrollmechanismen, Systeme, die eben in der Lage sind, die Software, die entwickelt wird, zu signieren, so dass ich jederzeit sozusagen auch auf ältere Versionen zurückgehen kann, die aber auch in der Lage sind. Die Softwareteile, die die einzelnen Entwickler machen, zu integrieren und Konflikte zu lösen und so weiter. Also das heißt Werkzeugunterstützung, aber eben auch ganz wichtig die richtige Vorgehensweise. Und da hat man eben im Laufe der Jahre im Software Engineering etablierte standardisierte Prozesse gefunden, wie so eine Zusammenarbeit stattfinden kann. Heute ist es eben so, dass die Softwareentwicklungsteams eine begrenzte Größe haben. Das heißt, man geht davon aus, dass ein Softwareentwicklungsteam nur bis zu einer Größe von maximal 10 Personen, 14 Personen o.ä. zusammenarbeiten kann. Sobald man diese kritische Größe überschreitet, kann man eben nicht mehr effizient entwickeln. Und deswegen oder das ist auch eine Motivation, eben Software in kleinere Teile zu unterteilen. Und ein Entwicklungsteam ist dann eben immer für einen Dienst zuständig. Und es hat auch einen Namen. Das wird immer als Microservices-Architektur beschrieben. Das heißt, ich entwickle die Software nicht in einem Monolithen. Ich schreibe nicht ein großes Stück Software, sondern ich schreibe ein kleines Stück Software. Und diese vielen kleinen Stücke, die werden dann miteinander integriert. Und ein Entwicklungsteam ist dann immer für ein Stück Software zuständig, also für einen Microservice. Und das ermöglicht die Skalierung im Softwareentwicklungsprozess. Sonst ist es sehr schwierig. Sehr große Software zu entwickeln. Ja, ich bin sehr zufrieden. Wir haben eine sehr hohe Eigenverantwortung der Mitarbeiter. Das ist eigentlich das Wichtigste, damit ein Unternehmen eine sehr gute Qualität und eine sehr gute, effiziente Leistung erbringt. Das heißt, die Mitarbeiter haben einfach Spaß an der Arbeit und Freude an der Arbeit. Und typischerweise dann, wenn man selbst entscheiden kann, wie man bestimmte Probleme löst. Und das ist eigentlich unsere Philosophie, die Eigenverantwortung der Mitarbeiter zu fördern. Und das ist ein Privileg, das man vor allem in kleinen, wendigen Unternehmen hat, wie wir es sind. Große Unternehmen leiden sehr darunter. Oder ich müsste eigentlich sagen, die Mitarbeiter in großen Unternehmen leiden besonders darunter, dass sie in Prozessen gefangen sind, die ihnen aufgezwungen werden, in denen sie nur als kleines Rädchen funktionieren und dadurch sehr viel an Eigenverantwortung verlieren. Und aus meiner langjährigen Erfahrung in großen, mittleren und kleinen Unternehmen weiß ich, wenn Mitarbeiter das Gefühl haben, sie können eigentlich gar nicht selbst entscheiden, sondern sie werden immer nur von außen bestimmt, dann kann das das Angebot eines Unternehmens oder die Produktivität beeinträchtigen. Und das ist, glaube ich, das, womit ich in unserem Unternehmen besonders zufrieden bin. Dass die Eigenverantwortung der Mitarbeiter so besonders hoch ist. Und das macht uns erfolgreich. Letztendlich.

Maschinelles Lernen

Maschinelles Lernen: Motor der Künstlichen Intelligenz Maschinelles Lernen (ML), ein zentraler Bestandteil der Künstlichen Intelligenz (KI), hat sich in den letzten Jahren zu einem der

Weiterlesen »

Software-Wartungsvertrag

Software-Wartungsvertrag: Sicherung von Zuverlässigkeit und Performance Ein Software-Wartungsvertrag ist ein entscheidendes Instrument, um die kontinuierliche Funktionsfähigkeit, Sicherheit und Effizienz einer Softwareanwendung zu gewährleisten. Er regelt

Weiterlesen »

Künstliche Intelligenz

Künstliche Intelligenz: Einblicke in die Zukunftstechnologie Künstliche Intelligenz (KI) ist ein Bereich der Informatik, der sich mit der Schaffung von Maschinen und Systemen befasst, die

Weiterlesen »

Neuronale Netze

Neuronale Netze: Die Architektur des Künstlichen Gehirns Neuronale Netze, oft als das Herzstück moderner Künstlicher Intelligenz (KI) und Maschinelles Lernen (ML) bezeichnet, sind von der

Weiterlesen »