• No se han encontrado resultados

CAPÍTULO 3 DISEÑO DE LA ARQUITECTURA

3.6 VISTAS DE LA ARQUITECTURA E INTERFACES

3.6.4 Vistas De Componentes Y Conectores

3.6.4.1 Presentación Primaria

Figura 15 Diagrama de Componentes

3.6.4.2 Catálogo de Elementos

VLC: Este componente presta servicios para el manejo de archivos de vídeo de forma nativa. El componente reproductor hace uso extensivo de éste.

OpenCV37: Este componente presta servicios de visión artificial a las diferentes implementaciones de seguimiento de objetos.

ObjectTracking: Representa una instancia de un algoritmo de seguimiento de objetos.

PortabilityService: Este servicio define una clase abstracta encargada de solicitar la transformación de aplicaciones al servicio web del Transcodificador. Ver la guía de uso de la interfaz TranscoderWebService para mayor información numeral 3.6.6.2. Antes de hacer la invocación al servicio web hace uso del servicio de PCF para generar el diseño de la aplicación y garantizar que la aplicación exista en dicho archivo.

PicoContainer38: Es un contenedor que soporta el patrón de Inversión de Control. Administra las dependencias en tiempo de ejecución.

Transcodificador: Este componente es el encargado de la generación de aplicaciones. Su funcionalidad se expondrá mediante un servicio web llamado TranscoderWebService y esta descrito en la sección 3.6.6.2.

Aplicación Cliente: Este componente representa una aplicación ya finalizada y transmitida a un televidente o accedida por este, realizando peticiones para acceder a los recursos asociados a los objetos de la aplicación.

Para una descripción de los elementos no listados en esta sección consulte el catálogo de elementos de las vistas anteriores.

3.6.4.3 Guía de Variabilidad

Seguimiento de Objetos: El sistema permite la adición de diferentes algoritmos de seguimiento de objetos. Para facilitar dicha adición cada algoritmo deberá implementar la interfaz ObjectTracking. Interfaz que está documentada en la sección 3.6.6.1.

Acceso a Datos: Se podrá usar cualquier repositorio de datos, se deja libre a la implementación del modelo, por ejemplo se podría almacenar en archivos XML o

37

OpenCV. http://opencv.willowgarage.com/wiki/. Consultado: 10 Mayo 2012

38

en bases de datos relacionales. Lo importante es mantener el patrón DAO propuesto para que los clientes no accedan a los datos directamente.

PortabilityService: Las implementaciones concretas de esta clase corresponderán una a una con las plataformas de televisión implementadas en el Transcodificador. Cada plataforma en el Transcodificador deberá tener un código que será usado por los clientes para transformar sus diseños a esa plataforma.

Transcodificador: Existirán dos parámetros configurables en la herramienta de creación relacionados con el Transcodificador:

 El URL del Transcodificador a usar.

 Y el URL base del servidor web donde se alojarán los archivos PCF, TVA y

demás recursos del proyecto.

Servidor Web: La arquitectura no requiere de una implementación en particular de un servidor web. Este se deja a elección al momento de despliegue.

Número de Instancias: El número de instancias de la herramienta de creación, del Transcodificador y del servidor web es completamente variable. La estructura se puede acomodar a cualquier distribución dependiendo de las necesidades de uso.

3.6.4.4 Justificación

Inyección de Dependencias y PicoContainer: Como se definió en la vista de módulos la interacción entre las diferentes capas se da usando las interfaces del modelo y no implementaciones concretas. Por esta razón se hace necesario un mecanismo que permita en tiempo de ejecución gestionar las dependencias sin hacer invocaciones a implementaciones específicas. Dicho mecanismo se logra implementando el patrón de Inyección de Dependencias que es una forma de Inversión de Control (IoC).

PicoContainer es el contenedor de IoC escogido para gestionar las dependencias. Su selección se debe a que está libre de dependencias externas, es muy fácil de configurar y es muy liviano en comparación con otros contenedores como Spring39 y Google Guice40, que aunque más robustos no son indicados debido a que adicionarían un gran carga adicional para el escaso número de clases de la herramienta de creación.

OpenCV: Para mejorar el rendimiento y la usabilidad se buscaron métodos para el seguimiento de objetos debido a que permiten acelerar la selección de los mismos. En este referente se encontraron varias librerías de procesamiento matemático y de visión artificial, como Matlab41, SimpleCV42, VXL43, LTI44 y OpenCV entre otras.

OpenCV es la que ofrece mayores ventajas según comparaciones realizados por Bradski [62] y los desarrolladores de SimpleCV45.

OpenCV es una librería de visión artificial que contiene cientos de funciones para una amplia gama de áreas en el proceso de visión, como reconocimiento de objetos, calibración de cámaras, visión estereoscópica y visión robótica [62][63].

Se escogió esta librería por tres razones principales:

1 Es multiplataforma, contando con versiones para GNU/Linux, Mac y

Windows.

39

Spring Framework. http://www.springsource.org/spring-framework Consultado: Marzo 12 de 2012

40

Google-guice. http://code.google.com/p/google-guice/ Consultado: Marzo 12 de 2012

41

Matlab. http://www.mathworks.com/products/matlab/ Consultado: Marzo 12 de 2012

42

SimpleCV. http://simplecv.org/ Consultado: Marzo 12 de 2012

43

VXL. http://vxl.sourceforge.net/ Consultado: Marzo 12 de 2012

44

LTI. http://ltilib.sourceforge.net/doc/homepage/index.shtml Consultado: Marzo 12 de 2012

45

OpenCV vs. Matlab vs. SimpleCV. http://simplecv.tumblr.com/post/19307835766/opencv-vs-

matlab-vs-simplecv. Consultado: 10 Mayo de 2012.

2 Es libre, cuenta con una gran comunidad que constantemente hace aportes para su evolución.

3 Rendimiento, saca provecho de diferentes arquitecturas de procesamiento.

Invocación a Procedimientos Remotos: Se escogió el estilo RPC porque brinda un alto grado de interoperabilidad entre el Transcodificador y cualquier entidad interna o externa a la arquitectura. También da flexibilidad en términos de las plataformas de implementación de esas entidades.

Servidor Web: Se escogió utilizar un servidor web como medio para compartir datos o pasar parámetros entre la herramienta de creación y el Transcodificador debido a su facilidad de instalación y de puesta en marcha que no le agregan mayor complejidad a la arquitectura.

Número de Instancias: El estilo de cliente-servidor seleccionado combinado con otros factores mencionados anteriormente como el uso de RPC, aunque impacta desfavorablemente el rendimiento, lo que se obtiene en escalabilidad y la flexibilidad del sistema es de mayor valor para los objetivos de la arquitectura. Se pueden tener múltiples instancias de la herramienta de creación haciendo uso de un solo servidor web y un solo Transcodificador, o se pueden tener varios servidores web atendiendo a varios grupos de herramientas de creación y de Transcodificadores, entre otras variaciones.