Projektarbeit Fachbereich Informatik

Werbung
Projektarbeit
Implementierung eines
webbasierten
Fahrzeugmarktes
cand. Wirtsch.-Ing. Martin Hoffmann
August 2002
Betreuer:
Prof. Dr. Paul Müller
Dipl. Inform. Markus Hillenbrand
Fachbereich Informatik
AG Integrierte Kommunikationssysteme
Universität Kaiserslautern · Postfach 3049 · 67653 Kaiserslautern
Inhaltsverzeichnis
Seite I
Inhaltsverzeichnis
INHALTSVERZEICHNIS .................................................................................................. I
1
KLINFORM UND BEGRÜNDUNG DER NOTWENDIGKEIT EINES
FAHRZEUGMARKTES..............................................................................................1
1.1
KLINFORM – PORTAL FÜR DIE REGION KAISERSLAUTERN ..........................1
1.2
ZIEL UND STATISTISCHE BEGRÜNDUNG DER PROJEKTARBEIT ..................3
2
ANFORDERUNGSANALYSE ....................................................................................5
2.1
ERWARTUNGEN DER BENUTZER........................................................................5
2.2
ANALYSE EXISTIERENDER WEBBASIERTER AUTOMÄRKTE ........................6
2.3
BENUTZERANFORDERUNG ..................................................................................8
2.4
ZUSAMMENFASSUNG..........................................................................................18
3
UMGEBUNGSSTRUKTUR ......................................................................................20
3.1
DAS MVC-DESIGN PATTERN ..............................................................................20
3.2
WERKZEUGE ZUR UMSETZUNG DES PROBLEMS ..........................................21
3.3
USE-CASE-DIAGRAMM ALS HANDLUNGS- UND
UMGEBUNGSBESCHREIBUNG ...........................................................................23
4
SYSTEMENTWURF AUF BASIS DES MVC-DESIGN PATTERN.......................25
4.1
OBJEKTORIENTIERTE SYSTEM- UND DATENBANKSTRUKTUR (MODELLKOMPONENTE)......................................................................................................27
4.2
REPRÄSENTATIONSSTRUKTUR (VIEW- KOMPONENTE) ..............................36
4.3
STRUKTUR DER ABLAUFSTEUERUNG (CONTROLLER- KOMPONENTE) ...39
4.4
INTEGRATION DES MARKTES FÜR KRAFTRÄDER ........................................41
5
AUSGEWÄHLTE IMPLEMENTIERUNGSLÖSUNGEN ......................................44
5.1
INTERAKTIONSMÖGLICHKEITEN DES BENUTZERS MIT DEM SYSTEM....44
5.2
EINGRIFFSMÖGLICHKEITEN DES ADMINISTRATORS IN DAS SYSTEM.....52
6
ABSCHLIEßENDE BEWERTUNG UND AUSBLICK............................................56
Inhaltsverzeichnis
Seite II
QUELLENVERZEICHNIS ...............................................................................................59
ABBILDUNGSVERZEICHNIS ........................................................................................60
ANHANG............................................................................................................................61
KLinform und Begründung der Notwendigkeit eines Fahrzeugmarktes
Seite 1
1 KLinform und Begründung der Notwendigkeit eines Fahrzeugmarktes
Seit seiner Einführung Ende der 60-iger Jahre hat sich das Internet zu einem mehr und mehr
unüberschaubaren Massenmedium entwickelt. Anfänglich als Hilfsmittel des Militär entwickelt, erhielt es zunehmend Einfluss in nahezu allen Bereichen des öffentlichen, wirtschaftlichen und vermehrt auch privaten Lebens. Doch eine immer größer werdende Zahl von Anbietern von Dienstleistungen, Informationen oder Produkten erschwert es dem Nutzer zunehmend, die für ihn notwendigen und interessanten Angebote herauszufiltern.
Eine Eigenschaft, auf die sich das rasante Wachstum des Internet begründen lässt, ist seine
Unabhängigkeit von Ort und Zeit. Doch in jüngster Zeit erhebt sich zunehmend die Erkenntnis, dass zur optimalen Nutzung diverser Angebote und Informationen ein gewisser Bezug auf
das geographische Umfeld des Nutzers vorteilhaft und notwendig ist. Das folgende Szenario
aus dem Bereich des Electronic Retailing soll dies verdeutlichen. Ein Anwender sucht auf
einem der zahlreich angebotenen Portale, die sich als Vermittler zwischen Käufern und Verkäufern auf dem Fahrzeugmarkt verstehen, nach dem günstigsten Angebot für einen bestimmten Gebrauchtwagen. Fündig wird er dabei bei einem Verkäufer in Berlin, der das Auto auch
sofort anmelden kann und als Bezahlungsmittel nur Kreditkarten akzeptiert. Unglücklicherweise wohnt der Interessent in Kaiserslautern und verfügt über keine Kreditkarte. Er stellt
sich nun die Frage, wie er in seiner unmittelbaren Umgebung das günstigste Angebot für dieses Fahrzeug ausfindig machen kann. Diese Arten von Erfahrungen und Probleme waren ein
Ausgangspunkt für die Idee zu ‚Kaiserslautern inform’ oder kurz ‚KLinform’ [KLinform
2000].
1.1 KLinform – Portal für die Region Kaiserslautern
Hinter KLinform steht ein Projekt, dass sich mit der Konzeption, Implementierung und Realisierung einer Portal-Site beschäftigt, deren Schwerpunkte vor allem unter dem Aspekt des
regionalen Fokus am Beispiel der Region Kaiserslautern gesetzt werden. „Eine Portal-Site
bietet ein weites Spektrum an Content und Diensten an, z.B. Suchmaschinen, Email, Homebanking usw. Die Intention ist es, eine breite Masse an Nutzern zu überzeugen, das Portal als
Homepage zu nutzen, und so an sich zu binden, um möglichst hohe Werbeeinnahmen zu erzielen.“ [News 2002] Unterstützt wird das Projekt durch eine Vielzahl von Konsortialpartnern, die sich entweder durch geldwerte oder finanzielle Beiträge beteiligen.
KLinform und Begründung der Notwendigkeit eines Fahrzeugmarktes
Seite 2
Ziel ist eine umfassende Vernetzung wichtiger Bereiche des öffentlichen Lebens. Die innovativen und attraktiven Dienste und Dienstleistungen sollen jedem Bürger über den regionalen
Online-Dienst zugänglich gemacht werden. Schwerpunkt ist dabei eine einfache und leicht
verständliche Strukturierung und Kategorisierung der Informationen sowie die Generierung
und Pflege des Inhalts.
1999 erhielt das Projekt den Multimediapreis des Landes Rheinland-Pfalz.
Nachfolgend werden zwei Konzepte näher erläutert, durch die sich KLinform von anderen
Portal-Sites abheben will: das Lebenslagenkonzept und das Personalisierungskonzept [Kleinform 2000].
Lebenslagenkonzept
Die Idee des Lebenslagenkonzeptes ist eine intelligente und übersichtliche Aufbereitung und
Präsentation der vielfältig verteilten und teilweise unübersichtlich verzahnten Informationen,
die in der Region angeboten werden. Eine Lebenslage stellt dabei eine komplexe Situation
dar, in der sich der Anwender befindet, und die er zu lösen sucht. Die Aufbereitung der Daten
und Informationen erfolgt in Anlehnung an den alltäglichen Ablauf in den entsprechenden
Situationen. Der Benutzer findet die jeweilige Lebenslage betreffend alle notwendigen Informationen in zeitlicher und logischer Abfolge klar strukturiert vor. Die Information- und
Kommunikationstechnologie ermöglicht ihm das Problem schneller und effizienter zu lösen,
als er dazu auf dem herkömmlichen Weg in der Lage gewesen wäre.
Anhand der Lebenslage „Eheschließung“ soll das Konzept exemplarisch dargestellt werden.
Ein möglicher Einstiegspunkt in diese Lebenslage ist die Verlobung. Den Kauf des Verlobungsringes erleichtert eine Übersicht der ansässigen Juweliere und deren Angebot. Informationen über Standesämter und die benötigten Unterlagen folgen. Weiterhin werden Kirchen
aufgelistet bzw. Informationen über alternative Plätze zur Eheschließung angeboten. Bei der
Auswahl eines geeigneten Speisesaals hilft eine Übersicht über Gaststätten und Hotels, die
auch das Hotelzimmer für die Hochzeitsnacht anbieten. Floristen und Kleidungsgeschäfte mit
Brautkleidern gehören ebenso zum Angebot wie Partyservices für den Polterabend oder
Mietwagenfirmen für die Limousine mit Chauffeur. Abschließend helfen Reiseangebote und
Reiseveranstalter bei der Auswahl der Hochzeitsreise.
Personalisierungskonzept
Das Personalisierungskonzept beschreibt die Möglichkeit der Anpassung und Abstimmung
des Portals auf den jeweiligen Nutzer. Es geht dabei nicht um die allgemeine Strukturierung
der zur Verfügung stehenden Daten wie beim Lebenslagenkonzept, sondern darum, den Kom-
KLinform und Begründung der Notwendigkeit eines Fahrzeugmarktes
Seite 3
fort für einen ganz spezifischen Nutzer zu erhöhen. Der Anwender soll die Möglichkeit erhalten, sich sein persönliches Portal zu schaffen. Dazu kann er aus einer Vielzahl von Lebenslagen und Diensten die für ihn interessanten auswählen und somit eine Flut an Informationen
vermeiden. Damit steht dem Anwender nach Anmeldung jeweils die gleiche und gewohnte
Seite zur Verfügung. Weiterhin ist geplant, die Personalisierung durch eine automatische Suche von auf das Benutzerprofil abgestimmten Angeboten zu erweitern. Persönliche Präferenzen sollen gespeichert werden, um eine erneute Eingabe von Formulardaten zu vermeiden.
Zurzeit (Stand November 2001) bietet KLinform folgende Personalisierungsmöglichkeiten:
·
Auswahl verschiedenere Lebenslagen für einen schnelleren Zugriff
·
Auswahl verschiedener Dienste von KLinform zum Schnellzugriff
·
Auf den Wohnort des Anwenders abgestimmte Wettervorhersage
·
Pflege des eigenen Datenbestandes über ein Web-Interface
·
Newsletter verschiedener Bausteine
1.2 Ziel und statistische Begründung der Projektarbeit
Im Rahmen der Projektarbeit soll die bestehende Funktionalität von KLinform um einen webbasierten Fahrzeugmarkt erweitert werden. Dabei sollen das Lebenslagen- und das Personalisierungskonzept auf die Anforderungen dieses Bausteines adaptiert werden. Die Notwendigkeit der Integration eines Fahrzeugmarktes in das Portal liegt in einer rasant steigenden Zahl
von Internetnutzern, welche ihren Autokauf durch dieses Medium vorbereiten oder sogar ausführen.
Die Anzahl der Europäer, die Auto-Sites im Internet besucht haben, hat sich von April 2000
bis März 2001 mehr als verdoppelt. Dies zeigen die neuesten Ergebnisse von Jupiter MMXI
[Jup 2001].
Immer mehr Europäer nutzen das Internet, um sich vor dem Kauf des nächsten Autos zu informieren, die kürzeste Reiseroute ausfindig zu machen, aktuelle Verkehrsinformationen abzurufen oder sich über Leasingmöglichkeiten und Autoversicherungen zu informieren.
Die Reichweite von Auto-Sites hat sich in den größten Internetmärkten Europas in der Zeit
von April 2000 bis März 2001 verdoppelt. In Großbritannien erhöhte sich die Reichweite von
6,9% auf 12,6% (1.724.000 Unique Visitors im März 2001), in Frankreich von 3,8% auf
10,3% (809.000 Unique Visitors) und in Deutschland von 6,8% auf 15,3% (1.926.000 Unique
Visitors). Die Nutzer der Auto-Angebote waren in diesen Ländern zu mehr als 70% männlich
und im Alter von 25-34 Jahren.
KLinform und Begründung der Notwendigkeit eines Fahrzeugmarktes
Seite 4
15,3% der deutschen Surfer, das entspricht 1,926 Millionen Unique Visitors, haben im März
2001 mindestens einmal eine Webseite der Kategorie „Auto“ besucht. Dieses Marktsegment
konnte demzufolge seit April 2000 ein Plus von rund 1,3 Millionen Besuchern erzielen. Auf
Rang eins der Hitliste befindet sich die Fahrzeugdatenbank autoscout24.de mit einer Besucherzahl von 642.000 Personen und einer Reichweite von 5,1%, gefolgt von der Autobörse
mobile.de (3,3% Reichweite), 413.000 Unique Visitors). Rang 3 belegte mit 2,0% Reichweite
die Website von Volkswagen, wo neben reinen Produktinformationen auch eine Gebrauchtwagenbörse zu finden ist. Unter den Auto-Websites in Deutschland erzielte autoscout24.de
seit April 2000 den höchsten absoluten Bucherzuwachs: Während im April vergangenen Jahres 184.000 Surfer dieses Online-Angebot nutzten, waren es im März 2001 bereits 642.000.
Anforderungsanalyse
Seite 5
2 Anforderungsanalyse
Inhalt dieses Kapitels ist die Abstimmung der Benutzeranforderungen und der Umgebungsparameter von KLinform auf die neue Komponente. Ausgangspunkt ist eine umfassende Analyse der bereits existierenden Systeme. Besonderer Augenmerk wurde dabei auf Möglichkeiten
der Personalisierung, auf benutzerfreundliche Anwendung und auf innovative Lösungen gelegt.
2.1 Erwartungen der Benutzer
Der webbasierte Fahrzeugmarkt versteht sich als ein integraler Bestandteil der Lebenslage
Autokauf der Portal-Site KLinform. Um einen Überblick über das zu implementierende Funktionsangebot zu bekommen, soll zunächst dargelegt werden, was Benutzer von einer OnlinePlattform im Automobilbereich erwarten, also welche Funktionen von der gesamten Lebenslage abgedeckt werden müssen. Daraus lassen sich die Anforderungen an den webbasierten
Fahrzeugmarkt ableiten. Die folgende Abbildung beschreibt die Wichtigkeit von acht verschiedenen Funktionen. Die Daten basieren auf einer weltweiten Befragung von Haushalten.
89%
Get make and model info
80%
Find and Compare Prices
56%
Look up value of old car
27%
Locate Dealer
26%
Request price quota
18%
Read Classification
Sell old car
Buy a car
0%
5%
3%
10%
20%
30%
40%
50%
60%
70%
80%
Percentage of Households
Abbildung 1 Erwartung der Benutzer an eine Online-Plattform im Automobilbereich;
Quelle: [Namics 2001]
89% sind demnach daran interessiert, Informationen über das gesuchte Fahrzeug zu bekommen. 80% interessieren sich vorrangig für Preise. Lediglich 3% wollen tatsächlich ein Fahr-
90%
Anforderungsanalyse
Seite 6
zeug online kaufen. Ein Fahrzeugmarkt im Internet sollte sich demnach zunächst als eine Informationsplattform verstehen. Es ist nicht das vorrangige Ziel, den eigentlichen Tauschvorgang zu vollziehen. Dieser Sachverhalt ist Grundlage der weiteren Ausführungen.
2.2 Analyse existierender webbasierter Automärkte
Beispielhaft für Fahrzeugmärkte sollen im folgenden Automärke im Internet einer Analyse
unterzogen werden. In die Analyse wurden alle großen deutschen webbasierten Fahrzeugmärkte (siehe auch 1.2) aber auch Autohäuser und regional begrenzte Anbieter eingebunden:
u.a. autoscout24.de, mobile.de, car4you.de, faircar.de. Zu einer besseren Vergleichbarkeit im
internationalen Rahmen fließen auch Ergebnisse aus Analysen von nordamerikanischen und
anderen europäischen Fahrzeugmärkten ein, z.B. carmax.com, auto bytel.uk.
Benutzerfreundlichkeit
Um die Benutzerfreundlichkeit zu überprüfen galt es möglichst schnell und einfach einen gebrauchten AUDI A4 Avant 2,5 TDI zu finden, der nicht älter als 2 Jahre ist. Auf den Webseiten in Nordamerika wurde ein entsprechendes Modell mit Benzinmotor gewählt.
Die deutschen Seiten zeichnen sich funktional gesehen durch ein weitgehend gleiches Layout
aus. Häufig besteht schon auf der Startseite die Möglichkeit Marke, Modell, Erstzulassung
und Leistung des gesuchten Autos zu wählen. Unterschiede bestehen nur im Detail. Während
einige Anbieter eine sehr genaue Einschränkung bzgl. gewünschter Extras und Sonderausstattungen zulassen, besteht bei anderen Anbietern nur eine sehr geringe Auswahlmöglichkeit.
Vor allem kleinere Anbieter verzichten darauf, allerdings ist das Angebot häufig so beschränkt, dass eine stärkere Einschränkung eventuell zu keinem Ergebnis mehr führt. Der
größte gefundene Anbieter, autoscout24.de, hat beispielsweise ca. 480.000 (Stand November
2001) Gebrauchtwagen im Angebot, während vor allem regional beschränkte Anbieter (z.B.
Autohäuser) oft nur vereinzelte Angebote haben und die Korrektheit der Daten erhöht.
Weitere Unterschiede bestehen in der Führung des Benutzers durch die auszuwählenden Felder. Die meisten großen Anbieter bieten nach Auswahl der Marke nur noch die Modelle zur
Auswahl an, die von dem entsprechenden Hersteller jemals produziert wurden. Gleiches gilt
im Anschluss für die Auswahl der Motorisierung. Dadurch werden Verwechselungen und
Verwirrung bei der Beschreibung des Fahrzeuges vermieden.
Die angebotenen Informationen sind bei nahezu allen Anbietern identisch. Je nach Umfang
der Angaben des jeweiligen Verkäufers sind die meisten Sonderausstattungen aufgeführt,
häufig wird auch ein Bild des Fahrzeuges angeboten.
Anforderungsanalyse
Seite 7
Innovative Lösungen
Innovative und außergewöhnliche Lösungen sind bei allen getesteten Seiten Mangelware.
Angenehm für den Benutzer ist die Möglichkeit, die Suchergebnisse nach bestimmten Kriterien zu sortieren, beispielsweise nach Laufleistung oder Preis. Leider fehlt diese Funktion
auch bei einigen der großen Anbietern, obwohl gerade bei der sich ergebenden Vielzahl von
Suchergebnissen diese Funktion eine wesentliche Erleichterung darstellen würde.
Alle getesteten amerikanische Anbieter, z.B. carmax.com und einige der deutschen Vertreter
bieten einen Vergleich mehrerer Modelle an. Vor allem im Gebrauchtwagenmarkt erleichtert
eine solche direkte Gegenüberstellung die Entscheidungsfindung.
Car4you.de offeriert vor allem Händlern, die häufig Inserate aufgeben, einen Fotoservice.
Sollte der Händler kein Foto des angebotenen Autos vorliegen haben, so stellt car4you.de ein
entsprechendes Bild aus einer Fotodatenbank zur Verfügung. Ein Foto des angebotenen Modells erhöht die Verkaufschancen drastisch.
Personalisierung
Keine der analysierten Seiten bietet die Möglichkeit einer umfassenderen Personalisierung.
Lediglich car4you.de und autoscout24.de erwarten vor dem Inserieren eines Verkaufsangebotes eine Registrierung. Allerdings dient diese im Fall von autoscout24.de nur dazu bei mehrfacher Nutzung eine erneute Eingabe der Daten zu vermeiden. Gleichfalls besteht hier die
Möglichkeit, bestehende Inserate zu verändern.
Aus der Sicht des Käufers besteht weder auf den deutschen noch auf den nordamerikanischen
oder britischen Seiten die Möglichkeit einer Personalisierung. Dies gilt sowohl für eine mögliche Anpassung des Layout als auch für die Speicherung von persönlichen Präferenzen bei
der Suche nach Gebrauchtwagen. Im Falle einer erneuten Suche nach dem selben Modell
müssen die Daten wiederholt eingegeben werden. Sowohl bereits betrachtete als auch neue
Angebote werden aufgelistet. Der Kunde hat keine Möglichkeit, neue Angebote sofort zu erkennen und von bereits gelesenen zu unterscheiden.
Bewertung existierender Automärkte
Das Angebot an webbasierten Automärkten ist sehr umfangreich. Leider fehlen häufig innovative Lösungen oder Möglichkeiten, auf den Kunden abgestimmte Angebote zu generieren.
Vor allem die großen Anbieter solcher webbasierten Märkte beschränken sich nicht auf die
Vermittlung gebrauchter oder neuer Fahrzeuge, sondern sie bieten ein umfangreiches Service-
Anforderungsanalyse
Seite 8
angebot rund ums Auto. Dieses umfasst Zusatzinformationen über Versicherungen, Finanzierungen oder Bewertungen von Fahrzeugen. Im Bezug auf das beschriebene Lebenslagenkonzept decken die großen Portale bereits die Lebenslage Autokauf nahezu komplett ab. Allerdings bieten nicht alle Portale die Möglichkeit, das Angebot auf eine bestimmte Region einzuschränken.
2.3 Benutzeranforderung
Ziel ist die Implementierung eines webbasierten Fahrzeugmarktes für die Region Kaiserslautern, der sich außer seiner regionalen Beschränkung durch innovative Lösungen und Möglichkeiten der Personalisierung von bereits existierenden Lösungen absetzt und dem Benutzer
einen merklichen Mehrwert bietet.
Die bereits existierenden webbasierten Fahrzeugmärkte bieten dafür eine relativ umfangreiche
Grundlage. Diese Lösungen sollen übernommen und um das Konzept der Personalisierung zu
erweitert werden. Innovative Lösungen sollen gebündelt und vervollständigt werden.
Unter einem webbasierten Fahrzeugmarkt soll im folgenden verstanden werden: Ein webbasierter Fahrzeugmarkt besteht aus Webseiten über die potentielle Käufer und Verkäufer von
Fahrzeugen zusammengeführt und Austauschprozesse vollständig abgewickelt werden.
Besucher eines webbasierten Fahrzeugmarktes, die sich über Angebote informieren wollen
werden im folgenden Käufer genannt, die Angebotsseite wird mit Verkäufer oder Anbieter
beschrieben. Die Menge aller Besucher wird über den Begriff Benutzer definiert.
In die Kategorie der Fahrzeuge fallen im folgenden Kraftfahrzeuge sowie alle Arten von Anhänger. Ein Kraftfahrzeug ist ein mit Maschinenkraft angetriebenes Straßenfahrzeug, das
nicht an Schienen gebunden ist: Kraftwagen, Kraftrad, Zugmaschine. Zulassung und Betrieb
der Kraftfahrzeuge unterliegen gesetzlichen Vorschriften (Straßenverkehrs- und Straßenverkehrszulassungs-Ordnung). [Xipolis 2002].
Aufbauend auf die gegebene Definition soll der Fahrzeugmarkt nicht nur Pkw Angebote verwalten können, sondern auch ein Portal für Krafträder (Motorräder, Mofas, etc.) und Wohnmobile darstellen. Da Wohnmobile und Pkws in den meisten Eigenschaften übereinstimmen,
können sie über eine gemeinsame Oberfläche verwaltet werden. Krafträder und andere Fahrzeugtypen besitzen unterschiedliche spezifische Eigenschaften und werden deshalb jeweils
separat behandelt.
Der Fahrzeugmarkt soll folgende Basisfunktionen bieten:
1) Suche nach einem Fahrzeug
2) Aufgabe eines Inserates
Anforderungsanalyse
Seite 9
3) Verwaltung eines Verkaufangebots
Die erste Basisfunktion deckt sich mit den Erwartungen, die Benutzer an webbasierte Fahrzeugmärkte stellen. Nach [Namics 2001] sammeln bereits 48% der Käufer von Autos mit Hilfe des Internets Informationen über ihren Wunschwagen. Dagegen werden nur 3% der Autos
online verkauft und diese Zahl wird bis ins Jahr 2005 auch nicht über einen Anteil von 10%
steigen. Ziel dieses Fahrzeugmarktes ist eine Positionierung als Mittler zwischen Händlern
und Kunden. Der Online -Autoverkauf ist nicht prioritär.
Bereits 83% der Autohändler sind online im Internet vertreten, 93% bieten einen gewissen
Grad von Interaktivität auf den Webseiten an [Namics 2001]. Basisfunktion 2) führt diese
Masse für den Raum Kaiserslautern auf einer einzigen Seite zusammen und vereinfacht somit
die Interaktion zwischen Käufern und Verkäufern. Aus den Aussagen, dass der online Autoverkauf nicht prioitär ist ergibt sich die Forderung an die Anbieter, dass die abgegebenen Angebote dem tatsächlichen Angebot entsprechen und nicht falsche Angaben gemacht werden,
um Kunden zu ungewollten Handlungen zu bewegen.
Abbildung 2 beschreibt den Aufbau des webbasierten Fahrzeugmarktes anhand der oben gegebenen Definitionen.
Webbasierter Fahrzeugmarkt
Benutzer
Käufer
Verkäufer
Aufruf
Suchen/ Bieten
Authentifizierung
Basisfunktionen
Fahrzeuge
Personalisierung
Fahrzeugsuche
Spezifizierung
PKW/ Wohnmobil
Inserate aufgeben
Fließen ein
Inserate verwalten
Innovative
Lösungen
Kraftrad
Daten abrufen, bearbeiten, pflegen
Abbildung 2 Zusammensetzung des webbasierten Fahrzeugmarktes
Anforderungsanalyse
Seite 10
Aufbauend auf die Basisfunktionen müssen geeignete Lösungen gefunden werden, die dem
Benutzer einerseits größere Spielräume und andererseits intelligente Verfahren zur Zielerreichung bieten. Ziel dabei ist es, die Basisfunktionalität jederzeit zu gewährleisten. Das Layout
muss auf dieses Ziel abgestimmt werden. Der Benutzer, also sowohl der Käufer als auch der
Anbieter, muss jederzeit in der Lage sein, schnell und komfortabel die Basisfunktionen auszuführen. Innovative Lösungen und Konzepte der Personalisierung sollten soweit integriert sein,
dass ihre Benutzung intuitiv, beziehungsweise weitestgehend automatisiert möglich wird.
Im folgenden sollen die Basisfunktionen spezifiziert und zusätzliche Lösungen eruiert werden.
2.3.1 Funktionale Benutzeranforderungen
Die funktionalen Benutzeranforderungen leiten sich aus den im vorangegangenen Abschnitt
beschriebenen Basisfunktionen ab. Anforderungen von seiten des Projekts KLinform fließen
ebenfalls ein. Beschrieben werden allgemeine Anforderungen, Anforderungen, die sich aus
der Definition von „Fahrzeug“ ergeben, Anforderungen an die Basisfunktionen sowie innovative Lösungen und Personalisierungsmöglichkeiten.
Allgemeine Anforderungen
BA-F
BA-F1
Beschreibung der Anforderung
Aufgegebene Inserate müssen in einem geographisch begrenzten Raum um Kaiserslautern liegen, um die regionale Konzentration des Portals zu wahren.
Alle Eingaben, außer in Freitexten, werden auf syntaktische und soweit möglich,
BA-F2
auf semantische, Korrektheit überprüft. Im Falle einer Fehleingabe wird ein entsprechender Hinweis mit möglichst exakter Hilfestellung ausgegeben.
BA-F3
Eine kontextsensitive Hilfefunktion zu allen Eingabefeldern und eine Hilfsfunktion
zur Beschreibung der Basisfunktionen und weiterer Features ist zu implementieren.
Abbildung 3 Allgemeine Benutzeranforderungen
Spezifische Anforderungen der Fahrzeugtypen
Die in 2.3 gegebene Definition des Begriffes „Fahrzeug“ verlangt nach einer genaueren Spezifikation der Informationen, die für ein Fahrzeug der jeweiligen Klasse abgefragt und angeboten werden. Tabelle 1 gibt einen Überblick über die Eingabefelder, mit denen Käufer ihre
Suche einschränken können bzw. über die Attribute, die bei der Aufgabe eines Inserates ge-
Anforderungsanalyse
Seite 11
pflegt werden müssen. Zusätzlich steht für jede Fahrzeugkategorie ein Textfeld zur Verfügung, in dem noch nicht abgedeckte Eigenschaften eingetragen werden können.
Alle Fahrzeuge
·
Marke, Modell, Erstzulassung, Laufleistung, Preis
·
Fahrzeugtyp, Leistung, Treibstoff, Karosserie
1. Erweiterte Optionen
-
Verbrauch
-
Getriebeart
-
Außenfarbe
-
Sonderausstattungen/ Sonderleistungen
§
ABS, Alarmanlage, Allrad, Alufelgen, Anhängerkupplung, Behindertengerecht, Beifahrer Airbag,
PKW/ Wohnmo-
CD, Dachträger, Elektrische Fensterheber, Elekt-
bil
rische Sitzverstellung, Elektrische Außenspiegel,
Fahrerairbag, Katalysator, Klima, Lederausstattung, Navigationssystem, Nebelscheinwerfer, Radio, Schiebedach, Seitenairbags, Servolenkung,
Sitzheizung, Sportausstattung, teilbare Rücksitzbank, Tempomat, Traktionskontrolle, Tuning,
Wegfahrsperre, Winterreifen, Zentralverriegelung
§
Motorrad/ Mofa/
Kraftrad
Mehrwertsteuer ausweisbar, Garantie, TÜV
·
Fahrzeugtyp, Motorleistung, Hubraum
·
Erweiterte Optionen
-
Farbe
-
Verbrauch
-
Sonderausstattungen/ Sonderleistungen
§
ABS, Alarmanlage, Heizgriffe, Katalysator, Koffer/Topcase, Scheibe, Sturzbügel, Tuning, Verkleidung
§
Mehrwertsteuer ausweisbar, Garantie, TÜV
Abbildung 4 Fahrzeugspezifische Attribute
Anforderungsanalyse
Seite 12
Die Marke eines Fahrzeuges beschreibt den Hersteller, die Ausprägung des Modells ist abhängig von der Marke. Eine entsprechende Zuordnung ist aber sehr aufwendig. Deshalb soll
eine entsprechende Zuordnung vorerst nicht implementiert werden.
Mit dem Eingabefeld „Fahrzeugtyp“ soll eine Einteilung des Fahrzeuges in die Kategorien
Neufahrzeug, Gebrauchtfahrzeug, Jahresfahrzeug oder Unfallfahrzeug getroffen werden. Die
Analyse bestehender Systeme hat ergeben, dass eine überdurchschnittlich hohe Zahl an Unfallwagen über webbasierte Fahrzeugmärkte angeboten werden. Dem Käufer muss die Möglichkeit gegeben werden Suchergebnisse ohne derartige Angebote zu erhalten.
Anforderungen der Basisfunktion „Inserat suchen“
Die Suchfunktion bietet dem Käufer die Möglichkeit, sich über die Angebote im Raum Kaiserslautern zu informieren. Dabei muss dem Käufer die Möglichkeit gegeben werden, die
Suche möglichst optimal auf seine Bedürfnisse einzustellen, ohne das dabei die Übersichtlichkeit verloren geht. Der Suchvorgang muss möglichst schnell ablaufen, um vorzeitige Abbrüche zu vermeiden. Die Suchergebnisse müssen ansprechend aufbereitet werden, dem Käufer müssen Funktionen zur Verfügung stehen, welche die Arbeit mit den gefundenen Fahrzeugen erleichtern. Die folgende Tabelle beschreibt die funktionalen Anforderungen an die
Suchfunktion.
BA-F
BA-F4
BESCHREIBUNG DER ANFORDERUNG
Die Suchoptionen sind standardmäßig auf den allgemeinsten Fall eingestellt und
können schrittweise vom Benutzer spezialisiert werden.
Die Eingabefelder müssen so weit wie möglich Auswahlfelder mit vordefinierten
Werten sein, um die Korrektheit der Angaben zu erhöhen. Beinhaltet ein Eingabe-
BA-F5
feld Datumswerte, so werden diese beginnend mit dem höchsten Wert aufgelistet.
Numerische Werte beginnen mit dem kleinsten Wert, einige Angaben erfolgen in
Form von Intervallen.
BA-F6
Die Anzahl der in der Datenbank vorhandenen Angebote wird angezeigt.
BA-F7
Die Auflistung der Suchergebnisse erfolgt in Tabellenform
BA-F8
Sortiermöglichkeit nach den wichtigsten Attributen
BA-F9
Maximale Spaltenanzahl je Tabelle/Webpage kann variable eingestellt werden
Die detaillierte Anzeige eines speziellen Fahrzeuges enthält alle vorhandenen In-
BA-F10 formationen in Textform. Falls vorhanden, erfolgt die Darstellung des Bildes. Informationen über den Verkäufer und entsprechende Kontaktmöglichkeiten werden
Anforderungsanalyse
Seite 13
aufgelistet. Zur detaillierten Anzeige gelangt der Benutzer über einen Link in der
Ergebnistabelle.
Abbildung 5 Funktionale Benutzeranforderungen – Suchfunktion
Anforderungen der Basisfunktion „Inserat aufgeben“
Die Anbieter sind mit der Aufgabe von Inseraten für den Umfang und die Vollständigkeit der
im webbasierten Fahrzeugmarkt vorhandenen Informationen verantwortlich. Eine vollständige Kontrolle aller neu aufgegebenen Inserate ist aufgrund begrenzter (menschlicher) Ressourcen nicht möglich. Das System muss den Verkäufer dabei unterstützen, möglichst korrekte
und ausführliche Werte einzugeben, ohne dabei den notwendigen Spielraum zu stark einzuschränken. Eine Möglichkeit dabei ist die Vorgabe möglicher Attributausprägung und die
Definition von Eingabefeldern, die ausgefüllt werden müssen. Offene Textfelder geben dem
Verkäufer die Freiheit auf zusätzliche, ihm wichtig erscheinende Eigenschaften des angebotenen Fahrzeuges hinzuweisen. Im folgenden sind die funktionalen Anforderungen an die beschriebene Basisfunktion aufgelistet.
BA-F
BESCHREIBUNG DER ANFORDERUNG
Das Inserieren eines Fahrzeuges ist nur nach Registrierung bei KLinform und im
BA-F11 eingeloggten Zustand möglich. Bereits vorhandene Daten aus der Registrierung
werden verwendet und müssen nicht neu eingegeben werden.
Alle Felder, die in den Abschnitten über die Fahrzeugspezifischen Informationen
BA-F12
nicht unter den Punkt „Erweiterte Optionen“ fallen, müssen eingegeben werden,
ansonsten erfolgt kein Eintrag in die Datenbank. Erweiterte Optionen haben bezüglich der Eingabe einen optionalen Charakter.
Die Eingabefelder müssen so weit wie möglich Auswahlfelder mit vordefinierten
Werten sein, um Missbrauch zu verhindern und die Korrektheit der Angaben zu
BA-F13 erhöhen. Beinhaltet ein Eingabefeld Datumswerte, so werden diese beginnend mit
dem höchsten Wert aufgelistet. Numerische Werte beginnen mit dem kleinsten
Wert.
Ein Bild kann, muss aber nicht übergeben werden. Falls bereits ein Fahrzeug der
selben Marke und des selben Typs in der Datenbank mit Bild existiert, steht dem
BA-F14 Nutzer frei, dieses Bild für sein Inserat zu verwenden. Es wird das Bild mit der
größten Übereinstimmung der angegebenen Merkmale vorgeschlagen. Der Anbieter
kann zur genaueren Darstellung seines Angebotes ein Bild hochladen.
Anforderungsanalyse
BA-F15
Seite 14
Vor dem Eintrag in die Datenbank wird dem Inserat ein eineindeutiger Schlüssel in
Form einer Nummer zugeordnet.
Dem Administrator wird nach erfolgreicher Aufgabe des Inserates eine Email mit
BA-F16 allen gemachten Angaben geschickt. Des weiteren erhält er mit der Email die erstellte Nummer des Inserates.
Abbildung 6 Funktionale Benutzeranforderungen – Inserat aufgeben
Anforderungen der Basisfunktion „Inserat verwalten“
Nach der Aufgabe eines Inserates muss dem Verkäufer die Möglichkeit gegeben werden, sein
Inserate zu löschen oder innerhalb des definierten Spielraumes abzuändern. Damit ist er in der
Lage ein wenig ansprechendes Angebot in eine für beide Parteien positive Richtung zu verändern.
BA-F
Beschreibung der Anforderung
Während der Laufzeit des Inserates können alle Daten nach vorherigem Login ge-
BA-F17 ändert, gelöscht oder erweitert werden. Bei der Suche nach dem zu ändernden Inserat hilft die zugeteilte Nummer. Das Inserat kann auch komplett gelöscht werden.
Nach Speicherung der Änderungen wird dem Anbieter automatische eine Email mit
BA-F18 den geänderten Daten zugesandt. Die bei der Erstellung zugewiesene Nummer
bleibt unverändert
Abbildung 7 Funktionale Benutzeranforderungen - Inserat verwalten
Aktualität und Korrektheit des Angebotes
Wie bereits im obigen Punkt erwähnt liegt die vorrangige Verantwortung für die Korrektheit
und Vollständigkeit des Angebotes bei den Anbietern. Um Missbrauch zu vermeiden muss
der Webmaster in der Lage sein, unseriöse und falsche Angebote aus der Datenbank zu entfernen. Da solche Angebote häufig erst bei der Suche nach einem Fahrzeug auffallen, wird
der webbasierte Fahrzeugmarkt um eine Funktion erweitert, die es den Käufern erlaubt, solche Angebote zu sperren. In der Detailansicht eines Angebots steht ihnen dazu ein entsprechender Link zur Verfügung. Der Administrator erhält daraufhin eine Mitteilung über die gewünschte Sperrung und kann dann nach erneuter Prüfung diese durchführen.
Um die Aktualität des Angebotes zu wahren, werden die Inserate nach Ablauf einer festgelegten Zeit automatisch aus der Datenbank entfernt, vorausgesetzt es wurde während dieser Zeit
keine anbieterseitig Aktualisierung vorgenommen werden. 14 Tage vor Ablauf dieser Zeitspanne wir der Inserator darüber informiert, dass er sein Inserat verlängern kann. Damit wird
Anforderungsanalyse
Seite 15
sichergestellt, dass der Anteil an bereits verkauften, aber noch angebotenen Fahrzeugen möglichst gering bleibt. Selbstverständlich wird der Anbieter über die erfolgte Löschung benachrichtigt.
Personalisierung der Funktionen
Entsprechend den Projektanforderungen liegt ein Hauptaugenmerk auf den Möglichkeiten der
Personalisierung. Die Personalisierung setzt voraus, dass der Benutzer bereits registriert und
auch eingeloggt ist.
Registrierte Käufer können in einem vordefinierten Rahmen Art und Umfang der Suchergebnisse einstellen. Darunter fallen die Anzahl der pro Website angezeigten Treffer (vgl. BA-F9)
sowie die in der Ergebnistabelle aufgeführten Spalten. Diese Funktion trägt den differenzierten Auswahlkriterien der Käufer Rechnung. Die beim Autokauf entscheidenden Eigenschaften des gesuchten Wagens sind stark geschlechtsabhängig. Während Männer die Schwerpunkte eher im Bereich der Technik setzten, steht für Frauen Form und Farbe des Wagens im Vordergrund. Eine geschlechtsspezifisch gestaltete Oberfläche erhöht die Anwenderfreundlichkeit. Die auf der Startpage gezeigten Eingabefelder sollen abhängig von dem Geschlecht der
angemeldeten Person gewählt werden. Diese Unterscheidung wird auch bei der Wahl der in
der Ergebnistabelle angezeigten Standardfelder fortgesetzt. Unabhängig von den oben beschriebenen Auswahlmöglichkeiten ist damit bereits eine automatische Personalisierung erfolgt.
Registrierte Käufer können ebenfalls ein persönliches Fahrzeugprofile erstellen. Bei wiederholten Suchvorgängen nach dem selben Fahrzeugtyp entfällt somit die erneute Eingabe der
Daten. Weiterhin wird dem User angeboten, seine Profile zur automatischen Suche nach neu
eintreffenden Inseraten freizuschalten. Die Datenbank wird periodisch auf entsprechende
Angebote hin durchsucht. Sollte ein neues Inserat dem gewünschten Profil entsprechen, wird
der Nutzer automatisch per Email benachrichtigt. Zur genauen Identifizierung und zum
schnellen Auffinden des entsprechenden Inserates wird der Hyperlink auf die Detailansicht
des Inserates mit übermittelt.
Vor allem für professionelle Verkäufer dürfte interessant sein, wie viele Benutzer die Detailansicht des jeweiligen Inserates aufrufen. Eine solche Funktion soll in das Angebot des webbasierten Fahrzeugmarktes integriert werden. Mit Hilfe dieser Funktion kann der Verkäufer
Rückschlüsse auf das Interesse seines Inserates innerhalb der Käufermenge erhalten und darauf aufbauend Änderungen vornehmen. So lässt beispielsweise ein gut besuchtes Inserat, dass
aber nur wenige direkte Anfragen generiert, den Schluss zu, dass den Käufern der Preis für
Anforderungsanalyse
Seite 16
die gebotene Ausstattung zu hoch ist. Liegt dagegen die Konversionsrate auf einem überdurchschnittlichen Niveau, so handelt es sich eventuell um ein besonders günstiges Angebot.
Die Möglichkeiten der Personalisierung sollten intuitiv einsetzbar sein. Sie sollten dem Benutzer dann vorgeschlagen werden, wenn dieser sich in einer Situation befindet, in der die
Vorteile der Personalisierung verstehen und die Funktionen annehmen wird. Die Realisierung
dieser Funktion darf zu keiner Belästigung des Benutzers führen. Alle Basisfunktionen müssen ohne vorherige Einstellungen ausführbar sein.
Innovative Lösungen
Bei der Analyse existierender Fahrzeugmärkte ist aufgefallen, dass eine Suchoption zum Auffinden eines möglichst ökonomischen Angebotes nicht bereitgestellt wird. Die marken- und
typübergreifende Suche nach einem günstigen Wagen mit einer geringen Steuerklasse und
geringem Verbrauch hilft vor allem Käufern mit geringem finanziellen Spielraum. Da die
Eingabe der Steuerklassen für private Anbieter zu aufwändig ist, beschränkt sich diese Funktion auf die Suche über die zusätzliche Verbrauchsangabe. Dieser Zusatznutzen wird in die
Standardeingabe integriert und kann damit vom Käufer direkt ohne weitere Auswahl genutzt
werden.
Die Suche nach einem neuen Fahrzeug gestaltet sich dann schwierig, wenn das Wunschfahrzeug nur unzureichend beschrieben werden kann. Häufig hat der Suchende nur ungenaue Vorstellungen des gesuchten Fahrzeuges. Deshalb liefert eine Suchfunktion, die nur genau nach
den eingegebenen Werten in der Suchmaske sucht, unbefriedigende, weil nicht vollständige
Ergebnisse. Aus diesem Grund sollen Methoden aus der künstlichen Intelligenz, besonders
aus dem Bereich des Information Retrieval genutzt werden, um auch mit ungenauen Daten
befriedigende Suchergebnisse zu erhalten. Denkbar wäre in diesem Zusammenhang beispielsweise das Vektorraummodell, welches auch bei vielen Suchmaschinen im Internet zum
Einsatz kommt.
Bereits bei der Spezifizierung der Basisfunktionen wurde darauf verwiesen, dass pro Inserat
ein Bild des Fahrzeuges von dem Verkäufer gespeichert werden können. Dadurch erhält der
Käufer bereits online einen sehr guten Eindruck der tatsächlichen Optik des Fahrzeuges. Er
erspart sich dadurch zeitaufwändige Besuche bei dem Verkäufer, falls ihm das Fahrzeug optisch nicht in vollem Umfang zusagt.
Anforderungsanalyse
Seite 17
2.3.2 Nichtfunktionale Benutzeranforderungen
BA-NF
BESCHREIBUNG DER ANFORDERUNG
Um dem Benutzer ein unkompliziertes Arbeiten auf dem Portal unabhängig von
dem gewählten Internetzugang zu ermöglichen, muss das Programm von allen
gängigen Internetbrowser - Betriebssystemkombinationen angezeigt werden könBA-NF1
nen und ein annährend identisches Layout besitzen. Dazu ist vor allem die Darstellung auf den beiden meistgenutzten Browsern - Microsoft Internet Explorer
und Netscape Communicator (beide ab Version 4.0 oder höher) – im Zusammenspiel mit den meistverbreiteten Betriebsystemen – Microsoft Windows Familie,
MacOs, Unix und Linux – zu testen.
BA-NF2
Das Laden der Seiten sollte auch bei langsamen Internetverbindungen sehr schnell
gehen.
Die Gestaltung der Seiten sollte weitestgehend identisch und möglichst klar und
BA-NF3
selbsterklärend sein. ‚Weiter’, ‚Zurück’ und ‚Abbrechen’ Buttons sind auf jeder
Seite zur schnellen Navigation darzustellen.
BA-NF4
Einträge und Änderungen in die Datenbank sind nur im authentifizierten Zustand
erlaubt.
Abbildung 8 Nichtfunktionale Benutzeranforderungen
2.3.3 Inverse Benutzeranforderungen
BA-Inv
BA-Inv1
Beschreibung der Anforderung
Die Daten in der Datenbank dürfen nicht verloren gehen. Die Konsistenz muss
auch nach einem Systemabsturz gewahrt bleiben.
Es dürfen keine Inhalte in der Datenbank gespeichert werden, die nicht in Bezug
BA-Inv2
zu dem angebotenem Fahrzeug oder zu dem webbasierten Fahrzeugmarkt allgemein stehen
Abbildung 9 Inverse Benutzeranforderungen
2.3.4 Entwurfsentscheidungen
EE
EE1
EE2
Beschreibung der Anforderung
Implementierungssprache ist Java (Java 2 SDK 1.3)
Die zu erstellenden Webseiten werden mit JSP implementiert; der verwendete JSPContainer ist tomcat.
Anforderungsanalyse
Seite 18
EE3
Die verwendete Datenbank ist PostgreSQL Version 7.
EE4
Die Datenbankanbindung erfolgt mittels JDBC.
EE5
Auf die Verwendung von JavaScript und dem Setzten von weiteren Cookie- Inhalten außer der Session-ID muss verzichtet werden.
Abbildung 10 Entwurfsentscheidungen
Die folgende Abbildung gibt einen Überblick über die Architektur der Systemumgebung. Außerdem wird der Datenfluss durch das System beschrieben.
Client (Benutzer)
Server
JSP
HTML-Datei
mit Formular
Internet
Browser
Formular
abschicken
übertragen
Automatisch
erzeugte
HTML-Datei
An Appl.-Server
weiterleiten
Apache
Web
Server
HTML-Datei
übertragen
ApplikationsServer
(Tomcat)
HTMLDatei
erzeugen
Automatisch
erzeugte
HTML-Datei
DB Ab- und
Anfrage
PoolManager
DBMS
PostgreSQL
Firewall
Abbildung 11 Hard- und Software- Plattform
2.4 Zusammenfassung
Ziel des Projektes KLinform ist es, einen erheblichen Mehrwert für den Benutzer gegenüber
anderen Portal-Sites zu bieten. Diese Anforderung gilt auch für den webbasierten Fahrzeugmarkt. Erschwert wird diese Anforderung durch eine Vielzahl bereits auf dem Markt vorhandener webbasierter Fahrzeugmärkte, die auf den Handel mit gebrauchten und neuen Fahrzeugen spezialisiert sind. Diese Märkte sind in der Lage durch ihre Spezialisierung beständige
Verbesserungen und Erweiterungen vorzunehmen. Gleichzeitig konzentrieren sie ein großes
Angebot mit einer großen Nachfrage.
Anforderungsanalyse
Seite 19
Einen entscheidenden Vorteil bietet das Konzept der Personalisierung. Besonders die großen,
sich bereits auf dem Markt befindlichen Anbietern bieten eine sehr große Auswahl an Fahrzeugen an, und es gestaltet sich als sehr aufwändig, auf der Suche nach einem Wunschwagen
regelmäßig des komplette Angebot zu durchsuchen. Die automatische Durchsuchung neuer
Angebote auf der Basis eines eingegebenen Wunschprofils stellt einen erheblich geringeren
Aufwand für den Benutzer dar.
Die regionale Beschränkung des Angebots ermöglicht dem Käufer eine schnelle und mit geringem Zeitaufwand verbundene Abwicklung des Kauf- und Übergabevorganges. Außerdem
erhält er dadurch die Möglichkeit, interessante Produkte direkt vor Ort zu begutachten.
Die Konzentration möglichst vieler, bereits auf anderen Portalen vorhandener innovativer
Lösungen, suggeriert dem Benutzer einen weiteren Mehrwert.
Umgebungsstruktur
Seite 20
3 Umgebungsstruktur
In den Entwurfsentscheidungen in Kapitel 2 wurde bereits ein kurzer Überblick über die zu
verwendenden Werkzeuge zur Umsetzung des Systems gegeben. Als zentrales strukturgebendes Element fungiert das Model- View- Controller Design Pattern. Jede der drei Komponenten kann durch eine Auswahl an Werkzeugen umgesetzt werden. Im folgenden Kapitel soll
zunächst die Model- View- Controller- Architektur näher beschrieben werden. Im Anschluss
daran soll der Überblick über die zu verwendenden Werkzeuge vervollständigt und konkretisiert werden.
3.1 Das MVC-Design Pattern
Programme mit graphischer Benutzeroberfläche werden schnell kompliziert und unübersichtlich. Um zu verhindern, dass solche Programme ab einer bestimmten Größe unwartbar werden, ist es erforderlich, sie mit einer Architektur zu versehen [Tataryn 2002]. Das ModelView- Controller Design Pattern beschäftigt sich damit, wie sich Programme mit graphischen
Benutzeroberflächen besonders gut organisieren lassen. Es handelt sich hierbei um eine Technik zur Trennung der Businesslogik (Model), vom User Interface (View) und Ablaufsteuerung (Controller).
User
View
Controller
Model
Abbildung 12 MVC Design Pattern im Überblick
Abbildung 12 gibt einen allgemeinen Überblick über das MVC Design Pattern. Die einzelnen
Komponenten übernehmen dabei folgende Funktionen:
·
Der View definiert wie Daten dem Benutzer präsentiert werden. Der View muss dabei
auf Veränderungen des Modells reagieren können.
·
Das Model repräsentiert die Daten im System, die von dem Programm in Form von
Objekten verarbeitet werden.
·
Der Controller ist der Kitt zwischen Model und View. Er ist zuständig für die Kontrolle des Programmablaufs und steuert Aktualisierungen zwischen Model und View und
umgekehrt.
Umgebungsstruktur
Seite 21
Diese recht allgemeine Definition soll nun auf das vorliegende Problem adaptiert werden. Die
Trennlinie, vor allem zwischen Model und Controller, verläuft dabei nicht immer scharf. Die
folgende Abbildung dient als Übersicht, welche Implementierungswerkzeuge in den einzelnen
Komponenten zum Einsatz kommen.
Controller
(=Servlet, JSP)
Client
Model
(=Java Bean,
SQL)
DB
(=SQL)
stellt Daten bereit
View
(=JSP)
Abbildung 13 MVC - Komponenten und Werkzeuge
3.2 Werkzeuge zur Umsetzung des Problems
JavaServer Pages (JSP)
JavaServer Pages sind im Aufbau vergleichbar mit HTML-Dokumenten. Sie bestehen jedoch
aus zwei Teilen: einem HTML-Text sowie beliebig vielen, darin eingebetteten Anweisungen
an den JSP-Server [Turau 2000, S.22]. Die Technologie der JSP versetzt den Anwender daher
in die Lage, reguläres, statisches HTML mit dynamisch generierten Inhalten von Servlets zu
mischen [Hall 2001, S.31]. Zum Einfügen der JSP-Anweisungen dienen spezielle, jedoch
HTML-ähnliche Tags.
JavaBeans
Die Einbettung von Java-Quelltext in HTML-Dokumente schafft leider immer noch keine
befriedigende Trennung der Darstellung (HTML) von der zugrundeliegenden Verarbeitungslogik (Java). Man kann allerdings durch die Verwendung von Beans die Trennung deutlich
verbessern.
Um eine über den Umfang von JavaServer Pages hinausgehende Funktionalität zur Verfügung zu haben, bietet sich die Verwendung der konfigurierbaren und adaptierbaren Softwarekomponente JavaBeans an [Turau 2000, S.103]. Mit Software-Komponenten versucht man
wiederverwendbare Bausteine zu realisieren, die man anschließend mit speziellen Werkzeugen verknüpfen und zu neuen Anwendungen zusammenstecken kann (Lego-Prinzip). Ziel ist
Umgebungsstruktur
Seite 22
es, die Entwicklungszeit, durch die Wiederverwendung und den Einsatz von Werkzeugen,
drastisch zu verkürzen.
Mit der Aktion jsp:useBean kann ein Bean für die Benutzung in einer JSP-Seite geladen
werden. JavaBeans nutzen dabei die entscheidende Attraktivität von Java – die Plattformunabhängigkeit.
JDBC
Java-Anwendungen greifen auf SQL- Datenbanken über einen JDBC- Treiber zu (Java Database Connectivity). Dadurch kann der Java Sourcecode weitgehend datenbankunabhängig
gehalten werden, so dass ein späterer Wechsel der SQL- Datenbank leicht möglich ist [Horn
2002]. JDBC 1.0 wurde 1997 speziell für den Einsatz in relationalen Datenbank Management
Systemen (DBMS) entwickelt [Bücker 2002, S.13]. In JDBC existieren vier Treiberarten. Zur
Implementierung von KLinform kommt dabei der sogenannte Typ 4 Treiber zum Einsatz. Er
wandelt JDBC Aufrufe direkt in datenbankspezifische Netzwerkbefehle um. Diese Befehle
werden von der Datenbank-API direkt auf dem Server ausgeführt, so dass kein Laden von
Binärcode auf der Seite des Client erforderlich ist. Dieser Treibertyp wird von nahezu allen
Datenbanken unterstützt und ist zugleich die schnellste, effektivste und sicherste der vier Varianten [Bücker 2002, S.12]. Abbildung 14 zeigt den prinzipiellen Aufbau des Treibers, wie er
von KLinform genutzt wird.
Java-Applikation
JDBC-API
JDBC-Treibermanager
JDBC-Treiber-API
Treiber PostgreSQL
PostgreSQL
Abbildung 14 JDBC Typ 4 – Treiber; Quelle [Bücker 2002]
1998 wurde der Funktionsumfang durch JDBC 2.0 erweitert. Bei Multiuser-Anwendungen,
wie im Fall von KLinform, greifen oft viele Benutzer gleichzeitig auf eine Datenbank zu. Um
ressourcenschonend mit nur einer Datenbankverbindung auskommen zu können, wird Con-
Umgebungsstruktur
Seite 23
nection Pooling eingesetzt. Während hierfür sonst externe Erweiterungen notwendig wären,
ist die inzwischen Teil der JDBC 2.0 Spezifikation.
PostgreSQL
SQL steht für Structured Query Lanquage und wird als Schnittstelle zu relationalen Datenbanken benutzt. SQL ist nach dem American National Standards Institute (ANSI) Standard
genormt und damit auf vielen relationalen Datenbank Management Systemen (RDBMS) anwendbar. SQL Anweisungen werden sowohl zu Daten-Abfrage als auch zur Daten-Definition
verwendet [Müller 2002].
PostgreSQL ist ein objektrelationales DBMS, dessen Sourcecode frei erhältlich ist und auf
verschiedenen Plattformen läuft. Das Ziel von PostgreSQL ist es, vollkommen kompatibel zu
dem ANSI Standard von SQL zu werden.
3.3 Use-Case-Diagramm als Handlungs- und Umgebungsbeschreibung
Als Grundlage und grobe Richtlinie für die Implementierung des Systems dient die Beschreibung der umzusetzenden Use-Cases. Diese leiten sich weitestgehend aus den in Abschnitt 2.3
beschriebenen Basisfunktionen ab. Das folgende Use-Case-Diagramm beschreibt neben den 3
Basisfunktionen auch noch weitere Interaktionsmöglichkeiten der Aktoren untereinander.
Umgebungsstruktur
Seite 24
Abbildung 15 Use-Case-Diagramm
Als Aktoren werden dabei der Benutzer, der Administrator und auch die Datenbank gesehen.
Der Benutzer kann nach einem Fahrzeug suchen, ein Inserat anlegen und dieses verwalten.
Daneber ist er in der Lage ein Suchprofil anzulegen und dieses zu bearbeiten, also zu ändern
beziehungsweise zu löschen. Um die Aktualität der Angebote zu waren, Missbrauch des
Fahrzeugmarktes zu verhindern und um Fehler seitens der Benutzer zu korrigieren, muss der
Administrator in der Lage sein, die Inserate zu prüfen und gegebenenfalls zu bearbeiten. Dabei führen die meisten Aktionen sowohl der Benutzer, als auch des Administrators zu Veränderungen in der Datenbank.
Systementwurf auf Basis des MVC-Design Pattern
Seite 25
4 Systementwurf auf Basis des MVC-Design Pattern
Die Umsetzung des MVC-Design Pattern ist Inhalt des folgenden Kapitels. Dieser Teil der
Ausarbeitung beschränkt sich dabei auf die Implementierung des Fahrzeugmarktes für Personenkraftwagen. Die Komponente der Krafträder ist sowohl strukturell als auch inhaltlich identisch. Eine Integration in diese Arbeit erhöht lediglich die Unübersichtlichkeit der gesamten
Struktur im Allgemeinen und der Abbildungen im Speziellen. Im Folgenden sollen sowohl
die Funktionalität als auch die Strukturierung der drei Komponenten des MVC- Design Pattern beschrieben werden. Einen ersten Überblick über die Umsetzung in dem Gesamtsystem
gibt Abbildung 16. Zur besseren Veranschaulichung sind die Dateien den jeweiligen Komponenten farblich zugeordnet.
Die im Abschnitt 2.3 beschriebenen Basisfunktionen sind in jeweils separaten Unterverzeichnissen des Verzeichnisses ‚$klinform/html/bs/fahrzeugmarkt/' umgesetzt. Außerdem existiert
ein Verzeichnis zur Umsetzung der Eingriffsmöglichkeiten des Administrator (‚admin/’), zur
Steuerung des Uploads von Bildern (‚bild_hochladen/’- die Speicherung der Bilder erfolgt in
dem Verzeichnis ‚bilddatei/’) und für die Detailansicht des Fahrzeuges (‚detail/’). Der grobe
Ablauf ist dabei in allen Teilbereichen gleich strukturiert. Die Funktionalität der ControllerKomponente wird durch eine oder mehrere index- Dateien übernommen. Durch sie wird der
Programmfluss gesteuert, indem, entsprechend der Eingaben des Benutzers, die gewünschten
Aktionen ausgeführt werden. Die Kommunikationsschnittstelle mit dem Benutzer übernimmt
dabei die View- Komponente. Hierfür existiert für annährend jede Webseite, die der Benutzer
aufrufen kann, eine jsp-Datei. Dabei wird die Funktionalität zumeist durch Formulare gewährleistet. Aus diesen Formularen heraus werden dann die index- Dateien aufgerufen, die
die übergebenen Werte verarbeiten.
Die Speicherung der Daten erfolgt in den JavaBeans. Sie werden in der Datei ‚beans.jsp’
angelegt und initialisiert. Die zugehörigen class-Dateien befinden sich in dem Verzeichnis
‚$klinform/WEB_INF/classes/de/klinform/bs/fama’. Durch sie wird die Model-Komponente
umgesetzt. Genaugenommen ist hierin auch noch eine Teil der Funktionalität der ControllerKomponente enthalten. So wird beispielsweise die Reihenfolge zum Löschen oder Speichern
eines Inserates festgelegt. Es handelt sich also um die Steuerung des Programmablaufs auf
einer detaillierteren Ebene. Hauptaufgabe aber ist, die Daten in der Datenbank zu speichern,
beziehungsweise von dort auszulesen und die dauernde Konsistenz der Daten zu überwachen
und zu gewährleisten.
Systementwurf auf Basis des MVC-Design Pattern
$klinform
/html/bs/
fahrzeugmarkt/
admin
bild_
hochladen
suchen/
index.
jsp
beans.
jsp
index.
jsp
formular.
jsp
index.
jsp
index2.
jsp
inserat_
bearbeiten
detail
formular_
ein_
inserat.
jsp
formular_
inserat_
sperren.
jsp
formular_
bild_
hochladen.
jsp
index.
jsp
index_
suchergebnis.
jsp
index_
suchergebnis_
expertensuche.
jsp
formular.
jsp
formular_
suchanfrage.
jsp
formular_
suchanfrage_
geloescht.
jsp
formular_
suchergebnis_
expertensuche.
jsp
inserieren
Seite 26
formular_
speichern_
bestaetigen.
jsp
index.
jsp
formular1.
jsp
index.
jsp
index_
suchergebnis.
jsp
formular_
aendern_
bestaetigen.
jsp
formular2.
jsp
formular1.
jsp
formular2.
jsp
formular3.
jsp
formular_
loeschen_
bestaetigen.
jsp
formular_
keine_
berechtigung.
jsp
formular_
statistik.
jsp
index.
jsp
formular_
suchergebnis.
jsp
formular3.
jsp
ok.
jsp
formular.
jsp
bilddatei
/WEB-INF/
classes/de/
klinform/bs/fama
Model-Komponente
DBConnection.
class
Benutzer.
class
Fahrzeug.
class
Interne_
Abarbeitung.
class
Formular_
Detail.
class
File
Upload
Bean.
class
View-Komponente
Controller-Komponente
Abbildung 16 Struktur des Bausteines Fahrzeugmarkt
PKW.
class
formular_
inserat_
sperren.
jsp
ok.
jsp
Systementwurf auf Basis des MVC-Design Pattern
Seite 27
4.1 Objektorientierte System- und Datenbankstruktur (Modell- Komponente)
Wie bereits in Abschnitt 3.1 beschrieben wurde, repräsentiert das Modell die Daten im System, die von dem Programm in Form von Objekten verarbeitet werden. Die Daten sind dabei
dauerhaft in der Datenbank gespeichert. Zur Verarbeitung im System werden diese Daten in
Objekte der Klassen geladen, welche über dieselbe Struktur verfügen, wie die entsprechende
Tabelle in der Datenbank.
Datenbankstruktur
Als Spezifikationsgrundlage für das Datenbankschema dient das Entity- Relationship- Diagramm in Abbildung 17. Bis auf „Inserat“ sind alle hier dargestellten Entitäten, weitestgehend
mit identischen Namen, als Tabellen in der Datenbank vorhanden. Die Entität „Inserat“ ist
obsolete, weil Inserate in den jeweiligen Tabellen „PKW“ und „Kraftrad“ gespeichert werden.
Suchprofil
[1,1]
Inserat
[1,1]
[1,1]
hat
ist Inserator
von
Inserat enthält
[0,1]
[0,n]
[1,1]
[1,1]
Fahrzeug
is_a
[0,n]
is_a
[1,1]
PKW
Benutzer
hat
[0,n]
Marke
hat
[0,n]
Ausstattung
hat
[0,n]
Aufbauart
hat
[0,n]
Typ
Kraftrad
[1,1]
Abbildung 17 Entity- Relationship- Diagramm
Im folgenden sollen die Entitäten kurz erläutert werden:
·
Entität Benutzer:
Die Informationen über den Benutzer des Fahrzeugmarktes sind bereits in der Datenbank vorhanden, da es sich hierbei um den bei KLinform angemeldeten User handelt.
Systementwurf auf Basis des MVC-Design Pattern
Seite 28
Aus diesem Grund werden diese Daten nicht erneut gespeichert, sondern in der Tabelle fama_benutzer wird lediglich der Primärschlüssel von perso_benutzer referenziert.
Aus diesem Grund kann ein Inserat, beziehungsweise ein Suchprofil nur dann gespeichert werden, wenn der Benutzer eingeloggt ist und somit die Identifikationsnummer
bekannt ist. In der Tabelle werden nur die Attribute hatinserat und hatsuchanfrage
verwaltet. Diese werden auf den Wert „true“ gesetzt, sobald der Benutzer mindestens
ein Inserat, beziehungsweise ein Suchprofil gespeichert hat. Besitzt ein Benutzer weder ein Suchprofil noch ein Inserat, so wird er in der Tabelle fama_benutzer nicht geführt.
·
Entität Fahrzeug:
Hier werden alle Attribute gespeichert, die unabhängig von der jeweiligen Fahrzeugkategorie verwaltet werden müssen. Diese Tabelle wird nur dann direkt angesprochen,
wenn Aktionen ausgeführt werden, die keine direkten Veränderungen in den erbenden
Tabellen vornehmen. Ansonsten beziehen sich die SQL- Statements auf die erbenden
Tabellen fama_pkw und fama_kraftrad. Das Attribut ID kann dabei als die eindeutige
Nummer des Inserates verstanden werden da, wie beschrieben, nur durch ein neues Inserat ein neuer Eintrag in der Tabelle gemacht wird. Das Feld Inserator hat wiederum
eine Referenz auf den Primärschlüssel von perso_benutzer. Inserate können nur durch
angemeldete KLinform User angelegt werden. Gleichzeitig ist diese Entität existentiell
abhängig von perso_benutzer. Wird der zugehörige Inserator gelöscht, wird auch der
entsprechende Eintrag aus der Tabelle entfernt.
·
Entität PKW
Alle PKW-typischen Attribute werden in der Tabelle fama_pkw gespeichert. Durch
den SQL- Befehl ‚INHERITS (fama_fahrzeug)’ erbt diese Tabelle von fama_fahrzeug.
Alle Attribute der vererbenden Tabelle sind somit über die erbende Tabelle ansprechbar. Gleichzeitig sind gemeinsame Daten gekapselt, Informationen über den Benutzer
und die ID des Inserates müssen nicht erneut verwaltet werden.
·
Entität Suchprofil
Eine erste Betrachtung des System lässt die Frage aufkommen, ob gespeicherte Suchprofile von den Inseraten separiert werden müssen, oder ob sie in einer gemeinsamen
Tabelle verwaltet werden sollten. Gegen eine Zusammenlegung sprechen folgende
drei Punkte:
-
Die Attribute des Suchprofil stimmen nicht vollständig mit denen eines Inserates überein. So werden von einigen Attributen „von“ und „bis“ Werte gespei-
Systementwurf auf Basis des MVC-Design Pattern
Seite 29
chert, um die Suche nach Inseraten zu vereinfachen. Eine gemeinsame Tabelle
würde daher eine Vielzahl überflüssiger Attribute enthalten.
-
Eine weiteres Attribut wäre notwendig, um eine klare Unterscheidung von Inseraten und Suchprofilen vorzunehmen.
-
Mangelnde Übersichtlichkeit durch Vermengung von Inseraten und Suchprofilen
Daher werden Suchprofile in einer eigenen Tabelle verwaltet. Diese Tabelle erbt nicht
von fama_fahrzeug oder fama_pkw, sondern die notwendigen Attribute werden separat
gepflegt. Eine Vererbung würde auch hier zwangsläufig zu überflüssigen Attributen
führen. Dagegen wird auch hier wieder der Primärschlüssel von perso_benutzer referenziert, um die Konsistenz der Daten zu gewährleisten und die existenzielle Abhängigkeit zu implementieren.
·
Entitäten Marke, Aufbauart, Typ
Auf dem Fahrzeugmarkt existieren eine Vielzahl von Marken. Um diese zu kapseln
und den verschiedenen Anwendungen zur Verfügung zu stellen, werden alle bekannten Marken in der Tabelle fama_marken verwaltet. Dabei wird zwischen der ID der
Marke und dem eigentlichen Markennamen unterschieden. Erstere wird verwendet um
Inserate in den Entitäten Suchprofil und Fahrzeug zu speichern. Der Markenname
dient nur zur Kommunikation mit dem Benutzer. Bei den Identifikationsnummern 0
bis 200 handelt es sich um Marken für PKW, 200-300 beschreiben Marken von Krafträdern.
Die Entitäten Aufbauart und Typ werden entsprechend in den Tabellen fama_aufbauart und fama_typ verwaltet. Dabei beschreibt Aufbauart die Karosserieform des PKW beziehungsweise die Aufbauart des Kraftrades. Die Entität Typ unterscheidet beispielsweise zwischen Neuwagen und Gebrauchtwagen.
·
Entität Ausstattung
Gekapselt werden ebenfalls mögliche Sonderausstattungen gespeichert. Doch im Gegensatz zu der Entität Marken sollen hier keine Attributsausprägungen, sondern die
Attribute selber gespeichert werden. Die Ausstattungen der Fahrzeuge unterliegen einem dauerndem Wechsel und die gewünschten Sonderausstattungen auf dem Gebrauchtwagenmarkt passen sich diesen Änderungen an. Standen noch vor wenigen
Jahren ABS und Fahrerairbag nur in gehobenen Preissegmenten zur Verfügung, so gehören Sie heute zur Serienausstattung in beinahe jedem PKW. Eine dezentrale Verwaltung solcher Attribute würde die Wartbarkeit dieses Bausteins erheblich aufwendiger
Systementwurf auf Basis des MVC-Design Pattern
Seite 30
machen. Die Tabelle fama_ausstattung enthält für jede Sonderausstattung eine ID, ein
Kürzel der Ausstattung und den vollständigen Namen. Die Umsetzung dieses dynamischen Konzepts in der Implementierung wird detailliert in Abschnitt 4.2 beschrieben.
In diesem Zusammenhang stellt sich auch die Frage, warum nicht alle Attribute auf
diese Art verwaltet werden. Eine solche Lösung wäre sehr aufwendig und der Nutzen
ist vergleichsweise gering. Der Grund hierfür ist, dass die abgefragten Eigenschaften
wie Erstzulassung, Preis, Laufleistung oder Leistung schon seit mehreren Jahrzehnten
zur Bewertung von gebrauchten Fahrzeugen verwendet werden. Die Wahrscheinlichkeit einer zukünftigen Änderung dieser Attribute erscheint gering. Des weiteren sind
diese Attribute in ihrer Typausprägung zu unterschiedlich, eine gemeinsame Verwaltung ist, verglichen mit den Attributen der Sonderausstattung, welche alle vom Typ
„boolean“ sind, äußerst aufwendig.
Das vollständige Datenbankschema befindet sich im Anhang. Für die Wartung der Datenbank
sind stets sichere Schemata anzustreben. Für die Tabellen des Fahrzeugmarktes wird daher
die Löschregel Cascade verwendet. Diese Operation „kaskadiert“ zu allen zugehörigen Sätzen. Wird beispielsweise ein Eintrag in der Tabelle fama_fahrzeug gelöscht, so wird auch der
Eintrag in fama_pkw entfernt. Noch deutlicher zeigt sich dieser Vorgang und seine Sinnhaltigkeit dann, wenn ein Benutzer aus dem Gesamtsystem KLinform gelöscht wird. Zunächst
wird der Benutzer aus fama_perso gelöscht. Die Tabelle fama_benutzer referenziert den dortigen Primärschlüssel, also wird auch hier der Eintrag gelöscht. Da die ID von fama_benutzer
von dem Attribut inserator in fama_fahrzeug referenziert wird, erfolgt auch hier ein Löschvorgang, der dann fortgesetzt wird in fama_pkw. Logisch bedeutet dies, dass ein Benutzer des
Fahrzeugmarktes nicht existiert, wenn der Benutzer nicht auch bei KLinform angemeldet ist.
Ein Fahrzeug, beziehungsweise das Inserat, ist existenziell abhängig von dem Inserator.
Systemstruktur
Die objektorientierte Systemstruktur ist ebenfalls an das ER- Diagramm angelehnt. Die Klassen, welche Entitäten beschreiben die auch als Tabelle in der Datenbank enthalten sind, verfügen über die gleichen Attributsbezeichnungen und Typspezifikationen. Auf diese Weise
können die Werte der Datenbank mühelos von den jeweiligen Objekten der Klassen aufgenommen und verarbeitet, beziehungsweise weitergegeben werden. Eingebunden werde diese
Klassen durch das Werkzeug JavaBeans. Gleichzeitig kapselt eine Bean die Struktur und den
aktuellen Zustand eines konkreten Eingabeformulars. Zu einem Eingabefeld, Auswahlliste,
Checkbox, usw. des Formulars existiert ein entsprechendes gleichnamiges Attribut, um die
Systementwurf auf Basis des MVC-Design Pattern
Seite 31
Benutzereingaben temporär speichern zu können. Standardmäßig verfügt jede Bean über eine
Reihe von Methoden, um diese Attribute setzen und lesen zu können (set- und get-Methoden).
Abbildung 18 zeigt das vollständige Klassendiagramm. Die einzelnen Klassen werden im
Anschluss daran beschrieben. In diesem Zusammenhang sei auch auf die ausführliche Javadoc und die Kommentierung des Codes verwiesen.
Fahrzeug
Benutzer
-id : int
-marke : String
-modell : String
-erstzulassungjahr : int
-erstzulassungmonat : int
-erstzulassungvon : int
-erstzulassungbis : int
-laufleistung : int
-laufleistungvon : int
-laufleistungbis : int
-preis : int
-preisvon : int
-preisbis : int
-freitext : String
-foto : String
-last_change : Date
-ausstattung : Boolean[]
-ausstattungswerte : String[][]
-order : String
-reihenfolge : String
-markenwerte : String[][]
-marken
-db
+Fahrzeug()
+Fahrzeug(in db)
+setFahrzeug() : void
+setFahrzeug() : void
+reset() : void
+MarkenToMarkenwerte() : void
+MarkenwerteToMarken() : void
+validate() : Boolean
-id : String
-anrede : String
-vorname : String
-nachname : String
-strasse : String
-plz : String
-ort : String
-land : String
-telefon : String
-telefax : String
-email : String
-url : String
-hatsuchanfrage : Boolean
-hatinserat : Boolean
+Benutzer()
+setBenutzer() : void
+setBenutzer() : void
+reset() : void
PKW
-typ : String
-treibstoff : String
-karosserie : String
-getriebe : String
-farbe : String
-leistung : int
-leistungvon : int
-leistungbis : int
-verbrauch : float
-verbrauchvon : int
-verbrauchbis : int
+PKW()
+PKW(in db)
+reset() : void
+setPKW() : void
+setPKW() : void
+validate() : Boolean
-hat
*
-Inserat von
1
AbstractDatabase
DBConnection
-typ : String
+DBConnection()
+AnzahlDerEintraege() : int
Eintrag
+BenutzerExist() : Boolean
-Benutzer : Benutzer
+Bild_Bearbeiten() : void
-PKW : PKW
+DatumCheck() : Benutzer[]
-typ : String
+ExpertensuchePKW() : Eintrag[]
+getEintrag() : Eintrag
+Eintrag()
+GetIdFromTable() : int
+getPrintRepresentation()
+HatInserat() : Boolean
+getId() : int
+HatSuchanfrage() : Boolean
+getLongRepresentation()
+holeAusstattung() : String[]
+getRepresentationTitle() : String
+holeAufbauart() : String[][]
+getShortRepresentationColumns() : String[]
+holeMarke() : String[][]
+compareTo() : int
+holeTyp() : String[][]
+getEintrag() : Eintrag
+InseratLoeschen() : void
+InsertPKW() : int
+MakeDetailString() : String
+MakeSqlString() : String
+MakeSuchprofilString() : String
+ReturnInserat() : PKW
+ReturnInseratTyp() : String
+ReturnSuchanfrage() : PKW
+SuchanfrageLoeschen() : void
+SuchanfragespeicherPKW() : void
+SucheInserat() : Eintrag[]
+SuchePKW() : Eintrag[]
+SuchprofilDurchsuchen() : Benutzer[]
+UpdateBenutzer() : void
+UpdatePKW() : void
AbstractFormHandler
Thread
Formular_Detail
-id : int
-von : String
+validate() : Boolean
FileUploadBean
-savePath : String
-filepath : String
-filename : String
-contentType : String
-filenamefromoutside : String
-fields
+FileUploadBean()
+delete() : void
+doUpload() : void
Interne_Abarbeitung
-db
-email
-pkw : PKW
-benutzer : Benutzer[]
-aktion : String
-to : String
-sbj : String
-msg : String
+Interne_Abarbeitung()
+Interne_Abarbeitung(in dbc)
+Interne_Abarbeitung(in dbc, in arg : String)
+Interne_Abarbeitung(in dbc, in pkwarg : PKW, in akt : String)
+reset() : void
+InseratAufSuchprofilCheck() : void
+InseratAufDatumCheck() : void
+run() : void
Zuzüglich enthält jede Klasse für alle Attribute Get- und Set-Methoden.
Abbildung 18 Klassendiagramm
Systementwurf auf Basis des MVC-Design Pattern
Seite 32
Klasse Fahrzeug
Die vorrangige Aufgabe der Klasse Fahrzeug ist die Speicherung der Attribute, die in allen
Fahrzeugtypen anzufinden sind. Sie ist damit die Oberklasse der Klassen PKW und Krafträder. Zur Speicherung der Daten und zum späteren Abruf stehen für jedes Attribut entsprechende set- und get-Methoden zur Verfügung. Ebenfalls verfügt die Klasse Fahrzeug über die
Variablen, die für die Speicherung von Suchprofilen und die Suchanfrage benötigt werden.
Eine Hauptaufgabe dieser Klasse ist die Speicherung der Fahrzeugdaten aus den JSP-Seiten
heraus und die Bereitstellung dieser für die weitere Verarbeitung in der Klasse DBConnection
und umgekehrt. Die hier gespeicherten Daten werden unverändert in die Datenbank geschrieben, beziehungsweise die Daten aus der Datenbank werden in dem Objekt gespeichert. Um
die Anzahl der verschiedenen Klassen gering zu halten, werden auf diesem Weg auch Attribute übergeben, die nicht direkt im Zusammenhang mit dem eigentlichen Fahrzeug stehen. Die
Variablen order und reihenfolge sind beispielsweise für die Reihenfolge der Ausgabe der
Suchergebnisse verantwortlich.
Neben den set- und get-Methoden verfügt die Klasse Fahrzeug über ein Reihe von weiteren
Methoden:
·
reset(): Der Aufruf einer neuen Seite in JSP macht es teilweise erforderlich, die Werte
in den Beans auf einen Ausgangswert zurückzusetzen, um die Logik und die Semantik
des Programmablaufes zu bewahren. Das Attribut "session" in der Bean- Deklaration
verhindert aber, dass ein neues Bean angelegt werden kann. Aus diesem Grund ist es
notwendig, das bestehende Bean zurückzusetzen. Diese Aufgabe übernimmt die Methode reset().
·
setFahrzeug(): Der Versuch zwei Objekte gleich zu setzen, scheitert an der internen
Speicherverarbeitung von Java. Die Folge davon sind Datenverlust und schwer kalkulierbare Verhaltensweisen. Ein korrektes Ergebnis kann nur durch attributsweißes Zuweisen der jeweiligen Werte erhalten werden. Diese Aufgabe übernimmt die Methode
setFahrzeug(), die als eine Instanz von Typ Fahrzeug als Übergabewert erwartet. Die
Attribute der übergebenen Instanz werden ausgelesen und der eigenen Instanz zugewiesen.
Um die Struktur der Klasse DBConnection zu vereinfachen, existiert eine weiter Methode setFahrzeug(), diese erwartet aber einen Übergabewert vom Typ ResultSet. Dadurch ist die Zuweisung der Inhalte des ResultSet der Datenbank an das Objekt Fahrzeug gekapselt und dadurch die Kommunikation zwischen Datenbank und JSP-Seiten
erleichtert.
Systementwurf auf Basis des MVC-Design Pattern
·
Seite 33
validate(): Wie bereits schon erwähnt, werden die Daten direkt aus dem Objekt Fahrzeug an die Datenbank übertragen. Die Methode validate() übernimmt die Aufgabe,
die eingetragenen Werte auf syntaktische und semantische Korrektheit zu überprüfen.
Treten Fehler auf, so werden diese an die entsprechende JSP- Seite übertragen. Um
diese Funktionalität zu gewährleisten, erbt die Klasse Fahrzeug von AbstractFormHandler.
Bereits bei der Beschreibung der Entitäten des ER-Diagramms wurde erwähnt, dass sowohl
die verschiedenen Marken als auch Sonderausstattungen über die Datenbank verwaltet werden. Die Aufgabe der Verarbeitung dieser Daten kommt ebenfalls der Klasse Fahrzeug zu.
Dazu verfügt die Klasse über die Variablen ausstattung, austattungswerte, marke und markenwerte. Die Bedeutung dieser Variablen ist jedoch unterschiedlich.
Das Attribut ausstattung ist ein eindimensionales Array von Typ boolean. Hierin werden die
Werte der jeweiligen Attribute gespeichert. Die zugehörigen Namen, Kürzel und die ID beinhaltet das zweidimensionale Array ausstattungswerte vom Typ String. Die erste Dimension
steht dabei für die Spalten der Tabelle fama_ausstattung, die zweite Dimension für die Zeilen.
Eine vergleichbare Funktion, wie der Variable ausstattungswerte, kommt der Variable markenwerte zu. Auch hier repräsentiert das zweidimensionale Array vom Typ String die Spalten
und Zeilen der Tabelle fama_marken. In den Tabellen fama_pkw und fama_suchanfrage werden die Markennamen durch eindeutige IDs gespeichert. Um eine Zuweisung des tatsächlichen Namens zu der gefundenen ID zu erleichtern, werden alle Informationen separat in der
Hashtable marke gespeichert. Eine solche Zuweisung ist immer dann erforderlich, wenn die
Fahrzeugdaten an die jeweiligen Ausgabegeräte ausgegeben werden sollen.
Erwähnt werden sollen auch noch die beiden verschiedenen Konstruktoren und ihre Verwendung. Wird ein neues Objekt der Klasse außerhalb der Klasse DBConnection angelegt, so
wird der Standard- Konstruktor verwendet. Legt diese Klasse ein neues Objekt an, so wird
dem Konstruktor das eigene Objekt mit übergeben. Der einzige Unterschied der beiden Konstruktoren besteht darin, dass im Standardfall ein neues Objekt von der Klasse DBConnection
angelegt wird, im Falle des anderen Konstruktors nicht. Dadurch werden Endlosschleifen
vermieden.
Klasse PKW
Die Klasse PKW stellt das Objekt Personenkraftwagen dar. Dazu erbt sie von der Klasse
Fahrzeug alle diejenigen Methoden, die allen Fahrzeugen gemein sind. In der Klasse PKW
werden konkret die Attribute Fahrzeugtyp, Treibstoff, Karosserieform, Getriebeart, Farbe,
Systementwurf auf Basis des MVC-Design Pattern
Seite 34
Verbrauch und Leistung gespeichert. Um auch Suchprofile speichern zu können, werden weiterhin die Attribute für das Leistungsintervall und das Verbrauchsintervall gespeichert. Die
PKW- spezifischen Ausstattungen werden ebenfalls zentral von der Klasse Fahrzeug behandelt, da diese über die Datenbank eingelesen und verarbeitet werden.
Die Klasse PKW verfügt über die gleichen zusätzlichen Methoden wie die Klasse Fahrzeug.
Die Implementierung des Gesamtsystems ist so gestaltet, dass immer nur die Methoden in den
jeweiligen Unterklassen aufgerufen werden. Diese rufen dann wiederum die Methode in der
Oberklasse auf. Auf diese Weise ist die Struktur sehr überschaubar und die Attribute sind optimal gekapselt.
Klasse Benutzer
In dieser Klasse werden die Daten des Benutzers des Fahrzeugmarktes verwaltet. Dazu verfügt die Klasse über die Attribute, die in den Tabellen perso_benutzer und fama_benutzer
vorkommen. Auch hier liegt die Hauptaufgabe in der Speicherung der Daten und dem Austausch zwischen den JSP-Seiten und der Datenbank. Der Umfang der Methoden ist erneut
weitestgehend identisch mit der Klasse Fahrzeug, lediglich die Methode validate() entfällt, da
keine kritischen Benutzerdaten in die Datenbank geschrieben werden. Alle Informationen
über die Adresse, die Email und die Telefonnummer sind in der Tabelle perso_benutzer gespeichert, auf welche dieser Baustein nur lesend zugreift. Die Klasse benutzer verfügt nur
über den Standard- Konstruktor, da Endlosschleifen wie im vorherigen Fall nicht auftreten
können.
Klasse DBConnection
Die Funktion der Klasse DBConnection liegt in der Kommunikation mit der Datenbank. Alle
Methode, die während der Laufzeit auf die Datenbank zugreifen, sind hierin enthalten. Dabei
bieten die Methoden teilweise viel mehr Funktionalität als das reine Schreiben in und Lesen
aus der Datenbank. So werden häufig auch die Daten ausgewertet und nur erwünschte Einträge werden an das aufrufende Bean zurückgeliefert. Die Datenbankanbindung erfolgt über den
von der PoolMan-API bereitgestellten virtuellen JDBC-Treiber. Damit ein Objekt eine Verbindung zur Datenbank herstellen kann, benötigt es ein Objekt vom Typ Connection. Dieses
wird über die Methode getConnection() der Klasse AbstractDatabase bereitgestellt. Wird diese Verbindung nicht mehr verwendet, so muss sie mit close() wieder geschlossen werden. Da
die Klasse AbstractDatabase abstrakt ist, muss DBconnection von ihr erben, um auf die Me-
Systementwurf auf Basis des MVC-Design Pattern
Seite 35
thoden zugreifen zu können. Zum Absetzen von SQL- Befehlen wird das Objekt Statement
aus dem Package java.sql verwendet.
Als innere Klasse enthält DBConnection die Klasse Eintrag. Der zugrundeliegende Gedanke
dieser Lösung ist die einfache Darstellung der Suchergebnisse sowohl in Tabellenform, als
auch in der Detailansicht. Dazu werden die gefundenen Einträge aus der der Datenbank in ein
Set von Objekten der Klasse Eintrag geschrieben. Das Interface KLinformSearchResult stellt
dann die Methoden zur Erzeugung von Tabellen in HTML aus diesen Daten zur Verfügung.
Die Oberklasse Comparable übernimmt die Steuerung der Reihenfolge, in der die Ergebnisse
ausgegeben werden. Diese Funktionalität wird allerdings nur im Falle der Suche auf Basis des
Vektorraummodells verwendet. In den anderen Fällen wird die Reihenfolge schon in den
SQL- Statements festgelegt.
Klasse Interne_Abarbeitung
Die Klasse Interne_Abarbeitung verwaltet die Vorgänge, die in einem separaten Thread ablaufen. Die Methode InseratAufSuchprofilCheck() durchsucht die gespeicherten Suchprofile
auf Übereinstimmung mit neuen Inseraten. Im Falle einer gefundenen Übereinstimmung, wird
der Benutzer per Email darüber informiert. Mit der Methode InseratAufDatumCheck() steht
dem Administrator ein Werkzeug zur Verfügung, um die Aktualität der Inserate zu überprüfen. Übersteigt ein Inserat ein bestimmtes Alter, so wird zunächst der Inserator darüber benachrichtigt. Erfolg innerhalb von 14 Tagen keine Aktualisierung, wird das Inserat gelöscht.
Die genauen Funktionen dieser Klasse werden in Kapitel 5 genauer beschrieben.
Klasse FileUploadBean
Den Upload eines Bildes vom Client auf den Server übernimmt die Klasse FileUploadBean.
Die zentrale Methode ist doUpload(), durch welche der eigentliche Vorgang des Hochladens
abläuft. Dazu sind eine Reihe von Hilfsvariablen notwendig. Einerseits muss der Pfad des zu
speichernden Bildes auf dem Client gespeichert werden (filepath). Der Server muss daneben
den Pfad zu dem Verzeichnis kennen, in das Bild gespeichert werden soll (savePath). Der
Name der Datei, wie sie auf dem Server abgespeichert wird, enthält die Variable filenamefromoutside. Diese Variable wird vor dem eigentlichen Speichervorgang gesetzt und hat folgende Struktur: inserat + Nummer des Inserates. Für den eigentlichen Speichervorgang wird die
Datei zeilenweise ausgelesen und dann wieder zeilenweise in die Zieldatei geschrieben.
Zugrundeliegendes Element der Datenübertragung ist das HTTP Request.
Systementwurf auf Basis des MVC-Design Pattern
Seite 36
4.2 Repräsentationsstruktur (View- Komponente)
Die View – Komponente realisiert die Schnittstelle zwischen dem Anwender und der Applikation. Zur optimalen Umsetzung dieser Anforderung müssen eine Reihe von Bedingungen
erfüllt werden:
·
Ansprechendes Design: Neben dem repräsentierten Inhalt und einer logischen Benutzerführung ist ein gelungenes Design Grundvoraussetzung für den Erfolg einer Webseite. Entscheidend dafür ist die Verbindung einer ansprechenden graphischen Oberfläche mit einer möglichste intuitiven Bedienbarkeit. Die Gestaltungsfreiheit beschränkt sich in den einzelnen Bausteinen jedoch auf die Anordnung der jeweiligen
Kommunikationsfelder. Durch die vorgegebenen Stylesheets und dem damit verfolgten Ziel einer einheitlichen Oberfläche, werden Attribute wie Farbe, Form und Hintergrund der einzelnen Felder zentral festgelegt. Die subjektive Betrachtung, sowie die
Erfahrungen von Testpersonen führt jedoch zu dem Ergebnis, dass an einigen Stellen
noch Defizite liegen. Beispielsweise ist das Layout der Seiten häufig zu sachlich
gehalten und dadurch nur wenig ansprechend. Das Brechen mit Standards, beispielsweise durch die Definition eigener Buttons, führt zu häufigen Missverständnissen in
der Benutzerführung.
Eine übersichtliche Benutzerführung und ein ansprechendes Design ist gerade für den
Erfolg von E-Commerce Anwendungen unbedingt erforderlich. Diese Details sind
ausschlaggebend für die Entscheidungen der Benutzer. Abbildung 19 zeigt die Detailansicht eines Fahrzeuges. Diese Seite überzeugt durch die Darstellung aller Fahrzeugdaten auf übersichtliche Art. Das optionale Bild bietet einen zusätzlichen Handlungsanreiz.
Systementwurf auf Basis des MVC-Design Pattern
Seite 37
Abbildung 19 Detailansicht des Fahrzeugmarktes
·
Anpassung an den Inhalt der Model- Komponente: Die View- Komponente muss
auf Änderungen innerhalb der Model- Komponente regieren und den Inhalt adäquat
darstellen können. Vor allem muss der jeweilige Zustand der Beans ausgelesen und
projiziert werden. Es ist also zu unterscheiden zwischen einer dynamisch generierten
Oberfläche und der dynamisch angepassten Darstellung des Inhaltes. Die Darstellung
der Inhalte geschieht sowohl in Tabellenform, als auch in Form einer Vorbelegung
von Eingabefeldern. Dazu werden die in den Sitzungsobjekten enthaltenen Attribute
mittels des Befehls <%= bean.getX %> ausgelesen. Bean steht dabei für ein konkretes Sitzungsobjekt, X für ein konkretes Attribut.
Bereits mehrfach wurde die Kapselung der möglichen Sonderausstattungen in der Datenbank thematisiert. Der View muss auf die Änderungen dieser Daten reagieren. Die
strukturelle Anordnung wird dabei bereits durch die ID der Einträge in der Tabelle definiert. Für Personenkraftwagen werden die Sonderausstattungen in die Kategorien
Komfort, Sicherheit und Umwelt, Weitere und Specials eingeteilt. Der Kategorie
Komfort zugeordnete Werte besitzen eine ID größer 100 und kleiner 200, Sicherheit
und Umwelt wird durch die Spanne zwischen 200 und 300 beschrieben, Weiter mit
Werten zwischen 300 und 400 und Specials durch die Spannbreite 400 bis 500. Die
Systementwurf auf Basis des MVC-Design Pattern
Seite 38
folgende Abbildung zeigt das erzielte Ergebnis am Beispiel der Suchmaske für einen
PKW.
Abbildung 20 Formular der Suchmaske
·
Übergabe der eingegebenen Werte an die Model- Komponente: Eingegebene Werte des Benutzers müssen durch den View erfasst werden und an den Controller, beziehungsweise das Model weitergeben werden. Dazu deckt jede View, repräsentiert
durch eine JSP-Datei, einen eindeutigen Bereich der Eingabemasken ab. Der Aufbau
der einzelnen Dateien ist dabei weitestgehend identisch gehalten. Das HTML-FormTag fasst die Eingabefelder zu einer Einheit zusammen. Wechselt der Benutzer, beispielsweise durch Betätigung eines Buttons, die Ansicht, so werden alle eingegebenen
Werte an die Controller- Komponente übergeben. Die dort erwarteten Werte werden
durch den Befehl
<jsp:setProperty name=bean property =“*“ /> an das Sitzungsobjekt übergeben. Die
entsprechenden set- Methoden müssen dafür in dem Bean enthalten sein. Problematisch gestaltet sich das Einlesen der Werte nach dem beschriebenen Muster, wenn es
sich um Checkboxen handelt. Diese können entweder gesetzt (true) oder nicht gesetzt
sein (false). Die Schwierigkeit besteht darin, dass das Attribut zwar gesetzt wird, wenn
der Wert true anliegt, wird der Wert jedoch wieder auf false gesetzt, so wird die Ände-
Systementwurf auf Basis des MVC-Design Pattern
Seite 39
rung nicht direkt in das Bean übernommen. Zur Lösung müssen diese Attribute separat
gesetzt werden. Dazu wird folgender Befehl verwendet, welcher abhängig von dem
vorliegendem Zustand das Bean entsprechend setzt.
<% if (request.getParameter(X) != null) bean.setX(true); else bean.setX(false); %>
4.3 Struktur der Ablaufsteuerung (Controller- Komponente)
Unter dem Aspekt der strukturierten und intuitiven Benutzerführung kommt der Ablaufsteuerung eine zentrale Rolle im Gesamtsystems zu. Annährend die gesamte Business-Logik ist in
den index – Seiten der jeweiligen Unterverzeichnisse enthalten. Hierin wird sowohl festgelegt
in welcher Reihenfolge die Views aufgerufen werden, aber auch wann, welche Daten an die
Model- Komponente übertragen und dort gespeichert werden und umgekehrt. Die auszuführende Aktion richtet sich dabei nach den Angaben des Benutzers. Dieser steuert über die zur
Verfügung stehenden Buttons den Ablauf. Dabei ist jeder Button durch einen eindeutigen
Namen identifiziert. Durch Abfragen der Form
<% if request.getParameter(„name_des_button.x“) !=null) %> wird die zugehörige Aktion
ausgeführt. Dabei wird in der Variable nextPage die aufzurufende View festgelegt.
Die beiden folgenden Abbildung stellen die Ablaufsteuerungen in den drei Basisfunktionen
Suchen, Inserieren und Inserat bearbeiten überblicksartig graphisch dar. Alle Basisfunktionen
können von der Startseite des Fahrzeugmarktes aufgerufen werden.
Eine zentrale Aufgabe kommt der Seite der Detailansicht zu. Abhängig von der aufrufenden
Seite stehen folgende Handlungsoptionen zur Auswahl.
Aufruf durch Inserat Suchen
·
Zurück – Benutzer gelangt zurück zu den Suchergebnissen
·
Neue Suche – Zurücksetzen der Werte und erneuter Aufruf der Suchmaske
·
Abbrechen – Rückkehr zur Startseite
·
Inserat sperren - Für den Fall, dass der Benutzer ein Inserat mit unzulässigen Inhalt
vorfindet, kann er dieses dem Administrator mitteilen.
·
Aufruf durch Inserieren und Inserat Bearbeiten
Die Detailansichten für Inserieren und Inserat bearbeiten sind identisch. Nach erfolgreichem
Inserat muss der Benutzer in der Lage sein, das aufgegebene Inserat sofort weiter zu bearbeiten. Schutzverletzungen sind nicht zu befürchten. Folgende Optionen stehen hier zur Verfügung:
Systementwurf auf Basis des MVC-Design Pattern
Seite 40
·
Inserat bearbeiten – Daten des Inserates werden in die Eingabemasken geladen
·
Löschen – Löscht das Inserat
·
Bild bearbeiten - Hochladen, löschen und ändern eines Bildes
·
Statistik ansehen – Statistische Auswertung der Aufrufe des Inserates
·
Zurück – Zurück zur Übersicht über die Inserate
Aufruf durch Administrator
·
Selbe Auswahloptionen wie beim Aufruf durch Inserat bearbeiten, aber keine Ansicht
der Statistik möglich
Neue Suche -- Wert werden zurückgesetzt
zurück
Suchmaske ausfüllen
Neue Suche -- Wert werden zurückgesetzt
Suchergebnisse der
booleschen Suche
Suche
Aktion wählen
Suchergebnisse des
Vektorraummodells
Freie Suche
Aktion wählen
abbrechen
Suchprofil anlegen
nein
Suchprofil öffnen
abbrechen
Aktion wählen
eingeloggt
Details
nein
Detailansicht
Benutzer-Login
Aktion wählen
abbrechen
Benutzer hat
Suchprofil
eingeloggt
Benutzer-Login
ja
ja
Benutzer hat
Suchprofil
Speichern
bestätigt
nein
Inserat sperren
ja
ja
Grund angeben
nein
Suchprofil geöffnet
Email an
Administrator
Aktion wählen
Suchprofil löschen
nein
Löschen
bestätigt
ja
Suchprofil löschen
Abbildung 21 Ablaufsteuerung der Basisfunktion Suchen
Suchprofil
gespeichert
ja
Systementwurf auf Basis des MVC-Design Pattern
Seite 41
Aktion
wählen
Neues Inserat
Inserat bearbeiten
eingeloggt
eingeloggt
nein
nein
ja
Benutzer-Login
Benutzer-Login
Daten eingeben
ja
Inserate auflisten
Nicht ok
Daten
validieren
ok
Daten
ansehen
Suchprofile auf
Übereinstimmung
durchsuchen
Email an
Administrator
Daten speichern
ja
Detailansicht
nein
Daten laden
zurück
Bild bearbeiten
Bild löschen
Bild gelöscht
Aktion
wählen
Bild hochladen
Bild gespeichert
Aktion
wählen
Aktion
wählen
Inserat bearbeiten
Löschen
Löschen
bestätigt
Statistik ansehen
ja
Statistik
Inserat gelöscht
nein
Detailansicht
Abbildung 22 Ablaufsteuerung der Basisfunktionen Inserieren und Inserat bearbeiten
4.4 Integration des Marktes für Krafträder
An dieser Stelle soll kurz erläutert werden, wie der Markt für Krafträder in das System eingebunden ist. Dazu sind lediglich bezüglich der Model- Komponente einige Anmerkungen notwendig. Controller und View werden identisch übernommen, lediglich die Schnittstellen zu
der Model- Komponente werden angepasst. Diese Umsetzung erfolgt im Unterverzeichnis
„Kraftrad“
Der Datenbank werden die Tabellen fama_kraftrad und fama_suchanfrage_kraftrad hinzugefügt. Die Tabelle fama_benutzer erhält das zusätzlichen Attribut hatsuchanfragekraftrad. Um
den Fahrzeugtypen verwalten zu können, wird die Klasse Kraftrad hinzugefügt. Das Haupt-
Systementwurf auf Basis des MVC-Design Pattern
Seite 42
problem besteht in der Anpassung der Klasse DBConnection. Doch an dieser Stelle kommt
der Vorteil der JavaBeans zum Tragen. Um der Klasse mitzuteilen, welcher Typ von Fahrzeug bearbeitet werden soll, wird der aufrufende Teil des Fahrzeugmarktes in der Variable typ
gespeichert. Auf diese Art existieren zwei JavaBeans, welche alle vom Typ DBConnection
sind. Durch den Befehl
<jsp: setproperties name=“db“ value=“pkw“/> wird der Bean “db” der Typ „pkw“ zugeordnet. Die Methoden in DBConnection sind in zwei Mengen unterteilbar. Es existieren Methoden, die von allen Fahrzeugtypen mit den selben Attributen aufgerufen werden. Die Unterscheidung wird innerhalb der Methode anhand der Variable typ vorgenommen. Es existieren
aber auch Methoden, die als Argument einen speziellen Fahrzeugtyp erwarten. So erwartet
beispielsweise die Methode SuchePKW() als Übergabewert ein Objekt vom Typ PKW. Die
Suche nach einem Kraftrad wird dann durch die Methode SucheKraftrad() übernommen, es
werden also separate Methoden angelegt. Einige Methoden sind völlig unabhängig von dem
zu bearbeitenden Fahrzeugtyp. Die Methode InseratLoeschen() operiert zum Beispiel nur auf
der Tabelle fama_fahrzeug, und nutzt damit den Vorteil des kaskadenartigen Löschen in der
Datenbank.
Das Zusammenspiel zwischen Controller und View wird an zwei Stellen besonders erschwert.
In die Lage des Benutzers versetzt, erscheint es als sinnvoll, alle Inserate aus einem gemeinsamen Menü heraus zu verwalten, unabhängig von dem zugrundeliegenden Fahrzeugtyp. Dieses Menü wird aus dem Hauptmenü heraus aufgerufen. Die Ergebnisse werden in zwei Tabellen dargestellt, eine Tabelle listet die Inserate vom Typ PKW, die zweite die Inserate vom
Typ Kraftrad. Folgende Abbildung gibt diesen Sachverhalt anschaulich wieder.
Abbildung 23 Oberfläche zur Darstellung eigener Inserate
Systementwurf auf Basis des MVC-Design Pattern
Seite 43
Eine Unterscheidung der zu bearbeitenden Fahrzeugtypen erfolgt erst in der Detailansicht.
Und genau hierin liegt die zweite Schwierigkeit. Der Inhalt der Detailansicht wird in der Methode getLongRepresentation() der Klasse Eintrag festgelegt und differiert natürlich zwischen
den Fahrzeugtypen. Zur Unterscheidung wird diese Methode aus zwei verschiedenen Formularen heraus aufgerufen, es existieren also verschieden View – Komponenten. Der Aufruf
dieser View- Komponenten wird auch hier von einer Controller- Komponente gesteuert. Es
existieren aber eine Reihe von Fällen, in denen es nicht möglich ist, schon bei Aufruf der zugehörigen index- Datei zwischen den Fahrzeugtypen zu unterscheiden. So erfolgt beispielsweise die Überprüfung der Inserate auf Aktualität unabhängig vom Typ. Die Email mit der
der Benutzer darüber informiert wird, erhält demnach immer den gleichen Verweis auf die
Detailansicht. Aus diesem Grund existiert nur eine index- Datei, welche die Steuerung aller
Detailansichten verwaltet. Die Methode ReturnInseratTyp() in DBConnection() liefert den
Typ des abgefragten Inserates zurück. Abhängig davon wird der View aufgerufen.
Die sonstigen View- und Controller- Komponenten für die Basisfunktionen sind annährend
identisch übernommen und im Unterverzeichnis Kraftrad gespeichert. Lediglich die Schnittstellen zur Model- Komponente ist angepasst. Die Funktionen zur Verwaltung der Bilder und
die Werkzeuge für den Administrator sind unabhängig vom Fahrzeugtyp.
Ausgewählte Implementierungslösungen
Seite 44
5 Ausgewählte Implementierungslösungen
Eine Vielzahl der verwendeten Lösungen des Fahrzeugmarktes entsprechen dem Standard
und kommen, angepasst, auch in allen anderen Bausteinen zum Einsatz. Viele Vorgänge, vor
allem die Umsetzung des MVC- Design Pattern, sind in mehreren Bausteinen identisch. Aus
diesem Grund soll das folgende Kapitel einen Überblick über Lösungen geben, die in dieser
Form nicht in allen Komponenten zum Einsatz kommen. Es handelt sich dabei vor allem um
Anforderungen, die im Abschnitt 2.3.1 unter den Punkten „Innovative Lösungen“ und „Personalisierung der Funktionen“ aufgeführt wurden. Dabei soll sowohl eine Motivation dieser
Lösungen gegeben werden, als auch die Probleme der Implementierung diskutiert werden.
Das Kapitel unterteilt sich dabei in zwei Abschnitte. Zunächst soll die Seite des Benutzers des
Fahrzeugmarktes betrachtet werden, der zweite Teil beschreibt dagegen die Eingriffsmöglichkeiten des Administrators und kann damit als Handbuch für eine spätere Wartung des Systems angesehen werden.
5.1 Interaktionsmöglichkeiten des Benutzers mit dem System
Administrator über ein Inserat mit unzulässigen Inhalt informieren
Wird Benutzern des Internet die Möglichkeit gegeben, Bilder auf eine Webseite zu laden, so
besteht immer die Gefahr eines Missbrauchs. Selbiges trifft auf Eingaben in freie Textfelder
zu. Vor allem pornographische und gewaltverherrlichende Inhalte gilt es zu unterdrücken. Ein
erster Punkt setzt dabei beim Administrator an. Seine Aufgabe ist es, die Inhalte neuer Inserate zu überprüfen. Dazu wird er automatisch per Email über neue Einträge informiert. Zeitmangel und eine große Menge täglicher Inserate können es jedoch unmöglich machen, alle
Inserate vollständig zu überprüfen. Aus diesem Grund besteht für die Benutzer selber die
Möglichkeit, auf Inserate mit genannten Inhalten aufmerksam zu machen. Die entsprechende
Auswahloption steht in der Detailansicht der Suchergebnisse zur Verfügung. In den übrigen
Detailansichten ist eine entsprechende Funktionalität nicht erforderlich. Der Benutzer muss
lediglich eine kurze Begründung abgeben, warum dieses Inserat gesperrt werden sollte. Dies
verhindert zum einen den Missbrauch der Funktion, zum anderen erleichtert es die Entscheidungsfindung des Administrator. Hat der Benutzer die Begründung eingegeben, so braucht er
diese nur abzusenden und der Administrator wird per Email benachrichtigt. Dieser kann dann
entscheiden, ob das Inserat gesperrt werden soll, oder nicht.
Ausgewählte Implementierungslösungen
Seite 45
Wird ein Inserat gesperrt, so wird es nicht mehr in den Suchergebnissen angezeigt. Auch in
anderen Funktionen, wie etwa dem Counter der Startseite, findet es keine Berücksichtigung
mehr. Eine Sperrung kann nur aufgehoben werden, wenn der Inserator sein Inserat erneut abspeichert, beziehungsweise das Bild neu speichert. Beide Möglichkeiten sind unabhängig
voneinander und ermöglichen dem Benutzer somit eine leichte Korrektur.
Wird ein Benutzer mehrfach auffällig, so sollte sein Profil auf allen Seiten von KLinform gesperrt werden. Als Vorstufe wäre eine dauerhafte Sperrung seines Profils in den Seiten des
Fahrzeugmarktes denkbar.
Statistische Auswertung eines Inserates
Vor allem für professionelle Händler, aber auch für andere interessierte Verkäufer ist es von
großem Interesse eine Rückmeldung über den Erfolg eines Inserates zu bekommen. Selbstverständlich stellt sich der eigentliche Erfolg erst mit dem abgeschlossenem Verkauf des Fahrzeuges ein, aber auch die Zugriffe auf das Inserat lassen diesbezügliche Rückschlüsse zu. Die
entscheidende Frage ist, an welcher Stelle die Zugriffe erfasst werden sollen. So ist es denkbar bereits jede Suchanfrage zu zählen, deren Ergebnismenge das entsprechende Inserat enthält. Allerdings ist damit noch nicht sichergestellt, dass das Inserat auch von dem Benutzer
wahrgenommen wird. Aus diesem Grund verfolgt die Implementierung eine andere Lösung.
Ein Zugriff wird erst dann gezählt, wenn die Detailansicht des Inserates aufgerufen wird.
Damit ist sichergestellt, dass, zu mindestens kurzfristig, die Aufmerksamkeit des Suchenden
auf dieses Inserat konzentriert war. Die Problematik besteht nun darin, dass die Detailansicht
auch dann aufgerufen wird, wenn der Inserator sein eigenes Inserat anschaut beziehungsweise
die Daten bearbeiten will. Daher wurde hier eine Unterscheidung im Methodenaufruf gemacht. Wird die Detailansicht aus den Suchergebnissen sowohl der „Standardsuche“, als auch
der „Freien Suche“ heraus aufgerufen, so wird die Variable counter des betrachteten Inserates
in der Tabelle fama_fahrzeug um eins erhöht. Nicht gezählt werden die Zugriffe aus anderen
Basisfunktionen heraus.
Die Auswertung dieser Daten steht dem Benutzer dann in der Detailansicht seiner Inserate zur
Verfügung. Neben den absoluten Zugriffen auf das eigene Inserat ist auch von Interesse, wie
oft im Durchschnitt ein Inserat überhaupt aufgerufen wird. Aus diesem Grund wird durch das
SQL-Statement SELECT AVG(counter) FROM fama_fahrzeug auch der Durchschnitt über
alle Inserate ausgegeben. Der Benutzer kann dadurch selbst bewerten, ob sein Inserat überdurchschnittlich oft aufgerufen wird oder eher nur selten Interesse weckt. Wird ein Inserat
beispielsweise überdurchschnittlich oft aufgerufen, aber die Anzahl der Kontaktaufnahmen
Ausgewählte Implementierungslösungen
Seite 46
mit dem Verkäufer ist eher gering, dann kann eine Ursache hierfür in einem unzureichenden
Preis- Leistungs- Verhältnis liegen. Der Verkäufer sollte dann entsprechende Maßnahmen
ergreifen. Denkbar wäre auch noch die Ausgabe des besten und des schlechtesten Inserates, es
bleibt aber zu bedenken ob die Belastung der Datenbank in einem ausreichend gutem Verhältnis zu dem Informationsgewinn für den Benutzer steht.
Umsetzung der Suchfunktion durch nicht- probabilistische Information Retrieval Modelle
Die Suche, vor allem nach einem gebrauchten Fahrzeug, stellt einen sehr komplexen Vorgang
dar. Die Komplexität besteht dabei in einer unzureichend genauen Spezifikation der Vorstellungen über das gesuchte Fahrzeug. So ist beispielsweise ein bestimmtes Set von Eigenschaften durch die Wünsche des Käufers determiniert. Dem gegenüber steht aber häufig ein weiteres Set an gewünschten, aber nicht unbedingt erforderlichen Eigenschaften. Ein weiteres Set
an Attributen des Wunschfahrzeuges fliest überhaupt nicht in die Entscheidungsfindung ein.
Dieser Komplexität muss eine flexible, aber leicht zu benutzende Suchfunktion gerecht werden. Einerseits muss der Käufer in der Lage sein, alle Fahrzeuge entsprechend der Eingabe in
der Suchmaske zu finden. Andererseits muss aber auch die Möglichkeit bestehen, bei ungenauer Suchanfrage logische Ergebnisse zu liefern. Diese beiden Anforderungen wurden durch
zwei unterschiedliche Suchverfahren aus dem Bereich des Information Retrieval umgesetzt.
Der theoretische Ansatz der beiden Modelle soll im folgenden vorgestellt und die unterschiedliche Arbeitsweise verdeutlicht werden.
Information Retrieval
Als kennzeichnend für das Gebiet des Information Retrieval werden vage Anfragen und unsicheres Wissen angesehen [Fuhr 2000, S.16]. Vage Anfragen sind dadurch gekennzeichnet,
dass die Antwort a priori nicht eindeutig definiert ist. Die folgende Abbildung stellt ein einfaches Grundmodell des Information Retrieval vor.
Ausgewählte Implementierungslösungen
beruht auf
Seite 47
Information Retrieval
Semantische Modellierung eines
Weltausschnittes
Fakten eines Weltausschnittes
durch
anhand von
Zuweisen von Attributen zu
gegebenen Einheiten
gespeichert in
liefert
Kombination elementarer
Operationen auf Datenstrukturen
Datenbankstrukturen
auf
Abbildung 24 Grundmodell des Information Retrieval; Quelle: [Fuhr 2000]
Dabei repräsentiert die linke Seite den Vorgang der Eingabe, während der Retrievalprozess
auf der rechten Seite dargestellt ist. In einem nächsten Schritt wird dieses Modell verfeinert.
In der Datenbasis sind eine Menge von Dokumenten, in diesem Fall von gespeicherten Inseraten, vorhanden. Dem gegenüber steht eine Menge von Anfragen an des System. Die Retrievalfunktion vergleicht Frage- Dokumente- Paare und berechnet das Retrievalgewicht. Die
Definition der Retrievalfunktion hängt dabei von dem jeweils zugrundegelegten Retrievalmodell ab.
Bezogen auf den Fahrzeugmarkt ist der Vorgang der Eingabe syntaktisch durch die vorgegebene Suchmaske für den Benutzer relativ stark festgelegt. Diese Kenntnis des Modells erleichtert den eigentlichen Suchvorgang und kann zu genaueren Ergebnissen führen. Allerdings ist durch die einheitliche Suchmaske auch die Gefahr gegeben, persönliche Kriterien
und Anforderungen an das gesuchte Fahrzeug nicht angeben zu können. Das Problem der
vagen Anfrage wird daher auf das Problem der mangelnden Flexibilität der Suchmaske beschränkt.
Boolesches Retrieval
Boolesches Retrieval ist historisch als erstes Retrievalmodell entwickelt und einsetzt worden
[Fuhr 2000, S.86].
Im eigentlichen Sinne handelt es sich dabei um eine direkte Anfrage an die Datenbank. Die
Frage- Beschreibung ist hier ein boolescher Ausdruck, die in einer Zweiteilung der Dokumente in der Datenbasis in gefundene und nicht gefundene Dokumente resultiert. Im konkreten
Fall bedeutet dies, dass die eingegebenen Attribute durch „AND“ zu booleschen Ausdrücken
zusammengefasst werden. Die Ausgabe der gefundenen Fahrzeuge beinhaltet nur solche, die
alle gewünschten Attribute erfüllen. Die Umsetzung des Booleschen Retrieval erfolgt in der
Methode SuchePKW der Klasse DBConnection. Um dem Sachverhalt der vagen Suchanfrage
gerecht zu werden, ist die Suchmaske so gestaltet, dass der Benutzer nicht alle Attribute ge-
Ausgewählte Implementierungslösungen
Seite 48
nau spezifizieren muss. Dazu müssen Textfelder nicht unbedingt ausgefüllt werden, beziehungsweise besteht bei Auswahloptionen die Möglichkeit, durch Auswahl der „Alle..“ Option
die Suche in diesem Attribut nicht einzuschränken. Angaben die in den numerischen Bereich
fallen, beispielsweise Laufleistung oder Verbrauch, können in Spannbreiten durch „von“ und
„bis“ Werte gemacht werden. Des weiteren werden die Angaben in den Checkboxen folgendermaßen interpretiert:
·
eine gesetzte Checkbox erfordert das Vorhandensein dieses Attribut
·
eine ungesetzte Checkbox wird nicht in die Suchanfrage aufgenommen, sie bewirkt also keine Einschränkung des Suchergebnisses.
Dadurch können schon durch das Boolesche Retrieval gute Suchergebnisse erzeugt werden.
Allerdings beinhaltet dieses Modell eine Reihe von Nachteilen, die auch in dieser speziellen
Anwendung zum tragen kommen [Fuhr 2000, S.87]:
·
Es erfolgt keine Ordnung der Antwortmenge nach mehr oder weniger relevanten Inseraten.
·
Es gibt keine Möglichkeit zur Gewichtung von Fragetermen oder zur Berücksichtigung von gewichteter Indexierung. Dadurch hat beispielsweise die Übereinstimmung
der Marke in Frage und Antwort dasselbe Gewicht, wie die Übereinstimmung der Eigenschaft „Beifahrerairbag“.
·
Die Trennung in gefundene und nicht gefundene Dokumente ist oftmals zu streng.
Wird nach einem Fahrzeug in einer Preislage zwischen 8.000 und 10.000 Euro gesucht, so wird das Fahrzeug mit einem Preis von 10.001 Euro bereits nicht mehr ausgegeben.
Eine Reihe dieser Nachteile können durch die Anwendung des Vektorraummodells überwunden werden.
Das Vektorraummodell
Im Vektorraummodell werden Dokumente und Fragen in einem Vektorraum aufgefasst, der
durch die Terme der Datenbasis aufgespannt wird. „Beim Retrieval wird nach solchen Dokumenten gesucht, deren Vektoren ähnlich (im Sinne einer vorgegebenen Metrik) zum Fragevektor sind.“ [Fuhr 2000, S.90] Der zugrundeliegende Vektorraum wird als orthonormal angenommen. Um die Ähnlichkeit zweier Vektoren zu berechnen existieren eine Vielzahl von
Retrievalfunktionen, beispielsweise das Skalarprodukt, das Cosinus- Maß, das Pseudo- Cosinus- Maß oder das Dice- Maß. Die gewünschten Kriterien
·
Winkel- Monotonie,
·
Radial- Monotonie,
Ausgewählte Implementierungslösungen
Seite 49
·
Komponenten- Monotonie,
·
1-Komponenten- Monotonie und
·
Beschränktheit von Ähnlichkeitswerten
erfüllt dabei das Cosinus- Maß am besten. Es ist wie folgt definiert:
n
cos(d i , q ) =
åd
i, j
×qj
j =1
n
å di, j
j =1
2
n
åq
j =1
2
j
Dabei bezeichnet D die Menge der Dokumente in der Datenbasis und Q die Menge der Anfragen.
Die Umsetzung des Vektorraummodells erfolgt in der Methode ExpertensuchePKW, welche
ebenfalls Teil der Klasse DBConnection ist. Die verwendete Retrievalfunktion ist das Cosinus- Maß. Um dem Benutzer die Bedienung des Fahrzeugmarktes zu erleichtern, wird die
Suchanfrage über dieselbe Suchmaske aufgerufen, die bereits im obigen Modell des Booleschen Retrieval beschrieben wurde. Diese komplexe Suchanfrage muss zunächst auf die Anforderungen des Vektorraummodells angepasst werden. Dazu werden die jeweiligen Eingaben
unterschiedlich behandelt.
Die Werte der Checkboxen werden ähnlich wie im Booleschen Retrieval bewertet. Es erfolgt
also keine besondere Umwandlung. Die Variablen d i , j und q j werden mit den entsprechenden Werten 0 und 1 belegt. Eine positive Übereinstimmung, im dem Sinne, dass beide Werte
entweder mit „true“ oder mit „false“ belegt sind, führt zu einer Erhöhung des Cosinus- Maß,
während eine mangelnde Übereinstimmung zu einer Verringerung führt.
Ähnlich den Belegungen der Checkboxen werden auch die nicht numerischen Eingaben in
den Textfeldern oder den Auswahloptionen bewertet. Eine positive Übereinstimmung der
Anfrage mit dem entsprechenden Attribut in dem Inserat führt auch hier zu einer Belegung
der beiden Variablen d i , j und q j mit 1. Stimmen die Werte nicht überein, so wird nur die
Variable q j mit 1 belegt, welches zu einer Verringerung der Relevanz des entsprechenden
Inserates führt. Wird in der Suchanfrage das entsprechende Attribut nicht bestimmt, sei es
durch fehlende Eingabe oder durch die Auswahl der Option „Alle..“, so werden ebenfalls
beide Variablen mit dem Wert 1 belegt. Jedes Inserat wird dadurch bezüglich der Relevanz
aufgewertet.
Wesentlich aufwendiger gestaltet sich die Behandlung der numerischen Eingabefelder. Ein
erstes Problem dabei ist die Angabe in der Suchanfrage in Form von Spannbreiten. Da eine
Ausgewählte Implementierungslösungen
Seite 50
Eigenschaft nur eine Dimension des Vektorraumes definieren kann, müssen diese Informationen zunächst verdichtet werden. Dazu durchläuft das Programm folgende Schritte:
1. Liegt der Wert des Attributes des Inserates innerhalb der Spannbreite so werden hier,
analog zu den beiden oben beschriebenen Abläufen, beide Variablen mit dem Wert 1
belegt.
2. Liegt der Wert außerhalb der Spannbreite, so würde eine Belegung der Variablen mit
dem Wert 0 wieder zurück auf einige Probleme des Booleschen Retrieval führen. Aus
diesem Grund werden die Klassenmitten des Attributes berechnet. Die Variable q j
wird nun mit dem Wert dieser Klassenmitte belegt, die Variable d i , j mit dem eigentlichen Wert des Inserates. Zusätzlich werden die verschiedenen Attributsausprägungen
normiert, um die Werte vergleichbar zu machen. Würde dieser Schritt ausgelassen, so
würde der Einfluss dieses Attributes auf des Gesamtergebnis zu hoch werden. Daher
erfolgt eine Projektion der Werte in das Intervall [0,1]. Der Normierungsfaktor ist das
Maximum der Werte in der Suchanfrage und der Werte in den Inseraten. Letztere
werden in einer, der eigentlichen Auswertung vorgeschalteten, Schleife berechnet. Mit
zunehmender Entfernung von der Klassenmitte nimmt dadurch die Relevanz des jeweiligen Inserates ab.
Der bisher beschriebene Programmablauf beinhaltet eine ganz wesentliches Problem – jedes
Attribut ist bezüglich dem Einfluss in der Relevanzberechnung gleich gewichtet. Dieses Problem des Booleschen Retrieval soll aber gerade durch das Vektorraummodell überwunden
werden. Dazu ist ein notwendig, Gewichtungen für die einzelnen Attribute einfließen zu lassen. Folgende subjektive Gewichtungen sind implementiert:
·
Die booleschen Werte der Fahrzeugausstattung (das sind diejenigen, die durch Checkboxen abgefragt werden) erhalten einfaches Gewicht
·
Farbe und Typ des Fahrzeuges werden doppelt gewichtet
·
Form der Karosserie, Getriebeart werden dreifach gewichtet
·
Die Attribute Treibstoff, Leistung, Laufleistung, Erstzulassung und Verbrauch gehen
vierfach in die Bewertung ein
·
Das Attribut Preis wird 6-fach, Modell 7-fach und Marke 10-fach gewichtet.
Ausgegeben werden alle Inserate mit einer Relevanz bezüglich der Suchanfrage größer null.
Die Ausgabe erfolgt in absteigender Relevanz. Der Wert des Cosinus- Maßes wir in der Ergebnistabelle dargestellt.
Ausgewählte Implementierungslösungen
Seite 51
Neues Inserat entspricht Suchprofil – Der Versand von Emails
Speichert ein Benutzer ein Suchprofil, so wird dieser automatisch benachrichtigt, sobald ein
Inserat aufgegeben wird, dass diesem Profil, dem Modell des Booleschen Retrieval nach, entspricht. Um den Benutzer schnellstmöglich über solche Veränderungen zu informieren und
um gleichzeitig den Administrator zu entlasten, wird ein solcher Suchablauf gestartet, sobald
ein neues Inserat gespeichert wird. Der Ablauf soll ohne zeitliche Belastung für den Inserator
ablaufen. Aus diesem Grund, wird durch die Methode InsertPKW in der Klasse DBConnection die Methode InseratAufSuchprofilCheck der Klasse Interne_Abarbeitung aufgerufen. Diese startet einen neuen Thread, der „alte“ Thread steht damit dem Benutzer sofort wieder für
weitere Aktionen zur Verfügung. Bei dem Funktionsaufruf werden die Daten des Fahrzeuges
übergeben, sie sind die Grundlage für die anschließend stattfindende Suche nach entsprechenden Suchprofilen. Die Schwierigkeit besteht in dem umgekehrten Durchlauf der Suche. Normalerweise bildet das Suchprofil die Basis für die Suche, es werden Inserate entsprechend den
jeweiligen Werte der Attribute gesucht. In diesem Fall müssen solche Suchprofile gefunden
werden, die bei Ablauf der Standardsuche, das übergebene Inserat als Ergebnis ausgeben
würden. Diese Umkehrung bereit vor allem an den Stellen Schwierigkeiten, an denen die
Werte im Suchprofil durch Spannbreiten beschrieben sind. Die Implementierung einer solchen umgekehrten Suche ist sehr aufwendig. Aus diesem Grund wurde das gesamte Problem
auf das Ursprungsproblem der Standardsuche reduziert. Dabei durchläuft das Programm folgende Schritte:
·
In einer ersten Datenbankabfrage werden alle gespeicherten Suchprofile ausgelesen
und in einem Objekt der Klasse ResultSet gespeichert.
·
Mit Hilfe der Schleife while rs.next() werden die gefundenen Suchprofile schrittweise
durchlaufen. In jedem Durchlauf wird nun das Verfahren der Standardsuche ausgeführt. Dabei dienen die Werte des jeweiligen Suchprofils als Basis. Neben der Standardsuche muss der zu findende Eintrag nur eine zusätzliche Eigenschaft erfüllen: die
ID muss mit der ID des neu aufgegebenen Inserates identisch sein; es soll also gerade
das neu eingegebene Inserat gefunden werden. Ist dies der Fall, so liefert der Suchschritt als Ergebnis die Daten des Benutzers zurück, dem das Suchprofil zugeordnet
ist.
·
Das Suchergebnis wird in einer Instanz der Klasse Benutzer gespeichert und als neuer
Eintrag an einen Vektor angehängt.
·
Wurden alle Suchprofile durchlaufen, wird mittels des Befehls v.toArray(new Benutzer[0]) ein Array vom Typ Benutzer zurückgeliefert. Der Befehl bewirkt die Um-
Ausgewählte Implementierungslösungen
Seite 52
wandlung der Elemente des Vektors v in ein Array von dem Typ, der in der Klammer
übergeben wird.
·
Dieses Array wird an die aufrufende Methode zurückgeben und dort schrittweise verarbeitet. Für jeden Benutzer wird eine Email generiert und versendet. Diese enthält einen Link auf die Detailansicht des neu eingegebenen Inserates.
5.2 Eingriffsmöglichkeiten des Administrators in das System
Die Wünsche der Kunden von KLinform zu befriedigen ist oberstes Ziel des gesamten Projektes. Aus diesem Grund muss das Angebot auf den Webseiten beständig aktualisiert und auf
Missbrauch überprüft werden. Diese Aufgabe kommt dem Administrator des gesamten Systems, beziehungsweise der einzelnen Bausteine zu. Um diese Arbeit zu erleichtern, verfügt
der Baustein Fahrzeugmarkt über einen eigenen Menüpunkt, welcher dann eingeblendet wird,
wenn der eingeloggte Benutzer als Administrator identifiziert wird. Die Inhalte der Inserate
kann der Administrator überprüfen und verändern, indem alle Inserate angezeigt werden, oder
über die ID ein ganz spezielles Inserat ausgewählt wird. Zur Bearbeitung eines ausgewählten
Inserates stehen dem Administrator alle Funktionen des Inserators zur Verfügung. Die Auswahl einer speziellen ID ist dabei adäquat zu dem entsprechenden Link in der Email, welche
bei jeder Änderung der Inserate versendet wird.
Aktualität der Inserate
Erfolgt die oben beschriebene Änderung der Inserate auf manuelle Art, so muss die Überprüfung aller Inserate auf eine gewisse Aktualität, aufgrund der Quantität der Angebote, automatische erfolgen. Über das genannte Menu muss der Vorgang manuell gestartet werden, die
notwendigen Änderungen werden vom System automatisch ausgeführt. Die dazu notwendige
Funktionalität stellen die Methoden InseratAufDatumCheck() in der Klassen Interene_Abarbeitung und die Methode DatumCheck() der Klasse DBConnection bereit. Der gesamte Vorgang läuft in einem eigenen Thread ab, so dass die zeitliche Belastung des Administrator minimiert wird. Ziel ist die Identifikation von Inseraten, die seit einer bestimmten
Zeit nicht aktualisiert wurden. Wird ein solches Inserat gefunden, so wird der Inserator per
Email benachrichtigt und gebeten, sein Angebot zu aktualisieren oder zu löschen. Geschieht
dies nicht innerhalb von 14 Tagen, so wird nach Ablauf dieser Frist in einem erneuten Pro-
Ausgewählte Implementierungslösungen
Seite 53
grammdurchlauf das Inserat gelöscht und der Benutzer wird erneut darüber benachrichtigt. In
Abbildung 25 ist der Programmablauf detailliert dargestellt.
Neues Inserat
Loeschen_vorgemerkt=false
last_change=today
Inserat geändert
Differenz zwischen last_change
and today> klinform.properties
Loeschen_vorgemerkt=true
ja
ja
Loeschen_vorgemerkt=true
mahnung=today
Differenz zwischen mahnung and
today > 14
ja
Inserator wird benachrichtigt
Inserat wird gelöscht
Inserator wird benachrichtigt
Abbildung 25 Administrator - Überprüfung der Aktualität der Inserate
Die Steuerung erfolgt durch die drei Attribute last_change, mahnung und loeschen_vorgemerkt. In last_change wird, dem Namen entsprechend, das Datum der letzten
Änderung des Inserates gespeichert. Liegt dieser Zeitpunkt länger als der in den klinform.properties gespeicherte Zeitraum zurück, so wird der Verkäufer gemahnt und die Variable loeschen_vorgemerkt wird auf „true“ gesetzt. Damit wird bei einem erneuten Programmdurchlauf nur die Differenz zwischen dem aktuellen Datum und dem Zeitpunkt der erfolgten
Mahnung berechnet. Ist diese größer als 14 Tage, wird das Inserat gelöscht. Der Administrator wird nach vollständiger Überprüfung aller Inserate über die Anzahl der Mahnungen und
der Löschvorgänge benachrichtigt.
Inserat Sperren
Wird der Administrator durch einen Benutzer auf ein Inserat mit einem unzulässigen Inhalt
aufmerksam gemacht, oder stellt er dies bei routinemäßigen Untersuchungen fest, so steht im
mit diesem Menüpunkt ein Werkzeug zur Verfügung, solche Inserate zu sperren. Die Bedeutung hinter dem Begriff „sperren“ ist bereits in Abschnitt 5.1 erläutert wurden. Zunächst wird
der Administrator aufgefordert, die ID des Inserates und eine Begründung für die Seprrung
Ausgewählte Implementierungslösungen
Seite 54
einzugeben. Im Anschluss werden die Daten des zugehörigen Inserators aus der Datenbank
ausgelesen. Das Attribut gesperrt wird auf true gesetzt. Über den Vorgang wird der Inserator
per Email benachrichtigt. Diese Email beinhaltet sowohl den Grund für die Sperrung, als auch
die Anleitung, wie die Sperrung aufgehoben werden kann.
Konfigurationsdatei
Email-Adressen, Verzeichnis- und Servernamen sind nicht in den Code der Komponente direkt integriert, sondern werden zentral verwaltet. Diese Aufgabe übernimmt die Konfigurationsdatei $klinform/config/klinform.properties. Die jeweiligen Attribute werden hier mittels
folgender Syntax gespeichert:
<Name> = <Wert des Attributes>
Die Methode ‚getProperty(String)’ der Klasse ‚de.klinform.KLinform’ gibt den aktuellen
Wert des entsprechenden Attributs zurück. Durch die Definition von variablen Feldern können die zurückgelieferten Werte mit dynamisch erzeugten Elementen vermengt werden. Die
notwendige Funktionalität stellt die Klasse ‚java.text.MessageFormat’ und die entsprechende
Methode ‚format’ zu Verfügung. Dabei wird ein Set von Objekten formatiert und der formatierte String in die zugewiesen Stelle eingefügt.
Mittels der Konfigurationsdatei kann der Administrator folgende Attribute verändern:
Attribut
fama_admin
Variable Felder Beschreibung
-
fama_detail_link
-
Email- Adresse des Administrator für den
Fahrzeugmarkt
Beschreibt den Link auf die Detailansicht, wie
er in die versendeten Emails eingebunden
wird.
Beim Umgang mit Bildern muss auf der Server-Seite zwischen zwei Pfaden unterschieden
werden:
·
·
fama_ort_bild_upload
fama_ort_bild_upload_relativ
fama_suchprofil_subject
fama_suchprofil_message
Anrede
Vorname
Name
Link Detailansicht
Dateipfad bezogen auf die Webserver-Root und
Dateipfad bezogen auf das ServerDateisystem.
Ersterer wird zum Beispiel benötigt, wenn das
Ergebnis als Bilddatei in eine HTML-Seite
eingebettet
werden
soll.
Zweiterer wird benötigt, um die Datei auf der
Server-Seite zu speichern.
Das zweite Attribut ist defaultmäßig auf
‚de/fahrzeugmarkt/bilddatei/’ gesetzt.
Betreff und Nachrichtentext der Email, die
versendet wird, wenn ein neues Fahrzeug
entsprechend den Angaben in dem gespeicherten Suchprofil gefunden wird.
Ausgewählte Implementierungslösungen
fama_inserieren_subject
fama_inserieren_message
ID des Inserates
Anrede
Vorname
Name
Link Detailansicht
ID des Inserates
-
fama_gueltigkeit_inserat_in_tagen
fama_datum_subject
fama_datum_message
fama_loeschen_subject
fama_loeschen_message
fama_datum_admin_subject
fama_datum_admin_message
fama_loeschen_admin_message
Anrede
Vorname
Name
Link Detailansicht
ID des Inserates
Anrede
Vorname
Name
ID des Inserates
Anzahl der gesendeten Mahnungen
Anzahl der gelöschten Inserate
Link Detailansicht
ID des Inserates
Grund der Sperrung
Anrede
Vorname
fama_inserat_sperren_admin_subject Name
fama_inserat_sperren_admin_message Link Detailansicht
ID des Inserates
Grund der Sperrung
fama_inserat_sperren_subject
fama_inserat_sperren_message
Seite 55
Betreff und Nachrichtentext der Email, durch
die der Administrator über neue Inserate informiert wird.
Hier wird festgelegt, wie viele Tage ein Inserat
unverändert online geschaltet bleiben soll,
ohne dass der Inserator aufgefordert wird,
dieses zu aktualisieren.
Betreff und Nachrichtentext der Email, durch
die der Verkäufer aufgefordert wird, sein Inserat zu aktualisieren.
Betreff und Nachrichtentext der Email zur
Information des Verkäufers, dass ein Inserat
gelöscht wurde.
Betreff und Nachrichtentext der Email an den
Administrator über die Anzahl der, im Rahmen der Administration gesendeten, Mahnungen.
Nachrichtentext der Email an den Administrator über die Anzahl der, im Rahmen der Administration gelöschten, Inserate.
Betreff und Nachrichtentext der Email an den
Administrator, mit der begründeten Aufforderung zur Sperrung des Inserates.
Betreff und Nachrichtentext der Email zur
Information des Verkäufers, dass ein Inserat
gesperrt wurde.
Abbildung 26 Steuergrößen in der Datei klinform.properties
Abschließende Bewertung und Ausblick
Seite 56
6 Abschließende Bewertung und Ausblick
Die Implementierung des Fahrzeugmarktes umfasst annährend alle Anforderungen, die in
Kapitel 2 aufgestellt wurden. Der Umfang der innovativen und personalisierten Lösungen
übersteigt damit den Umfang vieler anderer webbasierter Fahrzeugmärkte. Jedoch sind durch
die Einbindung in das Gesamtsystem von KLinform, besonders bezüglich der graphischen
Gestaltungsfreiheit, Grenzen gesetzt. An einigen Stellen bedarf es Verbesserungen, um den
Inhalt und die Funktionalität auch durch ein leicht zu bedienendes und benutzerfreundliches
Design dem Benutzer zugänglich zu machen. Um einen Wettbewerbsvorteil auf-, beziehungsweise auszubauen ist es notwendig, den Fahrzeugmarkt zu erweitern und innovative
Konzepte zu ergänzen. Folgende Lösungen erscheinen dabei sinnvoll und überlegenswert:
·
Anbindung an Printmedien
Aufbauend auf das breite Angebotsspektrum der Portal-Site KLinform kann dem Verkäufer eine Schnittstelle zu den regional ansässigen Printmedien angeboten werden.
Damit wird er in die Lage versetzt, ein aufgegebenes Inserat an Zeitungen oder Zeitschriften weiterzuleiten. Ein vergrößerter Empfängerkreis kann die Chance auf einen
erfolgreichen Abschluss eines Kaufgeschäftes zu erhöhen.
·
Bilddatenbank
Die derzeitige Implementierung erlaubt es, pro Inserat nur ein Bild zu speichern.
Denkbar wäre hier eine Erweiterung auf drei oder noch mehr Bilder. Gleichfalls sollte
ein Gedanke der Anforderungsanalyse noch einmal aufgegriffen werden. Dort wurde
die Möglichkeit erwähnt, eine Bilddatenbank zu erstellen, die dem Inserator ermöglicht, ein passendes Bild auszuwählen. Damit kann allen Anbietern die Möglichkeit
gegeben werden, das Inserat durch ein Bild interessanter zu machen. Eine vorstellbare
Lösung zur Implementierung ist, die Bilder nicht durch die ID des Inserates zu identifizieren, sondern zusätzlich auch Informationen über Marke, Modell und Farbe mit zu
speichern.
·
Erweiterung des Angebotes
Das Angebot des Fahrzeugmarktes kann sowohl horizontal als auch vertikal erweitert
werden. Die Möglichkeit auch andere, als die beiden implementierten Fahrzeugkategorien zu handeln stellt eine horizontale Erweiterung dar. Folgende Fahrzeugkategorien sind dabei vorstellbar:
-
Anhänger/ Wohnwagen mit folgenden Attributen:
§
Fahrzeugtyp, Aufbauart, Gewicht, Zuladung, gebremst/ ungebremst
Abschließende Bewertung und Ausblick
§
Seite 57
Erweiterte Optionen
·
Außenfarbe
·
Sonderausstattungen/ Sonderleistungen
o ABS, Antischlingerkupplung, CD, Klima, Radio, Stützrad
o Mehrwertsteuer ausweisbar, Garantie, TÜV
-
Lastkraftwagen
-
Baumaschinen
-
Fahrräder
Die Integration ist relativ einfach und erfordert nur geringen Zeitaufwand. Die Vorgehensweise aus Abschnitt 4.1 kann hierzu als Vorlage verwendet werden.
Die Anbindung an die Printmedien und die Bilddatenbank zeigen bereits Wege der
vertikalen Erweiterung auf. Um die Lebenslage Autokauf vollständig abdecken zu
können, sind jedoch auch im Fahrzeugmarkt eine ganze Reihe von Zusatzmodulen
notwendig. Beispielhaft seien genannt:
-
in Abschnitt 2.3 wurde darauf hingewiesen, dass bei 3% der Autos auch der
tatsächliche Kaufvorgang online abgewickelt wird. Durch die Entwicklung eines Bausteines „Online Shop“ sollte die notwendige Funktionalität bereitgestellt werden, um auch diese Nachfrage zu befriedigen. Dieser Baustein sollte
die rechtlichen Rahmenbedingungen erfüllen und die notwendigen Werkzeuge
wie Kaufvertrag oder Zahlungsabwicklung bereitstellen.
-
Integrierte Bewertungsmöglichkeit des angebotenen Fahrzeuges auf Basis der
Schwacke- Liste.
·
Automatische Berechnung der Kosten für Steuern und der Versicherungen.
Schnittstelle um Inserate einzulesen
Im vorherigen Punkt wurde die Schnittstelle zu den Printmedien angesprochen. Denkbar wäre auch eine Implementierung in die andere Richtung. Inserate können bis jetzt
nur über die Webseite eingetragen werden. Eine Offline – Schnittstelle würde es aber
auch ermöglichen, auf anderen Wegen Inserate in die Datenbank einzutragen. Eine integrierte Lösung mit anderen Bausteinen (z.B. Veranstaltungskalender) wäre denkbar.
·
Modell und Motorisierung vorbestimmen
Um die Korrektheit eines Inserates zu erhöhen, und um mit einheitlichen Notationen
zu arbeiten, erscheint es sinnvoll, analog zu der Marke auch das Modell und die Motorisierung fest vorzugeben. Dabei muss es sich um einen dynamischen Prozess handeln.
Abschließende Bewertung und Ausblick
Seite 58
Nach Eingabe der Marke stehen nur noch die Modelle zur Auswahl, die diese Marke
jemals hervorgebracht hat. Entsprechendes gilt im Anschluss für die Motorisierung.
Dadurch wird die Suche erleichtert und Missverständnisse beseitigt. Bis zu einer gewissem Umfang stellt die derzeitige Implementierung keinerlei Probleme dar. Eine
große Menge an Inseraten erschwert aber erheblich die suche nach dem passenden
Fahrzeug, wenn unterschiedliche Angaben über das Modell und die Motorisierung
vorliegen.
Die Vorschläge zeigen, dass Verbesserungsmöglichkeiten in großem Umfang vorhanden sind.
Diese müssen genutzt werden, um KLinform in Kaiserslautern erfolgreich zu etablieren.
Quellenverzeichnis
Seite 59
Quellenverzeichnis
[Bücker 2002] Bücker, K.: Datenbankanbindung und Middleware für Java-Applikationen,
Münster, 2002
[Fuhr 2000] Fuhr, N.: Information Retrieval – Skriptum zu Vorlesung im WS 00/01, Dortmund, 2000
[Hall 2001] Hall, M: Servlets und JavaServer Pages, München, 2001
[Horn 2002] Horn, T.: http://www.thorsten-horn.de/techdocs/java-sql.htm, 10.07.2002
[Jup 2001] Jupiter MMXI: Europäische Surfer fahren auf Auto-Sites ab,
http://de.jupitermxi.com/xp/de/press/releases/pr_042501.xml, 25.04.2001
[KLinform 2000] Projektgruppe KLinform: KLinform Portal für die Region Kaiserslautern –
Tor zum Markt der Zukunft, Kaiserslautern 2000
[Müller 2002] Müller, G.: SQL-Tutorium, http://horatio.wiwi.uni-frankfurt.de/sql/intro.html
[Namics 2001] Namics: Redesign von Websites: Der Case car4you,
http://www.namics.com/namics/home.nsf/vFile/iex_2001/$FILE/09FFB_IEXw11_Redesign_car4you.pdf, Frankfurt, 2001
[News 2000] News.com: http://www.news.com, 2000
[Tataryn 2001] Tataryn, C. W.: Einführung in MVC und das Jakarta Struts Frameword,
www.computer-programmer.org/articles/ struts/de/StrutsMVC_de.ppt, 2001
[Turau 2000] Turau, V: Java Server Pages, Heidelberg, 2000
[Xipolis 2001] Xipolis.net: www.xipolis.net,
http://www.xipolis.net/suche/suche_treffer_detail.php?lemma=Kraftfahrzeug&werk_id=3&ar
tikel_id=20864400, 10.11.2001
Abbildungsverzeichnis
Seite 60
Abbildungsverzeichnis
Abbildung 1 Erwartung der Benutzer an eine Online-Plattform im Automobilbereich; ...........5
Abbildung 2 Zusammensetzung des webbasierten Fahrzeugmarktes.......................................9
Abbildung 3 Allgemeine Benutzeranforderungen .................................................................10
Abbildung 4 Fahrzeugspezifische Attribute ..........................................................................11
Abbildung 5 Funktionale Benutzeranforderungen – Suchfunktion ........................................13
Abbildung 6 Funktionale Benutzeranforderungen – Inserat aufgeben ...................................14
Abbildung 7 Funktionale Benutzeranforderungen - Inserat verwalten...................................14
Abbildung 8 Nichtfunktionale Benutzeranforderungen .........................................................17
Abbildung 9 Inverse Benutzeranforderungen........................................................................17
Abbildung 10 Entwurfsentscheidungen ................................................................................18
Abbildung 11 Hard- und Software- Plattform .......................................................................18
Abbildung 12 MVC Design Pattern im Überblick.................................................................20
Abbildung 13 MVC - Komponenten und Werkzeuge ...........................................................21
Abbildung 14 JDBC Typ 4 – Treiber; Quelle [Bücker 2002] ................................................22
Abbildung 15 Use-Case-Diagramm ......................................................................................24
Abbildung 16 Struktur des Bausteines Fahrzeugmarkt..........................................................26
Abbildung 17 Entity- Relationship- Diagramm.....................................................................27
Abbildung 18 Klassendiagramm...........................................................................................31
Abbildung 19 Detailansicht des Fahrzeugmarktes.................................................................37
Abbildung 20 Formular der Suchmaske................................................................................38
Abbildung 21 Ablaufsteuerung der Basisfunktion Suchen ....................................................40
Abbildung 22 Ablaufsteuerung der Basisfunktionen Inserieren und Inserat bearbeiten .........41
Abbildung 23 Oberfläche zur Darstellung eigener Inserate ...................................................42
Abbildung 24 Grundmodell des Information Retrieval; Quelle: [Fuhr 2000].........................47
Abbildung 25 Administrator - Überprüfung der Aktualität der Inserate.................................53
Abbildung 26 Steuergrößen in der Datei klinform.properties ................................................55
Anhang
Seite 61
Anhang
Definition des Schemata der Datenbank (enthält nicht die Tabellen für den Kraftrad Markt)
CREATE TABLE fama_fahrzeug (
id
INTEGER
NOT NULL,
inserator
VARCHAR(20)
NOT NULL,
marke
VARCHAR(25)
NOT NULL,
modell
VARCHAR(25)
NOT NULL,
erstzulassungmonat INTEGER,
erstzulassungjahr
INTEGER,
laufleistung
INTEGER,
preis
INTEGER,
last_change
DATE,
foto
VARCHAR(50),
freitext
VARCHAR(500),
loeschen_vorgemerkt BOOL,
mahnung
DATE,
gesperrt
BOOL,
counter
INTEGER,
PRIMARY KEY (id),
FOREIGN KEY (inserator) REFERENCES perso_benutzer (id)
ON DELETE CASCADE ON UPDATE CASCADE);
CREATE TABLE fama_pkw (
typ
leistung
treibstoff
karosserie
verbrauch
getriebe
farbe
abs
alarmanlage
allrad
alufelgen
anhaengerkupplung
behindertengerecht
beifahrerairbag
cd
dachtraeger
efensterheber
esitzverstellung
fahrerairbag
kat
klima
leder
VARCHAR(15),
INTEGER,
VARCHAR(15),
VARCHAR(15),
FLOAT(4),
VARCHAR(15),
VARCHAR(15),
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
Anhang
navisystem
nebelscheinwerfer
radio
schiebedach
seitenairbag
servo
sitzheizung
sportausstattung
trueckbank
tempomat
traktionskontrolle
tuning
wegfahrsperre
winterreifen
zentral
ust
garantie
tuev
Seite 62
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
PRIMARY KEY (id),
FOREIGN KEY (inserator) REFERENCES perso_benutzer (id)
ON DELETE CASCADE ON UPDATE CASCADE)
INHERITS (fama_fahrzeug);
CREATE TABLE fama_suchanfrage_pkw (
id
inserator
marke
modell
typ
treibstoff
karosserie
getriebe
farbe
leistungvon
leistungbis
verbrauchvon
verbrauchbis
erstzulassungvon
erstzulassungbis
laufleistungvon
laufleistungbis
preisvon
preisbis
abs
alarmanlage
allrad
alufelgen
anhaengerkupplung
INTEGER
VARCHAR(20)
VARCHAR(25)
VARCHAR(25)
VARCHAR(15),
VARCHAR(15),
VARCHAR(15),
VARCHAR(15),
VARCHAR(15),
INTEGER,
INTEGER,
INTEGER,
INTEGER,
INTEGER,
INTEGER,
INTEGER,
INTEGER,
INTEGER,
INTEGER,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
NOT NULL,
NOT NULL,
NOT NULL,
NOT NULL,
Anhang
behindertengerecht
beifahrerairbag
cd
dachtraeger
efensterheber
esitzverstellung
fahrerairbag
kat
klima
leder
navisystem
nebelscheinwerfer
radio
schiebedach
seitenairbag
servo
sitzheizung
sportausstattung
trueckbank
tempomat
traktionskontrolle
tuning
wegfahrsperre
winterreifen
zentral
ust
garantie
tuev
Seite 63
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
BOOL,
PRIMARY KEY (id),
FOREIGN KEY (inserator) REFERENCES perso_benutzer (id)
ON DELETE CASCADE ON UPDATE CASCADE);
CREATE TABLE fama_benutzer (
id
VARCHAR(20)
NOT NULL,
hatsuchanfrage
BOOL,
hatsuchanfragekraftrad
BOOL,
hatinserat
BOOL,
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES perso_benutzer (id)
ON DELETE CASCADE ON UPDATE CASCADE);
CREATE TABLE fama_marken (
id
INTEGER
NOT NULL,
marke
VARCHAR(25),
PRIMARY KEY (id));
Anhang
CREATE TABLE fama_aufbauart (
id
INTEGER
NOT NULL,
aufbauart
VARCHAR(35),
PRIMARY KEY (id));
CREATE TABLE fama_typ (
id
INTEGER
NOT NULL,
typ
VARCHAR(25),
PRIMARY KEY (id));
CREATE TABLE fama_ausstattung (
id
INTEGER
NOT NULL,
ausstattung VARCHAR(25),
tabellenname VARCHAR(25),
PRIMARY KEY (id));
Seite 64
Anhang
Seite 65
Installationshinweise
·
Aufbau der Datenbank
Für den Aufbau und die Verwaltung der Datenbank existieren vier Textdateien, welche aus dem PostgreSQL- Kommandozeileninterpreter aufgerufen werden können:
-
fama_tabellen_fahrzeug_benutzer_pkw_erstellen.txt
Erstellt
die
Tabellen
ma_suchanfrage_pkw,
fama_fahrzeug,
fama_marke,
fama_pkw,
fama_benutzer,
fama_aufbauart,
fama_typ,
fafa-
ma_ausstattung. Diese Tabellen müssen zuerst in der Datenbank angelegt werden. Außerdem werden die Sequenzen fama_fahrzeug_id_zaehler und fama_suchanfrage_pkw_id_zaehler erzeugt.
-
fama_tabellen_kraftrad_erstellen:
Erstellt die Tabellen fama_kraftrad und fama_suchanfrage_kraftrad. Erzeugt
außerdem die Sequenz fama_suchanfrage_kraftrad_id_zaehler.
-
fama_tabellen_inhalt.txt
Füllt die Tabellen fama_marke, fama_aufbauart, fama_typ, fama_ausstattung
mit Werten.
-
fama_tabellen_loeschen.txt
Löscht alle Tabellen und Sequenzen in der richtigen Reihenfolge aus der Datenbank
·
Intervalle in den Tabellen fama_marke, fama_aufbauart und fama_typ, um die
Werte den jeweiligen Fahrzeugtypen richtig zuzuordnen.
·
PKW
Kraftrad
fama_marke
1-199
201-299
fama_aufbauart
1-99
101-199
fama_typ
1-99
101-199
Intervalle in der Tabelle fama_ausstattung, um die Werte den jeweiligen Beschreibungen richtig zuzuordnen.
PKW
Kraftrad
Komfort
101-199
501-599
Sicherheit und Umwelt
201-299
601-699
Weitere
301-399
-
Specials
401-499
701-799
Herunterladen