diff --git a/30_Thesis/figures/50_design_and_implementation/class_diagram_scoring_functions_simplified.pdf b/30_Thesis/figures/50_design_and_implementation/class_diagram_scoring_functions_simplified.pdf new file mode 100644 index 0000000..c8a93cc --- /dev/null +++ b/30_Thesis/figures/50_design_and_implementation/class_diagram_scoring_functions_simplified.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f58591d0373d39801f32b833eb0d3ceb94b0acf15e4096a4f086eb27d9913c19 +size 24070 diff --git a/30_Thesis/sections/50_design_and_implementation.tex b/30_Thesis/sections/50_design_and_implementation.tex index e9f0386..5b2cc26 100644 --- a/30_Thesis/sections/50_design_and_implementation.tex +++ b/30_Thesis/sections/50_design_and_implementation.tex @@ -63,9 +63,14 @@ The choice among database systems has to be made between \emph{non-relational} a \section{Scoring Functions} \label{sec:DesignImplementation:ScroingFunctions} -Scoring functions are implemented in a modular fashion. There are different types of scoring functions. Some are meant for evaluating user preferences (and inherit from the class \emph{PreferenceScoringFunction}), others are meant for penalising changes in the current configuration state and therefore inherit from \emph{ConfigurationPenalty}. The last type of scoring function is a composite scoring function that consists of one or multiple scoring functions and combines their scores to one. It uses the \emph{composite design pattern} \cite{gamma2015design}. These functions allow ´the flexible combination of functions and, in addition due to their underlying structure they can use similar components. For example, preference scoring functions use a \emph{pipeline} \cite{gamma2015design} to first convert preferences to a list of values. This is done using \emph{PreferenceToListFunction}. A list can be modified with a \emph{ListToListFunction}. This step is optional. The last mandatory step is to convert the list to a value using \emph{ListToValueFunction}. After this step, the value can be modified further, for example with a threshold function or any other function. All these components allow the easy and quick creation of new scoring functions. A scoring function factory is used to assemble a scoring function based on input parameters. This provides flexibility for quickly implementing new types of scoring functions. +\autoref{fig:DesignImplementation:ClassDiagramScoringFunctions}) shows a simplified class diagram for scoring functions which are implemented in a modular fashion. There are different types of scoring functions. Some are meant for evaluating user preferences (and inherit from the class \texttt{PreferenceScoringFunction}), others are meant for penalising changes in the current configuration state and therefore inherit from \texttt{ConfigurationPenalty}. The last type of scoring function is \texttt{ReduceScoringFunction} that consists of one or multiple scoring functions and combines their scores to one. It uses the \emph{composite design pattern} \cite{gamma2015design}. These functions allow ´the flexible combination of functions and, in addition due to their underlying structure they can use similar components. For example, preference scoring functions use a \emph{pipeline} \cite{gamma2015design} to first convert preferences to a list of values. This is done using \texttt{PreferenceToListFunction}. A list can be modified with a \texttt{ListToListFunction}. This step is optional. The last mandatory step is to convert the list to a value using \texttt{ListToValueFunction}. After this step, the value can be modified further, for example with a threshold function or any other function. All these components allow the easy and quick creation of new scoring functions. A factory (\texttt{ScoringFunctionFactory}) is used to assemble a scoring function based on input parameters. This provides flexibility for quickly implementing new types of scoring functions. -\todo[]{add class diagramm?} +\begin{figure} + \centering + \includegraphics[width=1\textwidth]{./figures/50_design_and_implementation/class_diagram_scoring_functions_simplified.pdf} + \caption[Class Diagram: Scoring Functions]{A simplified class diagram of the classes and interface related to scoring functions. } + \label{fig:DesignImplementation:ClassDiagramScoringFunctions} +\end{figure} \section{Technologies}