Was ist Software-Entwicklung?

Software bezeichnet eine Reihe von Anweisungen, die Computern sagen, was sie tun sollen. Software-Entwicklung ist der Prozess, bei dem Computerprogrammierer durch den Einsatz von Technologie einen Mehrwert für Verbraucher und/oder Unternehmen schaffen.

Software ist von zentraler Bedeutung für den Begriff des programmierbaren Computers. Dieses Konzept wurde erstmals 1936 von Alan Turing vorgestellt. Sieben Jahre später sagte IBM-Präsident Thomas Watson bekanntermaßen:

„Ich denke, es gibt einen Weltmarkt für vielleicht fünf Computer.“

Er ahnte nicht, dass 2020 rund 275 Millionen PCs ausgeliefert werden sollten.

Arten von Software

Für die meisten Benutzer gibt es zwei Arten von Software.

  • Die erste ist Systemsoftware, die die internen Funktionen von Computern verwaltet, hauptsächlich durch deren Betriebssysteme.
  • Die zweite ist Applikationssoftware, die es dem Computer ermöglicht, Aufgaben auszuführen, die meist vom Endbenutzer festgelegt werden.

Für diejenigen, die Softwareapplikationen erstellen, gibt es auch eine dritte Art: Computerprogrammiersoftware. Mit ihr erhalten sie die benötigten Tools, um Applikationen zu erstellen, die wir alle in unserem Alltag verwenden.

Standard-Software bietet alle (oder zumindest die meisten) der benötigten Funktionen. Deshalb fällt die Wahl der meisten Verbraucher und vieler Unternehmen auf entsprechende Produkte. Bis vor Kurzem wurde die Software auf Hardwaregeräten gehostet, die dem sie nutzenden Unternehmen gehörten und von diesem selbst verwaltet wurden.

Heute setzen immer mehr Unternehmmen auf Software-as-a-Service (SaaS). Bei diesem Bereitstellungsmodell wird die Software in der Cloud gehostet und über einen Browser aufgerufen. Bei SaaS zahlt das Unternehmen in der Regel eine Gebühr pro Person und Monat. Dafür entfallen sämtliche Eigentums- und Wartungskosten.

Einige Unternehmen haben jedoch besondere Anforderungen. Andere wiederum nutzen digitale Technologie, um geschäftliche Vorteile zu erzielen. Sie entscheiden sich oft dafür, mit internen Teams eigene, maßgeschneiderte Software zu entwickeln. Diese kann dann vor Ort oder in der Cloud bereitgestellt werden.

Der Software-Entwicklungsprozess

An der Erstellung von Software sind verschiedene Personen beteiligt.

Dazu gehören vor allem die Software-Ingenieure, die für die Gestaltung der Applikation verantwortlich sind. Sie wenden technische Grundsätze auf die Erstellung und Prüfung von Software an.

Den Großteil der Computerprogrammierung führen Entwicklerteams durch. Sie arbeiten mit den wichtigsten Stakeholdern zusammen, um deren Anforderungen zu ermitteln. Anschließend verwenden sie Entwicklungswerkzeuge, um die Applikation zu implementieren und sicherzustellen, dass sie mit dem Entwurf übereinstimmt.

Beide Gruppen arbeiten mit dem Software Development Lifecycle (SDLC). Der SDLC ist ein strukturierter Prozess, der die effiziente Erstellung von qualitativ hochwertiger Software ermöglicht. Er unterteilt die lange, komplexe Aufgabe der Software-Erstellung in einzelne Schritte.

Die Vorteile des SDLC sind zahlreich und vielfältig. Vor allem aber wird gewährleistet, dass Software mit maximaler Geschwindigkeit sowie minimalem Risiko und minimalen Kosten erstellt wird. Dies geschieht durch die Bereitstellung eines Standardframeworks, der alle Aktivitäten und Ergebnisse definiert.

Prozess-Modelle

