CMI Perspektive Administration: Setup

Aus THM-Wiki
Wechseln zu: Navigation, Suche
Kurs
Kursname Web-Engineering
Kurstyp Projektkurs
Dozent KQC
Semester WS 10/11
Studiengang Master


Aufgabe

Überarbeitung des eStudy Setups anhand von verschiedenen Kriterien. Zuerst wird ein ReEngineering mit IST Analyse durchgeführt. Anschließend ein Refactoring des gesamten Setups. Wir werden dann das Setup noch anhand von verschiedenen in der Vorlesung angesprochenen Themen untersuchen und verbessern. Abschließend erfolgt eine Präsentation der Ergebnisse.

Aktuelle Situation

Allgemein

Die bisherige Installation des eStudy - Portals stammt von den Autoren:

  • Timo Fuchs
  • Klaus Quibeldey-Cirkel
  • Clemens Weiß
  • Marc Kowal
  • Christoph Thelen

Die aktuelle Version ist die Version 4.0 und stammt vom 01.03.2010.

Die setup.php stammt von Christian Gerhardt und ist vom 19.02.2004.

Klassendiagramm

Fehler beim Erstellen des Vorschaubildes: Datei fehlt


Use-Case Diagramm

Franck-Eric Tchandjou Anwendungsfalldiagramm eStudy Setup.png

Paketdiagramm

Objektive Analyse

Software Metriken

Checkstyle Warnungen

web/common/classes/class.install.inc.php:

Zeile Warnung
2 You must use "/**" style comments for a file comment
89 There must be exactly one blank line before the class comment
91 Class comment short description must end with a full stop
92 There must be exactly one blank line before the tags in class comment
96 lOnly @since tag is allowed in class comment
96 Missing @since tag in class comment
118 Expected 6 spaces before asterisk; 5 found
119 lExpected 6 spaces before asterisk; 5 found
120 Expected 6 spaces before asterisk; 5 found
121 Expected 6 spaces before asterisk; 5 found
679 Function's cyclomatic complexity (12) exceeds 10; consider refactoring the function
748 Function's cyclomatic complexity (37) exceeds allowed maximum of 20
819 Comments may not appear after statements.
1111 Comments may not appear after statements.

PMD Warnungen

web/common/classes/class.install.inc.php:

Zeile Warnung
97 Avoid really long classes.
97 This class Install has an overall complexity of 134 which is very high. The configured complexity threshold is 50.
97 This class has too many methods, consider refactoring it.
178 Avoid really long methods.
317 The method doIt() has an NPath complexity of 240.
418 Avoid really long methods.
418 The method initDB() has a Cyclomatic Complexity of 11.
418 The method initDB() has an NPath complexity of 1920.
679 The method echoField() has a Cyclomatic Complexity of 16.
679 The method echoField() has an NPath complexity of 782.
748 The method checkInput() has a Cyclomatic Complexity of 39.
748 The method checkInput() has an NPath complexity of 57153601.
850 The method writeConfig() has an NPath complexity of 500.

Sicherheit

Das Setup soll so eingerichtet werden das man auswählen kann ob man das eStudy lokal im Testbetrieb installiert oder als Server im Livebetrieb. Im Testbetrieb werden die sicherheitsrelevanten Dinge erwähnt und angezeigt allerdings muss der Nutzer dies nicht wählen. Im Livebetrieb sollte die größte Sicherheit erzwungen werden.

Setup

Diese Dinge werden direkt im eStudy Setup abgefragt.

Positiv
  • Abfrage PHP Version. Es sollte die aktuellste Version abgefragt werden und das Setup sollte auch nur dann weiter laufen.
  • Passwort muss strong sein. - Min. 8 Zeichen, Groß-, Kleinschreibung, Zahlen, Sonderzeichen - Eingabeanforderungen sollten natürlich auch angezeigt werden als Tooltip
Negativ
  • HTTPS ist optional wählbar beim Setup - HTTPS sollte erzwungen werden wenn das Setup im Livebetrieb läuft.
  • root Administrator Benutzername nicht frei wählbär. Gefährdet durch Broot Force.
  • Rechtevergabe für Dateien und Ordner. Diese sollten nicht frei zugänglich für die ganze Welt sein.

Sicherheitskritische Einstellungen

Einstellungen die gesetzt werden.

  • Die Einstellungen die im eStudy gesetzt werden.
  • Option sich selbst beim Portal zu registrieren: Nein
  • Benutzergruppe bei Selbstregestrierung: Gast
  • Option, neues Passwort zu beantragen: ja
  • Tage, nach denen Logfiles gelöscht werden: 30
  • E-Mail-Adresse bei Registrierung wiederholen: nein
  • Minimale Länge des Passworts: 8
  • Soll das Passwort Zahlen UND Sonderzeichen enthalten?: nein
  • Max. Anzahl Benutzerbenachrichtigungen wegen zu
  • schwachem Passwort: 0
  • Maximale Dateigröße im Forum (KB): 500
  • Maximale Dateigröße für Soziomat (KB): 2048
  • Maximale Dateigröße für Ressourcen (MB): 6,5
  • Maximale Dateigröße für einen Archivdownload (MB): 100.0

Performance

Codeanalyse

Bad Smells

Klasse Setup

  • Pfad: common/classes/class.install.inc.php
Smell Gruppe Betroffene Methoden Refactorings Sonstiges
Large Class Bloater * Extract Class, Extract Subclass, Extract Interface, Replace Data Value with Object > 1000 Zeilen
Comments Extract Method, Introduce Assertion Statt Comments Methoden verwenden um Algorithmen klarer zu machen
Data Clumps Bloater initDB(), initXPWebDB(), extract Class, Introduce Parameter Object, Preserver Whole Object
Long Method Bloater showPermissions(), checkInput(), echoField(), initXPWebDB(), initDB(), __construct() Extract Method, Replace Temp with Query, Replace Method with Object, Decompose Conditional
Primitive Obsession Bloater initXPWebDB(), initDB(), __construct(), installCreateDataObjects(), Replace Data with Object, Extract Class, Introduce Parameter Object, Replace Array with Object Sonstiges
Switch Statements Object-Orientation Abusers echoWelcomeMessage Replace Conditional with Subclasses, Replace Conditional with State/Strategy, Replace Conditional with Explicit Method, Introduce Null Object sehr Kleines switch statements (nur der Vollständigkeit halber aufgeführt)
Temporary Field Object-Orientation Abusers doIt(), initDB(), initXPWebDB(), echoField(), parseSqlFile(),installCreateDataObjects(),showPermissions(), testPerm(), checkPHPConfig() Extract Class, Introduce Null Object

Refactoring

Unit Tests

I18N & L10N

Julian Faupel, überarbeitet von Kai Krause

Die Mehrsprachigkeit des Setups wurde mittels dem im Framework Zend verfügbaren Zend Translate durchgeführt. Als Adapter für die Übersetzung wurde gettext verwendet. Es stehen im Moment zwei Sprachen zur Verfügung. Dies sind Englisch sowie Deutsch. Für Türkisch und Französisch wurden bereits die Sprachdateien erzeugt, die jedoch noch übersetzt werden müssen.

Zur Einbindung von Zend_Translate wurde innerhalb der Bootstrap.php die Methode _initSetTranslations() eingefügt.

protected function _initSetTranslations() {
 $translate = new Zend_Translate('gettext',
  APPLICATION_PATH . "/languages/",
  null, 
  array('scan' => Zend_Translate::LOCALE_FILENAME, 'disableNotices' => true)
 );
Zend_Registry::set('Zend_Translate', $translate);
}

Dort wird ein neues Zend_Translate Element instanziiert und die jeweilig verfügbaren Sprachen hinzugefügt. Anschließend registriert man das Objekt per Zend_Registry und kann es somit in den jeweiligen Views verwenden. Die Ausgabe in den Views erfolgt mit dann per

$this->translate('Hello World');

Mit der Anwendung POEdit werden dann für diese Ausgaben die Übersetzungsdateien erzeugt. Diese funktionieren nach dem Schlüssel-Wert-Prinzip. Für obiges Beispiel wäre 'Hello World' der Schlüssel welcher in allen Übersetzungsdateien zum Einsatz kommt, er sollte daher stets in englischer Sprache verfasst sein. Die Auswahl der jeweiligen Sprachen erfolgt dann mit Hilfe der Funktion setLocale('xx-XX').

Barrierefreiheit

Datenschutz

Julian Faupel

Zum Thema Datenschutz wurde von der Gruppe Setup die Web Analytics Software Piwik untersucht.

In diesem Zusammenhang wurde ein Verfahrensverzeichnis zu Piwik erstellt.

Ein Verfahrensverzeichnis ist ein in Deutschland vorgeschriebenes Datenschutzelement. Dieses muss jede öffentliche oder private Stelle, welche personenbezogene Daten speichert, führen.

Das erstellte Verfahrensverzeichnis ist im estudy unter dem Setup Ordner zu finden. Hier auch das passende Ticket dazu: https://trac.mni.fh-giessen.de/eStudy/ticket/667#comment:3

Web-Sicherheit

Die Sicherheit des Setups wurde bereits im Masterkurs Web-Security von Julian Hochstetter, Claudia Ceh, Kai Kraus und Julian Faupel behandelt und fließt in das neue Setup mit ein.

Web-Performance

Die Performanceanalyse des eStudy Setups wurde mit dem Tool PHP Quick Profiler erstellt.

Setup console.jpg

Setup speed.jpg

Setup sql.jpg

Setup memory.jpg

Setup include.jpg

Screencasting