BarkIDS (o solamente IDS) es una aplicación OSGi (las cuales se denominan "bundles") que proporciona al usuario un servicio de detección de intrusos basado en videcámaras digitales.
El sistema dispone de varias cámaras de vídeo conectadas a la pasarela doméstica, las cuales pueden ser cámaras locales o cámaras en red (network cameras). Existe un centro de control remoto (llamado IDSCC, IDS Control Center) que es el responsable de recibir las alarmas de intrusión cuando se detecta un movimiento en cualquiera de las cámaras. El centro de control también puede solicitar una imagen o un flujo de vídeo para ser recibido en el terminal de usuario (llamado MMID, Multimedia Mobile Information Device), que ha de poseer soporte para multimedia. Además el IDSCC puede solicitar información general sobre el estado de la aplicación así como configurar algunos parámetros de su ejecución.
La siguiente figura esboza la apariencia del sistema:

Analizando la visión del sistema dada, definimos seis casos de uso para la aplicación:

Como el lector puede deducir, el primer caso de uso se refiere al envío de la notificación de intrusión (que incluye: el nombre de la cámara originaria, la fecha completa del evento y una imagen en formato JPEG que muestra el momento de la detección del movimiento) al IDSCC.
El segundo caso de uso representa el establecimiento de llamada SIP y transmisión del vídeo sobre RTP al MMID.
El tercer caso de uso se da cuando el IDSCC solicita una imagen de una de las cámaras del sistema y el IDS se la envía en formato JPEG.
El siguiente caso de uso define una secuencia de inicialización entre el IDS y el IDSCC en la que el IDS (que previamente conoce la dirección del IDSCC) envía al IDSCC su dirección (URL) donde éste puede comunicarse con el primero, y el IDSCC responde enviando un identificador único asignado a este IDS.
El quinto caso de uso, incluído en la secuencia de inicialización del caso de uso anterior, representa una solicitud de información al IDS, que él responde con un array de cadenas de caracteres (strings) siguiendo un formato convenido.Por último, el sexto caso de uso considera la configuración remota del IDS desde el IDSCC. Tal y como se ha definido, se pueden configurar dos aspectos: el sonido de alarma (activado o desactivado) y el nivel de sensibilidad de detección (existen cuatro modos: NORMAL, RELAXED, PANIC and OFF).
Para la implementación de las comunicaciones entre el IDS y el IDSCC requeridas en todos los casos de uso excepto el segundo (CU2: Controlar llamada) se emplea tecnología de servicios web, AXIS concretamente. Para las comunicaciones entre el IDS y el MMID (o el IDSCC si éste actúa como proxy SIP) se emplea SIP como protocolo de señalización de llamada y RTP para la transmisión de vídeo. Para la parte de SIP se emplea JAIN-SIP con la implementación del NIST's y para la transmisión de vídeo sobre RTP, JMF.
El siguiente diagrama muestra las tecnologías empleadas:

BarkIDS está compuesto por cinco módulos:
El siguiente diagrama UML muestra las principales relaciones entre los módulos, mostrando los paquetes Java contenidos en cada uno:
Cuando se detecta un movimiento en el módulo de detección (primer caso de uso), éste envía un evento de detección al módulo principal para que este último pueda reproducir el sonido de alerta utilizando el módulo de sonido y avisar al IDSCC por medio del módulo de webservices (parte cliente).
Si el IDSCC solicita una imagen de una cámara (tercer caso de uso), información acerca de su estado general (quinto caso de uso) o desea configurar la aplicación en general (sexto caso de uso), el módulo principal recibirá la correspondiente solicitud desde el módulo de webservices (parte servidora) y la procesará a fin de que el módulo de webservices pueda retornar la información solicitada o el resultado de la configuración realizada.
Cuando un MMID comienza una llamada SIP (segundo caso de uso), el módulo de llamada multimedia la procesa y envía un flujo RTP que contiene el vídeo de la cámara seleccionada, utilizando el módulo principal para acceder a ella.
Respecto al cuarto caso de uso, define una secuencia de inicialización entre la aplicación (IDS) y el centro de control (IDSCC) que debe realizarse cuando el IDS se pone en funcionamiento. Dicha secuencia se inicia desde el módulo principal y emplea el módulo de webservices (parte cliente) para comunicarse con el IDSCC.
El diagrama UML de clases con todas las clases de la aplicación tiene este aspecto:
El diseño completo de la aplicación puede encontrarse en el quinto capítulo de la memoria del proyecto.
El funcionamiento de BarkIDS depende de otros tres bundles OSGi:
El siguiente diagrama de despliegue muestra los bundles y sus dependencias, así como los paquetes contenidos:
