====== LU01.A10 - Anforderungen deklarativ formulieren ====== Formulieren Sie Schritt-für-Schritt-Anforderungen so um, dass sie den gewünschten **Endzustand** beschreiben – und in der Gegenrichtung deklarative Anforderungen in eine konkrete Handlungsabfolge. ===== Ausgangslage ===== Anforderungen werden im Betrieb oft als Handlungsanleitung formuliert: „Zuerst öffnest du …, dann prüfst du …, dann schreibst du …". Das ist **imperativ**. Wer so schreibt, legt die Lösung bereits fest – und verbaut sich möglicherweise die bessere. Eine **deklarative** Anforderung beschreibt stattdessen das Ergebnis: Woran erkennt man, dass die Aufgabe erledigt ist? Sie lässt offen, wie das System dorthin gelangt. **Faustregel** Deklarative Anforderungen enthalten keine Verben wie „durchlaufen", „öffnen", „zwischenspeichern", „hochzählen". Sie enthalten Sätze der Form: //„… enthält genau …"//, //„… ist sortiert nach …"//, //„… gilt für alle …"//. ===== Teil A: imperativ → deklarativ ===== Formulieren Sie jede der folgenden Anforderungen in **ein bis zwei Sätzen** als Beschreibung des Endzustands. Nennen Sie ausserdem, welche Wörter der Vorlage typisch imperativ waren. - „Öffne die Datei ''kunden.csv''. Lies sie Zeile für Zeile ein. Prüfe bei jeder Zeile, ob die Postleitzahl mit einer 8 beginnt. Wenn ja, hänge die Zeile an eine neue Datei ''zuerich.csv'' an. Schliesse am Schluss beide Dateien." - „Setze einen Zähler auf 0. Gehe alle Bestellungen durch. Wenn eine Bestellung mehr als 500 Franken kostet, erhöhe den Zähler um 1. Gib den Zähler am Ende aus." - „Nimm die erste Note. Merke sie dir als Maximum. Gehe alle weiteren Noten durch und ersetze das Maximum, sobald du eine grössere Note findest. Gib zum Schluss das Maximum aus." - „Lege eine leere Liste an. Durchlaufe alle Lernenden. Wenn ein Lernender in allen drei Fächern mindestens eine 4 hat, füge seinen Namen der Liste hinzu. Sortiere die Liste am Ende alphabetisch." - „Warte, bis die Datei eingetroffen ist. Prüfe die Dateigrösse. Wenn sie grösser als 0 ist, verschiebe sie in den Ordner ''verarbeitet''. Andernfalls verschiebe sie nach ''fehler'' und schreibe einen Eintrag ins Logfile." ===== Teil B: deklarativ → imperativ ===== Hier ist die Anforderung bereits deklarativ formuliert. Beschreiben Sie in nummerierten Schritten, was ein Programm konkret tun muss, um diesen Endzustand herzustellen. - „Die Ausgabeliste enthält für jede Abteilung genau einen Eintrag mit dem Namen der Abteilung und der Anzahl Mitarbeitender, absteigend nach Anzahl sortiert." - „Nach dem Import gibt es keine zwei Kundendatensätze mit derselben E-Mail-Adresse. Bei Dubletten bleibt der zuletzt geänderte Datensatz erhalten." ===== Teil C: Reflexion ===== - Bei welcher der fünf Anforderungen aus Teil A war die Umformulierung am schwierigsten? Woran lag das? - Anforderung 5 aus Teil A enthält etwas, das sich **nicht** rein deklarativ als Endzustand beschreiben lässt. Was ist es, und warum? - Welchen Vorteil hat eine deklarative Anforderung für die Person, die das Programm später schreibt? Und welchen Nachteil? ==== Beispiel zur Orientierung ==== ^ Imperativ (Vorlage) ^ Deklarativ (Umformulierung) ^ | „Gehe alle Artikel durch, addiere Menge mal Preis auf eine Summenvariable und gib sie am Schluss aus." | „Der ausgewiesene Lagerwert entspricht der Summe aus Menge mal Preis über alle Artikel." | Typisch imperative Wörter in der Vorlage: //„gehe durch", „addiere auf", „am Schluss"// – sie beschreiben die Reihenfolge der Arbeitsschritte, nicht das Ergebnis. ===== Abgabe ===== Geben Sie ein Dokument mit den Teilen A, B und C in Moodle ab. ---- {{tag>M323-LU01 M323-B1I M323-B1A}} [[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi