Commit ecdfafc1 by Werner Westerkamp

chapter 4 erledigt

parent 4d37f434
\chapter{Probleme und Code-Qualität } \chapter{Probleme und Code-Qualität }
\label{chapter:testing} \label{chapter:testing}
In diesem Kapitel wird zunächst auf einige Probleme in der Implementierung eingegangen und anschließend die Code Qualität betrachtet. In diesem Kapitel wird zunächst auf einige Probleme bei der Implementierung eingegangen und anschließend die Code Qualität betrachtet.
\section{Probleme} \section{Probleme}
\subsection{Maven und nicht Maven Bibliotheken} \subsection{Maven und nicht Maven Bibliotheken}
Alle Dependencies in den bestehenden Projekten werden durch Maven (\cite{MVN}) aufgelöst. Alle Dependencies in den bestehenden Projekten werden durch Maven (\cite{MVN}) aufgelöst.
Maven ist ein Build-Management Tool das auch die Dependency Verwaltung übernimmt. Maven ist ein Build-Management Tool, das auch die Dependency Verwaltung übernimmt.
Die isaac.lib und der nisf-creator standen zum Beginn des Projektes nicht in einem Maven Repository zur Verfügung. Die isaac.lib und der nisf-creator standen zum Beginn des Projektes nicht in einem Maven Repository zur Verfügung.
Damit weiterhin keine lokalen Bibliotheken eingebunden werden müssen wurden beide Bibliotheken und deren Abhängigkeiten in das Repository eingefügt. Damit weiterhin keine lokalen Bibliotheken eingebunden werden müssen, wurden beide Bibliotheken und deren Abhängigkeiten in das Repository eingefügt.
Dazu musste zunächst manuell die Abhängigkeiten der einzelnen Bibliotheken aufgelöst werden bevor diese in das Project Object Model (POM) der einzelnen Bibliotheken eingetragen werden kann. Dazu mussten zunächst die Abhängigkeiten der einzelnen Bibliotheken manuell aufgelöst werden, bevor diese in das Project Object Model (POM) der einzelnen Bibliotheken eingetragen werden können.
\subsection{CSD upload} \subsection{CSD upload}
In der Implementierung sind beim hochladen des Bildes einige Probleme aufgetreten. In der Implementierung sind beim Hochladen des Bildes einige Probleme aufgetreten.
Genauer gesagt wird der CSD mitgeteilt wo das Bild herunterzuladen ist und das kann zu Problemen führen.\todo{Bild} Genauer gesagt wird der CSD mitgeteilt, wo das Bild herunterzuladen ist und das kann zu Problemen führen.\todo{Bild}
Ein Problem das hierbei auftreten kann, das der Port freigegeben sein muss. Ein Problem, das hierbei auftreten kann, ist, dass der benötigte Netzwerk-Port nicht freigegeben ist.
Um einen Port freizugeben braucht man Administratorrechte, die nicht jeder Nutzer hat. Um einen Port freizugeben, braucht man Administratorrechte, die nicht jeder Nutzer hat.
Außerdem ist darauf zu achten, dass die Infrastruktur erlaubt, dass der Server eine Rückverbindung zum Client aufbaut. Außerdem ist darauf zu achten, dass die Infrastruktur erlaubt, dass der Server eine Rückverbindung zum Client aufbaut.
Steht der Server in einem andern Netz als der Client kann diese Funktionalität durch eine Firewall blockiert werden, und das Bild lässt sich nicht übertragen. Steht der Server in einem anderen Netz als der Client, kann diese Funktionalität durch eine Firewall blockiert werden, und das Bild lässt sich nicht übertragen.
Die Isaac.lib überträgt nicht die IP-Adresse des Clients als Download-URL, sondern denn Domain Namen des Clients. Die Isaac.lib überträgt nicht die IP-Adresse des Clients als Download-URL, sondern denn Domain Namen des Clients.
Kann der Server den Namen nicht auflösen, kann der Server das Bild ebenfalls nicht herunterladen. Kann der Server den Namen nicht auflösen, kann der Server das Bild ebenfalls nicht herunterladen.
% Interessant wäre, wie man solche Probleme löst. Falls das nicht möglich ist, kannst du Vorschläge im Ausblick machen.
\section{Code Qualität} \section{Code Qualität}
\subsection{Testing} \subsection{Testing}
Es wurden keine Testcases geschrieben. Es wurden keine Testcases geschrieben.
Um die Anbindung an die CSD zu testen wären umfangreiche Integrationstest nötig. Um die Anbindung an die CSD zu testen, wären umfangreiche Integrationstest nötig.
Diese gestalten sich als schwierig da keine CSD Server nur zum Testen zur Verfügung steht. Diese gestalten sich schwierig, da keine CSD Server als exklusive Testinstanzen zur Verfügung stehen.
Alle Komponenten wurden manuell testet um die Funktionalität zu überprüfen. Alle Komponenten wurden manuell getestet, um die Funktionalität zu überprüfen.
Das bedeutet beim Parsen der XML Dokumetne im Result Handler der CSDCommons Bibliothek wurde für jedes ausgelesen Feld die Korrektheit des Ergebnisses überprüft. Das bedeutet, beim Parsen der XML Dokumente im Result Handler der CSDCommons Bibliothek wurde für jedes ausgelesen Feld die Korrektheit des Ergebnisses überprüft.
Es wurde daruf geachtet das einige Felder optional sind und das das Fehlend dieser Komponenten nicht zu Programmabstürzen führt. Es wurde darauf geachtet, dass einige Felder optional sind und dass das Fehlen dieser Informationen nicht zu Programmabstürzen führt.
Das Parsen der XML Dokumente im ResultHandler der CSDCommons Bibliothek ist besonders intensiv überprüft worden. Das Parsen der XML Dokumente im ResultHandler der CSDCommons Bibliothek ist besonders intensiv überprüft worden.
Viele Felder sind optional und werden versucht im CSDAdapter und im SBA ausgelesen. %VORHER Viele Felder sind optional und werden versucht im CSDAdapter und im SBA ausgelesen.
Es muss also immer darauf geachtet werden,das Informationen vorhanden sind und auch verwendet werden können. % NACHHER (bitte prüfen):
Viele Felder sind optional. Sowohl CSDAdapter als auch SBA versuchen aber dieser auszulesen.
Es muss also immer darauf geachtet werden, dass Informationen vorhanden sind und auch verwendet werden können. % Ist mir für OPTIONALE Felder nicht klar.
Bei der Nutzereingabe zum Schreiben in die CSD wird die Richtigkeit und Notwendigkeit der einzelnen Felder direkt bei der Eingabe überprüft. Bei der Nutzereingabe zum Schreiben in die CSD wird die Richtigkeit und Notwendigkeit der einzelnen Felder direkt bei der Eingabe überprüft.
Übergibt man ein unvollständiges XML Dokument an die Isaac.lib, so wirft diese Fehler. Übergibt man ein unvollständiges XML Dokument an die Isaac.lib, so wirft diese Fehler.
Um das zu vermeiden, kann der Nutzer die Anfrage nicht absenden, bevor alle Eingaben korrekt erfolgt sind. Um das zu vermeiden, kann der Nutzer die Anfrage nicht absenden, bevor alle Eingaben korrekt erfolgt sind.
Auch hier wurde für jedes Feld überprüft ob die Eingabe den Richtlinien der CSD entspricht. Auch hier wurde für jedes Feld überprüft, ob die Eingabe den Richtlinien der CSD entspricht.
\subsection{Find Bugs} \subsection{Find Bugs}
Um in der Benutzung keine Programmabstürze durch Programmierfehler zu erhalten, wurde der Code mit Findbugs \cite{FB} überprüft. Um in der Benutzung keine Programmabstürze durch Programmierfehler zu erhalten, wurde der Code mit Findbugs \cite{FB} überprüft.
Findbugs untersucht den Java bytecode nach Bug Patterns. Findbugs untersucht den Java bytecode nach Bug Patterns.
Vermutliche Fehler z.B. Nullpointer oder auch schlechter Stil wie == Operator anstelle der equals Methode wird von der Bibliothek erkannt und dem Nutzer zur Verbesserung vorgeschlagen. Vermutliche Fehler z.B. Nullpointer oder auch schlechter Stil wie == Operator anstelle der equals Methode werden von der Bibliothek erkannt und dem Nutzer zur Verbesserung vorgeschlagen.
In der Implementierung wurden alle Anmerkungen von Findbugs behoben. In der Implementierung wurden alle Anmerkungen von Findbugs behoben.
Lediglich die Fehler in der JHotDraw GUI Bibliothek, auf dem der SBA aufbaut, wurden nicht behoben. Lediglich die Fehler in der JHotDraw GUI Bibliothek, auf dem der SBA aufbaut, wurden nicht behoben.
Es ist ein exaktes Verständnis des gesamten JHotDraw Frameworks notwendig, um z.B. die gefundenen Bitmaskenfehler zu beheben. Es ist ein exaktes Verständnis des gesamten JHotDraw Frameworks notwendig, um z.B. die gefundenen Bitmaskenfehler zu beheben.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment