---
# System prepended metadata

title: Woche 6

---

---
layout: default
title : Woche 6
---
# Pflichtenheft
#####  (Nach Lichter & Ludwig, Software Engineering: Grundlagen, Menschen, Prozesse, Techniken)


## 1. Einleitung

### 1.1 Zweck

Dieses Dokument beschreibt die technische Umsetzung des Chatbot Erweiterungs im JabRef. Das Zielpublikum für dieses Dokument sind die vier Mitwirkenden, Tutoren und Professor der Vorlesung Software Engineering sowie für Benutzer von JabRef, die es zum ersten mal benützen.

### 1.2 Einsatzbereich und Ziele
Das Ziel unserer Erweiterung ist es den Benutzer von JabRef mithilfe eines Chatbots offene Fragen zu beantworten. Die Fragen können betreffend Navigation und Funktionen von JabRef sein. Ausserdem können Bemerkungen und Verbesserungsvorschläge dem Chatbot angegeben werden, welche dann per Mail automatisch an uns weitergeschickt wird. Auch Fragen welche nicht durch den Chatbot beantworten kann, werden so weitergeleitet.
Der Chatbot wird grafisch mit einem Icon in der Menüleiste von JabRef eingesetzt. Der Chatbot wird in einem neuem Fenster geöffnet. Der Benutzer kann in einem Eingabefeld die Frage eingeben. Der Chatbot wird dann mit einer Sprechblase antworten. Sollte der Chatbot die Frage nicht beantworten können, wird der Chatbot die Mitteilung anzeigen und nach der E-Mail Adresse des Benutzers fragen, damit wir dann persönlich auf die Frage per Mail antworten können. Ausserdem wird eine Liste mit den häufigsten Fragen dem Benutzer angezeigt. Zusätzlich wird es eine Taste geben, womit der Benutzer angeben kann, dass die Mitteilung keine Frage, sondern eine Bemerkung/Vorschlag ist. Auch hier wird dann der Chatbot nach der E-Mail Adresse nachfragen.

### 1.3 Definitionen

Chatbot: Ein Chatbot ist ein textbasiertes Dialogsystem, welches das Chatten mit einem technischen System erlaubt.

### 1.4 Referenzierte Dokumente

Keine

### 1.5 Überblick

Im Abschnitt 2.1 wird erklärt, wie unser Chatbot in die Jabref Software eingebettet werden soll 
Im Abschnitt 2.2 werden alle Funktionen, welche für Aschnitt 3 nötig sind aufgelistet. Diese Funktionen werden dann einzeln z.B mit F10 gekennzeichnet und F11 für detailierte Ergänzungen.
Im Abschnitt 2.3 werden Benutzerprofile erstellt, diese können wiederum als use-cases in Abschnitt 3 wieder verwendet werden.




## 2. Allgemeine Beschreibung

### 2.1 Einbettung

Unser Chatbot wird ein eigenes Icon erhalten, welches wie die anderen Icons schon, in der Menuleiste zu jeder Zeit sichtbar sein wird. Wenn drauf geklickt wird wird ein Chat unten rechts geöffnet, mit dem der Nutzer dann mit dem Chatbot interagieren.

### 2.2 Funktionen

Unsere Erweiterung beeinhaltet ein Ikon in der Menuleiste, die ein Chatfenster öffnet, welches im GUI von Jabref intergriert ist, über das der Nutzer mit dem Chatbot kommunizieren kann. Ausserdem soll der eingegebene Text des Nutzer nach Keywords aufgeteilt werden und je nach Keyword/s antwortet der Chatbot auf die Frage des Clients. Wenn der Chatbot die Frage nicht bearbeiten oder erkennen kann, so soll er die Frage per Mail an den Kundensupport von Jabref senden.

### 2.3 Benutzerprofile

Jedem Nutzer, insbesondere neue Nutzer die mit der Software noch nicht sehr vertraut sind, steht dieser Service zur Verfügung. Der Nutzer soll kein know-how benötigen, die einzige Einschränkung ist, dass der Bot nur Fragen auf englisch beantworten kann. 

### 2.4 Einschränkungen

Das Chatbot Icon soll an einer vernünftigen und gut erkennbaren Stelle implementiert werden. Der Chatbot wird mit in der Java Version 18 implementiert und auf der neusten Jabref Version (aktuell Version 5.7). Sonst erwarten wir keine grossen Einschränkungen.

### 2.5 Annahmen und Abhängigkeiten

Bei der Definierung der Fragen müssen möglichst alle Funktionalitäten von Jabref abgedeckt werden. Das setzt voraus, dass das Team Jabref und seine Funktionen und Anwendungsweise kennen und verstehen. 


## 3. Einzelanforderungen


* /F10/ **Funktion zum Öffnen des Chatbots**: 
    * /F11/ Beim Klicken des Chatbot Icon, welcher oben in der Menuleiste zu finden ist, muss sich ein Chatfenster öffnen, wo ein User seine Fragen an den Chatbot stellen kann
* /F20/ **Funktion zum Schliessen des Chatbots**: 
    * /F21/ Es muss ein Button vorhanden sein, mit dem man das Chatfenster wieder schliessen kann.
* /F30/ **Funktion zum schreiben einer Nachricht**:
    * /F31/ Wie in einem Chat üblichen kann der Nutzer seine Nachricht in einem Textfeld schreiben und sie dem Chatbot senden.
* /F30/ **Funktion zum Lesen**: 
    * /F31/ Das Chatfenster liest den vom Nutzer eingebenen Text und übergibt ihn den Chatbot.
    * /F32/ Mittels einem Fragezeichensymbol weiss der Chatbot, dass es sich um eine Frage handelt.
* /F50/ **Analysieren der Frage**:
    * /F51/ Das Chatfenster zerteilt den String in seine einzelnen Wörter und vergleicht diese mit den Keywords.
    * /F52/ Bei einem Match sollen dem Nutzer dann alle vordefinierten Fragen die diese Keyword/s enthalten dem Nutzer als Vorschlag geben. Die Auswahl kann auch abgelehnt werden und der Nutzer soll dann eine neue Frage stellen können.
* /F60/ **Funktion zum anzeigen des Chatverlaufs**
* /F70/ **Funktion zur Verwaltung der Keywords**:
    * /F71/ Der eigegebene Text soll mit Keywords verglichen werden. Die Keywords und die Fragen sollen in einem 2D Array gespeichert werden. Es zwingend notwendig, dass man auf beide einfach zugreifen kann, da Antwort von den Keywords abhängig ist. Bei den Keywords ist es wichtig, dass diese unabhängig von Gross- oder Kleinschreibung identisch sind mit dem Wort in der Frage des Nutzers. Wird ein Keyword in der Frage falsch geschrieben, so kann der Chatbot das Keyword nicht erkennen.
    * /F72/ Mapping: Liste mit vordefinierten Keywords. 
    Frage wird in einzelne Wörter geteilt, diese werden dann mit der Keywordsliste eins zu eins verglichen und bei einem Treffer wird dieses Keyword genommen und alle Antworten die zum Keyword passen werden dem Nutzer über den Chat angezeigt.
* /F80/ **Funktion , wenn eine Frage nicht gefunden wurde oder Fehlerhaft ist**:
    *  /F81/ Wenn der Text nicht als Frage gestellt wird, dies wäre der Fall wenn die Frage nicht mit einem Fragezeichen beendet wird, oder kein passendes Keyword gefunden wird, muss der Chatbot dem Nutzer zwei Möglichkeiten anbieten.
    *  /F82/ Der Chatbot sendet die Frage des Nutzers direkt per Mail an Jabref, indem er die Ausgangsfrage des Clients nimmt und diese an Jabref weiterleitet. Der Chatbot soll zu diesem Zweck bei Eröffnung des Chats den Nutzer nach seiner E-mail Adresse Fragen.
    *  /F83/ die Frage nochmals zu stellen.

## 4. Abnahmekriterien

Beschreiben Sie hier, wie die Anforderungen bei der Abnahme auf ihre Realisierung überprüft werden können.

Definieren Sie hier mindestens ein Abnahmekriterium
* /A10/ Der Chatbot kann durch einen einzelnen Klick auf ein Icon geöffnet werden.
* /A20/ Der Chatbot kann für einfache Fragen anhand von Schlüsselwörtererkennung mögliche Lösungen präsentieren. Falls die passende Lösung nicht gefunden wird, leitet der Chatbot die Frage selbst an die "zuständige Person weiter", sofern dies gewünscht wird.


# Anhang

## Anhang A. Use-cases

An dieser Stelle können detaillierte Use-cases angegeben werden
![Diagram](../../slides/images/use-case.png)

### Use Case 1:
* Name: Einsteiger
* Akteure: Peter Thiel
* Vorbedingungen: Der Benutzer ist neu bei JabRef und hat keine Vorkenntnisse mit BibTex. Er konnte schon einige Einträge in JabRef machen.
* Standardablauf
    * P.T. will einen Eintrag ansehen und den Dokument lesen, weiss jedoch nicht wie
    * P.T. öffnet den Chatbot in der Menüleiste
    * P.T. fragt im Chat "Where can I read a document?"
    * Der Chatbot gibt Anweisungen wie er den Document viewer öffnen kann.
* Nachbedingungen Erfolg: P.T. folgt den Anweisungen des Chatbots und kann somit den Dokument lesen.
* Nachbedingung Sonderfall: P.T. versteht die Anweisungen nicht oder die Anweisungen sind falsch. P.T. will direkt den Support kontaktieren und eine Mail, mit dem Problem und mit dem Verlauf des Chats wird an den Support verschickt.


### Use Case 2:
* Name: Hobby-Designer
* Akteure: Jawed Karim
* Vorbedingungen: Der Benutzer kennt sich mit Literaturverwaltungsprogramme aus und designed Webseiten in seiner Freizeit.
* Standardablauf
    * J.W. arbeitet nachts in JabRef und das helle Design reizt seine Augen. Er weiss aber, dass JabRef kein Dark Mode hat und will das gerne vorschlagen.
    * J.W. öffnet den Chatbot in der Menüleiste.
    * J.W. schreibt seinen Vorschlag in den Chat hinein.
    * Der Chatbot erkennt das es keine Frage ist und leitet direkt eine Mail an den Support weiter.
* Nachbedingungen Erfolg: Der Support kriegt eine Mail mit der Nachricht des Benutzers und kann dann persönlich darauf reagieren.
* Nachbedingung Sonderfall: Sollte der Benutzer keine Rückmeldung zurückkriegen, muss es er den Ablauf nochmals durchführen.
