Advertisement
Guest User

Pflichtenheft

a guest
Nov 19th, 2019
1,284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 57.08 KB | None | 0 0
  1. \documentclass[parskip=full,11pt,twoside]{scrartcl}
  2. \usepackage[utf8]{inputenc}
  3.  
  4. \title{DCBN: Decision Critical Bayesian Networks}
  5. \author{Johann Bonneau, Leo Garbe, Ruben Grewal, Fabio Mayer, Daniel Vollmer}
  6.  
  7. % section numbers in margins:
  8. \renewcommand\sectionlinesformat[4]{\makebox[0pt][r]{#3}#4}
  9.  
  10. % header & footer
  11. \usepackage{scrlayer-scrpage}
  12. \lofoot{\today}
  13. \refoot{\today}
  14. \pagestyle{scrheadings}
  15.  
  16. \usepackage[sfdefault,light]{roboto}
  17. \usepackage[T1]{fontenc}
  18. \usepackage[german]{babel}
  19. \usepackage[]{datetime} % must be after babel
  20. \renewcommand{\dateseparator}{-} % ISO8601 date format
  21. \usepackage{hyperref}
  22. \usepackage{amsmath}
  23. \usepackage[nameinlink]{cleveref}
  24. \crefname{figure}{Abb}{Abb}
  25. \usepackage[section]{placeins}
  26. \usepackage{xcolor}
  27. \usepackage{graphicx}
  28. \hypersetup{
  29. pdftitle={Pflichtenheft},
  30. bookmarks=true,
  31. }
  32. \usepackage{csquotes}
  33.  
  34. \usepackage{amsmath} % for $\text{}$
  35. \newcommand\urlpart[2]{$\underbrace{\text{\texttt{#1}}}_{\text{#2}}$}
  36.  
  37. \usepackage{pflichtenheft}
  38.  
  39. \begin{document}
  40. \maketitle
  41. \pagebreak
  42. \tableofcontents
  43.  
  44.  
  45. \section{Einleitung}
  46.  
  47.  
  48. \section{Kriterien}
  49. % Diese Section sollte kurz und knapp "für Manager" sein
  50. % und auf eine Seite passen.
  51.  
  52. \subsection{Muss}
  53.  
  54. %net zu netman geändert, evimake hinzugefügt
  55. %Paar Dinge umsortiert.
  56. \criterium{Superadmin}{crt:sudo}
  57. \criterium{Benutzersystem}{crt:usersys}
  58. \criterium{Netze erstellen/bearbeiten}{crt:netmake}
  59. \criterium{Netze verwalten}{crt:netman}
  60. \criterium{Netze importieren}{crt:netimport}
  61. \criterium{Netze exportieren}{crt:expo}
  62. \criterium{Evidenzen erstellen/bearbeiten}{crt:evimake}
  63. \criterium{Evidenzen verwalten}{crt:eviman}
  64. \criterium{Testumgebung für Netze}{crt:playgr}
  65. \criterium{Ordnerstruktur für Netz}{crt:ordstr}
  66. \criterium{Inferenz berechnen}{crt:infcal}
  67. \criterium{Unterstützung für mehrere Sprachen}{crt:multiling}
  68. \criterium{Integration mit IOSB Servern}{crt:IOSB}
  69.  
  70. \subsection{Kann}
  71.  
  72. %\criteriumOptional{Submodels in Netzen}{crt:submodplus}
  73. \criteriumOptional{Netz-Kanten über mehr als einen Zeitschritt}{crt:tplus}
  74. \criteriumOptional{Beispieldaten in der Testumgebung für Netze speichern/laden}{crt:playdataplus}
  75. \criteriumOptional{Automatische Anordnung von Netzen}{crt:autolayoutplus}
  76. \criteriumOptional{Live Daten Stream die Testumgebung für Netze}{crt:liveplus}
  77. \criteriumOptional{Annotationsdaten Auswertung in Evidenzen}{crt:annotplus}
  78.  
  79. \subsection{Abgrenzung}
  80.  
  81. \criteriumNot{Temporal Unterscheidung}{crt:tempabgr}
  82. Es gibt keine Unterscheidung welche Knoten auf einer Temporal-Platte sind und welche nicht. Es wird angenommen, dass alle Knoten auf der Temporal-Platte sind und standardmäßig die Wahrscheinlichkeiten für t=0 modelliert werden.
  83. \criteriumNot{Verschiedenen Knoten-Typen im Netz}{crt:typeabgr}
  84. Es gibt lediglich normale Wahrscheinlichkeits-Knoten.
  85. \criteriumNot{Unroll}{crt:unrollabgr}
  86. Ein temporales Netz muss nicht automatisch zu einem nicht-temporalen Netz ausgerollt werden können.
  87.  
  88.  
  89. %%%%%%%%%%%%%%
  90. \section{Produkteinsatz}
  91.  
  92. Das Produkt soll mit minimalen Administrationskenntnissen zu betreiben sein.
  93.  
  94. Besucher des Diensts sollen diesen ohne Schulung oder andere Information benutzen können.
  95.  
  96. \section{Produktumgebung}
  97.  
  98. \textbf{Frontend:} Das Programm soll auf jeden modernen Webbrowser (IE 11+ und Safari 9+) laufen. Dazu sollen ca. 4GB RAM zur Verfügung stehen (abhängig vom Webbrowser).
  99.  
  100. \textbf{Backend:} Server mit mindestens 4 Kernen und mindestens 8GB DDR3+ RAM.
  101.  
  102. %%%%%%%%%%%
  103. \section{Funktionale Anforderungen}
  104.  
  105. \subsection{Benutzersystem}
  106.  
  107. \subsubsection{Superadmin}
  108.  
  109. \functionality{Fester Superadmin-Account}{fnc:sudoinit}
  110. \fulfills{crt:sudo}
  111. Das Programm soll mit einem festgelegten Superadmin-Nutzer initialisiert werden. Die Logindaten des Superadmins werden dem Kunden mitgeteilt.
  112.  
  113. \functionality{Nach Konten suchen}{fnc:searchusr}
  114. \fulfills{crt:sudo}
  115. Der Superadmin soll in der Lage sein, nach existierenden Konten zu suchen. Diese Suche erfolgt über Name, Benutzername, Rolle oder Email-Adresse des gesuchten Nutzers. Dabei wird immer eine Liste an Nutzern angezeigt, die der Suchanfrage in irgendeiner Form entsprechen.
  116.  
  117. \functionality{Konten erstellen}{fnc:addusr}
  118. \fulfills{crt:sudo}
  119. \fulfills{crt:usersys}
  120. Der Superadmin kann neue Konten erstellen. Dafür muss der Superadmin Benutzername, Name, Email und Rolle des Nutzers beim Erstellen eingeben.
  121.  
  122.  
  123. \functionality{Konten löschen}{fnc:delusr}
  124. \fulfills{crt:sudo}
  125. \fulfills{crt:usersys}
  126. Der Superadmin kann Nutzer (Admins und Moderator) löschen.
  127.  
  128. \functionality{Konten Daten ändern }{fnc:editusr}
  129. \fulfills{crt:sudo}
  130. \fulfills{crt:usersys}
  131. Der Superadmin kann Nutzerdaten wie Name, Email, Benutzername oder Rolle eines Nutzers ändern.
  132.  
  133.  
  134. \subsubsection{Startseite}%Von Außen ist nicht Klar was gemeint ist
  135.  
  136. \functionality{Anmelden}{fnc:login}
  137. \fulfills{crt:usersys}
  138. Auf der Startseite soll man sich mit Benutzername und Passwort anmelden können.
  139.  
  140.  
  141. \functionality{Passwort-Zurücksetzung anfordern}{fnc:resetpass}
  142. \fulfills{crt:usersys}
  143. Falls man sein Passwort vergessen hat, kann man anfordern, dass das Passwort zurückgesetzt wird. Man erhält dann eine Email mit einem Link zur
  144. Passwort-Wiederherstellung.
  145.  
  146. \functionality{Neues Passwort festlegen}{fnc:editpass}
  147. \fulfills{crt:usersys}
  148. Der Nutzer soll mit dem Link in der Email ein neues Passwort festlegen können. Danach kann der Nutzer sich mit dem neuen Passwort anmelden.
  149.  
  150.  
  151. \subsubsection{Alle Nutzer}
  152.  
  153. \functionality{Sprache ändern}{fnc:changeLang}
  154. \fulfills{crt:multiling}
  155. Im Menü wird dem Nutzer die aktuell ausgewählte Sprache angezeigt (standardmäßig Englisch). Durch einen Klick auf diese öffnet sich ein Dropdown in dem der Nutzer eine andere Sprache auswählen kann. Tut der Nutzer dies, ändern sich automatisch alle Texte auf die entsprechende Sprache.
  156.  
  157. \functionality{Abmelden}{fnc:logoutAll}
  158. \fulfills{crt:usersys}
  159. Jeder Nutzer hat die Möglichkeit, sich durch einen Klick auf den \enquote{Logout} Knopf abzumelden. Dabei gelangt er zurück zur Anmelde-Seite und wird beim neu laden der Seite nicht mehr automatisch angemeldet.
  160.  
  161. \subsubsection{Moderator}
  162.  
  163.  
  164. \functionality{Testumgebung für Netze benutzen}{fnc:play}
  165. \fulfills{crt:playgr}
  166. \fulfills{crt:usersys}
  167. Ein Moderator ist in der Lage die Testumgebung für Netze ohne Einschränkungen zu benutzen. Siehe dazu \ref{fnc:showgraph}.
  168.  
  169. \functionality{Netze exportieren}{fnc:expnet}
  170. \fulfills{crt:playgr}
  171. \fulfills{crt:expo}
  172. Ein Moderator ist in der Lage ein Netz zu exportieren. Dies bedeutet, dass der Moderator Netze, die auf dem Server gespeichert sind, herunterladen kann. Hierbei kann der Moderator eines der folgenden Formate zum exportieren auswählen:
  173. \begin{enumerate}
  174. \item .xdsl - GeNIe2 Format
  175. \item .net - Hugin Format % Stimmt das überhaupt?
  176. \end{enumerate}
  177.  
  178. % \functionality{Abmelden}{fnc:logout}
  179. % \fulfills{crt:usersys}
  180. % Der Moderator soll sich abmelden können und wieder auf der Login-Seite landen.
  181.  
  182.  
  183.  
  184. \subsubsection{Admin}
  185.  
  186. \functionality{Moderatorrechte}{fnc:modlev}
  187. \fulfills{crt:usersys}
  188.  
  189. Ein Administrator verfügt über alle Rechte, über die auch ein Moderator verfügt. Siehe dazu \ref{fnc:play}.
  190.  
  191. \functionality{Netz-Editor benutzen}{fnc:useeditor}
  192. \fulfills{crt:usersys}
  193.  
  194. Ein Administrator ist in der Lage den Netz-Editor ohne Einschränkungen zu benutzen. Siehe dazu \ref{fnc:opennet}.
  195.  
  196. \functionality{Ordnerstruktur ändern}{fnc:cngfilestr}
  197. \fulfills{crt:usersys}
  198.  
  199. Ein Administrator ist in der Lage die Ordnerstruktur zu verändern. Dies bedeutet, dass er neue Ordner anlegen kann. Des Weiteren kann der Administrator bestehende Ordner löschen, umbenennen und verschieben.
  200.  
  201. \functionality{Netze importieren}{fnc:netimport}
  202. \fulfills{crt:usersys}
  203. \fulfills{crt:netimport}
  204.  
  205. Ein Administrator ist in der Lage Netze zu importieren. Dies bedeutet, dass lokal gespeicherte Netze auf den Server hochgeladen werden. Hierbei muss die Datei eines der folgenden Formate haben:
  206. \begin{enumerate}
  207. \item .xdsl - GeNIe2 Format
  208. \item .net - Hugin Format % Stimmt das überhaupt?
  209. % Noch andere?
  210. \end{enumerate}
  211.  
  212. \functionality{Netze umbenennen}{fnc:renamenet}
  213. \fulfills{crt:usersys}
  214. Ein Administrator ist in der Lage Netze umzubenennen.
  215.  
  216. \functionality{Netze kopieren}{fnc:copynet}
  217. \fulfills{crt:usersys}
  218. % Ist das Kopieren nur ein Duplizieren in den selben Ordner oder ein Copy-Paste auch in andere Ordner?
  219. % Falls Letzteres, bräuchte man dann nicht auch noch eine FA zum Einfügen?
  220.  
  221. %(Ruben)Ich glaube es ist nur als eine Kopie von Netz im selben Ordner erstellen gedacht (Copy of Net.xddsl)
  222.  
  223. Ein Administrator ist in der Lage Netze durch ein Tastenkürzel bzw. ein Rechtsklickmenü Netze zu kopieren. Dabei wird das komplette Netz in den selben Ordner dupliziert.
  224.  
  225. % Rechtsklickmenü eigene FA?
  226. \subsection{Netz-Editor}
  227.  
  228. \functionality{Netze öffnen}{fnc:opennet}
  229. \fulfills{crt:netmake}
  230. \fulfills{crt:netman}
  231. Im Netzeditor kann ein Netz durch einen Klick auf den Dateinamen des Netzes im Dateibaum geöffnet werden. Dieses muss auf dem Server liegen.
  232.  
  233. \functionality{Netze erstellen}{fnc:makenet}
  234. \fulfills{crt:netmake}
  235. Im Netzeditor kann ein neues Netz durch einen Klick auf den \enquote{Create Net}-Knopf im Dateibaum erstellt werden. Hierfür wird ein neues, leeres und temporäres Netz erstellt. Diesem kann man durch %FA
  236. einen festen Speicherort in der Ordnerstruktur zuweisen.
  237.  
  238. \functionality{Netz speichern}{fnc:savenet}
  239. \fulfills{crt:netman}
  240. % Vielleicht anders formulieren falls ihr immer noch verwirrt seid.
  241. Im Netzeditor kann ein Netz durch das als Standard angesehene Tastenkürzel des jeweiligen Betriebssystems zum Speichern bzw. durch einen Klick auf den \enquote{Save}-Knopf (siehe \Cref{section:gui}) gespeichert werden.
  242.  
  243. \functionality{Netz sperren wenn Netz bearbeitet wird}{fnc:locknet}
  244. \fulfills{crt:netman}
  245. Jeweils nur ein Admin kann ein Netz zur selben Zeit bearbeiten. Sollte ein Netz bereits von einem Admin bearbeitet werden, so wird bei dem Versuch eines anderen Admins auf das Netz zuzugreifen eine Fehlermeldung zurückgegeben.
  246.  
  247. \functionality{Zeitschritte von Netz einstellen}{fnc:settempsteps}
  248. \fulfills{crt:netmake}
  249. Im Netzeditor kann die Anzahl an Zeitschritten des Netzes eingestellt werden. Hierfür ändert der Nutzer den Wert im Eingabefeld bei \enquote{Timesteps}. Dieser Wert lässt sich nur auf valide Werte ändern. Hat das Netz beispielsweise eine 2er Temporalkante, so wäre \enquote{1} kein legitimer Wert und die Eingabe nicht möglich. Des Weiteren kann der Wert 100 nicht überschritten werden.
  250.  
  251. \functionality{Knoten hinzufügen}{fnc:addnode}
  252. \fulfills{crt:netmake}
  253. Im Netzeditor kann ein neuer Knoten zu einem Netz hinzugefügt werden. Hierfür wählt der Nutzer den \enquote{Add Node}-Knopf aus und klickt auf das Bearbeitungsfenster der Editor-GUI. Ein komplett leerer Knoten wird an der angeklickten Stelle erzeugt.
  254. Der Knoten hat zwei Zustände (\enquote{true} und \enquote{false}) welche beide eine Wahrscheinlichkeit von 0.5 haben.
  255.  
  256.  
  257. % Sollte der Nutzer vielleicht noch vorher gefragt werden, ob er den Knoten wirklich löschen will?
  258. \functionality{Knoten löschen}{fnc:delnode}
  259. \fulfills{crt:netmake}
  260. Wählt der Nutzer einen Knoten aus, so kann er diesen Knoten durch Betätigen der \enquote{Delete}-Taste bzw. durch einen Klick auf \enquote{Delete} im Rechtsklickmenü aus dem Netz entfernen. Sollte der gelöschte Knoten durch Pfeile mit anderen Knoten verbunden sein, so werden alle mit diesem Knoten verbundenen Pfeile automatisch auch gelöscht.
  261.  
  262. \functionality{Knoten bewegen}{fnc:movenode}
  263. \fulfills{crt:netmake}
  264. Der Nutzer kann beliebige Knoten durch Drag-and-Drop innerhalb des selben Netzes verschieben. Hierbei werden mögliche Verbindungen zwischen den Knoten automatisch angepasst. Sollte der verschobene Knoten einen anderen Knoten überdecken, so wird die Verschiebung nicht ausgeführt.
  265.  
  266. \functionality{Knoten Name ändern}{fnc:renamenode}
  267. \fulfills{crt:netmake}
  268. Ein Knoten kann durch einen Klick auf \enquote{Rename} im Rechtsklickmenü oder mit einem Doppelklick auf den Namen des Knoten umbenannt werden.
  269.  
  270. % Vielleicht sollte man für dieses Eigenschaften Menü eine eigene FA hinzufügen...
  271. \functionality{Knoten Farbe ändern}{fnc:cngcolor}
  272. \fulfills{crt:netmake}
  273. Die Hintergrundfarbe eines Knoten kann im \enquote{Properties}-Menü des Knotens geändert werden. Hierfür macht der Nutzer einen Doppelklick auf den Knoten oder wählt \enquote{Properties} im Rechtsklickmenü des Knotens aus. Die Farbe des Textes des Knotens wird automatisch angepasst um die Lesbarkeit des Textes zu gewährleisten. % Kann der Nutzer eine beliebige Farbe wählen, oder gibt es nur vorgewählte Möglichkeiten?
  274. % Wie genau sieht das Eigenschaften Menü des Knoten aus, öffnet sich wie in GeNie ein eigenes Fenster, oder wird das Ganze im unteren Teil des Editors angezeigt?
  275.  
  276. \functionality{Wahrscheinlichkeiten eingeben}{fnc:insert}
  277. \fulfills{crt:netmake}
  278. Im \enquote{Properties}-Menü des Knoten kann der Nutzer die von der Inferenz verwendeten Wahrscheinlichkeiten angeben. Hierfür wird dem Nutzer eine Tabelle mit allen Kombinationsmöglichkeiten präsentiert, welche in den durch Pfeile vorangehenden Knoten-Ergebnissen auftreten können (vgl. mit GeNie2). Dem Nutzer wird außerdem die Möglichkeit gegeben die bereits eingegebenen Wahrscheinlichkeiten einer Spalte zu \enquote{Eins} zu ergänzen. Gibt der Nutzer Wahrscheinlichkeiten ein, welche sich nicht zu \enquote{Eins} addieren, so werden beim Speichern die Wahrscheinlichkeiten ihrem Verhältnis entsprechend zu \enquote{Eins} angepasst. (D.h. Eingaben von 5 bei \enquote{true} und 2 bei \enquote{false} werden zu 0.714 und 0.286 geändert)
  279.  
  280. \functionality{Pfeile hinzufügen}{fnc:addarrow}
  281. \fulfills{crt:netmake}
  282. Im Netzeditor kann ein neuer Pfeil zu einem Netz hinzugefügt werden. Hierfür wählt der Nutzer den \enquote{Add Arrow} Knopf aus und klickt zuerst auf den Startknoten und dann auf den Endknoten im Bearbeitungsfenster. Daraufhin werden beide Knoten durch einen Pfeil verbunden. % Standardpfeil auf sich selbst in Zeitpfeil umwandeln oder einfach nicht zulassen?
  283.  
  284. \functionality{Zeitpfeile hinzufügen}{fnc:addtimearrow}
  285. \fulfills{crt:netmake}
  286. \fulfills{crt:tplus}
  287. Im Netzeditor kann ein neuer Zeitpfeil zu einem Netz hinzugefügt werden. Hierfür wählt der Nutzer den \enquote{Add Time Arrow}-Knopf aus und klickt zuerst auf den Startknoten und dann auf den Endknoten im Bearbeitungsfenster. Daraufhin werden beide Knoten durch einen Zeitpfeil verbunden. Der Nutzer hat dann die Möglichkeit durch ein Eingabefeld die Anzahl der betrachteten Zeitschritte festzulegen. Diese Anzahl muss hierbei im Intervall zwischen 1 und 1000 liegen (beide einschließlich). Die Bestätigung der Eingabe erfolgt durch Drücken der \enquote{Enter}-Taste oder durch Klicken außerhalb des Eingabefelds. Sollte der Nutzer eine ungültige Eingabe gemacht haben (keine Ganzzahl im verlangten Intervall), so wird die Anzahl der Zeitschritte automatisch auf 1 gesetzt.
  288.  
  289. \functionality{Pfeile löschen}{fnc:delarrow}
  290. \fulfills{crt:netmake}
  291. Wählt der Nutzer einen Pfeil aus, so kann er diesen Pfeil durch Betätigen der \enquote{Delete}-Taste bzw. durch einen Klick auf \enquote{Delete} im Rechtsklickmenü aus dem Netz entfernen. Die Wahrscheinlichkeitstabelle des Endknotens wird dementsprechend angepasst. Dies funktioniert sowohl für Zeitpfeile als auch für normale Pfeile.
  292.  
  293. \functionality{Evidenz einem Knoten zuweisen}{fnc:assignevi}
  294. \fulfills{crt:netmake}
  295. \fulfills{crt:eviman}
  296. Der Nutzer kann einem Knoten eine Evidenz zuweisen. Hierfür wählt er im \enquote{Properties}-Menü des Knotens den Reiter \enquote{Evidences} aus. Hier kann der Nutzer einem Knoten durch ein Drop-Down-Menü eine der bestehenden Evidenzen zuordnen. % Durch Druck auf den \enquote{Create Evidence}-Knopf öffnet sich der Evidenzeneditor??
  297.  
  298. % Was passiert wenn der Nutzer einfach nur den Zwischenstand speichern will und das Netz nicht valide ist.
  299. % Wie wird das behandelt.
  300. \functionality{Netz Validieren (DAG, Zusammenhängend)}{fnc:validatenet}
  301. Beim Speichern des Netzes wird es validiert. Hierbei wird eine Warnung ausgegeben, falls das Netz nicht zusammenhängend ist und das falls es kein DAG ist, werden die Änderungen nicht übernommen.
  302.  
  303. % Letzte Schritte??? Vielleicht bis zu 20?
  304. \functionality{Letzten Schritt rückgängig machen}{fnc:undo}
  305. \fulfills{crt:netmake}
  306. Durch einen Klick auf den \enquote{Undo}-Knopf oder durch das Tastenkürzel \enquote{CTRL + z} kann die zuletzt durchgeführte Aktion rückgängig gemacht werden. Dies kann für die letzten 20 Aktionen durchgeführt werden.
  307.  
  308. \functionality{Rückgängig gemachte Aktion wieder herstellen}{fnc:redo}
  309. \fulfills{crt:netmake}
  310. Durch einen Klick auf den \enquote{Redo}-Knopf oder durch das Tastenkürzel \enquote{CTRL + y} kann die zuletzt rückgängig gemachte Aktion wiederhergestellt werden. Es können nur so lange Aktionen wiederhergestellt werden, bis der Nutzer eine andere Aktion ausführt oder man wieder im Ursprungszustand angekommen ist.
  311.  
  312. %\functionality{Submodel erstellen}{fnc:createsubmodel}
  313. %\fulfills{crt:netmake}
  314. %\fulfills{crt:submodplus}
  315. %Der Nutzer kann Submodelle definieren. Dies sind Netze, welche in anderen Netzen als Knoten eingefügt werden können.
  316. % Man muss noch klären, was genau alles möglich ist. Kann man z.b. schon bestehende Netze zu Submodellen machen, wie wählt man Submodelle die man hinzufügen will aus, ...
  317. % Es gibt derzeit auch noch keinen Test, da ich nicht genau weiß wie das in der GUI umgesetzt wird.
  318.  
  319. \functionality{Auto-Layout}{fnc:autolayoutplus}
  320. \fulfills{crt:netmake}
  321. \fulfills{crt:autolayoutplus}
  322. Durch einen Klick auf den \enquote{Auto-Layout}-Knopf werden die Knoten und Pfeile des aktuellen Netzes dem zuletzt ausgewählten Algorithmus entsprechend angeordnet. Anhand eines Pfeil-Drop-Down-Menüs an der rechten Seite des \enquote{Auto-Layout}-Knopfes kann man den Algorithmus auswählen, welcher verwendet werden soll.
  323.  
  324. \subsection{Evidenz-Editor}
  325.  
  326. \functionality{Evidenzen erstellen}{fnc:creaEvi}
  327. \fulfills{crt:evimake}
  328.  
  329. Durch einen Linksklick auf den \enquote{New Evidence}-Knopf öffnet sich der Evidenz-Editor.
  330. Der Benutzer kann den Namen der Evidenz oben in einem Eingabefeld eingeben.
  331. Die Evidenzen werden in Form von logischen Formeln dargestellt. Diese werden in ein Eingabefeld eingegeben.
  332. Durch einen Linksklick auf den \enquote{Save}-Knopf wird die erstellte Evidenz mit dem angegebenen Namen gespeichert.
  333. Falls kein Name, keine Formel oder eine falsche Formel (z.B falsche Klammerung)... eingegeben wurde, scheitert das Speichern und eine Fehlermeldung wird angezeigt.
  334.  
  335. \functionality{Information Seite}{fnc:showInfo}
  336.  
  337. Durch einen Linksklick auf den \enquote{Info}-Knopf wird eine Pop-up Seite angezeigt.
  338. Auf dieser werden allgemeine Informationen zu Evidenz-Formeln angezeigt sowie auch eine Liste aller verfügbaren Operatoren und Methoden.
  339. Durch einen Linksklick auf den \enquote{Close}-Knopf wird die Pop-up Seite geschlossen.
  340.  
  341. \functionality{Formel eingeben}{fnc:entForm}
  342. \fulfills{crt:evimake}
  343.  
  344. Der Benutzer kann eine Aussagenlogische Formel im Formel-Eingabefeld eingeben.
  345. Diese Verknüpfungen stehen zur Verfügung : \{=, >, >=, <, <=, !, \&, |\}.
  346. Des weiteren kann der Benutzer vordefinierte Methoden nutzen (in den Informationen beschrieben).
  347. Der Benutzer kann auch Variablen eingeben. Diese Variablen stehen dann zum Testen zur Verfügung.
  348.  
  349. \functionality{Evidenzen bearbeiten}{fnc:modEvi}
  350. \fulfills{crt:evimake}
  351.  
  352. Durch einen Linksklick auf den \enquote{Edit}-Knopf (mit einen Bleistift dargestellt)
  353. wird die ausgewählte Evidenz im Editor angezeigt. Der Benutzer kann sie dann bearbeiten und testen.
  354.  
  355. \functionality{Formeln mit Beispieldaten testen}{fnc:testCalc}
  356.  
  357. Der Benutzer kann eine Formel testen die er bereits eingegeben hat. Dazu muss er seine Variablen in der Liste suchen und den Wert eingeben. Durch Linksklick auf den \enquote{Test}-Knopf wird das Ergebnis angezeigt (false/true).
  358.  
  359. \functionality{Vordefinierte Funktionen in Formeln nutzen}{fnc:callFnc}
  360.  
  361. Es gibt vordefiniert Funktionen, die der Benutzer in die Formeln einsetzen kann. Die Liste und Beschreibung der Funktionen steht in der Information Pop-up Seite.
  362.  
  363. \functionality{Evidenzen löschen}{fnc:delEvi}
  364.  
  365. Durch einen Linksklick auf den \enquote{Delete}-Knopf (Durch einen Mülleimer dargestellt) wird die ausgewählte Evidenz gelöscht. Es wird durch ein Pop-up-Fenster nachgefragt ob der Benutzer diese Aktion wirklich durchführen möchte.
  366. Durch einen Linksklick auf den \enquote{Yes}-Knopf wird die Evidenz gelöscht und das Pop-up Fenster geschlossen.
  367. Durch einen Linksklick auf den \enquote{No}-Knopf wird die Evidenz nicht gelöscht und das Pop-up Fenster geschlossen.
  368.  
  369. \subsection{Testumgebung für Netze}
  370.  
  371. \functionality{Netz graphisch anzeigen}{fnc:showgraph}
  372. \fulfills{crt:playgr}
  373.  
  374. Durch einen Linksklick auf ein Netz in der Ordner Ansicht wird das Netz angezeigt.
  375. Der Benutzer kann in der graphischen Ansicht das Netz, aber nicht die Knoten bewegen.
  376.  
  377. \functionality{Virtuelle-Evidenzen einsetzen}{fnc:setVirEvi}
  378. \fulfills{crt:playgr}
  379.  
  380. Durch Doppelklick auf einen Knoten taucht ein Pop-up Fenster auf, in dem der Benutzer eine Virtuelle-Evidenz eingeben kann.
  381. Dem Benutzer liegen 2 Eingabefelder vor. Ein \enquote{true} Feld und ein \enquote{false} Feld. In den Feldern können Werte zwischen 0 und 1
  382. eingegeben werden.
  383. Die Summe der Werte muss gleich 1 sein.
  384. Virtuelle-Evidenzen überschreiben bereits existierende Werte.
  385.  
  386. \functionality{Virtuelle-Evidenzen löschen}{fnc:delVirEvi}
  387. \fulfills{crt:playgr}
  388.  
  389. Durch Doppelklick auf einen Knoten erscheint ein Pop-up-Fenster, in dem der Benutzer eine Virtuelle-Evidenz eingeben kann.
  390. Er kann auf den \enquote{Remove}-Knopf klicken um die Evidenz zu löschen.
  391. Falls schon Berechnungen durchgeführt wurden und eine Evidenz eingegeben wurde, werden die Berechnungen automatisch neu durchgeführt.
  392.  
  393. \functionality{Alle Virtuelle-Evidenzen löschen}{fnc:delAllVirEvi}
  394. \fulfills{crt:playgr}
  395.  
  396. Der Nutzer kann durch einen Klick auf \enquote{Delete all}, alle im Netz eingetragenen virtuellen Evidenzen entfernen. Dabei werden auch alle Diagramme zurückgesetzt, die mögliche Inferenz-Ergebnisse anzeigen.
  397.  
  398. \functionality{Evidenzen/Berechnungen graphisch anzeigen}{fnc:showVirEvi}
  399. \fulfills{crt:playgr}
  400.  
  401. Nachdem eine Berechnung durchgeführt wurde, werden die Ergebnisse im Knoten durch ein horizontales Stab-Diagramm angezeigt.
  402.  
  403. \functionality{Aktueller Stand des Graphen speichern}{fnc:saveGraphState}
  404. \fulfills{crt:playdataplus}
  405.  
  406. Nachdem der Benutzer den Graphen ausprobiert hat, hat er die Möglichkeit seinen Test zu speichern.
  407. Durch Linksklick auf den \enquote{Save Test}-Knopf wird ein Pop-up-Fenster angezeigt. Dort kann der Nutzer einen Namen für den Test angeben.
  408. Durch einen Linksklick auf den \enquote{Save}-Knopf wird der Name überprüft und dann der Test gespeichert.
  409. Falls der Name schon einmal benutzt wurde, kommt eine Fehlermeldung. %Unwichtig da heruntergeladen oder?
  410. Durch einen Linksklick auf den \enquote{Cancel}-Knopf wird der Speichervorgang abgebrochen.
  411. Der Zustand wird in einer \enquote{.json} Datei gespeichert. Die Datei wird dann vom Browser heruntergeladen.
  412.  
  413. \functionality{Stand eines Graphen benutzen}{fnc:loadGraphState}
  414. \fulfills{crt:playdataplus}
  415.  
  416. Der Benutzer kann den Stand eines Graphen benutzen. Beim Laden des Standes werden die Werte eingesetzt und automatisch die Berechnungen durchgeführt.
  417.  
  418. \functionality{Daten-Stream auswählen}{fnc:loadDataStream}
  419. \fulfills{crt:liveplus}
  420.  
  421. Der Benutzer kann einen zur Verfügung gestellten Daten-Stream zur Ausführung auswählen.
  422.  
  423. \subsection{Ordnerstruktur}
  424.  
  425. \functionality{Ordner umbenennen}{fnc:modFolName}
  426. \fulfills{crt:ordstr}
  427.  
  428. Durch einen Rechtsklick auf einen Ordner öffnet sich ein Rechtsklickmenü mit der Option \enquote{Rename}. Wird diese ausgewählt, so öffnet sich ein Dialog mit einem Eingabefeld in dem der aktuelle Name des Ordners steht. Hier kann dieser geändert werden und durch ein Klick auf \enquote{Confirm} die Änderung wirksam gemacht werden.
  429. Falls ein DBN in dem ausgewählten Ordner aktuell bearbeitet wird, schlägt die Aktion fehl und eine Fehlermeldung wird angezeigt.
  430.  
  431. \functionality{Ordner löschen}{fnc:delFol}
  432. \fulfills{crt:ordstr}
  433.  
  434. Durch einen Rechtsklick auf einen Ordner öffnet sich ein Rechtsklickmenü mit der Option \enquote{Delete}. Wird diese ausgewählt, so öffnet sich ein Dialog mit einer Warnung in der das Löschen erneut bestätigt werden muss. Wird dies getan, so wird der Ordner mit allen Unterordnern und DBNs entfernt.
  435. Falls ein DBN in dem ausgewählten Ordner aktuell bearbeitet wird, schlägt die Aktion fehl und eine Fehlermeldung wird angezeigt.
  436.  
  437. \functionality{Netze in Ordner schieben}{fnc:putNetInFol}
  438. \fulfills{crt:ordstr}
  439. \fulfills{crt:netman}
  440.  
  441. Durch einen Rechtsklick auf ein Netz öffnet sich ein Dropdown mit der Option \enquote{Move}.
  442. Wird diese ausgewählt, so öffnet sich ein Dialog mit einem Abbild der Ordnerstruktur in der der aktuelle Ordner ausgewählt ist. Hier kann ein andere ausgewählt werden und durch ein Klick auf \enquote{Confirm} die Änderung wirksam gemacht werden.
  443. Falls das Netz aktuell bearbeitet wird, schlägt die Aktion fehl und eine Fehlermeldung wird angezeigt.
  444.  
  445. \functionality{Netze löschen}{fnc:delNet}
  446. \fulfills{crt:ordstr}
  447. \fulfills{crt:netman}
  448.  
  449. Durch einen Rechtsklick auf ein Netz öffnet sich ein Dropdown mit der Option \enquote{Delete}. Wird diese ausgewählt, so öffnet sich ein Dialog mit einer Warnung in der das Löschen erneut bestätigt werden muss. Wird dies getan, so wird das Netz entfernt.
  450. Falls das Netz aktuell bearbeitet wird, schlägt die Aktion fehl und eine Fehlermeldung wird angezeigt.
  451.  
  452. \subsection{Server}
  453.  
  454. %\functionality{ REST-Schnittstelle für Frontend }{fnc:interface}
  455.  
  456. \functionality{ Daten von IOSB-Servern empfangen }{fnc:getServData}
  457. Sobald Daten in der ActiveMQ der IOSB-Server anliegen werden diese entsprechend deserialisiert und für die Inferenz bereitgestellt.
  458. \fulfills{crt:IOSB}
  459.  
  460. \functionality{ Nötige Daten cachen }{fnc:cacheData}
  461. Für die Inferenz eines DBNs mit N Zeitschritten, werden insbesondere die Datensätze für die letzten N Zeitintervalle benötigt. Der Server stellt also sicher, dass immer zumindest der jeweils letzte Datensatz aus den M vorherigen Zeitintervallen zur Verfügung steht. Wobei M die größte Anzahl an Zeitschritten aller DBNs ist.
  462. \fulfills{crt:IOSB}
  463.  
  464. \functionality{ Evidenz-Formeln interpretieren }{fnc:intInf}
  465. Die Evidenz-Formeln beschreiben eine Verknüpfung der DBN-Knoten mit gegebenen Datensätzen. Diese Formeln müssen zum Zeitpunkt der Inferenz vom Server für gegebene Daten interpretiert und evaluiert werden.
  466. \fulfills{crt:IOSB}
  467. \fulfills{crt:infcal}
  468.  
  469. \functionality{ Evidenz-Formeln für Annotationen }{fnc:infAnnot}
  470. Es besteht die Möglichkeit, dass Evidenz-Formeln nicht nur für gegebene Datentypen in evaluiert werden können, sondern auch für beliebige Annotationen.
  471. \fulfills{crt:annotplus}
  472.  
  473. \functionality{ Inferenz berechnen }{fnc:calcInf}
  474. Für ein DBN kann der Server mit Hilfe einer Inferenz-Engine die Inferenz berechnen. Hierzu können entweder Virtuelle-Evidenzen aus der Testumgebung für Netze vorliegen oder die tatsächlichen Datensätze von den IOSB-Servern.
  475. \fulfills{crt:IOSB}
  476. \fulfills{crt:infcal}
  477.  
  478. \functionality{ Inferenz-Ergebnisse an IOSB Server senden }{fnc:sendRes}
  479. Die Ergebnisse der Inferenz für gegebene Datensätze werden in Echtzeit an die IOSB-Server zur weiteren Verarbeitung zurückgegeben. Hierbei müssen die Ergebnisse in ein von den IOSB-Servern akzeptiertes Format serialisiert werden.
  480. \fulfills{crt:IOSB}
  481.  
  482. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  483. \section{Produktdaten}
  484. Die Persistierung der jeweiligen Produktdaten erfolgt in einer beliebigen Datenbank, die object mapping von Spring Boot unterstützt.
  485.  
  486. \prodData{Benutzer}
  487. Die folgenden Daten werden für Nutzer-Konten persistiert:
  488. \begin{itemize}
  489. \item Name
  490. \item Nutzername
  491. \item E-Mail Adresse
  492. \item Rolle
  493. \item Hash des Passworts
  494. \end{itemize}
  495.  
  496. \prodData{Netze}
  497. Die folgenden Daten werden für Netzte persistiert:
  498. \begin{itemize}
  499. \item Name
  500. \item virtueller Ordner-Pfad
  501. \item Zeitschritte
  502. \item Graphstruktur
  503. \end{itemize}
  504.  
  505. \prodData{Evidenz-Formeln}
  506. Die folgenden Daten werden für Evidenz-Formeln persistiert:
  507. \begin{itemize}
  508. \item Name
  509. \item Formel-Ausdruck (keine Semantik)
  510. \end{itemize}
  511.  
  512. \section{Nicht-Funktionale Anforderungen}
  513.  
  514. \nonFunctionality{Modernes GUI}{nfc:GUI}
  515.  
  516. %Material Design erwähnen.
  517. Die GUI soll modern und einfach zu nutzen sein. Dazu werden grundlegende Material Design Guidlines eingehalten.
  518.  
  519. \nonFunctionality{50 gleichzeitige Nutzer}{nfc:concurrent}
  520.  
  521. Es sollen 50 Nutzer gleichzeitig an verschiedenen Netzen arbeiten dürfen.
  522.  
  523. \nonFunctionality{Modularität}{nfc:modular}
  524.  
  525. Das Produkt soll modular aufgebaut werden, sodass es nach der Übernahme vom Kunden leicht erweiterbar ist.
  526.  
  527. %%%%%%%%%%%
  528. \section{Tests}
  529.  
  530. \test{Login}{tst:log}
  531. \tests{fnc:sudoinit}
  532. \tests{fnc:login}
  533. \tests{fnc:resetpass}
  534. \tests{fnc:editpass}
  535.  
  536. \teststep{Anmeldeseite ist im Browser geöffnet.}
  537. {Superadmin meldet sich mit den korrekten Daten ich an. }
  538. {Webseite zur Benutzerverwaltung öffnet sich.}
  539.  
  540. \teststep{Anmeldeseite ist im Browser geöffnet.}
  541. {Admin meldet sich mit korrektem Nutzername und Passwort an.}
  542. {Netzwerk-Editor wird geöffnet.}
  543.  
  544. \teststep{Anmeldeseite ist im Browser geöffnet.}
  545. {Moderator meldet sich mit korrektem Nutzername und Passwort an.}
  546. {Testumgebung für Netze wird geöffnet.}
  547.  
  548. \teststep{Anmeldeseite ist im Browser geöffnet.}
  549. {Nutzer hat sein Passwort vergessen und Klick auf den \enquote{Forgot Password?} Knopf. Danach gibt der Nutzer seine Email-Adresse im vorgegebenen Textfeld ein und klickt auf den \enquote{Reset Password} Knopf.}{Falls die Email-Adresse in der Datenbank gespeichert ist wird dem Nutzer ein Link zur Zurücksetzung per Email geschickt.}
  550.  
  551. \teststep{Nutzer hat eine Passwort-Zurücksetzung angefordert und eine Email mit dem Link zum Zurücksetzen erhalten}
  552. {Nutzer klick auf den Link und wird auf angefordert ein neues Passwort zu setzen. Der Nutzer gib sein neues Passwort ein und klickt auf den \enquote{Confirm} Knopf.}
  553. {Das Passwort für den Nutzer wird in der Datenbank aktualisiert. Der Nutzer kann sich mit dem neuen Passwort anmelden.}
  554.  
  555.  
  556. \test{Nutzerverwaltung}{tst:super}
  557. \tests{fnc:sudoinit}
  558. \tests{fnc:searchusr}
  559. \tests{fnc:addusr}
  560. \tests{fnc:delusr}
  561. \tests{fnc:editusr}
  562.  
  563.  
  564. \teststep{Superadmin ist eingeloggt und die Seite zur Benutzerverwaltung ist im Browser geöffnet}
  565. {Superadmin erstellt einen neuen Nutzer mit Benutzername:\enquote{jsmith}, Name:\enquote{John Smith}, Email:\enquote{john.smith@kit.edu} und Rolle:\enquote{Admin}}
  566. {Ein Adminkonto mit Benutzername:\enquote{jsmith} wird für John Smith erstellt. Ein zufällig generiertes Passwort wird an die Email-addresse: \enquote{john.smith@kit.edu} gesendet.}
  567.  
  568. \teststep{Superadmin ist eingeloggt und die Seite zur Benutzerverwaltung ist im Browser geöffnet. Nutzer John Smith hat einen Adminkonto.}
  569. {Der Superadmin gibt in der Such-leiste jsmith ein}
  570. {Das Sucherbegnis liefert ein Konto mit Benutzername jsmith}
  571.  
  572. \teststep{Die Seite zur Benutzerverwaltung ist im Browser offen und zeigt das Suchergebnis der Suche nach \enquote{jsmith} ab.}
  573. {Der Superadmin klickt auf den \enquote{Edit} Knopf für den Benutzer: \enquote{jsmith} und änder den Benutzernamen von \enquote{jsmith} zu \enquote{smith}.}
  574. {Die Datenabnk wird akualisiert. John Smith kann nicht mehr mit dem Nutzernamen \enquote{jsmith} anmelden. John Smith muss sich mit dem Nutznamen \enquote{smith} und seinem alten passwort anmelden.}
  575.  
  576. \teststep{Die Seite zur Benutzerverwaltung ist im Browser offen und zeigt alle Nutzer in Listenform an.}
  577. {Der Superadmin klickt auf den \enquote{Delete} Knopf für den Benutzernamen: \enquote{bobby} und bestätigt die Warnmeldung.}
  578. {Das Konto vom Nutzer \enquote{bobby} wird von der Datenbank gelöscht. Alle Netze die der Nutzer erzeugt hat bleiben unberührt.}
  579.  
  580.  
  581. \test{Alle Nutzer}{tst:allUsr}
  582. \tests{fnc:changeLang}
  583. \tests{fnc:logoutAll}
  584.  
  585. \teststep{Tom ist angemeldet und befindet sich auf einer beliebigen Seite. Er hat aktuell \enquote{EN} als Sprache ausgewählt.}
  586. {Tom klickt im Menü auf den \enquote{EN}-Knopf. Daraufhin wählt er im aufkommenden Dropdown \enquote{DE} aus.}
  587. {Tom wird als ausgewählte Sprache nun \enquote{DE} angezeigt und alle Texte wurden auf Deutsch dargestellt.}
  588.  
  589. \teststep{Tom ist angemeldet und befindet sich auf einer beliebigen Seite.}
  590. {Tom klickt auf den \enquote{Logout}-Knopf.}
  591. {Tom wird abgemeldet und landet auf der Startseite.}
  592.  
  593. \test{Moderatorrechte}{tst:modrules}
  594. \tests{fnc:play}
  595. \tests{fnc:expnet}
  596. \tests{fnc:showgraph}
  597.  
  598. %GEhöhren diese Tests nich in den Testumgebung für Netze abschnitt?
  599.  
  600. \teststep{Alice ist angemeldet und in der Testumgebung für Netze. Auf der Testumgebungs-Fläche steht \enquote{Bitte Netz wählen}.}
  601. {Alice wählt aus der Ordnerstruktur ein Netz durch einen Doppelklick aus.}
  602. {Das Netz wird auf der Testumgebungs-Fläche graphisch angezeigt. Man kann jetzt Virtuelle-Evidenzen setzen und das Netz austesten.}
  603.  
  604. \teststep{Alice ist angemeldet und in der Testumgebung für Netze. Auf der Testumgebungs-Fläche ist ein Netz graphisch dargestellt.}
  605. {Alice klickt auf den \enquote{Export}-Knopf und wählt im Pop-up das .xdsl Format.}
  606. {Das geöffnete Netz in der Testumgebung für Netze wird vom Server heruntergeladen und lokal im .xdsl Format gespeichert. }
  607.  
  608.  
  609. \test{Evidenz Editor}{tst:eviMakeT}
  610. \tests{fnc:creaEvi}
  611. \tests{fnc:showInfo}
  612. \tests{fnc:delEvi}
  613. \tests{fnc:modEvi}
  614.  
  615. \teststep{Tom ist angemeldet und im Evidenz-Editor. Die Editorfläche ist leer.}
  616. {Tom Klickt auf den \enquote{New Evidence}-Knopf. Danach gibt er einen Namen für seine Evidenz ein. Er gibt die Formel :
  617. \enquote{var1 >= 10} ein und drückt auf den \enquote{Save}-Knopf}
  618. {Die Evidenz wird in der Liste links vom Editorfläche angezeigt}
  619.  
  620. \teststep{Tom ist angemeldet und im Evidenz-Editor. Die Editorfläche ist leer.}
  621. {Tom vergisst einen Namen einzugeben und gibt eine Valide Formel an. Er drückt auf den \enquote{Save}-Knopf}
  622. {Es wird eine Fehlermeldung angegeben die Tom sagt das er einen Namen eingeben muss. Die Evidenz wurde nicht gespeichert}
  623.  
  624. \teststep{Tom ist angemeldet und im Evidenz-Editor. Die Editorfläche ist leer. Es gibt eine Evidenz mit den Namen
  625. \enquote{Im Bereich}}
  626. {Tom gibt den Namen \enquote{Im Bereich} und eine Valide Formel an. Er drückt auf den \enquote{Save}-Knopf}
  627. {Es wird eine Fehlermeldung angegeben die Tom sagt das er einen noch nicht benutzten Namen eingeben muss. Die Evidenz wurde nicht gespeichert}
  628.  
  629. \teststep{Tom ist angemeldet und im Evidenz-Editor. Tom erstellt eine Neue Evidenz. Diese Evidenz ist in der Editorfläche angezeigt.}
  630. {Tom drückt auf den \enquote{?}-Knopf.}
  631. {Eine Pop-up Seite mit einer Zusammenfassung der Funktionalitäten des Evidenzen-Editors (Syntax der Formeln, vordefinierte Variablen und Funktionen,...) wird angezeigt.}
  632.  
  633. \teststep{Tom ist angemeldet und im Evidenz-Editor. Tom erstellt eine Neue Evidenz. Diese Evidenz ist in der
  634. Editorfläche angezeigt. Er hat auf den \enquote{?}-Knopf gedrückt und die Pop-up Seite
  635. mit allen Information wird angezeigt.}
  636. {Tom druckt auf den \enquote{Close}-Knopf.}
  637. {Die Pop-up Seite mit allen Informationen wird geschlossen.}
  638.  
  639. \teststep{Tom ist angemeldet und im Evidenz-Editor. Die Editorfläche ist leer.}
  640. {Tom klick auf den \enquote{Edit}-Knopf (mit einem Bleistift dargestellt) von einer Evidenz (in der Liste).}
  641. {Der Name und dir Formel werden in den entsprechende Eingabefelder geschrieben.}
  642.  
  643. \teststep{Tom ist angemeldet und im Evidenz-Editor. Die Editorfläche ist leer.}
  644. {Er klickt auf den \enquote{Delete}-Knopf (durch einen Mülleimer dargestellt) von einer Evidenz. Auf das Pop-up Fenster drückt er auf den \enquote{Yes}-Knopf.}
  645. {Die Evidenz ist nicht wehr in der Liste verfügbar}
  646.  
  647. \test{Formel eingeben}{tst:entForm}
  648. \tests{fnc:entForm}
  649. \tests{fnc:testCalc}
  650. \tests{fnc:callFnc}
  651.  
  652. \teststep{Tom ist angemeldet und im Evidenz-Editor. Die Editorfläche ist leer.}
  653. {Tom Klickt auf den \enquote{New Evidence}-Knopf. Danach gibt er einen Namen für seine Evidenz ein.
  654. Er gibt eine falsche Formel (z.B \enquote{((10 > Ship.speed)}) ein und drückt auf den \enquote{Save}-Knopf}
  655. {Eine Fehlermeldung wird angezeigt die Tom sagt das seine Formel falsch ist. Die Evidenz wurde nicht gespeichert}
  656.  
  657. \teststep{Tom hat eine gespeicherte Evidenz geladen. Der Name und die Formel werden angezeigt.}
  658. {Tom gibt in der Formel eine Variable ein die noch nicht in der Liste der Test Variablen steht. % Kann der Nutzer selbstständig Variablen definieren? Oder sind das nur vordefinierte Variablen bei denen der Nutzer zum Testen Werte eintragen kann.
  659. Tom klickt auf den \enquote{Save}-Knopf.}
  660. {Es wurde keine Fehlermeldung zurückgegeben und die Variable wurde zu den Test Variablen hinzugefügt.}
  661.  
  662. \teststep{Tom hat eine gespeicherte Evidenz geladen. Der Name und die Formel werden angezeigt. Die Formel ist : \enquote{Ship.speed} > 20}
  663. {Tom gibt als Test Wert 30 für die Variable Ship.speed ein. Er drückt auf den \enquote{Test} Knopf}
  664. {Der Wert \enquote{True wird zurückgegeben.}}
  665.  
  666. \teststep{Tom ist auf den Evidenz-Editor. Er hat auf den \enquote{New Evidence} Knopf geklickt und einen Namen eingegeben}
  667. {Im Formel Eingabefeld gibt er eine vordefinierte Funktion ein : \enquote{shipInSquare((Ship.x;Ship.y), (10;10), (10;-10), (-10,-10), (-10;10))}.
  668. Er gibt als Test Variable die werde 0 zu Ship.x und Ship.y ein. Er drückt auf den \enquote{Test} Knopf}
  669. {Es wird True zurückgegeben.}
  670.  
  671. \teststep{Tom ist auf den Evidenz-Editor. Er hat auf den \enquote{New Evidence} Knopf geklickt und einen Namen eingegeben}
  672. {Im Formel Eingabefeld gibt er eine vordefinierte Funktion ein die nicht existiert. Er klickt auf den \enquote{Save} Knopf.}
  673. {Es wird eine Fehlermeldung zurückgegeben}
  674.  
  675. \test{Testumgebung für Netze}{tst:plygrnd}
  676. \tests{fnc:setVirEvi}
  677. \tests{fnc:delVirEvi}
  678. \tests{fnc:delAllVirEvi}
  679. \tests{fnc:showVirEvi}
  680. \tests{fnc:saveGraphState}
  681. \tests{fnc:loadGraphState}
  682. \tests{fnc:loadDataStream}
  683.  
  684. \teststep{Tom ist in der Testumgebung für Netze und ein Netz ist geladen.}
  685. {Tom macht einen Doppelklick auf einen Knoten. Im aufgetauchten Pop-up Fenster setzt er den Wert der Evidenz auf \enquote{true}. Tom schließt das Fenster.}
  686. {Der Wert des Knoten wurde auf \enquote{true} gesetzt.}
  687.  
  688. \teststep{Tom ist in der Testumgebung für Netze und ein Netz ist geladen.}
  689. {Tom macht einen Doppelklick auf einen Knoten dessen Wert schon durch eine Virtuelle-Evidenz auf \enquote{true} festgelegt wurde.
  690. Im aufgetauchten Pop-up-Fenster klickt er auf den \enquote{Remove}-Knopf. Er schließt das Fenster.}
  691. {Der Wert des Knotens ist nicht mehr \enquote{true}, sondern unbestimmt.}
  692.  
  693. \teststep{Tom ist in der Testumgebung für Netze und hat ein Netz geladen. Einige Virtuelle-Evidenzen wurden bereits eingegeben.}
  694. {Tom führt die Rechnungen durch ein Klick auf den \enquote{Test}-Knopf.} %welchen Knopf soll er drücken???
  695. {Die Ergebnisse werden graphisch angezeigt (Graph in den Knoten über entsprechende Zeitschritte)}
  696.  
  697. \teststep{Tom ist in der Testumgebung für Netze und ein Netz ist geladen. Er hat schon ein paar virtuelle Evidenzen selbst eingegeben.}
  698. {Tom klickt auf den \enquote{Delete all}-Knopf}
  699. {Alle Evidenzen wurden gelöscht.}
  700.  
  701. \teststep{Tom ist in der Testumgebung für Netze und ein Netz ist geladen. Er hat schon ein paar virtuelle
  702. Evidenzen selbst eingegeben.}
  703. {Tom klickt auf den \enquote{Save Test}-Knopf. Auf das Pop-up Fenster gibt er einen Namen ein.
  704. Anschließen klickt er auf den
  705. \enquote{Save}-Knopf.}
  706. {Die \enquote{.json} Datei wir heruntergeladen.}
  707.  
  708. \teststep{Tom ist in der Testumgebung für Netze und ein Netz ist geladen.
  709. Tom besitzt eine .json Datei die zu diesen Knoten passt.}
  710. {Tom klickt auf den \enquote{Open Test}-Knopf. In der Datei-Übersicht sucht er seine \enquote{.json}-Datei aus.}
  711. {Alle Werte die in der Datei gespeichert sind, wurden erfolgreich in der Testumgebung geladen.}
  712.  
  713. \teststep{Tom ist in der Testumgebung für Netze und ein Netz ist geladen.}
  714. {In der Dropdown-Liste wählt Tom einen Daten-Stream aus, der zu diesen Graphen passt.
  715. Er führt die Berechnungen durch.}
  716. {In jeden Knoten wird eine Grafik (über die Zeit) des Knotenwerts angezeigt)} %KEIN DEUTSCH
  717.  
  718.  
  719. \test{Modifizierung der Ordnerstruktur}{tst:ordstr}
  720. \tests{fnc:cngfilestr}
  721. \tests{fnc:renamenet}
  722. \tests{fnc:netimport}
  723. \tests{fnc:copynet}
  724.  
  725. % TODO: DBN Ansicht <-> Ordneransicht
  726.  
  727. \teststep{Tom ist im System angemeldet und die DBN Ansicht ist aktiv. Es existiert ein Ordner
  728. \enquote{TestFolder} mit einem Netz \enquote{TestDBN}. Das Netz wird aktuell nicht bearbeitet.}
  729. {Tom macht Rechtsklick auf den Ordner und wählt \enquote{Rename} aus. Er gibt den Namen \enquote{TestFolder2} ein und bestätigt seine Aktion.}
  730. {Der Ordner wird zu \enquote{TestFolder2} umbenannt und direkt unter dem neuen Namen angezeigt.}
  731.  
  732. \teststep{Tom ist im System angemeldet und hat die DBN Ansicht aktiv. Es existiert ein Ordner \enquote{TestFolder} mit einem Netz \enquote{TestDBN}. Das Netz wird aktuell von einem anderen Admin bearbeitet.}
  733. {Tom macht Rechtsklick auf den Ordner und wählt \enquote{Rename} aus. Er gibt den Namen \enquote{TestFolder2} ein und bestätigt seine Aktion.}
  734. {Tom erhält eine Fehlermeldung und die Änderung wird nicht durchgeführt.}
  735. \tests{fnc:modFolName}
  736.  
  737. \teststep{Tom ist im System angemeldet und die DBN Ansicht ist aktiv. Es existiert ein Ordner \enquote{TestFolder} mit einem Netz \enquote{TestDBN}. Das Netz wird aktuell nicht bearbeitet.}
  738. {Tom macht Rechtsklick auf den Ordner, wählt \enquote{Delete} aus und bestätigt seine Aktion.}
  739. {Der Ordner und das enthaltene DBN \enquote{TestDBN} werden gelöscht.}
  740.  
  741. \teststep{Tom ist im System angemeldet und die DBN Ansicht ist aktiv. Es existiert ein Ordner \enquote{TestFolder} mit einem Netz \enquote{TestDBN}. Das Netz wird aktuell von einem anderen Admin bearbeitet.}
  742. {Tom macht Rechtsklick auf den Ordner, wählt \enquote{Delete} aus und bestätigt seine Aktion.}
  743. {Tom erhält eine Fehlermeldung und sowohl der Ordner als auch das DBN bleiben bestehen.}
  744. \tests{fnc:delFol}
  745.  
  746. % Würde der Nutzer nicht erwarten, das Netz mit der Maus verschieben zu können. // is aber umständlich
  747. \teststep{Tom ist im System angemeldet und die DBN Ansicht ist aktiv. Es existiert ein leerer Ordner \enquote{TestFolder} und ein Ordner \enquote{TestFolder2} mit einem Netz \enquote{TestDBN}. Das Netz wird aktuell nicht bearbeitet.}
  748. {Tom macht Rechtsklick auf \enquote{TestDBN} und wählt \enquote{Move} aus. Er wählt im aufkommendem Dialog \enquote{TestFolder} aus und bestätigt seine Aktion.}
  749. {Das Netz wird verschoben: Der Ordner \enquote{TestFolder} enthält nun das Netz \enquote{TestDBN} und der Ordner \enquote{TestFolder2} ist leer.}
  750.  
  751. \teststep{Tom ist im System angemeldet und die DBN Ansicht ist aktiv. Es existiert ein leerer Ordner \enquote{TestFolder} und ein Ordner \enquote{TestFolder2} mit einem Netz \enquote{TestDBN}. Das Netz wird aktuell bearbeitet.}
  752. {Tom macht Rechtsklick auf \enquote{TestDBN} und wählt \enquote{Move} aus. Er wählt im aufkommendem Dialog \enquote{TestFolder} aus und bestätigt seine Aktion.}
  753. {Tom erhält eine Fehlermeldung und die Änderung wird nicht durchgeführt.}
  754. \tests{fnc:putNetInFol}
  755.  
  756. \teststep{Tom ist im System angemeldet und die DBN Ansicht ist aktiv. Es existiert ein Ordner \enquote{TestFolder} mit einem Netz \enquote{TestDBN}. Das Netz wird aktuell nicht bearbeitet.}
  757. {Tom macht Rechtsklick auf das Netz \enquote{TestDBN}, wählt \enquote{Delete} aus und bestätigt seine Aktion.}
  758. {Das Netz \enquote{TestDBN} wird gelöscht und der Ordner \enquote{TestFolder} ist im Anschluss leer.}
  759.  
  760. \teststep{Tom ist im System angemeldet und die DBN Ansicht ist aktiv. Es existiert ein Ordner \enquote{TestFolder} mit einem Netz \enquote{TestDBN}. Das Netz wird aktuell von einem anderen Admin bearbeitet.}
  761. {Tom macht Rechtsklick auf das Netz \enquote{TestDBN}, wählt \enquote{Delete} aus und bestätigt seine Aktion.}
  762. {Tom erhält eine Fehlermeldung und das Netz bleibt bestehen.}
  763. \tests{fnc:delNet}
  764.  
  765. \teststep{Tom ist im System angemeldet und die DBN Ansicht ist aktiv. Es existiert ein Ordner \enquote{TestFolder} mit einem Netz \enquote{TestDBN}. Das Netz wird aktuell nicht bearbeitet.}
  766. {Tom klickt auf \enquote{Import Net} und wählt im aufkommenden Dateidialog die Datei \enquote{test.xdsl} aus.}
  767. {Das Netz \enquote{test} wurde in den aktuell ausgewählten Ordner eingefügt.}
  768.  
  769. \teststep{Tom ist im System angemeldet und die DBN Ansicht ist aktiv. Es existiert ein Ordner \enquote{TestFolder} mit einem Netz \enquote{TestDBN} und \enquote{test}. Das Netz wird aktuell nicht bearbeitet.}
  770. {Tom rechtsklickt auf \enquote{TestDBN} und wählt die Option \enquote{Duplicate}.}
  771. {Das Netz \enquote{TestDBN} wurde in den aktuell ausgewählten Ordner dupliziert unter dem Namen \enquote{TestDBN (Copy)}.}
  772.  
  773. \test{Kommunikation über ActiveMQ}{tst:amq}
  774. \tests{fnc:getServData}
  775. \tests{fnc:sendRes}
  776.  
  777. \teststep{Der Server ist einsatzbereit.}
  778. {In der ActiveMQ der IOSB-Server liegen Schiffsdaten an.}
  779. {Der Server entnimmt die Daten aus der Queue und deserialisiert diese in ein Schiffsobjekt ohne dabei den Informationsgehalt zu ändern.}
  780.  
  781. \teststep{Der Server ist einsatzbereit und berechnet die Inferenz für ein Schiffsobjekt.}
  782. {Die Inferenzberechnung für das Schiffsobjekt ist abgeschlossen.}
  783. {Der Server serialisiert die Inferenzergebnisse in ein von den IOSB-Servern akzeptiertes Format und übergibt diese an ActiveMQ}
  784.  
  785.  
  786. \test{Caching}{tst:caching}
  787. \tests{fnc:cacheData}
  788.  
  789. \teststep{Der Server ist einsatzbereit und es gibt DBNs mit max. 12 Zeitschritten.}
  790. {Der Server erhält 13 Schiffsobjekte nacheinander.}
  791. {Mindestens die letzten 12 dieser Schiffsobjekte stehen noch dem Server zur Verfügung.}
  792.  
  793.  
  794. \test{Inferenzberechnung}{tst:infr}
  795. \tests{fnc:intInf}
  796. \tests{fnc:calcInf}
  797. \tests{fnc:infAnnot}
  798.  
  799. % Wurde eigentlich nicht mal gesagt, das ein Knoten auch mehr Zustände haben kann als nur true und false? Wie genau funktioniert dann die Zuweisung der Evidenzen.
  800. \teststep{Der Server ist einsatzbereit und es gibt:
  801. \begin{itemize}
  802. \item Ein dem Server bekanntes Gebiet namens \enquote{AREA4}, welches den Punkt (x = 32.243, y = 27.148) nicht enthält
  803. \item Ein anliegendes Schiffsobjekt mit speed = 2.54, x = 32.243 und y = 27.148
  804. \item Die Inferenz-Formel namens \enquote{TestExp} mit dem Wert \enquote{(ship.speed < 9.5) \& !(isInArea(ship.x, ship.y, AREA4))}
  805. \item Ein Netz namens \enquote{TestDBN}, das für einen Knoten die Formel \enquote{TestExp} nutzt
  806. \end{itemize}}
  807. {Das beschriebene Schiffsobjekt trifft ein und löst so eine Inferenzberechnung für \enquote{TestDBN} aus.}
  808. {Die Formel \enquote{TestExp} wird durch den Server interpretiert und evaluiert und als Evidenz in den Knoten eingesetzt. Der Knoten sollte im Anschluss den Wert 1 (bzw. true) haben.}
  809.  
  810. \teststep{Der Server ist einsatzbereit und es gibt ein vordefiniertes Netz namens \enquote{TestDBN}.}
  811. {Eine von der Testumgebung für Netze ausgelöste Anfrage löst die Inferenzberechnung für \enquote{TestDBN} mit gegebenen virtuellen Evidenzen aus.}
  812. {Der Server übergibt das Netz und die Virtuellen Evidenzen an die Inferenz-Engine wartet auf die erfolgreiche Berechnung.}
  813.  
  814. \test{Grundlegende Netz-Editor Funktionen}{tst:neteditorbasics}
  815. \tests{fnc:useeditor}
  816. \tests{fnc:makenet}
  817. \tests{fnc:savenet}
  818. \tests{fnc:addnode}
  819. \tests{fnc:delnode}
  820. \tests{fnc:movenode}
  821. \tests{fnc:renamenode}
  822. \tests{fnc:settempsteps}
  823. \tests{fnc:validatenet}
  824.  
  825. \teststep{Ein Admin befindet sich im Startbildschirm. Es sind bisher keine Netze im System vorhanden.}
  826. {Der Admin klickt auf den \enquote{Create Net}-Knopf.}
  827. {Der Netzeditor öffnet sich und ein leeres Bearbeitungsfenster erscheint. Das Netz ist bisher nur lokal und nicht auf dem Server verfügbar.}
  828.  
  829. \teststep{Ein Admin befindet sich im Netzeditor. Es sind keine Netze auf dem Server verfügbar. Ein leeres Netz ist lokal geöffnet.}
  830. {Der Admin klickt auf den \enquote{Add Node}-Knopf. Danach klickt er im leeren Bearbeitungsfenster auf den Ort, an dem der Knoten erscheinen soll.}
  831. {Ein neuer Knoten erscheint an der angeklickten Stelle und der Name des Knotens ist im Bearbeitungsmodus und wartet auf eine Eingabe.}
  832.  
  833. \teststep{Ein Admin befindet sich im Netzeditor. Ein leeres Netz ist lokal geöffnet.}
  834. {Der Admin gibt im Eingabefeld \enquote{Timesteps} die Zahl 7 ein.}
  835. {Die Eingabe wird übernommen und es stehen nur Zeitpfeile mit bis zu 7 Zeitschritten zur Verfügung.}
  836.  
  837. \teststep{Ein Admin befindet sich im Netzeditor. Ein Netz mit 5 Zeitschritten ist lokal geöffnet. Das Netz beinhaltet einen 3er Zeitpfeil.}
  838. {Der Admin gibt im Eingabefeld \enquote{Timesteps} die Zahl 2 ein.}
  839. {Die Eingabe wird nicht übernommen und der Admin erhält eine Fehlermeldung.}
  840.  
  841. \teststep{Ein Admin befindet sich im Netzeditor. Es sind keine Netze auf dem Server verfügbar. Ein Netz mit einem Knoten ist lokal geöffnet. Der Name des Knotens wird derzeit bearbeitet.}
  842. {Der Admin gibt dem Knoten den Namen \enquote{TestNode} und bestätigt seine Eingabe mit dem \enquote{Enter}-Knopf}
  843. {Der Knoten im lokalen Netz ist nun als \enquote{TestNode} gespeichert und der Knoten wird abgewählt.}
  844.  
  845. \teststep{Ein Admin befindet sich im Netzeditor. Es sind keine Netze auf dem Server verfügbar. Ein Netz mit einem Knoten namens \enquote{TestNode} ist lokal geöffnet. Derzeit ist kein Element ausgewählt.}
  846. {Der Admin klickt auf den Knoten \enquote{TestNode} und zieht ihn an eine andere Position innerhalb des Bearbeitungsfensters. Dann lässt er die Maustaste los.}
  847. {Der Knoten ist nun an der Stelle, zu der er gezogen wurde. Der Knoten ist dann wieder abgewählt.}
  848.  
  849. \teststep{Ein Admin befindet sich im Netzeditor. Es sind keine Netze auf dem Server verfügbar. Ein Netz mit einem Knoten namens \enquote{TestNode} ist lokal geöffnet. Derzeit ist kein Element ausgewählt.}
  850. {Der Admin erstellt wie in den Schritten 2 und 3 beschrieben einen neuen Knoten namens \enquote{TestNode2}.}
  851. {Ein neuer Knoten namens \enquote{TestNode2} erscheint im Bearbeitungsfenster and der vom Nutzer angegebenen Position.}
  852.  
  853. \teststep{Ein Admin befindet sich im Netzeditor. Es sind keine Netze auf dem Server verfügbar. Ein Netz mit einem Knoten namens \enquote{TestNode} und einem Knoten namens \enquote{TestNode2} ist lokal geöffnet. Derzeit ist kein Element ausgewählt.}
  854. {Der Admin wählt den Knoten \enquote{TestNode} mit einem Linksklick an und drückt dann die \enquote{Delete}-Taste}
  855. {Der Knoten \enquote{TestNode} wird aus dem dem aktuellen Netz gelöscht. Es ist zur Zeit kein Knoten ausgewählt.}
  856.  
  857. \teststep{Ein Admin befindet sich im Netzeditor. Es sind keine Netze auf dem Server verfügbar. Ein Netz mit einem Knoten namens \enquote{TestNode2} ist lokal geöffnet. Derzeit ist kein Element ausgewählt.}
  858. {Der Admin gibt das Tastenkürzel \enquote{CTRL + s} ein.}
  859. {Das Netz ist nun nicht mehr nur lokal verfügbar sondern wird auf den Server hochgeladen. Da das Netz valide ist gibt es keine Fehlermeldung durch den Validierer.}
  860.  
  861. \test{Ändern der Hintergrundfarbe im Netzeditor}{tst:netcolorchange}
  862. \tests{fnc:opennet}
  863. \tests{fnc:cngcolor}
  864.  
  865. \teststep{Ein Admin befindet sich im Startbildschirm. Ein Netz namens \enquote{NetTest} mit einem Knoten namens \enquote{NodeOne} existiert bereits.}
  866. {Der Admin öffnet das Netz \enquote{NetTest} durch Klick auf den Netznamen in der Orderstruktur.}
  867. {Der Netzeditor öffnet sich mit und der Knoten \enquote{NodeOne} befindet sich im Bearbeitungsfenster.}
  868.  
  869. \teststep{Der Admin befindet sich nun im Netzeditor und bearbeitet das Netz \enquote{NetTest}. Ein leerer Knoten \enquote{NodeOne} wird im Bearbeitungsfenster angezeigt.}
  870. {Der Admin öffnet das \enquote{Properties}-Menü des Knoten \enquote{NodeOne} und klickt auf den \enquote{Background}-Knopf.}
  871. {Es öffnet sich ein Pop-up-Fenster mit einem Farbrad wobei die aktuelle Farbe des Knotens (weiß) markiert ist.}
  872.  
  873. \teststep{Der Admin ist im Netzeditor und ein Fenster zum Auswählen der Hintergrundfarbe ist geöffnet.}
  874. {Der Admin wählt einen dunkelblauen Hintergrund im Farbrad aus und bestätigt seine Auswahl mit dem \enquote{OK}-Knopf.}
  875. {Das Farbwähl-Fenster schließt sich und der Knoten \enquote{NodeOne} hat nun eine dunkelblaue Hintergrundfarbe. Da der neue Hintergrund dunkel ist, wurde die Textfarbe automatisch auf weiß gesetzt.}
  876.  
  877. \test{Ein derzeit bearbeitetes Netz wird gesperrt}{tst:locknet}
  878. \tests{fnc:locknet}
  879.  
  880. \teststep{Der Admin befindet sich im Startbildschirm. Es existiert ein einziges Netz welches gerade von einem anderen Admin bearbeitet wird.}
  881. {Der Admin klickt auf das derzeit bearbeitete Netz.}
  882. {Ein Fehler wird angezeigt, da das Netz derzeit bearbeitet wird.}
  883.  
  884. \teststep{Der Admin befindet sich im Startbildschirm. Es existiert ein einziges Netz welches gerade von einem anderen Admin bearbeitet wird.}
  885. {Der Admin wählt \enquote{Delete} im Rechtsklickmenü des Netzes aus.}
  886. {Ein Fehler wird angezeigt, da das Netz derzeit bearbeitet wird.}
  887.  
  888. \test{Undo und Redo}{tst:undoredo}
  889. \tests{fnc:undo}
  890. \tests{fnc:redo}
  891.  
  892. \teststep{Ein Admin befindet sich im Netzeditor. Ein Netz ist geöffnet mit einem Knoten.}
  893. {Der Admin löscht den Knoten durch Klick auf die \enquote{Delete}-Taste während der Knoten ausgewählt ist.}
  894. {Der Knoten wird gelöscht.}
  895.  
  896. \teststep{Der Admin befindet sich im Netzeditor. Es existieren keine Knoten im Netz.}
  897. {Der Admin klickt den \enquote{Undo}-Knopf.}
  898. {Das Löschen des Knoten wird Rückgängig gemacht.}
  899.  
  900. \teststep{Der Admin befindet sich im Netzeditor. Das Netz besteht aus einem Knoten.}
  901. {Der Admin klickt den \enquote{Redo}-Knopf.}
  902. {Der zuvor gelöschte und dann wiederhergestellte Knoten wird wieder gelöscht.}
  903.  
  904. \teststep{Der Admin befindet sich im Netzeditor. Es existieren keine Knoten im Netz.}
  905. {Der Admin klickt wieder den \enquote{Undo}-Knopf.}
  906. {Der gelöschte Knoten wird wiederhergestellt.}
  907.  
  908. \teststep{Der Admin befindet sich im Netzeditor. Es existiert ein Knoten im Netz.}
  909. {Der Admin führt eine beliebige Aktion aus (außer Undo und Redo).}
  910. {Der \enquote{Redo}-Knopf ist nun nicht mehr betätigbar, da der Admin eine Aktion ausgeführt hat.}
  911.  
  912. \test{Wahrscheinlichkeiten und Pfeile}{tst:probabilitiesarrows}
  913. \tests{fnc:insert}
  914. \tests{fnc:addarrow}
  915. \tests{fnc:addtimearrow}
  916. \tests{fnc:delarrow}
  917. \tests{fnc:assignevi}
  918.  
  919. \teststep{Ein Admin befindet sich im Netzeditor. Ein Netz ist geöffnet mit:
  920. \begin{itemize}
  921. \item Einem Knoten namens \enquote{NodeOne}
  922. \item Einem Knoten namens \enquote{NodeTwo}
  923. \end{itemize}}
  924. {Der Admin klickt auf den \enquote{Add Arrow}-Knopf und klickt dann zuerst auf \enquote{NodeOne} und dann auf \enquote{NodeTwo}}
  925. {Ein Pfeil zwischen \enquote{NodeOne} und \enquote{NodeTwo} ist hinzugefügt worden.}
  926.  
  927. \teststep{Ein Admin befindet sich im Netzeditor mit zwei durch einen Pfeil verbundenen Knoten.}
  928. {Der Admin öffnet mit Doppelklick auf \enquote{NodeTwo} das \enquote{Properties}-Menü und geht dort auf den \enquote{Probabilities}-Reiter.}
  929. {Das \enquote{Properties}-Fenster öffnet sich und ist gefüllt mit einer Wahrscheinlichkeitstabelle:
  930. \begin{tabular}{c || c | c}
  931. NodeOne => & true & false \\
  932. \hline
  933. true & 0.5 & 0.5 \\
  934. false & 0.5 & 0.5
  935. \end{tabular}}
  936.  
  937. \teststep{Ein Admin befindet sich im Netzeditor mit zwei durch einen Pfeil verbundenen Knoten. Das \enquote{Properties}-Menü ist geöffnet und zeigt den \enquote{Probabilities}-Reiter.}
  938. {Der Admin verändert den Wert des linksoben stehenden Felds auf 0.75 und drückt dann den \enquote{Recalculate}-Knopf.}
  939. {Der Wert des linksunten stehenden Felds verändert sich von 0.5 zu 0.25.}
  940.  
  941. \teststep{Ein Admin befindet sich im Netzeditor mit zwei durch einen Pfeil verbundenen Knoten. Das \enquote{Properties}-Menü ist geöffnet und zeigt den \enquote{Probabilities}-Reiter.}
  942. {Der Admin klickt auf den \enquote{OK}-Knopf.}
  943. {Das \enquote{Properties}-Fenster schließt sich und die Wahrscheinlichkeiten werden gespeichert.}
  944.  
  945. \teststep{Ein Admin befindet sich im Netzeditor mit zwei durch einen Pfeil verbundenen Knoten.}
  946. {Der Admin wählt den Pfeil zwischen \enquote{NodeOne} und \enquote{NodeTwo} aus und drückt die \enquote{Delete}-Taste.}
  947. {Der Pfeil wird gelöscht.}
  948.  
  949. \teststep{Ein Admin befindet sich im Netzeditor mit zwei Knoten.}
  950. {Der Admin klickt auf den \enquote{Add Time Arrow}-Knopf. Danach klickt er zuerst auf \enquote{NodeOne} und dann auf \enquote{NodeTwo}.}
  951. {Die beiden Knoten werden mit einem Zeitpfeil verbunden. Das Zeitschrittfeld ist zur Bearbeitung ausgewählt.}
  952.  
  953. \teststep{Ein Admin befindet sich im Netzeditor mit zwei durch einen Zeitpfeil verbundenen Knoten.}
  954. {Der Admin fügt den Wert \enquote{2} in das Zeitschrittfeld ein und bestätigt seine Eingabe mit der \enquote{Return}-Taste.}
  955. {Das Zeitschrittfeld wird nun nicht mehr bearbeitet und enthält den Wert \enquote{2}.}
  956.  
  957. \test{Evidenzen zuweisen}{tst:assignevidences}
  958. \tests{fnc:assignevi}
  959.  
  960. \test{Autolayout}{tst:autolayout}
  961. \tests{fnc:autolayoutplus}
  962.  
  963. \teststep{Ein Admin befindet sich im Netzeditor. Ein Netz mit mehreren Knoten und Pfeilverbindungen ist geladen.}
  964. {Der Admin klickt auf den \enquote{Autolayout}-Knopf.}
  965. {Die Knoten und Pfeile des Netzes werden nach dem Standardalgorithmus angeordnet.}
  966.  
  967. %%%%%%%%%%%%%
  968. \pagebreak
  969.  
  970. \section{Systemmodelle}
  971. \begin{figure}[h!]
  972. \includegraphics[width=\linewidth]{image/PSE20191028.pdf}
  973. \caption{Systemmodel}
  974. \label{fig: Systemmodel}
  975. \end{figure}
  976.  
  977. \appendix
  978.  
  979. \section{GUI-Entwürfe}
  980. \label{section:gui}
  981.  
  982. % made via https://gomockingbird.com/projects/mnf0cwf/4gXVnC
  983.  
  984. \section{Glossar}
  985.  
  986. \textbf{Klick}:
  987. Linksklick
  988.  
  989. \end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement