Sie sind auf Seite 1von 2

Lehrstuhl für Angewandte Informatik I Sommersemester 2018

Prof. Dr. Bernhard Westfechtel 13.04.2018


Nikita Dümmel

Software Engineering I
Übungsblatt 2

Abgabe am 20.04.2018, 12:00 Uhr

Aufgabe 2.1 (Requirements Engineering)


Gegeben ist die folgende narrative Dokumentation aus dem Szenario App-Entwicklung für einen
Online-Shop:

Eine Softwarefirma soll eine App entwickeln, mit der in einem Online-Shop einge-
kauft werden kann. Der initiale Artikelbestand soll aus einem in digitalisierter Form
vorliegenden Warenkatalog extrahiert werden.
Die App soll folgende Funktionen bieten: Eine Ware kann im Warenkorb abgelegt
werden. Der/die Einkaufende kann eine Ware aus dem Warenkorb löschen oder
die Stückzahl verändern. Mit dem Warenkorb kann man zur Kasse gehen, eine
Rechnungs- und Lieferadresse angeben und damit den Einkauf abschließen. Bis zu
fünf Stunden nach Abschluss des Einkaufs kann man kostenfrei die Bestellung stor-
nieren. Danach fallen Versandkosten an. Ist die Bestellung versendet, kann man über
die App die Paketverfolgung des Paketdienstleisters starten, um zu sehen wo sich die
Bestellung befindet.
Die App soll auch das Zurücksenden von Einkäufen unterstützen. Dabei wird ein
auf dem Paket befindlicher QR-Code mit einer frei verfügbaren App gescannt oder
die Auftragsnummer eingegeben. Nach dem Scan werden dem Kunden automatisch
Retoure-Papiere erstellt, die dieser ausdrucken und zusammen mit dem Paket beim
Paketdienstleister zurückgeben kann. Das Lieferdatum der Ware darf dabei jedoch
nicht länger als zwei Wochen zurückliegen.

Das Projekt befindet sich in der Phase Requirements Engineering. Während der Erstellung
der Anforderungsspezifikation werden Ihrem Team u.a. die folgenden Aufgaben zugewiesen:

(a) Geben Sie die Stakeholder und die im Text beschriebenen Funktionen des Systems
an. Orientieren Sie sich dabei an Folie 6 des Vorlesungsskripts des Kapitels Requirements
Engineering.
(b) Geben Sie ein Glossar für die Begriffe Warenkorb“, Ware“ und Bestellung“ an. (vgl.
” ” ”
Folie 22)
(c) Bewerten Sie die Funktion Zurücksenden eines Einkaufs“ nach den Qualitätskriterien

für Anforderungen. (vgl. Folie 15)
(d) Attributieren Sie die Anforderung Einkauf abschließen“ wie auf Folie 23 dargestellt.

Der Bezeichner sei dabei F30.

Abgabe: Geben Sie Ihre Lösung im Briefkasten neben dem Sekretariat AI1 (Raum 2.24) ab.
Vergessen Sie nicht Team-Nummer und beteiligte Mitglieder anzugeben.
(2+3+4+2 Punkte)

1
Aufgabe 2.2 (JUnit-Tests als Spezifikationen)
JUnit 1 ist ein Test-Rahmenwerk für Java. Ein Testfall ist eine Klasse mit Testmethoden, in denen
bestimmte Zusicherungen (Assertions) über das erwartete Verhalten eines Programms gemacht
werden. Schlägt eine Zusicherung fehl, gilt der Testfall als nicht bestanden. JUnit-Testmethoden
werden mit @Test annotiert. In Eclipse können Sie einen JUnit-Testfall starten, indem Sie rechts
auf die Testklasse klicken und Run As -> JUnit Test wählen.
In dieser Veranstaltung werden JUnit-Tests zur Spezifikation des erwarteten Ergebnisses zu
lösender Programmieraufgaben verwendet. Sie bekommen eine (fehlerhafte / zu ergänzende)
Basis-Implementierung sowie einige (zunächst fehlschlagende) JUnit-Tests vorgegeben. Ihre Auf-
gabe ist es, die Implementierung so zu vervollständigen, dass die Testfälle erfolgreich sind. Die
Testfälle selbst dürfen dabei nicht modifiziert werden.
Checken Sie das Java-Projekt se18.uebung2.teamXX aus Ihrem Team-Repository (s. Übungs-
blatt 1) aus. Im Quelltextverzeichnis src befindet sich bereits die Klasse VerketteteListe<T>,
die das Interface java.util.List<T> aus der Java-Standardbibliothek durch eine einfach ver-
kettete Liste implementiert. Die folgenden Methodenrümpfe sind allerdings noch nicht definiert:

(a) public void add(int index, T e): Einfügen eines neuen Elements e an Position index.
(b) public boolean contains(Object o): Enthaltenseins-Prüfung mit gegebenem o.
(c) public int indexOf(Object o): Gibt den ersten Index zurück, den das übergebene Ele-
ment o in der Liste hat.
(d) public T remove(int index): Löscht das Element an der Position index aus der Liste.
(e) public T set(int index, T element): Ersetzt das Element an der Position index durch
ein neues element.

Ihre Aufgabe ist es, die bisherige Implementierung an den mit TODO markierten Stellen so zu
ergänzen, dass der Testfall VerketteteListeTest bestanden wird. Dazu sind ausschließlich
Änderungen in den genannten Methoden notwendig; Sie können davon ausgehen, dass die be-
reits vorhandenen Methoden korrekt implementiert sind. Beachten Sie bei Ihren Ergänzungen
außerdem die Spezifikation der jeweiligen Methoden in der Javadoc-Dokumentation der Schnitt-
stelle List, insbesondere die Angaben bezüglich Rückgabewerte und Ausnahmebehandlung.
Abgabe: Committen Sie Ihren Quelltext zurück ins Repository.
Hinweis: Es ist erlaubt (und zum Zwecke der Teamarbeit auch empfohlen), Zwischenstände
Ihrer Lösungen zu Programmieraufgaben ins Repository einzuchecken. Zur Korrektur wird die
neueste Revision Ihres Projekts im Repository zum Abgabezeitpunkt berücksichtigt. Um sicher
zu gehen, kennzeichnen Sie Ihre endgültige Lösung durch die Commit-Nachricht endgültige

Abgabe Übung 2.2“.
(5×2 = 10 Punkte)

1
https://github.com/junit-team/junit/wiki

Das könnte Ihnen auch gefallen