<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\chapter{Diseño e Implementación de {\it Efficiency Guardian}}
\label{sec:DisenyoImplementacion}
En este capítulo se explicará el diseño del sistema y el proceso de implementación.


\section{Diseño Arquitectónico}
% - dos modedos de ejecucion: implicito y explicito
% Ambas ejecuciones:
% 	- Efficiency data extractor (DataCollector)
% 		- recoge datos de eficiencia
% 		- calcula el coste	
% 	- Efficiency data exporter
%		- Modulo de connexion al web service (Efficiency data exporter)
% 	- Efficiency data logger
% 		- web service de mantenimiento datos históricos 
%- explicito 
% 	- el usuario  lanza el efficiency data exporter
% 	- visualizacion por shell
% 	- configurar referencia 
% 		- online --&gt; servidor
% 		- offline --&gt; tomar como referencia la ultima ejecución
%	- el usuario  lanza el efficiency Guardian
%	- usuario -&gt; EG : codigo 
%	- EG -&gt; usuario: listado de cambios por consola
%
%- implicito 
% 	- debe integrarse en testfarm
% 			- CVS -&gt; TestFarm : Ultimo commit
% 			- TestFarm -&gt; EG: codigo
% 	- conexión web service
%	- EG -&gt; Web TestFarm: alarmas
% 	- Efficiency Data Explorer (WebApp)
% 		-  Muestra listado de de tests
% 		-  Muestra progresión de eficiencia de los tests
% 		-  Avisa de alteraciones de eficiencia importantes
%	- efficiency guardian lanza el ultimo commit del codigo de forma ajena al usuario
El sistema tiene dos modos de ejecución: Ejecución explícita y ejecución implícita.
Antes de pasar a dar una visión general del funcionamiento de cada ejecución,
es apropiado introducir dos conceptos:

\begin{itemize}
\item {\bf Efficiency data extractor:}
Conjunto de scripts que obtienen datos de eficiencia a partir de los ejecutables del código. 
\item {\bf Efficiency data logger:}
servidor para el mantenimiento de datos históricos.
El historial puede ser tanto la base de datos
como una carpeta donde se ubican todos los ficheros generados en el {\it Efficiency data Extractor}.
\end{itemize}

\paragraph{Ejecución explícita}

El usuario será el encargado de lanzar el {\it Efficiency data extractor}
pasando como parámetro la compilación del código al {\it Efficiency Guardian} 
(como se muestra en la figura \ref{fig:ExplicitDeployment}).
 
La visualización de resultados se realizará mediante una consola
y se mostrarán los tests cuya eficiencia se ha modificado respecto la ejecución de referencia.
La ejecución de referencia por defecto es la primera ejecución.
Sin embargo el usuario puede configurar la referencia en dos modos: offline y online.
en modo offline, la referencia pasará a ser los resultados obtenidos en la última ejecución.
vía online, el usuario se conectará al servidor donde se mantiene el historial 
y descargará el fichero de la ejecución que crea conveniente
para que pase a ser la nueva referencia.

\begin{figure}[!ht] 
	\centering
	\fbox{\pdfimage width 6in {Imagenes/implicitDeployment.pdf}}
	\caption{Ejecución explícita} 
	\label{fig:ExplicitDeployment}
\end{figure} 


\paragraph{Ejecución implícita}

El lanzamiento de {\it Efficiency data extractor} se realiza a partir del último commit realizado en el repositorio de control de versión.
Como se observa en la figura \ref{fig:ImplicitDeployment},
{\it Efficiency Guardian} se integra dentro de un cliente {\it testfarm},
que será el encargado de detectar los commits realizados e iniciar la ejecución de nuestro software.

A parte de ver las alarmas en la interfaz  de {\it testfarm},
El usuario podrá ver los resultados específicos de la ejecución
a partir de una aplicación web que explotará los datos históricos de eficiencia.
{\it Efficiency Data Explorer} (que es como identificaremos a la aplicación web)
Muestra el listado de tests ordenados por la variación de eficiencia respecto a los valores de referencia,
otro listado con las alarmas generadas en la última ejecución
y una representación gráfica de cada test donde se indica la progresión de eficiencia de éste.

Para que {\it Efficiency Data Explorer} tenga acceso al historial,
requerirá conectarse al servidor donde se almacena el historial de datos,
El módulo de conexión se conocerá como {\it Efficiency data exporter}.

\begin{figure}[!ht] 
	\centering
	\fbox{\pdfimage width 6in {Imagenes/ExplicitDeployment.pdf}}
	\caption{Ejecución implícita} 
	\label{fig:ImplicitDeployment}
\end{figure} </pre></body></html>