Lerntagebuch-Zugriffsrechte fuer Lerngruppen

Aus THM-Wiki
Wechseln zu: Navigation, Suche

Allgemeines

In diesen Artikel wird die Erweiterung des Lerntagebuchs um Zugriffsrechte für Lerngruppenim Rahmen des Kurses "Methoden des Softwareentwicklungsprozesses" (WS 07/08) beschrieben.

Das Lerntagebuch dient dazu, Aufgaben, Lernfortschritte und Defizite zu notieren und so sich selbst und den Dozenten einen Überblick sowohl über Lernerfolge als auch Defizite, die gezielt behoben werden müssen, zu geben.

Aufgabenstellung

Das Ziel der Aufgabenstellung bestand darin, die Usability zu verbessern.

Für den gesamten Umfang der Aufgabe inklusive Dokumentation stand eine Person mit 2,5 PT (20 Stunden) zur Verfügung.

Ursprüngliche Aufgabenstellung

Da der Benutzer, der das Lerntagebuch anlegt, die Zugriffsrechte einzeln für jeden Lese- bzw. Schreibberechtigen auswählen muß, sollte eine Lösung für die Rechtevergabe nach Gruppen implementiert werden. Deshalb sollte den Editiermodi des Lerntagebuchs je eine Auswahlbox für Lese- und Schreibrechte von Lerngruppen hinzugefügt werden.

Erweiterte Aufgabenstellung

Bei der Präsentation der ursprünglichen Aufgabe entstand der Auftrag, diese um Kurse zu erweitern. Dies konnte jedoch aufgrund des Zeitaufwandes des Hauptprojekts (Suchmaschine) nicht mehr bis zum Code-Freeze realisiert werden.

Entwicklung

Phase 1 - Überblick

Arbeitsaufwand: 4 Std.

Diese Phase diente der Aufwandsschätzung und zur Auswahl der Vorgehensweise. Dabei entstanden folgende Resultate:

  • Da der Entwickler keine Kenntnisse in PHP hatte, musste zusätzlicher Aufwand wegen mangelndem Know-How und darauf basierenden, simplen Fehler eingerechnet werden.
  • Weil die zur Verfügung stehende Zeit sehr knapp war, musste auf komplexe Entwicklungsmodelle verzichtet werden. Daher sollten einfache Konzepte, wie "Code&Fix" und "extremeProgramming" zum Einsatz kommen.

Phase 2 - Analyse

Arbeitsaufwand: 5 Std.

Diese Phase diente zum analysieren des bestehenden Codes und Planung der nötigen Veränderungen/Erweiterungen. Dabei sind einige Probleme im Code zu Tage getreten:

  • Überflüssiger Code (keine nachvollziehbare Logik bzw. Notwendigkeit).
  • Viele verschiedene Programmierstile.
  • Inkonsequente Nutzung der Objekorientierung.
  • Hohe Code-Redundanz (Beispiel "class.editdiary.inc.php": Die Funktionen "showDiaryDialog", "newDiaryDialog" und "editDiaryDialog" mit ca. 200 Zeilen/Funktion waren zu ca. 95% identisch).
  • Zu bearbeitende Dateien:
  • PHP:
  • SQL:

Phase 3 - Umsetzung

Iteration 1 (Refactoringversuch)

Arbeitsaufwand: 15 Std.
User Story:
  • Der hochredundante Code in zig verschiedenen Programmierstilen sollte durch Refactoring lesbar und verständlich gemacht werden.
Tasks:
  • Durchsuchen des Codes nach Redundanzen.
  • Ersetzen redundanter Bereiche durch schlanke Funktionen, die in allen Redundanzbereichen wiederverwendet werden.
  • Manuelle Tests des neuen Codes.

Aufgrund der geringen PHP-Kenntnisse und des hohen Zeitaufwandes musste das Refactoring abgebrochen und der Originalcode verwendet werden.

Iteration 2 (Implementierung der Rechtezuteilung für Lerngruppen)

Auswahl Lerngruppenrechte im Editier-Modus

Arbeitsaufwand: 9 Std.

User Story:
  • Wenn sich der Benutzer im Editiermodus des Lerntagebuchs befindet, hat er zwei Select-Boxen ("Lesezugriff Lerngruppe" und "Schreibzugriff Lerngruppe") zur Verfügung, in denen die Lerngruppen aufgelistet sind. Durch Einfachauswahl per Maus-Klick oder Mehrfachauswahl mit gedrückter STRG-Taste kann er Lerngruppen Lese- und/oder Schreibrechte auf den Tagebucheintrag erteilen. Dadurch können nicht nur einzelne Benutzer, sondern auch Benutzergruppen ausgewählt werden, wodurch die Usability erheblich verbessert wird.
Tasks:
  • Zusammenhänge zwischen den PHP-Dateien nachvollziehen.
  • Codebereiche finden, in denen die HTML-Maske erzeugt wird.
  • Codebereiche finden, in denen die Variablen dem Backend übergeben werden.
  • Codebereiche finden, in denen die Authorisierung verarbeitet wird.
  • In den Funktionen "showDiaryDialog", "newDiaryDialog" und "editDiaryDialog" HTML-Elemente per Copy&Paste hinzufügen.
  • In den Dateien/Codebereichen, die für die Übergabe der Variablen zuständig sind, die zusätzlichen Variablen "readAccessLG" und "writeAccessLG" einfügen (hauptsächlich Copy&Paste)
  • Im Codebereich für die Authorisierung Code für die Lerngruppen ändern/hinzufügen


Aufgrund des bereits vorher hoch-redundanten Codes blieb an vielen Stellen nur die Möglichkeit des Copy&Paste,
da sonst die komplexe Code-Struktur funktionsunfähig geworden wäre -> Siehe Fazit!

Phase 4 - Dokumentation erstellen

Arbeitsaufwand: 3 Std.

Zusätzlich zur Inline-Dokumentation im Code (Doxygen-gemäße Kommentare) sollte dieser Wiki-Artikel erstellt werden. Dabei sollten besonders die Vorgehensweise und entstehende Probleme bei der Analyse/Implementierung als auch der Zeitaufwand dokumentiert werden. Da dieses Wiki wegen des Hauptprojekts (Suchmaschine) erst einige Zeit nach der Hausübung erstellt werden konnte, entstand zusätzlicher Aufwand für Recherchen.

Fazit

Die Schwierigkeiten bei der Implementation der neuen Funktionen konnten auf drei Ursachen zurückgeführt werden:

  • Geringe PHP-Kenntnisse des Entwicklers.
  • Seiteneffekte von PHP.
  • Miserable Code-Qualität des Lerntagebuchs.

Die Code-Redundanz ließe sich sicherlich durch mehrfaches Refaktorisieren erheblich reduzieren und die Code-Qualität verbessern. Allerdings stellt sich die Frage, ob eine Neuentwicklung des Lerntagebuch-Moduls nicht einfacher und zukunftssicherer wäre.