Informatik

Softwareentwicklung: Prozess, Modelle und Qualität

Softwareentwicklung: Prozess, Modelle und Qualität
Softwareentwicklung: Prozess, Modelle und Qualität
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

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.

Deine Lernziele

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.

Definition

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.

Gut zu wissen

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.

Teste dich
Frage 1 von 2LeichtWelche Tätigkeit gehört zur Softwareentwicklung, aber nicht zum bloßen Schreiben von Code?
Lösung: Anforderungen mit Nutzenden klären — Softwareentwicklung verbindet Anforderungsanalyse, Entwurf, Implementierung, Tests, Bereitstellung und Wartung.
Frage 2 von 2MittelEine Anwendung funktioniert technisch, doch die Bedienung ist so verwirrend, dass viele Menschen falsche Eingaben machen. Was zeigt dieses Beispiel?
Lösung: Technische Funktion allein garantiert noch keine gute Software. — Gute Software muss nicht nur ausführbar sein, sondern ihre vorgesehenen Aufgaben im Nutzungskontext zuverlässig und verständlich erfüllen.
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.

  1. Planung: Ziel, Umfang, Ressourcen und Rahmenbedingungen werden geklärt.
  2. Analyse: Das Team untersucht Bedürfnisse und leitet Anforderungen ab.
  3. Design: Architektur, Komponenten, Schnittstellen und Bedienung werden entworfen.
  4. Implementierung: Der Entwurf wird in Quellcode umgesetzt.
  5. Testen: Fehler, Sicherheitsprobleme und Abweichungen von Anforderungen werden gesucht.
  6. Bereitstellung: Die Software wird in Betrieb genommen und für die vorgesehenen Nutzenden zugänglich gemacht.
  7. 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.

Beispiel

Für die Raumreservierungs-App könnte der Weg so aussehen:

  1. Die Schule legt fest, dass Doppelbuchungen verhindert werden sollen.
  2. Das Team klärt, wer Räume suchen, buchen oder Buchungen aufheben darf.
  3. Es entwirft eine Oberfläche und eine Komponente zur Prüfung freier Zeiten.
  4. Die Funktionen werden programmiert.
  5. Tests prüfen unter anderem gleichzeitige Buchungsversuche.
  6. Eine kleine Gruppe erprobt zunächst eine Betaversion.
  7. 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.

Merke

Softwareentwicklung bildet einen Kreislauf: Rückmeldungen aus Tests und Nutzung können zu neuen Anforderungen, Entwürfen und Änderungen führen.

Lückentext

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 .

Lösungen: Lücke 1: Anforderungen; Lücke 2: Implementierung; Lücke 3: Tests; Lücke 4: Wartung. Anforderungen beschreiben das Ziel, die Implementierung setzt den Entwurf um, Tests prüfen das Ergebnis und die Wartung begleitet die Software nach der Bereitstellung.
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.

Definition

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.“

Definition

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.

Beispiel

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.

Teste dich
Frage 1 von 3LeichtWelche Aussage ist eine funktionale Anforderung?
Lösung: Eine angemeldete Person kann eine eigene Reservierung aufheben. — Eine funktionale Anforderung beschreibt eine ausführbare Funktion der Software.
Frage 2 von 3MittelWelches Akzeptanzkriterium prüft am besten, ob Doppelbuchungen verhindert werden?
Lösung: Liegt für Raum und Zeitraum bereits eine bestätigte Buchung vor, lehnt das System eine zweite Buchung ab und zeigt den Konflikt an. — Das passende Kriterium nennt die Ausgangslage und das erwartete Verhalten bei einem konkreten Buchungsversuch.
Frage 3 von 3SchwerEin Team erhält die Forderung „Die App muss sicher sein“. Was ist der sinnvollste nächste Schritt?
Lösung: Bedrohungen, schützenswerte Daten und überprüfbare Sicherheitsanforderungen konkretisieren. — Erst konkrete Anforderungen ermöglichen begründete Entwurfsentscheidungen und aussagekräftige Tests.
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.

Beispiel

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.

