290 lines
11 KiB
TeX
290 lines
11 KiB
TeX
|
|
\section{Einführung}
|
|
\label{sec:orgdbdb24a}
|
|
|
|
Aufgabe war es ein System aufzubauen welches Hotelbetreibern erlaubt ihre
|
|
freien Zimmer auf einem zentralen System zu melden. Das System sollte dann bei
|
|
angeschlossenen Fluggesellschaften über einen WCF Service nach passenden Flügen
|
|
suchen und diese Verbindung dann als ein Kombiangebot in der Datenbank
|
|
speichern. Diese Kombiangebot sollte dann von einem Kunden mithilfe einer
|
|
WinForm/WPF Applikation gebucht werden können.
|
|
|
|
\section{Ziele}
|
|
\label{sec:org246beb5}
|
|
|
|
Aus der Aufgabenstellung lassen sich folgende Ziele an die Systeme ableiten.
|
|
|
|
|
|
\begin{itemize}
|
|
\item Die Datenbank wird in SQL Server umgesetzt.
|
|
\item Als Programmiersprache wird C\# mit .NET Framework eingesetzt.
|
|
\item Hotels können ihre Zimmer inklusive Zusatzinformationen wie Ausstattung etc.
|
|
erfassen.
|
|
\item Flüge werden in der Datenbank gespeichert.
|
|
\item Die Kombiangebote werden auf der Plattform in der Datenbank gespeichert.
|
|
\item Ein WinForm/WPF Client greift auf die Plattform zu und ruft die Kombiangebote
|
|
ab.
|
|
\item Der Client kann Kombiangebote buchen.
|
|
\item Der Client kann Kombiangebote für 10 Tage reservieren.
|
|
\item Die Plattform bucht bezahlte Reservationen fix.
|
|
\item Es müssen mehrere Fluggesellschaften angebunden werden.
|
|
\item Der Service wird innerhalb von 2s aufgebaut, läuft mindestens 30 Tage durch,
|
|
bietet eine Verfügbarkeit von 0.995 und ist innerhalb von 0.5s ansprechbar.
|
|
\item Es dürfen nur freie Flüge in Kombiangeboten vorkommen.
|
|
\item Start- und Zielort des Fluges im Kombiangebot müssen passend zum Hotelzimmer
|
|
sein.
|
|
\item Die Daten des Fluges müssen korrekt sein.
|
|
\end{itemize}
|
|
|
|
\section{Analyse}
|
|
\label{sec:org1288e00}
|
|
|
|
Aufgrund der Ziele wurden anschliessend folgende Diagramme ausgearbeitet.
|
|
|
|
\subsection{Verteilungsdiagramm}
|
|
\label{sec:org3c759ef}
|
|
|
|
Das Verteilungsdiagramm, Abbildung:(\ref{fig:org07992c9}), wurde im
|
|
Unterricht ausgearbeitet. Der Klasse erschien es am sinnvollsten wenn die
|
|
Plattform als ASP.NET Applikation erstellt wird und somit auf dem IIS Web
|
|
Server läuft. Da die Plattform das zentrale System ist, ist es für die
|
|
Normfallstudie auch sinnvoll wenn der Datenbank Server auf dem gleichen System
|
|
läuft wie die Plattform. In einer realen Umgebung müsste hier allenfalls eine
|
|
separater Server aufgesetzt werden. Der Airline Service und der WPF Client
|
|
wurden entsprechend der Vorgagben als externe Applikationen geplant.
|
|
|
|
\newpage
|
|
\begin{landscape}
|
|
\begin{figure}[htbp]
|
|
\centering
|
|
\includegraphics[width=.9\linewidth]{pictures/verteilungsdiagramm.pdf}
|
|
\caption{\label{fig:org07992c9}
|
|
Verteilungsdiagramm}
|
|
\end{figure}
|
|
\end{landscape}
|
|
\newpage
|
|
|
|
\subsection{Relationales Modell}
|
|
\label{sec:orga601e65}
|
|
|
|
In der Abbildung:(\ref{fig:org2edad9e}) ist das relationale Modell zu sehen welches durch
|
|
den Studenten vorgängig zur Umsetzung erstellt wurde. In der
|
|
Abbildung:(\ref{fig:org1c14d0c}) ist die das relationale Modell zu sehen welches dann
|
|
durch das Entity Framework effektiv in der Datenbank erstellt wurde.
|
|
|
|
|
|
\newpage
|
|
\begin{landscape}
|
|
\begin{figure}[htbp]
|
|
\centering
|
|
\includegraphics[width=.9\linewidth]{pictures/rm.pdf}
|
|
\caption{\label{fig:org2edad9e}
|
|
Relationen Modell}
|
|
\end{figure}
|
|
\end{landscape}
|
|
\newpage
|
|
|
|
\newpage
|
|
\begin{landscape}
|
|
\begin{figure}[htbp]
|
|
\centering
|
|
\includegraphics[width=.9\linewidth]{pictures/rmentity.png}
|
|
\caption{\label{fig:org1c14d0c}
|
|
Relationen Modell}
|
|
\end{figure}
|
|
\end{landscape}
|
|
\newpage
|
|
|
|
\section{Zugewiesene Ziele}
|
|
\label{sec:org04bceeb}
|
|
|
|
Im Anschluss zu der Analyse hat der Student die Ziele den einzelnen
|
|
Applikationen zugewiesen. Dies sollte dazu dienen die Zuständigkeiten zu regeln.
|
|
|
|
\subsection{Airline Service}
|
|
\label{sec:org87128cd}
|
|
|
|
Da die Airlnes alle Flugdaten zur Verfügung haben erschien es sinnvoll das
|
|
diese einen Service bereitstellen welcher die Parameter Anzahl Passiegere,
|
|
Start- und Enddatum sowie die Destination aufnimmt. Der Service sollte dann im
|
|
Hintergrund automatisch die bereits besetzten Flüge und Flüge welche nicht auf
|
|
die restlichen Paramter passen ausfiltern und nur passende Flüge ausgeben.
|
|
|
|
Desweiteren sollte der Airline Service eine Möglichkeit bieten Flüge zu buchen
|
|
sowie zu stornieren. Im Code Ausschnitt:(\ref{airline}) sieht man die Signature
|
|
des Airline Services. Respektive des Interfaces davon.
|
|
|
|
\label{airline}
|
|
\begin{sexylisting}{Airline Service}
|
|
[OperationContract]
|
|
Dictionary<string, List<Flight>> GetFlights(
|
|
DateTime startTime,
|
|
DateTime endTime,
|
|
string destination,
|
|
int numberOfSeats);
|
|
[OperationContract]
|
|
Flight BookFlight(Flight flight, int numberOfSeats);
|
|
[OperationContract]
|
|
Flight CancelFlight(Flight flight, int numberOfSeats);
|
|
\end{sexylisting}
|
|
|
|
Somit wurden dem Airline Service folgende Ziele zugewiesen:
|
|
\begin{itemize}
|
|
\item Es dürfen nur freie Flüge in Kombiangeboten vorkommen.
|
|
\item Start- und Zielort des Fluges im Kombiangebot müssen passend zum Hotelzimmer
|
|
sein.
|
|
\item Die Daten des Fluges müssen korrekt sein.
|
|
\end{itemize}
|
|
|
|
\subsection{Plattform}
|
|
\label{sec:org37a67c5}
|
|
|
|
Die Plattform stellt den Grossteil der Logik und Funktionen bereit. Sie sollte
|
|
einerseits ein Möglichkeit bieten damit die Hotelbetreiber Zimmer und ihre
|
|
Hotels erfassen könne sowie das Matching zwischen Hotelzimmer und Flügen
|
|
erledigen.
|
|
|
|
Zusätzlich sollte sie die erstellten Komiangebote and den WPF Client
|
|
weiterleiten können. Auch das entgegennehmen der Bestellungen sowie
|
|
Reservationen des WPF Clients entgegennehmen und an den Airline Service
|
|
weiterleiten. Auch die Überprüfung der Reservationszeit sowie die entsprechende
|
|
Reakation war für die Plattform geplant.
|
|
|
|
Zu guter letzt sollten dann die reservertierten respektive gebuchten Flüge an
|
|
die passende Airline zur Buchung weitergeleitet werden. Im Falle einer
|
|
Stornierung des Angebots müsste dann natürlich auch noch der Flug storniert
|
|
werden.
|
|
|
|
Der Plattform wurden somit folgende Ziele zugewiesen:
|
|
\begin{itemize}
|
|
\item Die Datenbank wird in SQL Server umgesetzt.
|
|
\item Hotels können ihre Zimmer inklusive Zusatzinformationen wie Ausstattung etc.
|
|
erfassen.
|
|
\item Flüge werden in der Datenbank gespeichert.
|
|
\item Die Kombiangebote werden auf der Plattform in der Datenbank gespeichert.
|
|
\item Ein WinForm/WPF Client greift auf die Plattform zu und ruft die Kombiangebote
|
|
ab.
|
|
\item Der Client kann Kombiangebote buchen.
|
|
\item Der Client kann Kombiangebote für 10 Tage reservieren.
|
|
\item Die Plattform bucht bezahlte Reservationen fix.
|
|
\item Es müssen mehrere Fluggesellschaften angebunden werden.
|
|
\item Der Service wird innerhalb von 2s aufgebaut, läuft mindestens 30 Tage durch,
|
|
bietet eine Verfügbarkeit von 0.995 und ist innerhalb von 0.5s ansprechbar.
|
|
\item Start- und Zielort des Fluges im Kombiangebot müssen passend zum Hotelzimmer
|
|
sein.
|
|
\end{itemize}
|
|
|
|
Die Signatur des Plattform Services ist im Codebeispiel:(\ref{plattform}) zu
|
|
sehen.
|
|
|
|
\label{plattform}
|
|
\begin{sexylisting}{Plattfrom Service}
|
|
[OperationContract]
|
|
List<SpecialOffer> GetSpecialOffers();
|
|
[OperationContract]
|
|
bool ReserveSpecialOffer(SpecialOffer offer);
|
|
[OperationContract]
|
|
bool BookSpecialOffer(SpecialOffer offer);
|
|
[OperationContract]
|
|
bool CancelSpecialOffer(SpecialOffer offer);
|
|
[OperationContract]
|
|
List<Gender> GetGenders();
|
|
[OperationContract]
|
|
List<Salutation> GetSalutations();
|
|
[OperationContract]
|
|
List<City> GetCities();
|
|
\end{sexylisting}
|
|
|
|
\subsection{WPF Client}
|
|
\label{sec:org98d738d}
|
|
|
|
Der WPF Client sollte nur aus einem simplen graphischen Interface bestehen
|
|
welches einem User erlaubt hätte nach Städten und Daten zu filtern und ihm dann
|
|
die entsprechenden Kombiangebote angezeigt hätte. Das gewünschte Angebot hätte
|
|
er dann über den WCF Service auf der Plattform reservieren oder direkt buchen
|
|
können. Ein früher Screenshot des Clients ist in der Abbildung:(\ref{fig:org5dab192}) zu sehen.
|
|
|
|
\begin{figure}[htbp]
|
|
\centering
|
|
\includegraphics[height=15cm]{pictures/rmentity.png}
|
|
\caption{\label{fig:org5dab192}
|
|
frúher Screenshot des WPF Clients}
|
|
\end{figure}
|
|
|
|
\section{Offene Punkte}
|
|
\label{sec:org9459c01}
|
|
|
|
|
|
Aufgrund enormen Zeitmangels war es leider nicht möglich das Projekt zu
|
|
realisieren. In dieser Sektion soll ein kurzer Überblick darüber gegeben werden
|
|
welche Punkte in welchem Teil des Projektes noch offen sind und nicht
|
|
fertigstellt oder überhaupt angegangen werden konnten.
|
|
|
|
\subsection{Airline Service}
|
|
\label{sec:org2ebd0ec}
|
|
|
|
Soweit der Student dies zum jetzigen Zeitpunkt beurteilen kann ist der Airline
|
|
Service soweit abgeschlossen. In ersten nicht dokumentierter Tests wurden
|
|
zumindest die erwarteten Daten zurück geliefert.
|
|
|
|
\subsection{Plattform}
|
|
\label{sec:org6223095}
|
|
|
|
Aufgrund eines Bugs welcher auch mit Hilfe des Dozenten nicht behoben werden
|
|
konnte ist es zur Zeit nicht möglich die Plattform überhaupt zu starten. Das
|
|
Provisionieren der Datenbank schlägt mit dem Fehler "`"' fehl.
|
|
Die Zimmererfassung für die Hotels konnte zuvor jedoch soweit fertigstellt
|
|
werden. Noch offen sind zur Zeit:
|
|
|
|
\begin{itemize}
|
|
\item Der Plattform Service ist mangels eines passenden Clients komplett
|
|
ungetestet. Somit ist unklar ob die Buchung oder Reservationen der
|
|
Kombiangebote funktionieren.
|
|
\item Flüge werden in der Datenbank gespeichert.
|
|
\item Kombiangebote werden in der Datenbank gespeichert.
|
|
\item Zu buchende Flüge werden an die Fluggesellschaften gemeldet.
|
|
\item Der Service wird innerhalb von 2s aufgebaut, läuft mindestens 30 Tage durch,
|
|
bietet eine Verfügbarkeit von 0.995 und ist innerhalb von 0.5s ansprechbar.
|
|
\item Bezahlte Reservationen werden fix gebucht.
|
|
\end{itemize}
|
|
|
|
\subsection{WPF Client}
|
|
\label{sec:orgb5d6e75}
|
|
|
|
Vom WPF Client exisistiert zur Zeit nur das Grundgerüst. Da die Plattform nicht
|
|
funktionsfähig war hat der Student am WPF Client gearbeitet soweit es möglich
|
|
war. Allerdings war dies ohne den WCF Service der Plattform nur sehr beschränkt
|
|
möglich. Viel mehr als die graphische Oberfläche existiert zur Zeit nicht.
|
|
|
|
\section{Fazit}
|
|
\label{sec:org8eb7fd0}
|
|
|
|
Ein Booking System welches Kombiangebote wie in der Aufgabenstellung verlangt
|
|
bereitstellt ist eine uglaublich komplexes System. Das Matching der Flüge zu
|
|
passenden Hotelzimmer hat enorm viele Variabeln welche berücksichtigt werden
|
|
müssen.
|
|
|
|
Dadurch lässt sich das Projekt in keiner Weise innerhalb von ca. 20 Stunden
|
|
erstellen. Der Student hat weit über 40 Stunden in das Projekt in Heimarbeit
|
|
investiert und kein brauchbares Ergebnis erziehlen können. Für den Studenten
|
|
ist dies eine enorm unbefriedigende Situation.
|
|
|
|
Das .NET und Entity Framework bieten einige interessante Features. Allerdings
|
|
wirkt der Code-First Ansatz von Entity Framework so als ob die ganzen
|
|
Überprüfungen in der Applikation gemacht werden sollten anstatt in der
|
|
Datenbank. Allenfalls ist das noch eine Altlast von früher allerdings gibt es
|
|
heutzutage Frameworks die dies wesentlich eleganter lösen. Der Student findet
|
|
dass, das Framework die Datenbank so sauber wie möglich erstellen sollte und es
|
|
dem Entwickler möglichst einfach machen sollte erweiterte Features der
|
|
Datenbank zu nutzen.
|
|
|
|
Auch empfindet der Student C\# eher als ungeeignet um innerhalb von so kurzer
|
|
Zeit ein Projekt zu realiseren. Die Sprache fühlt sich dafür einfach zu sperrig
|
|
und die zusätzliche Komplexität durch Visual Studio ist leider nicht immer nur
|
|
eine Hilfe.
|
|
|
|
WCF Services sind in der Grundidee eine sehr interessante Technologie und der
|
|
Stundet wird WCF Services oder ähnliche Technologien in der Zukunft sicher
|
|
inbetracht ziehen. Insbesondere das Teilen der Klassen bietet interessante
|
|
Möglichkeiten.
|