\label{doc_usecases_kdb_UC_validate_config_md_md_doc_usecases_kdb_UC_validate_config}%
\Hypertarget{doc_usecases_kdb_UC_validate_config_md_md_doc_usecases_kdb_UC_validate_config}%
 \hypertarget{doc_usecases_kdb_UC_validate_config_md_autotoc_md4660}{}\doxysection{Summary}\label{doc_usecases_kdb_UC_validate_config_md_autotoc_md4660}

\begin{DoxyItemize}
\item {\bfseries{Scope\+:}} {\ttfamily libelektra-\/kdb}, {\ttfamily spec}
\item {\bfseries{Level\+:}} Developer Goal, User Goal
\item {\bfseries{Actors\+:}} Elektra, Application, User
\item {\bfseries{Brief\+:}} After loading configuration, Application can assume the configuration is valid
\end{DoxyItemize}\hypertarget{doc_usecases_kdb_UC_validate_config_md_autotoc_md4661}{}\doxysection{Scenarios}\label{doc_usecases_kdb_UC_validate_config_md_autotoc_md4661}

\begin{DoxyItemize}
\item {\bfseries{Precondition\+:}}
\begin{DoxyItemize}
\item A specification, defining how a valid configuration for Application looks like, exists.
\end{DoxyItemize}
\item {\bfseries{Main success scenario\+:}}
\begin{DoxyItemize}
\item \mbox{\hyperlink{doc_usecases_kdb_UC_get_config_md}{Application loads configuration}} During this process Elektra checks the configuration against the specification.
\item Loading configuration results in no errors or warnings.
\item Application knows configuration is valid.
\end{DoxyItemize}
\item {\bfseries{Alternative scenario\+:}}
\begin{DoxyItemize}
\item User requests to change configuration value via \mbox{\hyperlink{doc_usecases_kdb_UC_set_config_md}{Application (e.g. \`{}kdb\`{}) stores configuration}}. During this process Elektra checks the changed configuration against the specification.
\item Elektra blocks the modification, if it violates the specification.
\end{DoxyItemize}
\item {\bfseries{Error scenario\+:}}
\begin{DoxyItemize}
\item \mbox{\hyperlink{doc_usecases_kdb_UC_get_config_md}{Application loads configuration}} During this process Elektra checks the configuration against the specification.
\item Loading configuration results in an error or warning.
\item If a configuration is returned at all, Application knows the configuration may not be fully valid and can react accordingly.
\end{DoxyItemize}
\item {\bfseries{Postcondition\+:}}
\begin{DoxyItemize}
\item Configuration stored in the KDB and modified only via Elektra MUST be valid according to the specification.
\item Configuration loaded by an application {\itshape without} error or warning MUST be valid according to the specification.
\item Configuration loaded by an application {\itshape with} error or warning MUST be valid according to the specification, except where an error or warning indicates otherwise.
\end{DoxyItemize}
\item {\bfseries{Non-\/functional Constraints\+:}}
\begin{DoxyItemize}
\item Because validation happens during \mbox{\hyperlink{doc_usecases_kdb_UC_get_config_md}{Application loads configuration}}, it MUST also be reasonably performant. Results MAY be cached to achieve this performance.
\item Fixing an invalid configuration via Elektra MUST be possible. This SHOULD NOT require more changes than necessary, i.\+e., fixing invalid configuration MUST NOT be equivalent to \char`\"{}delete everything and start again\char`\"{}. 
\end{DoxyItemize}
\end{DoxyItemize}