Teste dich
Frage 1 von 2MittelEin Projekt hat unklare Bedienanforderungen und benötigt frühe Rückmeldungen. Welches Vorgehen passt am ehesten?
Lösung: Funktionen schrittweise entwickeln, erproben und anhand der Rückmeldungen überarbeiten — Ein iteratives Vorgehen reduziert Unsicherheit, indem frühe Ergebnisse geprüft und gezielt verbessert werden.
Frage 2 von 2SchwerEin sicherheitskritischer Teil verlangt dokumentierte Prüfungen, während sich die Benutzeroberfläche noch häufig ändert. Welche Entscheidung ist am überzeugendsten?
Lösung: Das Vorgehen nach Risiken begründen und gegebenenfalls stabile Prüfschritte mit iterativen Oberflächenzyklen verbinden. — Vorgehensmodelle können angepasst oder kombiniert werden. Die Projektbedingungen entscheiden, welche Struktur für welchen Teil nötig ist.
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

Definition

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.

Beispiel

Mehrere Programmteile enthalten dieselbe Prüfung für Zeitüberschneidungen. Das Team fasst sie in einer klar benannten Funktion zusammen.

  1. Vor der Änderung führt es die vorhandenen Komponententests aus.
  2. Es speichert die Umstrukturierung als nachvollziehbare Version.
  3. Ein anderes Teammitglied prüft die Änderung im Review.
  4. 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.

Merke

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.

Teste dich
Frage 1 von 3LeichtWozu dient Versionsverwaltung hauptsächlich?
Lösung: Änderungen und Entwicklungsstände nachvollziehbar verwalten — Versionsverwaltung schafft Nachvollziehbarkeit und unterstützt die Zusammenarbeit, ersetzt aber weder Reviews noch Tests.
Frage 2 von 3MittelNach einem Refactoring schlagen frühere Komponententests fehl. Welche Folgerung ist am besten begründet?
Lösung: Das vorgesehene Verhalten könnte verändert worden sein und die Änderung muss untersucht werden. — Fehlgeschlagene Tests sind ein Warnsignal. Team und Testbedingungen müssen klären, ob Code oder Test angepasst werden muss.
Frage 3 von 3SchwerEin Team behauptet, eine Änderung habe die Robustheit verbessert. Welcher Nachweis ist am stärksten?
Lösung: Ein nachvollziehbarer Vergleich zeigt, dass passende Fehlerfälle nach der Änderung korrekt behandelt werden und die übrigen Tests weiter bestehen. — Eine Qualitätsbehauptung benötigt Kriterien und passende Prüfungen, nicht nur einen persönlichen Eindruck.
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?
Teste dich
Frage 1 von 1MittelEine KI erzeugt eine Funktion, die bei drei Beispielen das richtige Ergebnis liefert. Was sollte das Team als Nächstes tun?
Lösung: Anforderung, Randfälle, Sicherheit und Zusammenspiel prüfen und passende Tests ausführen. — KI kann Entwicklungsarbeit unterstützen. Die fachliche und technische Prüfung des Ergebnisses bleibt notwendig.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • 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
Teste dich
Frage 1 von 4LeichtWelche Reihenfolge beschreibt den Kern eines typischen Entwicklungsweges am besten?
Lösung: Bedürfnisse klären, Lösung entwerfen, implementieren, testen, bereitstellen und warten — Die Schritte können sich überlappen oder wiederholen, doch Anforderungen, Entwurf, Umsetzung, Prüfung und Wartung bleiben zentrale Aufgaben.
Frage 2 von 4MittelFür eine neue Funktion lautet die Anforderung: „Eine Lehrkraft kann eine Buchung für einen bestimmten Zeitraum anlegen.“ Was ergänzt die Anforderung am sinnvollsten?
Lösung: Ein Akzeptanzkriterium mit Ausgangslage, Handlung und erwartetem Ergebnis — Akzeptanzkriterien verbinden Anforderungen mit überprüfbarem Verhalten.
Frage 3 von 4MittelEin Projekt besitzt stabile Anforderungen, feste Prüfschritte und nur wenige erwartete Änderungen. Welche Aussage ist vertretbar?
Lösung: Ein lineares Vorgehen kann passen, wenn das Team die geringe Änderungswahrscheinlichkeit begründen kann. — Die Eignung eines Modells hängt von Projektbedingungen ab; kein Modell gewinnt allein durch seinen Namen.
Frage 4 von 4SchwerEin Team soll belegen, dass eine überarbeitete Buchungskomponente besser wartbar ist und weiterhin korrekt arbeitet. Welches Vorgehen liefert den überzeugendsten Nachweis?
Lösung: Änderung versionieren, Strukturverbesserung begründen, Review durchführen und passende Tests vor sowie nach dem Refactoring vergleichen — Versionsverlauf, begründetes Review und wiederholbare Tests verbinden die behauptete Strukturverbesserung mit einem Nachweis über erhaltenes Verhalten.

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.

Passend dazu