diff --git a/docs/Normfallstudie_Andreas_Zweili.tex b/docs/Normfallstudie_Andreas_Zweili.tex index 5e1ed16..b0f8a4e 100644 --- a/docs/Normfallstudie_Andreas_Zweili.tex +++ b/docs/Normfallstudie_Andreas_Zweili.tex @@ -19,20 +19,13 @@ %\nocite{*} \printbibliography[heading=bibintoc] -% \newpage -% \microtypesetup{protrusion=false} -% \listoffigures -% \microtypesetup{protrusion=true} -% \ -% \newpage - +\newpage \microtypesetup{protrusion=false} -\listoftables +\listoffigures \microtypesetup{protrusion=true} \ \newpage - %\printglossaries \end{document} diff --git a/docs/normfallstudie.org b/docs/normfallstudie.org index 488a03c..93fb978 100644 --- a/docs/normfallstudie.org +++ b/docs/normfallstudie.org @@ -25,6 +25,7 @@ WinForm/WPF Applikation gebucht werden können. Aus der Aufgabenstellung lassen sich folgende Ziele an die Systeme ableiten. + - Die Datenbank wird in SQL Server umgesetzt. - Als Programmiersprache wird C# mit .NET Framework eingesetzt. - Hotels können ihre Zimmer inklusive Zusatzinformationen wie Ausstattung etc. @@ -50,6 +51,14 @@ Aufgrund der Ziele wurden anschliessend folgende Diagramme ausgearbeitet. ** Verteilungsdiagramm +Das Verteilungsdiagramm, Abbildung:([[fig:verteilungsdiagramm]]), 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. #+LATEX:\newpage #+LATEX:\begin{landscape} @@ -60,37 +69,192 @@ Aufgrund der Ziele wurden anschliessend folgende Diagramme ausgearbeitet. #+LATEX:\end{landscape} #+LATEX:\newpage -** Relationales Modell +** TODO Relationales Modell + +In der Abbildung:([[fig:rm]]) ist das relationale Modell zu sehen welches durch +den Studenten vorgängig zur Umsetzung erstellt wurde. In der +Abbildung:([[fig:rmentity]]) ist die das relationale Modell zu sehen welches dann +durch das Entity Framework effektiv in der Datenbank erstellt wurde. #+LATEX:\newpage #+LATEX:\begin{landscape} -*Erster Entwurf* #+CAPTION: Relationen Modell -#+ATTR_LATEX: :height.9\textwidth +#+ATTR_LATEX: :height.8\textwidth #+NAME: fig:rm [[file:pictures/rm.pdf]] #+LATEX:\end{landscape} #+LATEX:\newpage -*Umsetzung des Entity Framework* +#+LATEX:\newpage +#+LATEX:\begin{landscape} +#+CAPTION: Relationen Modell +#+NAME: fig:rmentity +[[file:pictures/rmentity.png]] +#+LATEX:\end{landscape} +#+LATEX:\newpage * Zugewiesene Ziele -Der Student hat die Ziele anschliessend wie folgt auf die jeweiligen System -verteilt. Gewisse Ziele könnten auch auf anderen Systemen realisiert. Die -aufgeführte Variante erschien dem Studenten jedoch am sinnvollsten. +Im Anschluss zu der Analyse hat der Student die Ziele den einzelnen +Applikationen zugewiesen. Dies sollte dazu dienen die Zuständigkeiten zu regeln. + +** Airline Service + +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. + +#+BEGIN_EXPORT latex +\label{airline} +\begin{sexylisting}{Airline Service} +[OperationContract] +Dictionary> 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} +#+END_EXPORT + +Somit wurden dem Airline Service folgende Ziele zugewiesen: +- Es dürfen nur freie Flüge in Kombiangeboten vorkommen. +- Start- und Zielort des Fluges im Kombiangebot müssen passend zum Hotelzimmer + sein. +- Die Daten des Fluges müssen korrekt sein. + +** Plattform + +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: +- Die Datenbank wird in SQL Server umgesetzt. +- Hotels können ihre Zimmer inklusive Zusatzinformationen wie Ausstattung etc. + erfassen. +- Flüge werden in der Datenbank gespeichert. +- Die Kombiangebote werden auf der Plattform in der Datenbank gespeichert. +- Ein WinForm/WPF Client greift auf die Plattform zu und ruft die Kombiangebote + ab. +- Der Client kann Kombiangebote buchen. +- Der Client kann Kombiangebote für 10 Tage reservieren. +- Die Plattform bucht bezahlte Reservationen fix. +- Es müssen mehrere Fluggesellschaften angebunden werden. +- 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. +- Start- und Zielort des Fluges im Kombiangebot müssen passend zum Hotelzimmer + sein. + +Die Signatur des Plattform Services ist im Codebeispiel:(\ref{plattform}) zu +sehen. + +#+NAME: plattform +#+BEGIN_EXPORT latex +\label{plattform} +\begin{sexylisting}{Plattfrom Service} +[OperationContract] +List GetSpecialOffers(); +[OperationContract] +bool ReserveSpecialOffer(SpecialOffer offer); +[OperationContract] +bool BookSpecialOffer(SpecialOffer offer); +[OperationContract] +bool CancelSpecialOffer(SpecialOffer offer); +[OperationContract] +List GetGenders(); +[OperationContract] +List GetSalutations(); +[OperationContract] +List GetCities(); +\end{sexylisting} +#+END_EXPORT + +** TODO WPF Client + +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:([[wpf]]) zu sehen. + +#+CAPTION: frúher Screenshot des WPF Clients +#+ATTR_LATEX: :height 15cm +#+NAME: wpf +[[file:pictures/rmentity.png]] + +* Offene Punkte + + +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. + +** Airline Service + +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. + +** TODO Plattform + +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: + +- Der Plattform Service ist mangels eines passenden Clients komplett + ungetestet. Somit ist unklar ob die Buchung oder Reservationen der + Kombiangebote funktionieren. +- Flüge werden in der Datenbank gespeichert. +- Kombiangebote werden in der Datenbank gespeichert. +- Zu buchende Flüge werden an die Fluggesellschaften gemeldet. +- 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. +- Bezahlte Reservationen werden fix gebucht. + +** WPF Client + +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. * Fazit Ein Booking System welches Kombiangebote wie in der Aufgabenstellung verlangt -bereitsstellt ist eine uglaublich komplexes System. Das Matching der Flüge zu +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 über 40 Stunden in das Projekt in Heimarbeit -investiert und kein brauchbares Ergebnis erziehlen können. +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 diff --git a/docs/normfallstudie.tex b/docs/normfallstudie.tex index cee23aa..2f36fe5 100644 --- a/docs/normfallstudie.tex +++ b/docs/normfallstudie.tex @@ -1,6 +1,6 @@ \section{Einführung} -\label{sec:org6d4f889} +\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 @@ -10,10 +10,11 @@ speichern. Diese Kombiangebot sollte dann von einem Kunden mithilfe einer WinForm/WPF Applikation gebucht werden können. \section{Ziele} -\label{sec:orgdab10f5} +\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. @@ -36,61 +37,237 @@ sein. \end{itemize} \section{Analyse} -\label{sec:orgf4ce43a} +\label{sec:org1288e00} Aufgrund der Ziele wurden anschliessend folgende Diagramme ausgearbeitet. \subsection{Verteilungsdiagramm} -\label{sec:org3b0693e} +\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:orgf1e8607} +\caption{\label{fig:org07992c9} Verteilungsdiagramm} \end{figure} \end{landscape} \newpage \subsection{Relationales Modell} -\label{sec:org8ee6851} +\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} -\textbf{Erster Entwurf} \begin{figure}[htbp] \centering \includegraphics[width=.9\linewidth]{pictures/rm.pdf} -\caption{\label{fig:org71fbc74} +\caption{\label{fig:org2edad9e} Relationen Modell} \end{figure} \end{landscape} \newpage -\textbf{Umsetzung des Entity Framework} +\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:org3fd47d5} +\label{sec:org04bceeb} -Der Student hat die Ziele anschliessend wie folgt auf die jeweiligen System -verteilt. Gewisse Ziele könnten auch auf anderen Systemen realisiert. Die -aufgeführte Variante erschien dem Studenten jedoch am sinnvollsten. +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> 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 GetSpecialOffers(); +[OperationContract] +bool ReserveSpecialOffer(SpecialOffer offer); +[OperationContract] +bool BookSpecialOffer(SpecialOffer offer); +[OperationContract] +bool CancelSpecialOffer(SpecialOffer offer); +[OperationContract] +List GetGenders(); +[OperationContract] +List GetSalutations(); +[OperationContract] +List 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:org6b3e5f1} +\label{sec:org8eb7fd0} Ein Booking System welches Kombiangebote wie in der Aufgabenstellung verlangt -bereitsstellt ist eine uglaublich komplexes System. Das Matching der Flüge zu +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 über 40 Stunden in das Projekt in Heimarbeit -investiert und kein brauchbares Ergebnis erziehlen können. +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 diff --git a/docs/pictures/rmentity.png b/docs/pictures/rmentity.png new file mode 100644 index 0000000..34e06a2 Binary files /dev/null and b/docs/pictures/rmentity.png differ