visualG/README.md

4.0 KiB

VisuAlg ist eine Software zur Visualisierung von Algorithmen und Datenstrukturen. Sie kommt leider schon lange nicht mehr in der Vorlesung "Algorithmen und Datenstrukturen" zum Einsatz.


VisuAlg wurde in der Vergangenheit von Bachelor- und Masterstudierenden im Zuge ihres Softwareprojekts entwickelt. Dieses Projekt ist ein Fork des abgeschlossenen Softwareprojekts WS18/19 SS19.


Einführung

VisuAlg hat eine komplexe Paketstruktur und viele verschiedene Komponenten. Daher hier eine kurze Einführung in die Funktionsweise der Software.

Datenstrukturen:

  • die Datenstrukturen werden in drei Typen ArrayStructure, GraphStructure und TreeStructure unterschieden
  • zu ArrayStructure zählen zum Beispiel das statische und dynamische Array, die einfach-verkettete Liste, Skip-Liste und Hash-Tabelle
  • die Datenstrukturen sind in structure umgesetzt
  • die abstrakte Klasse Structure fasst alle DS zusammen

Algorithmen:

  • ein Algorithmus kann auf genau einer oder einem Typ von Datenstruktur angewandt werden
  • ein Algorithmus kann Hilfs-Datenstrukturen hinzufügen
  • ein Algorithmus setzt sich aus den Änderungen auf den Datenstrukturen, dem Highlighting und dem Pseudocode zusammen
  • der Pseudocode orientiert sich am Pseudocode von Prof. Weicker
  • die Algorithmen sind in algorithm umgesetzt
  • die abstrakte Klasse Algorithm fasst alle Algorithmen zusammen

Darstellung:

  • die Darstellung von Datenstrukturen, die Operationen zum Highlighting und die Kontextmenüs sind in den Drawable-Klassen umgesetzt
  • über die Klassen bzw. Kontextmenüs werden die Algorithmen aufgerufen
  • die abstrakte Klasse StructureDrawable fasst alle Drawables zusammen

Import / Export:

  • eine Datenstruktur wird als XML-Datei gespeichert
  • die Funktionalitäten zum Importieren und Exportieren von Datenstrukturen sind unter dataholder umgesetzt

Einstellungen:

  • die Einstellungen werden als XML-Datei gespeichert
  • die Funktionalitäten zum Laden, Setzen und Speichern von Einstellungen sind unter option umgesetzt

Mitmachen

Im Folgenden sind die Regeln zur Arbeit an diesem Projekt festgehalten:

Mitarbeit:

  • jeder kann an dieser Software mitarbeiten
  • die Software wird in Java 8 mit JavaFX entwickelt
  • Bugs können jederzeit behoben werden
  • ein Feature sollten nur dann umgesetzt werden, wenn es als wünschenswert bestätigt wurde
  • für dieses Projekt gibt es kein Ticketsystem, daher werden die Tickets und Bugs als Issues verwaltet
  • jeder kann neue Issues erstellen
  • jeder kann sich ein Issue selbst zuweisen, sofern es noch nicht von jemand anderem bearbeitet wird
  • die Änderungen eines Issues sind auf einem separatem Branch, abgezweigt von master und mit dem Namen "G-X", umzusetzen; dabei steht "X" für die ID des bearbeiteten Issues
  • unter THANKS.txt werden die Namen und Arbeiten der beteiligten Personen festgehalten

Merge Request:

  • nach / während der Umsetzung eines Issues kann ein Merge Request in master gestellt werden
  • der Titel und die Beschreibung des MR sollten auf das Issue und die umgesetzten Änderungen hinweisen
  • die Änderungen des MR sollten von mindestens 2 anderen Personen gereviewed und als "Gut" befunden werden
  • das Code-Review eines MR umfasst Korrektheit, Funktionalität, Darstellung, Test, Testabdeckung, Eintrag ins Handbuch (sofern notwendig)
  • die Abstimmung über einen MR passiert über die Däumchen auf der Seite des MR
  • vor dem Mergen eines MR muss der Ziel-Branch in den Issue-Branch gemergt werden

Code-Konventionen:

  • Code, Dokumentation und Commit-Nachrichten werden in Englisch geschrieben
  • die Beschreibung von Issues wird auf Deutsch verfasst
  • der Code muss mit visualgFormatter.xml formatiert sein (Standard-Formatierung in Eclipse)
  • Variablen-, Methoden- und Klassennamen sind passend und selbsterklärend zu wählen
  • Funktionalitäten und Variablen müssen mit JavaDoc dokumentiert werden