Gästebuch-Tutorial

Artikel bewerten:
Dieser Artikel wurde von 2 Leser(n) mit
Adventure PHP Framework Artikel bewertenAdventure PHP Framework Artikel bewertenAdventure PHP Framework Artikel bewertenAdventure PHP Framework Artikel bewertenAdventure PHP Framework Artikel bewerten (5)
von 5 Punkten bewertet. Bewerten auch Sie diesen Artikel!
Die folgenden Zeilen beschreiben ein weiteres komplettes Anwendungsbeispiel, das in Zusammenarbeit mit Alexander Heim (http://www.promadesign.com/) entstanden ist. Es gibt einen Einblick über das Design von Software und beschäftigt sich mit den Implementierungs-Details, die das vorliegende Framework angehen.

1. Einleitung

Ein Gästebuch ist wahrscheinlich die älteste Anwendung von dynamischen Webseiteninhalten, die ich kennengerlernt habe, jedoch ist das Beispiel auch sehr umfassend und beinhaltet viele Design- Paradigmen und Pattern. Das Gästebuch basiert auf einer MySQL-Datenbank für die Daten- Speicherung, das Front- und Backend basiert auf dem hier dokumentierten und eingesetzten Framework. Das Grafik-Design ist bewusst sehr schlicht gehalten, damit die Anwendung in jede beliebige Webseite eingebunden werden kann und die eigentliche Funktion nicht zu sehr in den Hintergrund rücken lässt.

Hinweis: Die hier eingesetzte Software-Entwurfs-Methode mit Hilfe von UML ist nur eine gekürzte Form der sonst in der Industrie üblichen Form des Entwurfs. Weiterführende Literatur dazu ist auf amazon.de (Softwaretechnik von Johannes Siedersleben) erhältlich.


2. Anforderungen

Zu Beginn sollte der Entwickler zusammen mit dem Kunden - falls dies zwei unterschiedliche Personen sind - die Anforderungen an die Software spezifizieren. Ist der Kunde der Entwickler selbst ist es ebenso ratsam die Anforderungen an die Software zu dokumentieren. Üblicherweise werden Anforderungen in sog. "functional requirements" und "non-functional requirements" gruppiert. Das Software-Design soll sich hier durch folgende Punkte auszeichnen: Der in der Liste genannte Pager ist ein weiteres mit dem Framework ausgeliefertes Modul im "modules"- Namespace. Er ist eine fertig einsetzbare Business-Komponente, die nur noch für den Einsatzzweck konfiguriert werden muss. Er unterstützt eine generische Schnittstelle zur Implementierung einer eigenen Ausgabe-Logik. Für den aktuellen Anwendungsfall kann jedoch die bereits mitgelieferte Ausgabe eingesetzt werden.



3. Anwendungsfälle

Eine weitere Form, die Anforderungen auf Basis von Rollen auszudrücken ist das "Use Case"-Diagramm. Diese spiegeln die Interaktions-Punkte von Personen mit dem Systen wieder und gruppieren Funktionen. Die hier gezeigten Diagramme wurden mit dem Enterprise Architect erstellt, ein Entwurfs-Tool, mit dem der komplette Entwurfszyklus elektronisch in UML dokumentiert werden kann. Ebenso ist Code-Generation aus bestehenden Klassen-Diagrammen in viele Programmiersprachen (u.a. PHP) möglich.


Übersicht

Use Case Übersicht Gästebuch-Tutorial Adventure PHP Framework


Aktoren

Use Case Akteure Gästebuch-Tutorial Adventure PHP Framework


Anwendungsfälle

Use Case Fälle Gästebuch-Tutorial Adventure PHP Framework



4. Design der Business-Schicht / Datenmodell der Anwendung

Die Business-Schicht einer Anwendung beinhaltet die Definition der Workflows und der Definition der Daten-Objekte. Da sich der/die Workflow/s im Gästebuch auf realtiv wenige Aktionen und Folgen von Aktionen (Eintragen -> Speichern -> Weiterleitung auf Anzeige-/Auswahl-Seite) beschränkt, sei hier mehr auf das Daten-Design eingegangen.

Die Autoren gehen davon aus, dass das folgende Datenmodell für alle Anwendungsfälle ausreichend ist:

Domänen Objekte Gästebuch-Tutorial Adventure PHP Framework

Alle für die Anwendung relevanten Objekte (Guestbook, Entry und Comment) erben vom Basis-Objekt coreObject. Damit erben diese bereits die generischen get()- und set()-Methoden. Die Objekte im Einzelnen:

Guestbook:
Das Objekt, dass das Gästebuch repräsentieren besitzt Attribute für die Darstellung (Name, Description), Admin_Username und Admin_Password für die Administration des Gästebuchs und das komplexe Attribut Entries, das eine Liste von Entry-Objekten hält.

Entry:
Das Objekt Entry repräsentiert einen Eintrag in einem Gästebuch. Es sind sowohl Attribute für die Darstellung als auch für die Sortierung enthalten. Zudem enthält es das komplexe Attribut Comments in dem eine Liste von Kommentaren enthalten ist, sofern Kommentare zu einem Eintrag hinzugefügt wurden.

Comment:
Das Objekt Comment trägt die Inhalte eines Kommentars, der an einen Gästebuch- Eintrag gehängt wurde.


Hier das Objekt-Modell der Anwendung:

System Diagramm Gästebuch-Tutorial Adventure PHP Framework

Das Diagramm beschreibt aktuell vier Komponenten, die implementiert werden müssen. Das sind je ein DocumentController für die Ausgabe der Liste und einer für das Handling des Formulars, eine Business- (guestbookManager) und eine Daten-Schicht-Komponente (guestbookMapper). Der Manager kapselt den Workflow, der im Wesntlichen aus der Methode saveEntry() besteht.



5. Datenschicht und DataMapper

Wie bereits angesprochen differieren in der Regel das Datenmodell der Anwendung und das der Datenhaltung. In diesem Fall wird ein normalisiertes Datenmodell in der dritten erweiterten dritten Normalform eingesetzt. Das bedeutet, dass die Objekte jeweils in einer eigenen Tabelle gespeichert werden und die Beziehungen (in diesem Beispiel nur Kompositionen) über Relations-Tabellen. Siehe auch http://de.wikipedia.org/wiki/Normalisierung (Datenbank). Das ergibt unter Berücksichtigung des obigen Anwendungs-Daten-Modells folgende Tabellen-Struktur:

Datenmodell Gästebuch-Tutorial Adventure PHP Framework

Der DataMapper hat nun gemäß Pattern-Definition eines DataMappers die Aufgabe zwischen dem Datenmodell der Datenhaltung und der Anwendung zu vermitteln. Dazu dienen einerseits die Methoden __mapEntry2DomainObject(), __mapGuestbook2DomainObject() und __mapComment2DomainObject(), mit denen die Result-Sets eines Datenbank-Queries in Objekte überführt werden, andererseits loadGuestbookByID(), mit dem ein komplettes Gästebuch incl. alles aktuell geforderten Einträge und Kommentare geladen werden kann.


Fortsetzung: Das Design der Anwendung ist nun abgeschlossen. Seite 2 widmet sich den Implementierungsdetails.


Kommentare

Möchten Sie den Artikel eine Anmerkung hinzufügen, oder haben Sie ergänzende Hinweise? Dann können Sie diese hier einfügen. Die bereits verfassten Anmerkungen und Kommentare finden Sie in der untenstehenden Liste.

«   1   »
Einträge/Seite: | 5 | 10 | 15 | 20 |

1 tyederwardsdfe
07.01.2008, 08:59:04
Good Site! Thanks!