Für den SDLC gibt es mehrere Prozessmodelle, von denen jedes seine Vor- und Nachteile hat. Die Wahl des falschen Modells erhöht das Risiko, dass das Projekt scheitert. Die Entscheidung sollte deshalb gut überlegt sein. Die am häufigsten verwendeten Modelle sind:

  1. Das Wasserfallmodell. Dies ist das älteste und am wenigsten komplexe Modell. Der Grundsatz lautet, dass Sie jede Phase abschließen, bevor Sie zur nächsten übergehen. Das ist einfach, aber nicht schnell. Zudem sind die Möglichkeiten zur Kurskorrektur gering, wenn Probleme entdeckt werden. Viele sind der Meinung, dass dieses Modell für die Bedürfnisse eines volatilen Geschäftsumfelds ungeeignet ist.

  2. V-förmiges Modell. Hierbei handelt es sich um eine Variante des Wasserfall-Ansatzes. Es ist auch als Verifizierungs- und Validierungsmodell bekannt. In jeder Phase des Entwicklungszyklus wird direkt ein Testelement zugewiesen. Dadurch lassen sich Probleme leichter erkennen. Groß angelegte Änderungen am Softwaredesign sind jedoch nach wie vor schwer umsetzbar.

  3. Iteratives Modell. Hierbei handelt es sich um einen eher zyklischen Prozess. Anstatt mit einer klaren Reihe von Geschäftsanforderungen zu beginnen, zielt er darauf ab, eine Reihe von Softwareanforderungen umzusetzen. Dabei wird in kurzer Zeit eine Arbeitsversion der Software erstellt. Diese wird dann wiederholt iteriert, wobei die Funktionalität der Software jedes Mal erweitert wird. Dieser Prozess muss streng überwacht werden. Andernfalls kann es leicht zu einer schleichenden Ausweitung der ursprünglichen Zielsetzung kommen, wodurch Ressourcen und Kosten außer Kontrolle geraten.

  4. Spiralmodell. Dieses Modell kombiniert Aspekte des iterativen Modells und des Wasserfallmodells. Es zeichnet sich durch eine iterative und sequentielle Entwicklung aus, wobei der Schwerpunkt auf der Risikoanalyse liegt. Das Projekt durchläuft in einer „Spirale“ immer wieder vier Phasen, bis es abgeschlossen ist. Dies ermöglicht eine starke Beteiligung der Endnutzer und eine maßgeschneiderte Software-Entwicklung. Das Risiko besteht darin, dass die Spirale niemals endet.

  5. Agiles Modell. Dieses Modell ist ebenfalls iterativ. Der Schwerpunkt liegt jedoch nicht auf der Entwicklung vollständiger Applikationen, sondern auf der Schaffung funktionaler Einsatzmöglichkeiten. Diese werden dann miteinander kombiniert, um Geschäftsanforderungen zu erfüllen. Zur Steuerung der Software-Entwicklung wird das Scrum-Framework genutzt. Außerdem werden verschiedene Teams in „Sprints“ eingesetzt, um sich in einem begrenzten Zeitrahmen auf die Bereitstellung einer Funktion zu konzentrieren. Das agile Modell kann sehr effizient sein. Dazu muss jedoch von Anfang an eine klare Richtung für das Projekt definiert und konsequent befolgt werden.

Die Phasen des SDLC

