Softwareentwicklung: Prozess, Modelle und Qualität
Softwareentwicklung bedeutet weit mehr als Programmieren. Ein Team klärt Bedürfnisse, plant eine Lösung, schreibt und prüft Code, stellt die Software bereit und verbessert sie anschließend weiter.
Auf dieser Seite lernst du, diesen Prozess zu erklären, Anforderungen zu formulieren, ein passendes Vorgehen auszuwählen und Softwarequalität nachvollziehbar zu prüfen.
Hake ab, was du schon kannst — und komm am Ende hierher zurück!
Softwareentwicklung ist mehr als Programmieren
Stell dir vor, eine Schule möchte eine Anwendung, mit der Räume reserviert werden können. Direkt mit dem Programmieren zu beginnen wäre riskant: Noch ist unklar, wer Räume buchen darf, wie Doppelbuchungen verhindert werden und welche Geräte unterstützt werden müssen.
Softwareentwicklung
Softwareentwicklung ist der strukturierte Prozess, Software zu planen, zu entwerfen, zu programmieren, zu testen, bereitzustellen und zu warten. Ausgangspunkt sind Bedürfnisse von Nutzerinnen und Nutzern oder Ziele einer Organisation.
Software kann unterschiedliche Aufgaben erfüllen:
- Systemsoftware verwaltet grundlegende Funktionen eines Computers, etwa ein Betriebssystem.
- Anwendungssoftware unterstützt konkrete Nutzeraufgaben, etwa Textverarbeitung oder Raumreservierung.
- Eingebettete Software steuert Geräte wie Autos oder Industrieroboter.
- Programmiersoftware umfasst Werkzeuge wie Editoren, Compiler und Debugger.
Auch innerhalb einer Anwendung gibt es verschiedene Arbeitsbereiche. Das Frontend ist der sichtbare, bedienbare Teil. Das Backend verarbeitet Daten und Regeln auf der Serverseite. Wer an beiden Bereichen arbeitet, wird häufig als Full-Stack-Entwickler oder Full-Stack-Entwicklerin bezeichnet.
Softwareentwicklung nutzt Erkenntnisse und Methoden der Informatik. Beide Begriffe sind trotzdem nicht gleichbedeutend: Informatik untersucht auch theoretische Grundlagen, während Softwareentwicklung besonders auf die planmäßige Herstellung und Pflege nutzbarer Software zielt. Studiengänge, Berufe und Unternehmen setzen die Grenzen unterschiedlich.
Von Bedürfnissen zur wartbaren Software
Ein häufig verwendeter Softwareentwicklungslebenszyklus umfasst sieben Schritte. Die Reihenfolge kann je nach Projektmodell streng nacheinander, überlappend oder wiederholt durchlaufen werden.
- Planung: Ziel, Umfang, Ressourcen und Rahmenbedingungen werden geklärt.
- Analyse: Das Team untersucht Bedürfnisse und leitet Anforderungen ab.
- Design: Architektur, Komponenten, Schnittstellen und Bedienung werden entworfen.
- Implementierung: Der Entwurf wird in Quellcode umgesetzt.
- Testen: Fehler, Sicherheitsprobleme und Abweichungen von Anforderungen werden gesucht.
- Bereitstellung: Die Software wird in Betrieb genommen und für die vorgesehenen Nutzenden zugänglich gemacht.
- Wartung: Fehler werden behoben, Updates eingespielt und Funktionen verbessert.
Dokumentation begleitet den gesamten Prozess. Sie hält Entscheidungen, Bedienung, Schnittstellen, Änderungen und Testabläufe nachvollziehbar fest.
Für die Raumreservierungs-App könnte der Weg so aussehen:
- Die Schule legt fest, dass Doppelbuchungen verhindert werden sollen.
- Das Team klärt, wer Räume suchen, buchen oder Buchungen aufheben darf.
- Es entwirft eine Oberfläche und eine Komponente zur Prüfung freier Zeiten.
- Die Funktionen werden programmiert.
- Tests prüfen unter anderem gleichzeitige Buchungsversuche.
- Eine kleine Gruppe erprobt zunächst eine Betaversion.
- Nach Rückmeldungen verbessert das Team Bedienung und Fehlermeldungen.
Der entscheidende Gedanke: Die erste Bereitstellung beendet die Entwicklung nicht. Nutzungserfahrungen, Fehler und neue Bedürfnisse führen zu weiterer Wartung und Optimierung.
Softwareentwicklung bildet einen Kreislauf: Rückmeldungen aus Tests und Nutzung können zu neuen Anforderungen, Entwürfen und Änderungen führen.
Wähle in jeder Lücke die passende Form und prüfe anschließend deine Antworten.
Vor dem Entwurf werden Bedürfnisse in überführt. Der Entwurf wird anschließend durch die in Code umgesetzt. Vor und nach der Bereitstellung helfen , Abweichungen zu erkennen. Spätere Fehlerbehebungen und Verbesserungen gehören zur .
Anforderungen so formulieren, dass sie prüfbar sind
Die Aussage „Die App soll gut funktionieren“ hilft einem Entwicklungsteam kaum. Sie sagt weder, was die App tun soll, noch woran „gut“ zu erkennen ist.
Funktionale Anforderung
Eine funktionale Anforderung beschreibt, was die Software tun soll. Beispiel: „Eine Schülerin kann nach freien Räumen für einen gewählten Zeitraum suchen.“
Nichtfunktionale Anforderung
Eine nichtfunktionale Anforderung beschreibt eine Qualitätsbedingung oder Einschränkung, unter der eine Funktion erfüllt werden soll. Sie kann beispielsweise Bedienbarkeit, Sicherheit, Zuverlässigkeit oder Leistung betreffen.
Ein Akzeptanzkriterium macht eine Anforderung überprüfbar. Es beschreibt eine konkrete Bedingung, die bei der Abnahme erfüllt sein muss.
Unklare Aussage: „Die Raumsuche soll schnell sein.“
Prüfbare Fassung:
- Funktionale Anforderung: Eine angemeldete Person kann nach freien Räumen für Datum und Zeitraum suchen.
- Nichtfunktionale Anforderung: Die Ergebnisliste wird unter den festgelegten Testbedingungen innerhalb von zwei Sekunden angezeigt.
- Akzeptanzkriterium: Wenn eine angemeldete Person einen gültigen Zeitraum eingibt, erscheinen innerhalb von zwei Sekunden nur Räume, die während des gesamten Zeitraums frei sind.
Das Kriterium verbindet Ausgangslage, Handlung und erwartbares Ergebnis. Dadurch kann das Team einen passenden Test entwickeln.
Gute Anforderungen sind eindeutig, für das Projekt relevant und prüfbar. Vor der Umsetzung sollte das Team außerdem Konflikte klären: Eine besonders aufwendige Funktion kann etwa mit einer knappen Frist oder begrenzten Ressourcen kollidieren.
Vorgehensmodelle passend zum Projekt wählen
Ein Vorgehensmodell ordnet Arbeitsschritte, Prüfungen und Zusammenarbeit. Kein Modell ist für jedes Projekt automatisch das beste. Die Wahl hängt unter anderem von Umfang, Komplexität, Risiko, Ressourcen, Team, Frist und Budget ab.
Lineares Vorgehen
Beim Wasserfallmodell folgen die Phasen grundsätzlich aufeinander. Eine Phase soll weitgehend abgeschlossen sein, bevor die nächste beginnt. Das schafft eine klare Reihenfolge, macht späte Änderungen aber häufig teuer und zeitaufwendig.
Das V-Modell ist ebenfalls linear, verknüpft Entwicklungsschritte jedoch systematisch mit passenden Testschritten. Dadurch sollen Probleme früher erkennbar werden. Rücksprünge bleiben trotzdem aufwendig.
Iteratives Vorgehen
Bei einem iterativen Modell entsteht die Software in wiederholten Zyklen. Jede Iteration ergänzt oder verbessert einen Teil des Produkts.
Agile Entwicklung zerlegt größere Vorhaben häufig in kurze Arbeitsabschnitte. Kleine, nutzbare Teile werden früh bereitgestellt oder vorgeführt. Rückmeldungen fließen in spätere Schritte ein.
DevOps verbindet Entwicklung und IT-Betrieb enger. Automatisierte Tests, Überwachung sowie Continuous Integration und Continuous Delivery beziehungsweise Deployment unterstützen kleine, häufige Änderungen.
Zwei Projekte benötigen unterschiedliche Entscheidungen:
- Für eine kleine Software mit stabilen, vollständig bekannten Anforderungen kann ein lineares Vorgehen übersichtlich sein.
- Bei einer neuen App, deren Bedienkonzept mit Nutzenden erprobt werden muss, spricht viel für kurze Iterationen. Das Team kann früh einen kleinen Funktionsumfang testen und aus Rückmeldungen lernen.
Die Begründung ist wichtiger als das Etikett: Entscheidend ist, ob das Vorgehen mit Unsicherheit, Risiko und Änderungsbedarf des Projekts umgehen kann.
Qualität entsteht durch nachvollziehbare Zusammenarbeit
Softwarequalität lässt sich nicht durch einen einzigen Abschlusstest garantieren. Sie wird während des gesamten Entwicklungsprozesses aufgebaut und überprüft.
Versionen und Reviews
Eine Versionsverwaltung zeichnet Änderungen am Quellcode auf. Teammitglieder können dadurch Beiträge zuordnen, Entwicklungsstände vergleichen und Änderungen zusammenführen.
Ein Review ist eine fachliche Prüfung durch andere Teammitglieder. Dabei lassen sich beispielsweise unklare Lösungen, mögliche Fehler oder Abweichungen von Vereinbarungen erkennen, bevor eine Änderung übernommen wird.
Komponenten testen
Ein Komponententest, häufig auch Unit-Test genannt, prüft einen kleinen, abgegrenzten Teil der Software. Für eine Buchungsfunktion kann ein Test etwa kontrollieren, ob ein bereits belegter Zeitraum tatsächlich abgelehnt wird.
Weitere Tests prüfen das Zusammenspiel mehrerer Teile oder eine vollständige Funktion aus Sicht der Nutzenden. Automatisierte Tests können nach Änderungen erneut ausgeführt werden und dadurch unbeabsichtigte Nebenwirkungen sichtbar machen.
Refactoring
Refactoring
Refactoring bedeutet, die innere Struktur von Code gezielt zu verbessern, ohne sein vorgesehenes äußeres Verhalten zu verändern. Ziele können bessere Verständlichkeit, Wartbarkeit oder Wiederverwendbarkeit sein.
Ein Refactoring gilt nicht allein deshalb als gelungen, weil der neue Code kürzer aussieht. Bestehende Tests müssen weiterhin bestehen, und die behauptete Qualitätsverbesserung sollte nachvollziehbar begründet werden.
Mehrere Programmteile enthalten dieselbe Prüfung für Zeitüberschneidungen. Das Team fasst sie in einer klar benannten Funktion zusammen.
- Vor der Änderung führt es die vorhandenen Komponententests aus.
- Es speichert die Umstrukturierung als nachvollziehbare Version.
- Ein anderes Teammitglied prüft die Änderung im Review.
- Danach werden die Tests erneut ausgeführt.
Bestehen die Tests weiterhin, gibt es einen wichtigen Hinweis darauf, dass das vorgesehene Verhalten erhalten blieb. Die bessere Struktur muss zusätzlich am Code begründet werden.
Anforderung und Akzeptanzkriterium sagen, was erreicht werden soll. Versionen dokumentieren Änderungen. Reviews und Tests liefern Nachweise. Refactoring verbessert die innere Struktur unter Erhalt des vorgesehenen Verhaltens.
Werkzeuge und Rollen sinnvoll einordnen
Softwareprojekte verteilen Aufgaben häufig auf mehrere Rollen. Programmiererinnen und Programmierer setzen klar umrissene Aufgaben in Code um. Softwareentwicklerinnen und Softwareentwickler entwerfen, implementieren und testen Software. Softwareingenieurinnen und Softwareingenieure betrachten oft zusätzlich das Zusammenspiel größerer Systeme.
Diese Abgrenzungen sind keine allgemeingültige Berufsnorm. Zuständigkeiten und Bezeichnungen überschneiden sich und unterscheiden sich zwischen Organisationen.
Typische Werkzeuggruppen unterstützen verschiedene Tätigkeiten:
- Entwicklungsumgebungen helfen beim Bearbeiten, Übersetzen und Debuggen von Code.
- Versionsverwaltung verfolgt Änderungen und unterstützt die Zusammenarbeit.
- CI/CD-Werkzeuge automatisieren Teile von Tests und Bereitstellung.
- Paketmanager verwalten benötigte Abhängigkeiten.
- Statische Codeanalyse untersucht Quellcode auf bestimmte Fehler und Qualitätsprobleme, ohne ihn dafür vollständig ausführen zu müssen.
- Projektmanagement-Werkzeuge unterstützen Planung und Aufgabenverfolgung.
Automatisierung nimmt dem Team einzelne wiederkehrende Arbeiten ab. Verantwortung für Anforderungen, Entwurf, Prüfung und Folgen einer Änderung bleibt dennoch bestehen.
Vertiefung: KI als Werkzeug
KI-Werkzeuge können Codevorschläge erzeugen, Tests vorbereiten, Code zwischen Programmiersprachen übertragen oder Auffälligkeiten in Betriebsdaten suchen. Ein Vorschlag ist aber noch kein Qualitätsnachweis.
Menschen müssen insbesondere prüfen:
- Erfüllt der Code die tatsächliche Anforderung?
- Ist er sicher und im vorgesehenen Kontext zuverlässig?
- Sind erzeugte Tests aussagekräftig und eindeutig?
- Passt die Änderung zur Architektur und zu anderen Komponenten?
- Ist sie dokumentiert und langfristig wartbar?
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- Softwareentwicklung
- Ausgangspunkt: Bedürfnisse und Ziele
- Planung: Anforderungen und Akzeptanzkriterien
- Umsetzung: Design und Implementierung
- Qualität: Reviews, Tests und Refactoring
- Zusammenarbeit: Rollen, Versionen und Dokumentation
- Vorgehen: linear, iterativ oder passend kombiniert
- Betrieb: Bereitstellung, Überwachung und Wartung
- Unterstützung: Automatisierung und geprüfte KI-Werkzeuge
Softwareentwicklung verbindet technische Umsetzung mit verständlichen Anforderungen, Zusammenarbeit und fortlaufender Prüfung. Ein gutes Ergebnis entsteht nicht nur durch lauffähigen Code, sondern durch ein begründetes Vorgehen und überprüfbare Qualität.
Abschluss-Check
Prüfe dich zum Schluss: Kannst du für eine eigene Softwareidee ein Bedürfnis, eine funktionale Anforderung, ein Akzeptanzkriterium, ein begründetes Vorgehensmodell und einen passenden Qualitätsnachweis formulieren? Dann kannst du den Kernweg der Softwareentwicklung auf ein neues Projekt übertragen.
Mit Google fortfahren