Prof. Dr. Gabriele Taentzer Daniel Strüber Philipps-Universität Marburg Fachbereich Mathematik und Informatik Software-Praktikum Sommersemester 13 Version 2.0 6. Juni 2013 Anforderungsbeschreibung: App für kundenorientierte Dienste in einem Ökokisten-Betrieb Einleitung Eine Ökokiste ist ein Kleinunternehmen, das sich auf die Vermarktung und Auslieferung von ökologisch angebauten Lebensmitteln spezialisiert hat. Im Verband Ökokiste e.v. sind etwa 50 solcher Betriebe organisiert, die gemeinsam ein weitreichendes Liefergebiet in Deutschland und Österreich abdecken. Kunden 1 können ein Abonnement abschließen, woraufhin ihnen wöchentlich eine Lieferung mit wechselnden Inhalten zugestellt wird. Zudem können Kunden in einem Webshop einmalige Bestellungen aufgeben. Als Praktikumsaufgabe ist eine Software zu entwickeln, die den Kunden einer Ökokiste Informationen über den Inhalt von gelieferten Kisten liefern soll. Zwei Ziele stehen im Zentrum dieser Aufgabe: Einerseits soll der Abruf von Lieferscheinen auf dem Smartphone den zeitlichen und materiellen Aufwand, der durch den Ausdruck der Lieferscheine auf Papier entsteht, überflüssig machen. Andererseits sollen insbesondere Kunden aus der Gruppe der jungen Menschen mit geringer Koch- Expertise durch Rezeptvorschläge zu einem kreativen und neugierigen Umgang mit frischen und hochwertigen Lebensmitteln animiert werden. Die zu erstellende Applikation Die Funktionalität der zu entwickelnden Software soll zwei inhaltliche Bereiche umfassen: Eine Bestellungsübersicht sowie einen Bereich für Rezeptvorschläge. Bestellungsübersicht Der Kunde soll den Lieferschein zu einer Bestellung auf seinem Smartphone angezeigt bekommen. Um an den Lieferschein zu gelangen, hat er zwei Wege: Das Scannen des auf der Kiste abgedruckten QR-Codes sowie die Navigation durch eine individuelle Lieferungsliste. Der Kunde soll neben der aktuellen auch auf frühere Lieferungen zugreifen können, insbesondere um nachvollziehen zu können, ob eventuelle Reklamationen geklärt wurden (z.b. durch eine Gutschrift). In einer Detailansicht für einzelne Artikel einer Lieferung sollen zusätzliche Informationen zu den Artikeln angezeigt werden, für die in der allgemeinen Lieferübersicht kein Platz ist. Bei Bedarf soll der Kunde an eine Website mit weiterführenden Informationen weitergeleitet werden (ecoinform.de). 1 Personenbezeichnungen in diesem Dokument beziehen sich auf alle Geschlechter.
Rezeptvorschläge Der Kunde soll eine Übersicht von Rezeptvorschlägen erhalten, die entweder einen bestimmten ausgewählten Artikel oder möglichst viele Artikel der aktuellen Lieferung als Zutat enthalten. Der Kunde soll die Auswahl der Rezepte durch unterschiedliche Einstellungen beeinflussen können: o Angabe einer Personenanzahl für die Berechnung der geeigneten Produktmengen (Hier sind komplizierte Fälle denkbar: Was ist zu tun, wenn die gelieferte Menge nicht ausreicht, um die angegebene Portionsanzahl abzudecken?) o Anzeige aller möglichen Rezepte vs. Rezepte, deren Zutaten vollständig im Shop bestellbar sind (insbesondere bei Saisonware) o Anzeige von Rezepten nach im Shop verfügbaren Hauptzutaten vs. nach verfügbaren Haupt- und Nebenzutaten (siehe Glossar) 1.1. Nicht funktionale Anforderungen 1.1.1. Dokumentation Die Anwendung soll gegebenenfalls erweitert und verbessert werden, deshalb sollte der Code gut dokumentiert sein. Nicht nur der Code, auch das Modell muss dafür übersichtlich gestaltet sein und eine Dokumentation enthalten. Ein weiterer Teil der Dokumentation ist die Beschreibung der Funktionen. Die Dokumentation der Funktionen ist auf drei Arten möglich: Sie kann erstens durch ein ausführliches Benutzerhandbuch erfolgen. Darin sollen alle Funktionen beschrieben werden sowie die Anweisungen für die Installation der App enthalten sein. Zweitens ist es möglich, die Funktionen der App durch ein Video zu dokumentieren. Drittens ist es möglich, die App so intuitiv zu gestalten, dass ihre Funktionen vollständig selbsterklärend sind. In diesem Fall soll ein technischer Bericht angefertigt werden, der erklärt, worauf geachtet wurde, um die Funktionen vollständig selbsterklärend zu gestalten. 1.1.2. Bedingungen an die verwendete Software Es soll eine Anwendung für die Android-Plattform 4.0.3 entwickelt werden. Die Software soll auf dem Android-Emulator Android Virtual Device (AVD) und somit auch auf mobilen Geräten, d.h. Smartphones und Tablets, lauffähig sein. Die Anwendung soll relevante Daten intern in einer SQlite- Datenbank vorhalten. Um Bestell- und Rezeptdaten zu erhalten, soll die Applikation mit einem zentralen Datenbankserver kommunizieren. Die serverseitige Umsetzung ist dabei ebenfalls neu zu entwickeln. Die Anwendung soll mit externen Bibliotheken zusammenarbeiten, etwa für das Scannen von Barcodes. 1.1.3. Benutzeroberfläche Die Anwendung soll eine klare Struktur aufweisen, die sich an den zu verwaltenden Daten orientiert, weil dies für den Benutzer aus dem Gegenstandsbereich nachvollziehbar ist. Die Bedienung sollte auch von unerfahrenen Personen schnell erlernt werden können.
1.1.4. Qualitätsanforderungen Die zur Anwendung gehören Artefakte und Dokumente sollen gut strukturiert sein. Der Programmcode soll gut lesbar sein, so dass ein neu dazukommende Entwickler sich rasch im Code zurecht finden würde. 1.1.5. Beispieldaten Vorliegende exemplarische Lieferscheine bilden die Grundlage für die Spezifikation für Eingabedaten in denjenigen Teilen der App, in denen Bestellungs- und Artikeldaten angezeigt werden sollen. Eine Auswahl von Beispielrezepten wird zur Verfügung gestellt. Beide Klassen von Beispieldaten werden in Form von kommaseparierten Textdateien zur Verfügung gestellt. 1.1.6. Entwicklungsstufen Android-Anwendung und Datenbank sollen in drei Entwicklungsstufen erstellt werden. Es ergeben sich es die folgenden drei Meilensteine: 1. Erste Android-Applikation: Anzeige von Bestell - und Rezeptinformationen 2. Realisierung der Datenbankanbindung, elementare Rezeptsuche 3. Scannen von QR-Codes, erweiterte Rezeptsuche Die Entwicklungsstufen, die mit den Meilensteinen verknüpft sind, lassen sich genauer durch die zu realisierenden Anwendungsfälle beschreiben. Folgende Anwendungsfälle sind vorgesehen: Entwicklungsstufe 1: Entwurf von grafischer Oberfläche und Datenschema (ohne Datenbank) 1. Liste aller Bestellungen eines Kunden anzeigen 2. Artikelübersicht einer Bestellung anzeigen 3. Rechnungsdaten einer Bestellung anzeigen 4. Detailansicht für Position (Artikel) der Bestellung anzeigen 5. Liste von Rezeptvorschlägen anzeigen 6. Rezept anzeigen Entwicklungsstufe 2: Datenbankeinbindung und anbindung, Basisfunktionalität 7. Login 8. Abgleich von lokalen und entfernt liegenden Bestellungs- und Rezeptdaten 9. Liste von Rezeptvorschlägen zu einer gegebenen Zutat anzeigen 10. Passende Artikel zu einer Rezeptzutat suchen und anzeigen Entwicklungsstufe 3: Erweiterung der Basisfunktionalität 11. Liste von Rezeptvorschlägen zu einer gegebenen Zutatenliste anzeigen 12. Kistencode einscannen und der zugeordneten Bestellung anzeigen 13. Zu bestellende Artikel in den Warenkorb beim Webshop legen 14. Vertiefende Produktinformationen abrufen 15. Skalieren der Rezeptanzeige
Katalog aller Anwendungsfälle Entwicklungsstufe 1 Anwendungsfall 1: Anzeige einer Liste aller Bestellungen eines Kunden Vorbedingung: In der Applikation wird eine Liste der Bestellungen eines Kunden vorgehalten. Ausführung: Eine grafische Oberfläche wird aufgebaut, die die vorgehaltene Liste in einer geeigneten Form darstellt. Anwendungsfall 2: Artikelübersicht einer Bestellung anzeigen Vorbedingung: Der Benutzer hat in der Bestellungsübersicht eine einzelne Bestellung selektiert. Ausführung: Eine grafische Oberfläche wird aufgebaut, die eine Ansicht für die Inhalte der Bestellung bereitstellt. Bemerkung: Das Layout der grafischen Oberfläche sollte ungefähr an das Layout des vorhandenen Lieferscheins angelehnt sein. Die Anzeige des Lieferscheins in Form des vorhandenen PDF-Dokuments ist möglich. Anwendungsfall 3: Rechnungsdaten einer Bestellung anzeigen Vorbedingung: Der Benutzer ein Bedienelement selektiert, um die Rechnungsdaten für eine Bestellung anzuzeigen. Ausführung: Eine grafische Oberfläche wird aufgebaut, die eine Ansicht für die Inhalte der Bestellung bereitstellt. Bemerkung: Das Layout der grafischen Oberfläche sollte ungefähr an das Layout des vorhandenen Lieferscheins angelehnt sein. Die Anzeige der Rechnungsinformationen Lieferscheins in Form des vorhandenen PDF-Dokuments ist möglich. Anwendungsfall 4: Detailansicht für Position (Artikel) der Bestellung anzeigen Vorbedingung: Der Benutzer ein Bedienelement selektiert, um eine Detailansicht für eine Position (einen Artikel) einer Bestellung zu öffnen. Ausführung: Eine grafische Oberfläche wird aufgebaut, die eine Ansicht für die Position öffnet. Hier werden steht die Möglichkeit bereit, eine Rezeptsuche zu den Artikel öffnen. Anwendungsfall 5: Liste von Rezeptvorschlägen anzeigen Vorbedingung: Der Benutzer hat eine Liste von Rezeptvorschlägen angefordert. Ausführung: Eine grafische Oberfläche der vorgehaltenen Rezepte wird erzeugt.
Bemerkung: Im Rahmen des Meilenteins soll die Listenansicht mit allen vorgehaltenen Rezepten befüllt werden, ohne, dass eine bestimmte Auswahl vorgenommen wird. Als Attrappen für zukünftig zu entwickelnde Funktionalität (Anwendungsfälle 9 und 11) sollen in der Ansicht der Suchergebnisse Bedienelemente zur Verfügung stehen, mit denen sich die Ergebnisse weiter verfeinern lassen: Der Benutzer soll eine Personenanzahl angeben können um Rezepte auszuschließen, für die die vorliegende Menge des Artikels nicht ausreicht. Hauptzutaten im Webshop bestellbar sind. Haupt- und Nebenzutaten im Webshop bestellbar sind. Anwendungsfall 6: Detailansicht für Rezept anzeigen Vorbedingung: Der Benutzer ein Bedienelement selektiert, um eine Detailansicht für ein Rezept zu öffnen. Ausführung: Eine grafische Oberfläche zur Anzeige des Rezepts wird aufgebaut. Entwicklungsstufe 2 Anwendungsfall 7: Login Vorbedingung: Der Benutzer hat eine Aktion angestoßen, um sich in die Applikation einzuloggen. Dazu hat er entweder eine Kombination von Benutzername und Passwort in einen Eingabebildschirm eingegeben, oder aber diese lagen bereits vor und wurden nur bestätigt. Ausführung: Die Login-Informationen werden an die Datenbankschnittstelle kommuniziert, die die Login-Informationen auf Gültigkeit überprüft und das Ergebnis liefert. Nachbedingung: Der Funktionsumfang der Anwendung steht dem Benutzer zur Verfügung. Die Benutzer-ID ist im System hinterlegt. Anwendungsfall 8: Abgleich von lokal und entfernt liegenden Bestellungs- und Rezeptdaten Vorbedingung: Der Applikation ist die Kunden-ID des Benutzers bekannt. Der Abgleich von lokalen und entfernten Daten wurde angestoßen, entweder nach dem Start der Applikation oder aber durch eine selektierte Aktion des Benutzers. Eine Internetverbindung ist vorhanden. Ausführung: Die Applikation schickt eine Anfrage an den Datenbankserver, um an die Datensätze zu gelangen, die sich seit dem letzten Update verändert haben. Der Server liefert die Datensätze. Die aktualisierten Datensätze werden in der lokalen Datenbank der Applikation gespeichert. Nachbedingung: Die aktuellen Daten werden in der Applikation vorgehalten.
Anwendungsfall 9: Liste von Rezeptvorschlägen zu einer gegebenen Zutat anzeigen Vorbedingung: Der Benutzer hat Rezeptvorschläge für einen bestimmten Artikel angefordert, der in einer Bestellung in einer bestimmten Menge vorliegt. Ausführung: Die Datenbank wird nach passenden Rezeptvorschlägen durchsucht. Eine grafische Oberfläche für die Anzeige der Suchergebnisse wird erzeugt. Nachbedingung: Die grafische Oberfläche mit den Suchergebnissen wird angezeigt. Bemerkung: In der Ansicht der Suchergebnisse sollen Bedienelemente zur Verfügung stehen, mit denen sich die Ergebnisse weiter verfeinern lassen: Der Benutzer soll eine Personenanzahl angeben können um Rezepte auszuschließen, für die die vorliegende Menge des Artikels nicht ausreicht. Dabei soll es pro Artikel eine bestimmte Toleranzschwelle geben (Standardwert: 10%). Hauptzutaten im Webshop bestellbar sind. Haupt- und Nebenzutaten im Webshop bestellbar sind. Anwendungsfall 10: Passende Artikel zu einer Rezeptzutat suchen und anzeigen Vorbedingung: Der Benutzer hat in der Detailansicht eines Rezeptes eine Zutat, die ihm noch fehlt, ausgewählt und ein Bedienelement angewählt, um einen passenden Artikel im Sortiment des Webshops zu suchen. Ausführung: Die interne Datenbank wird nach passenden Artikeln durchsucht. Eine grafische Oberfläche zur Anzeige der Treffer wird aufgebaut. Nachbedingung: Die Resultate werden in einer Listenansicht angezeigt. Bei Klick auf ein Element öffnet sich der Browser mit der entsprechenden Seite im Ökokisten-Webshop. Entwicklungsstufe 3 Anwendungsfall 11: Liste von Rezeptvorschlägen zu einer gegebenen Zutatenliste anzeigen Vorbedingung: Der Benutzer hat Rezeptvorschläge für eine Liste von Zutaten angefordert, die jeweils in einer bestimmten Menge vorliegen. Ausführung: Die Datenbank wird nach passenden Rezeptvorschlägen durchsucht. Es werden hierbei Rezepte ermittelt, die möglichst viele Artikel der Liste enthalten. Eine grafische Oberfläche für die Anzeige der Suchergebnisse wird erzeugt. Nachbedingung: Die grafische Oberfläche mit den Suchergebnissen wird angezeigt. Bemerkung: Im Standardfall besteht die gegebene Zutatenliste aus allen Artikeln einer Bestellung. Eine denkbare Erweiterung wäre, dass der Benutzer einzelne Artikel der Bestellung selektieren und diese für die Rezeptsuche übergeben kann. In der Ansicht der Suchergebnisse sollen Bedienelemente zur Verfügung stehen, mit denen sich die Ergebnisse weiter verfeinern lassen:
Der Benutzer soll eine Personenanzahl angeben können um Rezepte auszuschließen, für die die vorliegende Menge des Artikels nicht ausreicht. Dabei soll es pro Artikel eine bestimmte Toleranzschwelle geben (Standardwert: 10%). Hauptzutaten im Webshop bestellbar sind. Haupt- und Nebenzutaten im Webshop bestellbar sind. Anwendungsfall 12: Kistencode einscannen und Inhalt der zugeordneten Bestellung anzeigen Vorbedingung: Der Benutzer befindet sich in einem Bildschirm für das Einscannen eines Kistencodes. Der Barcode-Scanner hat einen Code erkannt. Ausführung: Die Kiste wird in der Datenbank gesucht. Falls sie gefunden wird, öffnet sich die Übersicht der zugehörigen Bestellung. Nachbedingung: Die grafische Oberfläche zur Bestellungsübersicht wird angezeigt. Anwendungsfall 13: Zu bestellende Artikel in den Warenkorb beim Webshop legen Vorbedingung: Der Benutzer befindet sich in der Anzeige der Trefferliste von Anwendungsfall 9 ( Zutat im Sortiment der Ökokiste suchen ). Der Benutzer hat über ein Bedienelement den Befehl gegeben, einen gefundenen Artikel in der für das betreffende Rezept benötigten Menge in den Warenkorb des Webshops zu legen. Eine Internetverbindung ist vorhanden. Ausführung: Es wird eine Anfrage ausgeführt, um den Artikel in den Warenkorb des Webshops zu liegen. Nachbedingung: Der Artikel liegt im Warenkorb des Webshops. Der Artikel In der grafischen Oberfläche wird der erfolgreiche Abschluss des Vorgangs gemeldet. Bemerkung: Optional ist es möglich, auch in der App einen Warenkorb zu verwalten und den Inhalt dieses Warenkorbs im Fall einer Bestellung an den Webshop weiterzuleiten. Anwendungsfall 14: Vertiefende Produktinformationen abrufen Vorbedingung: Der Benutzer befindet sich in der Detailansicht aus Anwendungsfall 4 ( Detailansicht für Position (Artikel) der Bestellung anzeigen ). Der Benutzer hat über ein Bedienelement den Befehl gegeben, dass vertiefende Produktinformationen im Web angezeigt werden sollen. Eine Internetverbindung ist vorhanden. Ausführung: Der Browser wird mit der entsprechenden Artikelseite auf ecoinform.de geöffnet. Nachbedingung: Der Browser ist mit der passenden Artikelseite unter ecoinform.de geöffnet. Anwendungsfall 15: Rezeptanzeige skalieren Vorbedingung: Der Benutzer befindet sich in der Detailansicht aus Anwendungsfall 6 ( Rezept anzeigen ). Der Benutzer hat über ein Bedienelement den Befehl gegeben, dass die Zutatenmengen des Rezepts auf eine bestimmte Personenanzahl hin skaliert werden sollen. Ausführung: Die passenden Zutatenmengen werden berechnet. Die Rezeptanzeige wird mit
den skalierten Mengen aktualisiert. Nachbedingung: Die Detailansicht wurde mit den skalierten Mengen aktualisiert. Glossar Eine Lieferung erfolgt aufgrund einer Bestellung. Sie umfasst eine oder mehrere Kisten und wird dokumentiert durch einen Lieferschein. Eine Kiste ist einer der drei Packgruppen Obst/Gemüse, Molkereiprodukte (MoPro) und Kartoffeln zugeordnet und enthält hauptsächlich Artikel aus dieser Packgruppe. Kann zudem individuelle Zusatzartikel enthalten (bspw. Brot, Wein). Im Falle der Abo-Lieferung enthält sie eine wöchentlich wechselnde Zusammenstellung von 5-9 Artikeln. (Beispiel-Kisten unter http://www.bosshammerschhof.de Kistenangebot). Ein Lieferschein dokumentiert eine Lieferung mit den folgenden Informationen: Adressinformationen, Abstellort, Aufstellung der gelieferten Kisten und der enthaltenen Positionen, Pfandinformationen, Rechnungsinformationen, Hinweise zu eventuellen Reklamationen und deren Klärung. Ein Rezept umfasst, neben der eigentlichen Zubereitungsanleitung und einer Liste von Küchengeräten, eine Zutatenliste aus Hauptzutaten, Nebenzutaten und Empfehlungen mit jeweils einer Mengenangabe, die auf 1 Portion normiert ist. Eine Hauptzutat ist eine Zutat, die individuell bestellt werden muss. Eine Nebenzutat ist eine üblicherweise im Haushalt vorhandene Zutat, z.b. Öl, Butter, Mehl, Zucker. Eine Empfehlung ist eine mögliche Ergänzung zu einem Rezept, z.b. eine Weinempfehlung. Changelog V1.0 2013-04-22 Erste Fassung. V1.1 2013-04-25 Aufnahme des Abschnitts Beispieldaten. Aufnahme des Anwendungsfalls Liste von Rezeptvorschlägen anzeigen in Meilenstein 1. Verschiebung des Anwendungsfalls Rezept anzeigen von Meilenstein 2 in 1. Changelog erstellt. V2.0 2013-06-26 Abschnitt Beispieldaten geändert: Bestell- und Rezeptdaten werden als CSV-Dateien bereitgestellt Abschnitt Dokumentation geändert: Statt Handbuch darf nun auch ein Video oder aber ein technischer Bericht abgegeben werden, der erklärt, worauf geachtet wurde, um die App vollständig selbsterklärend zu gestalten.
Anwendungsfälle 2 und 3 (Anzeige von Bestellungs- und Rechnungsdaten) ergänzt: Die Anzeige des PDF-Lieferscheins ist nun eine mögliche Lösung Fehlerhafte Beschreibung von Anwendungsfall 7 (Login) korrigiert (es war irrtümlicherweise von Fahrer-IDs und REST-Anfragen die Rede) Anwendungsfall 12 (Kistencode einscannen und Inhalt der Kiste der zugeordneten Bestellung anzeigen) umbenannt Anwendungsfall 13 (Zu bestellende Artikel in den Warenkorb beim Webshop legen) ergänzt: Verwaltung eines Warenkorbs als Bestandteil der App ist optional möglich Anwendungsfall 15 (Rezeptanzeige skalieren) hinzugefügt