Der Prozess besteht in der Regel aus sechs Phasen.

  1. Bedarfsanalyse. Dies ist die grundlegendste und wichtigste Phase des SDLC. Wenn Ziele oder Prozesse unklar sind, erhöht dies meist sowohl die Kosten als auch das Risiko des Projekts. Wenn die Software von einem Softwareunternehmen erstellt wird, ist in dieser Phase eine umfassende Marktanalyse erforderlich. Wenn das Projekt intern durchgeführt wird, müssen die Projektleiter mit den wichtigsten Stakeholdern zusammenarbeiten, um die Ergebnisse zu verstehen, die sie mit dem Projekt erreichen wollen. In beiden Fällen besteht das Ziel darin, ein SRS-Dokument (Software Requirements Specification) zu liefern. Es beschreibt, welche Funktionen die Software haben soll und welche Ergebnisse erwartet werden.

  2. Design. Sobald der Bedarf bekannt ist, kann die Entwicklung des Softwaredesigns beginnen. Dieses wird in einem Software-Design-Dokument (SDS) festgehalten, das die High-Level-Architektur der Applikation beschreibt. Spezifiziert werden sollte die zu verwendende Hardwareplattform, das Betriebssystem und die zu verwendende Programmiersprache. Zudem sollten alle Schlüsselmodule des Produkts definiert und die Kommunikation und der Datenfluss mit externen Elementen oder Elementen Dritter festgelegt werden. Im Anschluss daran kann ein Prototyp oder ein Proof-of-Concept (PoC) etwaige Probleme beseitigen oder Anforderungen konkretisieren.

  3. Entwicklung und Tests. Dies ist der Punkt, an dem die Erstellung der eigentlichen Software beginnt. Es ist wichtig, dass sich jedes Mitglied des Coding-Teams an die zuvor im SDLC definierten Pläne hält. Das Team verfügt über unterschiedliche Kompetenzen. Frontend-Experten setzen sich mit der Benutzeroberfläche auseinander. Datenbankadministratoren (DBAs) stellen sicher, dass die richtigen Daten verfügbar sind. Und Software-Entwickler schreiben und implementieren den Code.

    Nach der Erstellung muss unbedingt bestätigt werden, dass der Code die definierten Anforderungen erfüllt. An dieser Stelle kommt das Team der Qualitätssicherung (QA) ins Spiel. Das QA-Team testet die fertige Software und weist auf etwaige Fehler hin, damit sie in der Entwicklungszeit behoben werden können. Dieser Prozess wird so lange fortgesetzt, bis die Software die erforderlichen Funktions- und Qualitätsanforderungen erfüllt.

  4. Bereitstellung. Sobald der Code getestet und freigegeben wurde, muss er in einer Produktionsumgebung veröffentlicht werden. Bei kommerziellen Softwareprodukten kann dies einige Anpassungen und zusätzliche Tests erfordern. Auch Schulung und Support sollten jetzt berücksichtigt werden: Software, die nicht richtig genutzt wird, kann ihr volles Potenzial nicht entfalten. Hinzu kommt: Jede Software muss kontinuierlich an aktuelle Gegebenheiten angepasst werden. Es werden neue Sicherheitsprobleme auftreten und neue (oder zuvor übersehene) Benutzeranforderungen zum Vorschein kommen. Eine kontinuierliche Weiterentwicklung wird erforderlich sein, um die kontinuierliche Relevanz der Software sicherzustellen. Dies bedeutet, dass der gesamte SDLC fortlaufend wiederholt werden muss, wenn auch hoffentlich in deutlich kleinerem Maßstab.

  5. Dokumentation. Für Programmierer ist eine zuverlässige Dokumentation unerlässlich. Die Dokumentation hilft bei der Überwachung der verschiedenen Aspekte der fertigen Software. Zudem sorgt Dokumentation für langfristige Qualität, indem sie sicherstellt, dass Software sich leicht auf dem neuesten Stand halten oder verbessern lässt. Eine gute Dokumentation macht Informationen leicht zugänglich und gewährleistet den Wissenstransfer. Sie senkt die Supportkosten, da neue Benutzer sich schnell das nötige Wissen aneignen können. Die Dokumentation kann u. a. Informationen zu folgenden Bereichen umfassen: Geschäftsregeln, Datenbankeinträge, Serverplattform sowie Installation und Bereitstellung.

  6. Evaluation. Sie wird manchmal auch als Post-Implementation Review bezeichnet. Nicht jedes Unternehmen betrachtet sie als offiziellen Teil des SDLC. Einige sehen sie als Teil der Wartungsphase. Dennoch besteht kein Zweifel daran, dass die Evaluation von entscheidender Bedeutung ist. Mit ihr bestätigen Sie, dass das System den ursprünglichen Anforderungen und Zielen entspricht. Sie bestätigen, dass das System stabil ist. Dies ist auch die Phase, in der Fehler identifiziert und behoben werden können. Zudem bietet es eine Gelegenheit, sich die Effektivität des Entwicklungsprozesses an sich anzusehen. Durch die Evaluation lassen sich wichtige Lektionen lernen, die sich positiv auf zukünftige Projekte auswirken.

Software-Erstellung ist komplex. Gerade deshalb ist das Projektmanagement des SDLC von entscheidender Bedeutung. Die Aufgaben von Projektmanagern sind vielfältig. Sie leiten alle an dem Projekt beteiligten Personen und Teams. Dabei gewährleisten sie die Qualitätssicherung, damit die fertige Applikation stabil und zweckmäßig ist. Darüber hinaus sorgen sie dafür, dass alle Mitarbeiter, die am Erfolg des Projekts beteiligt sind, immer auf dem neuesten Stand bleiben.

Secure SDLC (SSDLC) stellt sicher, dass Sicherheit in die Software-Erstellung integriert ist und nicht erst am Ende des Prozesses berücksichtigt wird. SSDLC sammelt Best Practices, die den bestehenden SDLC-Ansatz sicherer machen sollen. Dabei ist SSDLC mehr als ein Prozess, weil er von Entwicklungsteams ein Umdenken erfordert. Nur über Funktionen nachzudenken, reicht nicht mehr aus. Entwickler müssen sich in jeder Phase des SDLC immer auch auf Sicherheitsfragen konzentrieren. So stellt dieser Ansatz sicher, dass Sicherheitslücken früher erkannt und die Kosten für ihre Behebung gesenkt werden.

