Softwareentwicklung: Prozess, Modelle und Qualität
Du lernst, wie Software entsteht, wie du Anforderungen prüfbar formulierst und wie Vorgehensmodelle und Qualitätsmaßnahmen die Entwicklung unterstützen.
Kurz gesagt
Softwareentwicklung reicht von der Planung über Entwurf, Programmierung und Tests bis zur Bereitstellung und Wartung. Vorgehensmodelle ordnen diese Arbeit; Anforderungen legen fest, was das Programm leisten soll.
Software sind Programme, die ein Computer ausführen kann. Bei ihrer Entwicklung reicht es nicht, Programmtext zu schreiben: Ein Team muss auch Anforderungen klären, Ergebnisse prüfen und spätere Änderungen betreuen. Du lernst, diese Aufgaben zu unterscheiden und ein passendes Vorgehen zu begründen.
Deine Lernziele
Eine Phase ist ein Arbeitsabschnitt mit einem bestimmten Schwerpunkt. Eine mögliche Gliederung der Softwareentwicklung umfasst sieben Phasen. Teams können sie unterschiedlich organisieren; die Gliederung schreibt noch kein bestimmtes Vorgehensmodell vor.
In der Planung legt das Team Ziele und Umfang fest: Welches Problem soll das Programm lösen, und was gehört zum Projekt? In der Analyse sammelt und untersucht es Anforderungen, also Vorgaben an das Programm. Beim Entwurf plant es den Aufbau, etwa Bildschirmanzeigen und die Speicherung von Daten. Bei der Programmierung schreibt es Code, also Anweisungen in einer Programmiersprache.
Beim Test vergleicht das Team das tatsächliche Verhalten mit dem erwarteten Verhalten. Die Bereitstellung macht das Programm für seine vorgesehenen Nutzer zugänglich. Zur Wartung gehören Arbeiten nach der Bereitstellung, etwa Fehlerkorrekturen, Anpassungen und das Prüfen von Updates, also neuen Programmständen.
Tests können beginnen, sobald ein ausführbarer Teil vorliegt. In vielen Vorgehensmodellen begleiten sie die weitere Entwicklung. Die Bezeichnung „Testphase“ bedeutet deshalb nicht, dass sämtliche Tests erst nach der gesamten Programmierung stattfinden.
| Phase | Erfundene Theaterkostüm-Liste |
|---|---|
| Planung | Ziel festlegen: Kostüme für eine Aufführung überblicken. |
| Analyse | Klären, welche Angaben zu jedem Kostüm gebraucht werden. |
| Entwurf | Aufbau der Eingabemaske und Speicherung der Angaben planen. |
| Programmierung | Das Eingeben und Speichern der Kostüme programmieren. |
| Test | Prüfen, ob ein eingegebenes Kostüm wie erwartet gespeichert wird. |
| Bereitstellung | Das Programm für die vorgesehenen Nutzer zugänglich machen. |
| Wartung | Einen später gemeldeten Speicherfehler beheben und die Korrektur testen. |
Merke: Die Phasen benennen Aufgaben. Das Vorgehensmodell bestimmt, wie das Team diese Aufgaben zeitlich organisiert.
Teste dich
Eine Anforderung beschreibt, was ein Programm leisten oder welche Eigenschaft es besitzen soll. Eine funktionale Anforderung legt ein gewünschtes Verhalten oder Ergebnis fest, etwa das Speichern eines Eintrags. Eine Qualitätsanforderung beschreibt eine weitere geforderte Eigenschaft, etwa die Geschwindigkeit einer Anzeige. Zeitvorgaben zählen wir hier zu den Qualitätsanforderungen; manche Einteilungen führen Leistungsanforderungen auch als eigene Art auf.
Ein Akzeptanzkriterium legt fest, welche Bedingung erfüllt sein muss, damit eine Anforderung als umgesetzt angenommen wird. Formuliere dafür die Ausgangslage, die Handlung und das erwartete Ergebnis möglichst genau. Bei einer Zeitvorgabe gehören auch die vereinbarten Prüfbedingungen dazu, etwa Datenmenge und Testgerät.
Wörter wie „schnell“ oder „übersichtlich“ legen für sich genommen keinen eindeutigen Maßstab fest. „Bei 20 Einträgen erscheint die vollständige Liste auf dem vereinbarten Testgerät innerhalb von 2 Sekunden nach dem Öffnen“ ist dagegen überprüfbar. Die Zeitgrenze ist eine frei vereinbarte Beispielvorgabe, kein allgemeiner Qualitätsstandard. „Wir testen die Anzeige vor der Freigabe“ nennt eine Tätigkeit, aber noch keine Bedingung für das Bestehen.
Sicherheitsanforderungen können beide Arten betreffen. „Das Programm verweigert den Zugriff ohne gültige Anmeldung“ beschreibt ein Verhalten und ist funktional. Die allgemein geforderte Vertraulichkeit gespeicherter Inhalte betrifft eine Qualität: Unbefugte sollen die Inhalte nicht erfahren. Entscheidend ist die konkrete Aussage, nicht das Wort „Sicherheit“.
Akzeptanzkriterium
Eine festgelegte Bedingung, die erfüllt sein muss, damit eine Anforderung oder ein Arbeitsergebnis angenommen wird.
Beispiel: Anforderungen an eine erfundene Rezeptliste
- 1Funktionale Anforderung: Der Nutzer kann ein Rezept mit einem Titel speichern.
- 2Akzeptanzkriterium: Die Liste ist leer. Der Nutzer gibt „Gemüsetopf“ als Titel ein und wählt „Speichern“. Danach enthält die Liste einen Eintrag mit diesem Titel.
- 3Qualitätsanforderung: Die gespeicherte Rezeptliste soll unter vereinbarten Bedingungen innerhalb von 2 Sekunden erscheinen.
- 4Akzeptanzkriterium: Auf dem vereinbarten Testgerät sind 20 Rezepte gespeichert. Nach dem Öffnen der Liste sind innerhalb von 2 Sekunden alle 20 Titel sichtbar.
Teste dich
Ein Vorgehensmodell ordnet die Arbeit an einem Softwareprojekt. Das Wasserfallmodell ist linear: Die Phasen bilden eine feste Folge, und eine Phase wird abgeschlossen, bevor die nächste beginnt. Das erleichtert es, Arbeiten und Übergaben vorab zu planen. Spätere Änderungen können jedoch aufwendig sein, wenn dafür bereits abgeschlossene Arbeit überarbeitet werden muss.
Das Wasserfallmodell kann vorteilhaft sein, wenn Ziele und Anforderungen gut geklärt und voraussichtlich stabil sind. Es passt außerdem zu einer Zusammenarbeit, bei der Auftraggeber Ergebnisse vor allem an vereinbarten größeren Zwischenständen prüfen. Solche Zwischenstände heißen Meilensteine. Das Modell verhindert spätere Änderungen nicht; es macht sie aber häufig weniger flexibel.
Iterativ bedeutet, Arbeitsschritte wiederholt zu durchlaufen. Im hier verglichenen agilen Vorgehen entwickelt das Team kleine nutzbare Teile, lässt sie prüfen und berücksichtigt Rückmeldungen bei der weiteren Planung. Anforderungen können sich dabei weiterentwickeln. Dafür müssen Auftraggeber zu häufigem Austausch bereit und erreichbar sein.
Agile Arbeit braucht ebenfalls Planung, Entwurf und Tests. Diese Aufgaben werden wiederholt und können für verschiedene Teile zeitlich nebeneinander stattfinden. Nicht jedes agile Vorgehen nutzt feste Arbeitszeiträume: Manche organisieren die Arbeit als fortlaufenden Fluss. Entscheidend für diesen Vergleich sind kleine Entwicklungsschritte und regelmäßige Rückmeldungen.
| Gesichtspunkt | Wasserfallmodell | Iteratives agiles Vorgehen |
|---|---|---|
| Arbeitsfolge | Phasen werden nacheinander abgeschlossen. | Arbeitsschritte werden für kleine Teile wiederholt. |
| Rückmeldungen | Vor allem an größeren vereinbarten Zwischenständen. | Häufig zu kleinen nutzbaren Ergebnissen. |
| Änderungen | Können Nacharbeit an abgeschlossenen Phasen erfordern. | Können in die weitere Planung einfließen. |
| Günstige Bedingungen | Gut geklärte, stabile Anforderungen. | Veränderliche Anforderungen und erreichbare Auftraggeber. |
Merke: Begründe die Modellwahl mit den Anforderungen und der Zusammenarbeit. Kein Modell passt gleichermaßen zu jedem Projekt.
Teste dich
Versionsverwaltung zeichnet gespeicherte Änderungen am Code und ihre Urheber auf. Ein Team kann frühere Programmstände vergleichen und wiederherstellen. Das hilft auch, widersprüchliche Änderungen mehrerer Entwickler zu erkennen und geordnet zusammenzuführen. Solche Konflikte verschwinden dadurch nicht von selbst; das Team muss sie lösen.
Tests vergleichen tatsächliches und erwartetes Verhalten. Neben üblichen Eingaben sind Grenzfälle wichtig, also Eingaben am Rand des vorgesehenen Bereichs, sowie ungültige Eingaben und unerwartete Handlungen. Ein Test kann zum Beispiel prüfen, wie das Programm auf ein leeres Pflichtfeld reagiert. Bestandene Tests zeigen das Ergebnis der geprüften Fälle. Sie beweisen nicht, dass jedes mögliche Verhalten fehlerfrei ist.
Bei einem Code-Review prüft ein anderer Entwickler den Code. Er kann beispielsweise Verständlichkeit, Aufbau, passende Namen und vorhandene Tests untersuchen. Ein Review ergänzt die Ausführung von Tests: Das Lesen des Codes kann andere Probleme sichtbar machen als ein Testlauf. Auch ein Review garantiert keine vollständige Fehlerfreiheit.
Refactoring bezeichnet den schrittweisen Umbau der inneren Struktur, bei dem das beobachtbare Verhalten erhalten bleibt. Beobachtbar ist, was das Programm bei gleichen Eingaben unter gleichen Bedingungen nach außen tut, etwa welche Ergebnisse oder Meldungen es liefert. Ein solcher verhaltenserhaltender Umbau soll den Code verständlicher und leichter änderbar machen. Eine zusätzliche Funktion gehört dagegen nicht zu diesem Umbau, weil sie das Verhalten erweitert.
Kleine Änderungen und wiederholte Tests unterstützen den Umbau. Eine einzelne unveränderte Ausgabe beweist aber noch nicht, dass sämtliches Verhalten gleich geblieben ist. Vorhandene Tests können auch nach dem Hinzufügen einer Funktion weiterhin bestehen. Ihr Bestehen macht aus der Erweiterung keinen verhaltenserhaltenden Umbau.
Beispiel: Erfundene Materialliste überarbeiten
- 1Ein Entwickler ersetzt im Code den unklaren Namen „x“ durch „anzahlStifte“ und passt alle zugehörigen Stellen an.
- 2Der Name bezeichnet weiterhin dieselbe gespeicherte Anzahl. Ausgaben, Eingaben und Fehlermeldungen sollen unverändert bleiben.
- 3Tests vergleichen ausgewählte erwartete Ergebnisse vor und nach der Änderung. Ein anderer Entwickler prüft die Umbenennung im Review.
- 4Der Umbau soll den Code verständlicher machen. Eine neue Funktion, etwa das Bestellen weiterer Stifte, ist damit nicht hinzugekommen.
Merke: Versionsverwaltung macht Änderungen nachvollziehbar. Tests prüfen ausgewählte Verhaltensfälle. Reviews untersuchen den Code. Ein verhaltenserhaltender Umbau verbessert seine innere Struktur.
Teste dich
Alles auf einen Blick
Softwareentwicklung
Eine mögliche Gliederung reicht von Planung und Analyse bis zu Bereitstellung und Wartung; Tests können die Entwicklung begleiten.
Funktionale Anforderungen beschreiben Verhalten, Qualitätsanforderungen weitere geforderte Eigenschaften.
Klare Bedingungen und erwartete Ergebnisse machen die Annahme einer Umsetzung überprüfbar.
Das Wasserfallmodell erleichtert bei stabilen Anforderungen die Vorausplanung; iteratives agiles Vorgehen nutzt häufige Rückmeldungen zu kleinen Ergebnissen.
Versionsverwaltung, Tests, Reviews und verhaltenserhaltender Umbau erfüllen unterschiedliche Aufgaben und ergänzen einander.
Eine erfundene Instrumentenliste prüfbar beschreiben
- 1Aufgabe: Die Vorgabe „Die Instrumentenliste soll neue Instrumente aufnehmen und schnell erscheinen“ soll präzisiert werden.
- 2Trenne die Aussagen: Das Aufnehmen eines Instruments beschreibt eine Funktion. Die Anzeigezeit beschreibt eine Qualität.
- 3Formuliere die funktionale Anforderung: Der Nutzer kann ein Instrument mit einer Bezeichnung in der Liste speichern.
- 4Ergänze ein Akzeptanzkriterium: Bei leerer Liste gibt der Nutzer „Trommel“ ein und wählt „Speichern“. Danach enthält die Liste einen Eintrag mit der Bezeichnung „Trommel“.
- 5Vereinbare die Qualitätsanforderung: Auf einem festgelegten Testgerät soll eine Liste mit 30 gespeicherten Instrumenten innerhalb von 2 Sekunden nach dem Öffnen vollständig sichtbar sein.
- 6Leite die Prüfung ab: Bereite die 30 Einträge auf dem Testgerät vor, öffne die Liste und miss die Zeit bis zur vollständigen Anzeige. Das Kriterium ist erfüllt, wenn sie höchstens 2 Sekunden beträgt.
Fehler finden
Fehler in Zeile 4Die zusätzliche Anzeige erweitert das beobachtbare Verhalten. Bestandene Tests für die Wortzahl ändern daran nichts. Richtig: Die Änderung ist eine Funktionserweiterung.
Lückentext
Ein Entwickler schreibt ausführbare Anweisungen für eine bereits entworfene Anzeige. Diese Tätigkeit gehört zur . Für eine Suchanzeige sind Testgerät und Datenmenge festgelegt; die Treffer sollen innerhalb von 2 Sekunden erscheinen. Diese Zeitvorgabe ist hier eine . Ein Werkzeug zeichnet gespeicherte Codeänderungen auf und ermöglicht das Wiederherstellen früherer Stände. Es dient der .