Forumbeiträge komprimieren

Aus THM-Wiki
Wechseln zu: Navigation, Suche

Dieser Artikel beschreibt die Vorgehensweise bei der Implementierung eines Mini-Features für eStudy.

Featurebeschreibung

Das Feature stellt die Möglichkeit dar, Forumsbeitragtexte zwecks besserer Lesbarkeit zu komprimieren. Dazu soll ein Steuerungslink in der Threadansicht angezeigt werden, der die entsprechende Funktionalität aktiviert. Durch den Klick auf diesen Link sollen Signaturen und Avatare der Beitragsautoren ausgeblendet werden, dasselbe soll mit Zitaten und den Steuerungsleisten am Fuße jedes Beitrags passieren. Auch Leerzeilen sollen aus den Texten herausgeschnitten werden. Durch einen erneuten Klick auf den Link sollen die herausgeschnittenen Inhalte wiederhergestellt werden. Die beschriebene Anzeigeoption soll während der gesamten Sitzung gelten.

Entwicklungskontext

  • Zeitbudget: 20h
  • Teamstärke: 1 Person (Anton Afanasjew)
  • Vorgehensmodell: Nach Wahl
  • Ergebnis: Feature, Vorgehensbeschreibung

Vorbereitung

Vor der Entwicklung des Features mForumCompressorHandlerussten folgende Vorbereitungen getroffen werden:

  • Einrichten der Entwicklungsumgebung (EasyEclipse for PHP)
  • Installation von XAMPP
  • Installation von Hilfsanwendungen (Selenium-Core, Selenium IDE, Ant)
  • Auschecken des eStudy-Projekts aus der Sourceforge-Datenbank
  • Einrichten der Testumgebung

Entwicklungszyklus

Phase 1: Testerstellung (für Module Forum, Fotoforum)

Aufgrund mangelnder Struktur der Module (so gut wie keine Objektorientierung, riesige Skripte, vermischter Code von SQL/HTML/PHP) wurde auf Unit-Tests verzichtet. Stattdessen wurden die gebräuchlichen 13 Anwendungsfälle dokumentiert und mit den funktionalen Testfällen belegt. Die Testskripte wurden mit dem Testtool Selenium erstellt und deren Ausführung in einer Testsuite mit Hilfe des Tools Ant automatisiert. Die Automatisierung wurde so eingerichtet, dass vor jedem Testprozess das Datenmodell des Forums auf den definierten Initialzustand zurückgesetzt wird. Damit ist die Ausführung der Gesamttestsuite mit einem Klick aktivierbar.

Phase 2: Analyse

In der Analysephase wurde das allgemeine funktionale Konzept des Features verfeinert und mit Anwendungsfällen veranschaulicht. Jeder Anweundungsfall wurde mit dem entsprechenden Testfall belegt. Die neuen Testskripte wurden in die vorhandene Testsuite integriert.

Phase 3: Design

In dieser Phase wurde die Konzeption der internen Struktur des Features erstellt.

Phase 4: Implementierung

In dieser Phase fand die Implementierung des Features nach den aktuellen Anforderungen durchgeführt.

Phase 5: Testausführung

Nach der Implementierung der jeweiligen Iteration wurde das Ergebnis mit der zuvor erstellten Testsuite getestet. Diese Phase befindet sich im Zyklus mit der Implementierungsphase, so dass die beiden Phasen solange abwechselnd durchlaufen wurden, bis keine Fehler in der aktuellen Version des Features gefunden wurden.

Vorgehensmodell

Die Phasen 2 bis 5 wurden mehrmals durchlaufen, da die Anforderungen sich im Laufe der Entwicklung geändert haben. So musste das Feature nach seiner Implementierung für das Modul Forum, auch auf das Modul FotoForum angewandt werden. Aufgrund der kleinen Projektgröße und dem 1-Mann-Team mussten alle Projektrollen von derselben Person übernommen werden. Die Funktionsfähigkeit der Anwendung nach Änderungen am Quellcode wurde durch Regressionstests nachgewiesen, welche vor dem Einchecken des Quellcodes automatisiert ausgeführt wurden. Vor und während der Entwicklung fand die Kommunikation mit der Entwicklerin des Features "Grafische Bewertung der Forumsbeiträge" statt. Damit konnten die Widersprüche und Überschneidungen im Quellcode vermieden werden.

Im großen und Ganzen wurde für die Entwicklung das Vorgehensmodell "Extreme Programming" verwendet. Die Praktiken von XP wie iterativ-inkrementelle Entwicklung, Test-First-Ansatz, und eine starke Verschränkung der Phasen wurden angewandt. Bei dem Einsatz von XP mussten aber auch Einschränkungen gemacht wurden. So ließ die ungenügende Quellcodestruktur wenig Freiraum für Klassentests. Die paarweise Programmierung konnte aufgrund der Team-Größe natürlich auch nicht stattfinden. Dasselbe gilt für die in XP wichtige Kommunikation innerhalb des Teams, die in diesem Projekt naturgemäß keine Rolle spielte.


Geänderte Dateien

Bei der Entwicklung des Features wurden folgende Änderungen vorgenommen:

Hinzugekommen sind:

  • forum/classes/class.forumcompressorhandler.php
  • forum/templates/postingrowtrimmed.html
  • photogallery/templates/postingrowtrimmed.html

Geändert wurden:

  • forum/showtopic.php (Methodenaufrufe hinzugefügt)
  • forum/templates/postings.html (Markierungsvariable $trim_mark hinzugefügt)
  • photogallery/showtopic.php (Methodenaufrufe hinzugefügt)
  • photogallery/templates/postings.html (Markierungsvariable $trim_mark hinzugefügt)

Ausserdem wurde eine Sessionvariable mit dem Namen "forum_compressor" und dem Typ "ForumCompressorHandler" hinzugefügt.