Proprietäre vs. Open-Source-Software

Jahrzehntelang war jede Software proprietär oder „Closed Source“. Einerseits schützt dies das geistige Eigentum derjenigen, die die Software erstellt haben. Auf der anderen Seite schränkt es aber die Möglichkeit von Entwicklern ein, den Code an ihre individuellen Anforderungen anzupassen. Nur die ursprünglichen Verfasser des Codes sind dazu berechtigt, Closed-Source-Software zu kopieren oder zu ändern.

Kunden müssen eine Lizenzvereinbarung unterzeichnen, die besagt, dass sie den Code nicht manipulieren. Beispiele für Closed-Source-Software sind Microsoft Windows und Apple macOS.

Mitte der Neunziger wurde Linux populär – eine Open-Source-Alternative zu den Unix-Plattformen, mit der viele Unternehmen gearbeitet haben. Seitdem hat sich die Open-Source-Bewegung zu einer weit akzeptierten Grundlage für die Software-Erstellung entwickelt. Laut opensource.com bezeichnet der Begriff

„Software mit Quellcode, den jeder einsehen, modifizieren und verbessern kann.“

Die Nutzung ist kostenlos, aber mit Bedingungen verbunden. Alle Verbesserungen, die Sie vornehmen, müssen an die Open-Source-Code-Community zurückgegeben werden, die den ursprünglichen Code erstellt hat.

Heute gibt es 180.000 Open-Source-Produkte, die von 90% der Unternehmen genutzt werden. Viele Unternehmen spenden ihren proprietären Code an die Open-Source-Community. Google zum Beispiel hat seine Kubernetes-Plattform zum Ausführen von containerisierten Workloads an die Cloud Native Computing Foundation gespendet. Damit hat es seine Technologie de facto zum Industriestandard gemacht.

Ob Open- oder Closed-Source-Software die richtige Lösung für Sie ist, lässt sich nicht pauschal sagen. Jeder Ansatz hat Vor- und Nachteile. Der größte Nachteil von Closed-Source-Software ist, dass Sie sie bezahlen müssen. Viele Menschen entscheiden sich dafür, weil sie sie für eine bessere Alternative zu kostenlosen Produkten halten. So verwenden eine Million Unternehmen weltweit Microsoft Office 365 – obwohl die Google G Suite kostenlos zur Verfügung steht. Proprietäre Software ermöglicht in der Regel auch einen hohen Grad an Integration mit den anderen Teilen Ihres IT-Bestands.

Befürworter von Open-Source-Software verweisen auf die Tatsache, dass die Community aus mehreren Millionen Menschen weltweit besteht. Das ist eine riesige Ressource, die eine nahezu unbegrenzte Innovationskapazität bietet. Andererseits kann Open-Source-Software schwierig zu bedienen und mit anderen Softwareprodukten nicht kompatibel sein. Zudem kann es Probleme mit Gewährleistungen und der von Ihnen benötigten Unterstützung geben.

Auswahl des richtigen Software-Entwicklungswerkzeugs

Die größte Herausforderung bei der Software-Entwicklung ist, dass sie schwierig ist. Sie erfordert Zeit (und Geduld!) und ist nicht vorbei, wenn Sie auf „Veröffentlichen“ klicken. In einer sich ständig verändernden Welt müssen Sie Software kontinuierlich weiterentwickeln, um den Anforderungen der Benutzer gerecht zu werden.

Die gute Nachricht ist, dass es moderne Entwicklungsansätze mit eingebetteten Tools gibt, die die Applikationsentwicklung beschleunigen und einen Großteil des Applikationslebenszyklus automatisieren.

OutSystems ist eine Software-Entwicklungslösung, die Entwicklern hilft, hochwertige Applikationen schnell und effizient zu erstellen.

Eine visuelle, modellgesteuerte Entwicklungsumgebung mit branchenführender KI-basierter Unterstützung sorgt dafür, dass Apps in Tagen oder Wochen statt Monaten oder Jahren erstellt sind. Plattformdienste, ebenfalls mit KI, bieten Automatisierung und verbessern den gesamten Applikationslebenszyklus. So lassen sich Apps mit einem Klick bereitstellen und beispiellos einfach verwalten. Probieren Sie es aus, indem Sie sich für unsere Free Edition anmelden!