Академический Документы
Профессиональный Документы
Культура Документы
________________________
Firma Tutor
Dedicatoria
Agradecimiento
A mi tutora la Ing. Gladis Benítez por su paciencia y toda la ayuda que me
brindo para concluir este trabajo.
Ingeniería en Informática
Trabajo Final: SysCam
Contenido
1 - Título del proyecto y descripción del problema ...................................................................... 4
Título: Prototipo de sistema de vigilancia doméstico con aviso de intrusos a través de
SMS. ....................................................................................................................................... 4
2 - Objetivos y metas. .................................................................................................................... 4
2.1 - Objetivo general: ........................................................................................................... 4
2.2 - Objetivos específicos:.................................................................................................... 4
2.3 - Alcance del prototipo .................................................................................................... 4
3 - Antecedentes ........................................................................................................................... 5
3.1 - Circuito cerrado de televisión: ...................................................................................... 5
3.2 - Cámaras IP:.................................................................................................................... 6
3.3 - Empresas de seguridad privada: ................................................................................... 7
4 - Justificación .............................................................................................................................. 7
5 - Marco Teórico .......................................................................................................................... 7
5.1 - Aplicación de escritorio ......................................................................................................... 7
5.2 - Computadora ........................................................................................................................ 7
5.3 - Cámara Web .......................................................................................................................... 8
5.4 - Sistema operativo: ................................................................................................................ 8
5.4.1 - Tipos de Sistemas Operativos ........................................................................................ 9
5.5 - Herramientas de desarrollo .................................................................................................. 9
5.6 - Programación por capas ....................................................................................................... 9
5.7 - Servicio de mensajes simples (SMS) ................................................................................... 10
5.8 - Ado.Net ............................................................................................................................... 10
5.9 - Access .................................................................................................................................. 12
5.10 - Librerías ............................................................................................................................. 14
5.10.1 - AForge.NET:................................................................................................................ 14
5.11 - Pruebas de Aceptación...................................................................................................... 19
5.12 - Metodologías Ágiles ...................................................................................................... 19
5.13 - Gateway SMS .................................................................................................................... 28
6 - Metodología ........................................................................................................................... 28
6.1 - SPRINT 0: ......................................................................................................................... 29
6.1.1 - Definición de los roles: ............................................................................................. 29
6.1.2 - Tipo de Usuario: ....................................................................................................... 29
6.1.3 - Definición de la pila del producto: ........................................................................... 29
6.1.4 - Historias de usuario: ................................................................................................ 29
6.1.5 – Diagrama de Clase del Prototipo ............................................................................. 30
Bibliografía .................................................................................................................................. 83
Anexo .......................................................................................................................................... 86
Diseño de la Base de datos ..................................................................................................... 86
Otras librerías existentes para la detección de Movimiento .................................................. 87
AccessDatabaseEngine ............................................................................................................ 87
En la mayoría de los casos, las personas sienten inseguridad e incertidumbre cuando dejan solos
sus hogares, ya que no tienen ninguna forma de saber si fue objeto de un robo, un asalto, o un
ingreso no autorizado que signifique un atentado a la seguridad de las personas y a sus bienes.
Existe una gran variedad sistemas de seguridad, algunos de ellos están compuestos por cámaras
de vigilancia o simplemente por una alarma, los que al detectar la presencia de intrusos accionan
la alarma ya sea sonora, un mensaje o llamadas, para dar conocimiento a las personas que
correspondan. Si bien, cualquiera de estos sistemas de seguridad alerta sobre cualquier
ocurrencia que suceda en las propiedades, estos tienen en la actualidad un “costo elevado”, ya
que el servicio es brindado por las empresas de seguridad privada.
Con la utilización del prototipo se pretende generar confianza y seguridad cuando las personas
dejan sus hogares o negocios para realizar sus actividades cotidianas.
2 - Objetivos y metas.
2.1 - Objetivo general:
Desarrollar un prototipo de sistema de vigilancia doméstico con aviso de intrusos.
Interfaz con las funcionalidades básicas para la interacción del usuario con el prototipo.
Grabación de video al detectar movimiento a través de la cámara web.
Limitaciones:
3 - Antecedentes
Existen diversos sistemas de seguridad como ser:
Hoy en día se utiliza un CCTV denominado DVR (grabador de vídeo digital). (SeguridadSOS, s.f.).
Un DVR es un equipo especializado diseñado para trabajar con cámaras de seguridad, su función
es capturar lo que la cámara ve y enviarla al disco duro del dvr en formato digital, la compresión
de los equipos dvr pueden ser muchas, pero hoy en día la más utilizada en H.264. El dvr puede
ser configurado para que grabe por sensor de movimiento, grabación por semanas, por días,
grabación 24 horas. (PCLite, s.f.)
Una bondad de los sistemas DVR actuales es la posibilidad de poder visualizar de manera remota
todas las cámaras. Para poder lograr esto es necesario realizar una sencilla configuración tanto
en el DVR como en el enrutador de la casa u oficina.
Cuando se habla de NVR y NDVR, se debe aclarar: un NVR no es más que un DVR IP, y llamamos
NDVR a los DVR Híbridos que combinan varias tecnologías.
Algo muy importante es que, a diferencia de cualquier otro tipo de cámara, las cámaras ip no
necesitan estar conectadas a una computadora ni dependen de ella, son totalmente
independientes y autoadministrables, lo cual incrementa aún más su funcionalidad” (Ipcamaras,
s.f.).
Las cámaras IP se pueden instalar en cualquier sitio que disponga de conexión a Internet
mediante, o computador en caso que usted quiera ver o grabar en el lugar de la instalación.
1.- Panel trasero: suministra la energía eléctrica al dispositivo y cuenta con un puerto RJ45
para conectividad por medio de cable UTP.
3.- Base giratoria horizontal: lo integran los modelos que permiten movimiento remoto de
la cámara.
4.- Brazo giratorio vertical: lo integran los modelos que permiten movimiento remoto de la
cámara.
5.- Visor digital: se encarga de captar las imágenes a transmitir, la mayor parte de las
cámaras IP ya cuentan con visión nocturna por medio de tecnología LED Infrarrojo.
6. - LED Ir: permiten visualizar en la oscuridad con luz infrarroja.
7. - Micrófono: se encarga de grabar el audio.
4 - Justificación
Debido a la inseguridad que se registra hoy en día, podemos decir, de acuerdo a datos
estadísticos que se presentan 1066 casos de delitos contra las propiedades cada 100.000
habitantes. (Nación, 2016). La intrusión y robos a las propiedades siguen representando más de
la mitad de los delitos.
Lo que se busca es contribuir mediante una herramienta, la disminución de los delitos contra la
propiedad, desarrollando un prototipo de sistema de seguridad doméstico con aviso de intrusos
al detectar movimiento dentro de un determinado ángulo de visión, que esté monitoreado por
una cámara web. Además se pretende contribuir con una alternativa mucho más eficaz y más
confiable, para que las personas se sientan respaldadas con una herramienta de seguridad que
los alerte sobre estos eventos, enviando notificaciones en forma de SMS. Al detectar
movimiento se iniciará la captura automática de imágenes en forma de grabación de video. Este
será de bajo costo, de fácil acceso y de tal manera que con una cámara web existente en el
mercado se pueda tener un sistema de seguridad propio. Con este prototipo se trata de
conseguir que los dueños de las propiedades puedan estar informados en el caso de que ocurra
una intrusión en las mismas.
5 - Marco Teórico
Este proyecto tiene por objeto desarrollar un prototipo de una aplicación de escritorio de un
sistema de seguridad con detección de movimiento.
Ventaja de este programa será la rapidez de uso ya que podremos incorporar todos los
controles de escritorio y todos los eventos asociados a ellos.
Desventaja es la portabilidad ya que, si lo implementamos para un entorno de
computadora, solo en equipos de ese tipo funcionará y no podremos usarla en una
Tablet o un teléfono.
5.2 - Computadora
Para que la aplicación pueda funcionar se necesita una computadora, la cual es según
Informática&Tecnología (2018):
Cámara Web: es un dispositivo que se conecta al puerto USB de la computadora, y así permite
captar video y tomar fotos digitales. Las posibilidades que brinda este dispositivo hacen que la
webcam sea ampliamente utilizada por todo tipo de usuarios y para diferentes propósitos.
(YSALIDA, 2017).
La luz de la imagen pasa por la lente, esta se refleja en un filtro RGB (Red-Green-Blue), el cuál
descompone la luz en tres colores básicos: rojo, verde y azul.
Esta división de rayos se concentra en un chip sensible a la luz denominado CCD ("Charged
Coupled Device"), el cuál asigna valores binarios a cada píxel y envía los datos digitales para su
codificación en video y posterior almacenamiento o transmisión.
Existen muchos enfoques posibles para este estilo, pero el más común es la programación de 3
capas. Según Gutiérrez (2014) las 3 capas se definen como:
Capa de negocios: Es donde se reciben las peticiones del usuario (capa de presentación)
y se envían las respuestas tras el proceso. Recibe este nombre o también lógica de
negocios, porque aquí se establecen todas las reglas que se deben cumplir. Se comunica
con la capa de presentación para recibir solicitudes y presentar resultados y con la capa
de datos para almacenar o solicitar datos.
Capa de datos: Es la encargada del almacenado de los datos y la recuperación de los
mismos. Está compuesta por uno o más gestores de bases de datos. Se comunica
únicamente con la capa de negocios para recibir las peticiones de almacenaje o
recuperación de datos.
SMS es una cadena alfanumérica de hasta 140 caracteres o de 1603 caracteres de 7 bits, y cuyo
encapsulado incluye una serie de parámetros. En principio, se emplean para enviar y recibir
mensajes de texto normal, pero existen extensiones del protocolo básico que permiten incluir
otros tipos de contenido, dar formato a los mensajes o encadenar varios mensajes de texto para
permitir mayor longitud.
5.8 - Ado.Net
ADO .NET es un conjunto de clases que pueden ser usados para interactuar con orígenes de
datos, como por ejemplo una base de datos, archivos XML, archivos Excel, etc.
ADO .NET es una tecnología de acceso a datos del marco de trabajo Microsoft .NET que
proporciona comunicación entre sistemas relacionales y no relacionales por medio de un
conjunto común de componentes.
ADO .NET a veces es considerado una evolución de la tecnología ActiveX Data Objects (ADO),
pero en realidad es un producto completamente nuevo. ADO .NET puede ser usado en
aplicaciones web, en aplicaciones para escritorio y en aplicaciones de consola. (Velásquez, s.f.)
o Abrir la conexión
o Ejecutar los comandos
o Cerrar la conexión
Datasource, funciona como un puente entre una fuente de datos y una clase de datos
desconectada, como un DataSet.
5.9 - Access
Microsoft Access es una de las aplicaciones que vienen incluidas en la suite ofimática Microsoft
Office en su versión profesional. Y es una de esas aplicaciones que por desconocimiento la
mayoría de las veces nunca abrimos.
Es un sistema manejador de base de datos. Una base de datos permite manipular información
organizada y optimizada para reducir el espacio que ocupan los datos y permiten la consulta ágil
y eficiente de la información. En el caso de Access, es un manejador de bases de datos relacional.
La información se organiza en tablas. Entre las tablas se establecen relaciones que permiten unir
tablas. Es posible crear consultas sencillas o complejas para ver información. Con Microsoft
Access puede crear una base de datos, modificar su estructura, actualizar la información
presente. Además, puede hacer consultas muy eficientes que le permiten accesar a la
información que cumple con determinadas condiciones.
Con Microsoft Access también puede tener acceso a información almacenada en fuentes de
datos externas, por ejemplo, bases de datos creadas en otros manejadores de bases de datos o
información almacenada en Microsoft Excel. La información almacenada en una base de datos
de Access también puede ser accedida por otras aplicaciones o programas.
Los usuarios de Microsoft Access tienen a disposición el lenguaje SQL (Structured Query
Languaje), el cual brinda comandos que permiten acceder a la información de múltiples formas.
Fácilmente puede ver la información organizada por diferentes criterios. Puede adicionar
registros o eliminar registros. (MisApuntesSistemas, 2012)
Tablas
Es la forma más simple, en ellas almacenamos los datos de forma estructurada. (Angel, 2012)
Ilustración 5 – Tabla
Fuente: Angel (2012)
Consultas
De las tablas, si queremos, podemos extraer información filtrada según nuestras necesidades,
actualizar datos concretos, o eliminar ciertos registros que cumplan una determinada condición.
Para todo y mucho más se usan las consultas. (Angel, 2012)
Ilustración 6 – Consulta
Fuente: Angel (2012)
Formularios
Esta es la parte más amigable de nuestra base de datos. Usamos los formularios para trabajar
con la base de datos, estos están vinculados a las tablas y nos ofrecen una forma más práctica y
estética, según el gusto y el empeño que le ponga el usuario, para trabajar con la información.
(Angel, 2012)
Microsoft Access nos proporciona herramientas suficientes para incluir textos, botones,
imágenes y muchas más cosas, además de ofrecernos plantillas y temas que nos cambian todos
los colores y tipos de letras de nuestros formularios con apenas unos clics. (Angel, 2012)
Informes
Como máximo exponente tenemos los informes que podemos configurar a nuestro gusto y
antojo, con los datos que nos apetezca, colores, gráficas y posición de los mismos según nos
plazca. (Angel, 2012)
Ilustración 8 – Reporte
Fuente: Angel (2012)
5.10 - Librerías
Existen varias librerías para la detección de movimiento, para la realización de este prototipo se
utilizará:
5.10.1 - AForge.NET:
El autor de esta librería es Andrew Kirillov, esta librería nos permite realizar toda clase de
operaciones, desde un sencillo cambio de color a blanco y negro a una imagen. “Es un framework
de código abierto de C# diseñado para desarrolladores e investigadores en los campos de Visión
Está compuesto por el conjunto de bibliotecas y aplicaciones de muestra, que demuestran sus
características, según Aforge (2018) esta son:
Visión Computacional:
La visión computacional trata de emular en las computadoras la capacidad que tienen nuestros
ojos. Es decir, trata de interpretar las imágenes recibidas por dispositivos como cámaras y
reconocer los objetos, ambiente y posición en el espacio. (Loyo, s.f.)
AForge.Vision
Según Aforge (2018) es una bbiblioteca para el desarrollo de visión computacional, utilizando
la detección de movimiento y el procesamiento de secuencias de fotogramas de video.
AForge.Vision.Motion
Conceptos generales
Debido a que este prototipo se utilizara en el campo de la visión computacional, es necesario
introducir algunos de los elementos básicos el procesamiento de imágenes. Quispe Aduviri
(2013) afirma que estos conceptos son:
Imágenes Bitmaps
Las imágenes en mapa de bits se las suele definir por su altura y anchura (en píxeles) y por su
profundidad de color (en bits por píxel), creando una gran cantidad de cuadritos rellenos de un
color uniforme, dando una sensación visual de integración en la retina, por la luminosidad entre
pixeles vecinos. Las imágenes bitmaps no permiten el cambio de escala.
Imagen Estática
Imagen Dinámica
La resolución de una imagen es la cantidad de píxeles que la componen. Suele medirse en píxeles
por pulgada (ppi) o píxeles por centímetro (pcm). Cuanto mayor es la resolución de una imagen
más calidad tendrá su presentación, pero desgraciadamente, más espacio ocupará en el disco el
archivo gráfico que la contiene.
FPS de video
Las FPS también conocido como cuadros por segundo, son frames por segundo, ósea las
imágenes que captura la cámara en cada segundo. Si grabas a 60fps el vídeo está compuesto
por 60 "fotos" por unidad de tiempo. En cambio, si grabas a 30, sólo son 30 fotos.
El término se aplica por igual a películas y cámaras de vídeo, gráficos por computadora y
sistemas de captura de movimiento.
Es el detector más simple y rápido. Se basa en encontrar la diferencia entre dos fotogramas
consecutivos. Cuanto mayor es la diferencia, mayor es el nivel de movimiento (Aforge, s.f.). Este
detector no es recomendado para resaltar objetos en movimiento, pero sí cuando solo se
necesita detectar si sólo hay movimiento o no. En la imagen se puede apreciarse en rojo, la
diferencia que se produce entre dos fotogramas consecutivos con una persona desplazándose
de izquierda a derecha.
Según Aforge (s.f.): a diferencia del detector de movimiento mencionado anteriormente, este
detector de movimiento se basa en encontrar la diferencia entre el cuadro de video actual y un
cuadro que representa el fondo. Este detector de movimiento intenta usar técnicas simples para
modelar el fondo de la escena y actualizarlo a lo largo del tiempo para tener en cuenta los
cambios de la escena. La función de modelado de fondo de este detector de movimiento brinda
la capacidad de resaltar de manera más precisa las regiones de movimiento.
AForge.Video
Según Aforgenet (2018) la biblioteca AForge.Video contiene diferentes clases, que proporcionan
acceso a datos de video. Es bueno tener en cuenta la cantidad de material de procesamiento de
imágenes en el marco.
Proporciona clases para acceder a cámaras web USB y archivos de video utilizando DirectShow
API. Dado que todas las clases implementan una interfaz común, acceder a la cámara USB es tan
fácil como acceder a archivos de video o flujos JPEG / MJPEG.
Acceso a las transmisiones JPEG y MJPEG, que permite el acceso a cámaras IP;
Acceso a cámaras web USB, dispositivos de captura y archivos de video a través de la
interfaz DirectShow.
DirectShow:
Es un conjunto de interfaces que proporcionan un API genérico con el que se puede capturar y
reproducir audio y vídeo sin importar la marca o modelo de cámara que utilicemos. También
permite la grabación y reproducción de archivos en cualquier formato. (Kusztrich, 2016)
DirectShow está diseñado para C++. Microsoft no proporciona una API administrada para
DirectShow. (Microsoft, 2018)
Según Gutl (2014) es una colección de software libre que puede grabar, convertir
(transcodificar) y hacer streaming de audio y vídeo. Incluye libavcodec, una biblioteca
de códecs. FFmpeg está desarrollado en GNU/Linux, pero puede ser compilado en la mayoría de
los sistemas operativos, incluyendo Windows.
Si el software se desarrolla como un producto que va a ser usado por muchos clientes, no es
práctico realizar pruebas de aceptación formales con cada uno de ellos. La mayoría de los
constructores de productos de software usan un proceso llamado prueba alfa y prueba beta
para descubrir errores que al parecer sólo el usuario final es capaz de encontrar.
La prueba alfa se lleva a cabo en el sitio del desarrollador por un grupo representativo de
usuarios finales. El software se usa en un escenario natural con el desarrollador “mirando sobre
el hombro” de los usuarios y registrando los errores y problemas de uso. Las pruebas alfa se
realizan en un ambiente controlado.
La prueba beta se realiza en uno o más sitios del usuario final. A diferencia de la prueba alfa, por
lo general el desarrollador no está presente. Por tanto, la prueba beta es una aplicación “en
vivo” del software en un ambiente que no puede controlar el desarrollador. El cliente registra
todos los problemas (reales o imaginarios) que se encuentran durante la prueba beta y los
reporta al desarrollador periódicamente. Como resultado de los problemas reportados durante
las pruebas beta, es posible hacer modificaciones y luego preparar la liberación del producto de
software a toda la base de clientes.
En ocasiones se realiza una variación de la prueba beta, llamada prueba de aceptación del
cliente, cuando el software se entrega a un cliente bajo contrato. El cliente realiza una serie de
pruebas específicas con la intención de descubrir errores antes de aceptar el software del
desarrollador.
Si bien existen otras metodologías llamadas clásicas o tradicionales (como ser cascada, RUP,
Espiral). Estas tienen ciertas desventajas con respecto a las metodologías agiles, como la
resistencia a ciertos cambios repentinos, proceso mucho más controlado con numerosas
políticas/normas, gran cantidad de documentación, entre otros. Debido a esto es que para el
desarrollo del prototipo se optó por una metodología ágil
Programación Extrema XP
Según Yolanda (2013): XP es una metodología ágil para el desarrollo de software y consiste
básicamente en ajustarse estrictamente a una serie de reglas que se centran en las necesidades
del cliente para lograr un producto de buena calidad en poco tiempo, centrada en potenciar las
relaciones interpersonales como clave para el éxito del desarrollo de software.
La filosofía de XP es satisfacer al completo las necesidades del cliente, por eso lo integra como
una parte más del equipo de desarrollo.
Roles en XP
Exploración
Planificación de la Entrega (Release)
Iteraciones
Producción
Mantenimiento
Muerte del Proyecto.
Fase I: Exploración
En esta fase, los clientes plantean a grandes rasgos las Historias de Uuario que son de interés
para la primera entrega del producto. Al mismo tiempo el equipo de desarrollo se familiariza
Fase V: Mantenimiento
Mientras la primera versión se encuentra en producción, el proyecto XP debe mantener el
sistema en funcionamiento al mismo tiempo que desarrolla nuevas iteraciones. Para realizar
esto se requiere de tareas de soporte para el cliente. De esta forma, la velocidad de desarrollo
puede bajar después de la puesta del sistema en producción. La fase de mantenimiento puede
requerir nuevo personal dentro del equipo y cambios en su estructura.
Scrum
Fase de Planificación:
Planeación: se define el equipo, herramientas, el sistema de desarrollo y se crea el
product backlog con la lista de requerimientos conocidos junto con sus prioridades y se
estima el esfuerzo necesario para llevarlo a cabo.
Diseño Arquitectónico: se define la arquitectura del producto que permita implementar
los requerimientos.
Fase de Desarrollo: es la parte ágil, donde el sistema se desarrolla en Sprints.
Roles en el proyecto:
- Scrum Master: es el responsable que se cumplan las practicas del Scrum y que la velocidad
del equipo no se vea frenada por problemas en el proceso ágil y de que los problemas,
obstáculos, impedimentos se resuelvan. Ayuda a los miembros del equipo a tomar
decisiones responsables y los asesora en todas las maneras posibles para que alcancen sus
objetivos.
- Equipo de Desarrollo (Team): grupo o grupos que desarrollan el trabajo (son los que
desarrollan el software, poseen las capacidades técnicas para fabricar el producto).
- Propietario del producto (Product Owner): El propietario del producto (product owner)
es quien toma las decisiones del cliente. Su responsabilidad es el valor del producto.
(Manager, 2016)
Artefactos:
- Pila del producto (product backlog): Listado de requerimientos priorizados, público a todo
el equipo del proyecto e interesados y frecuentemente actualizado. Cada funcionalidad de
la pila del producto se refiere a funcionalidades entregables, no a trabajos internos del
tipo, por ejemplo: “diseño de la base de datos”.
Priorización
La prioridad de la pila del producto está dada por las funcionalidades más urgentes que debe
contener la versión requerida por el propietario del producto, refinadas por el Scrum Team. La
escala de prioridad se realizará de la siguiente manera:
ID Descripción
Está definida para aquellos requerimientos
necesarios para obtener las principales
Alta 3 funcionalidades del sistema esbozadas por los
requerimientos del usuario
- Pila del sprint (sprint backlog): “lista de los trabajos que debe realizar el equipo durante
el sprint para generar el incremento previsto (una parte completa y operativa del
producto)” (Manager, 2016).
- Incremento: “resultado de cada sprint” (Manager, 2016) (Puede decirse que es una parte
del producto realizada en un sprint, y potencialmente entregable: TERMINADA Y
PROBADA). (Manager, Scrum Manager I , 2015)
- Sprint: es una iteración de desarrollo.” Es el núcleo central que genera el pulso de avance
por tiempos prefijados (time boxing)” (Manager, 2016).
Según Manager (2015) en el siguiente esquema se ve la interacción entre Pila del producto,
pila del sprint, incremento y el sprint:
Ilustración 12 - Interacción Entre Pila del Producto, Pila del Sprint, Incremento y el Sprint
Fuente: Manager (2015)
Los dos primeros forman los requisitos del sistema (Pila del producto y Pila del sprint), y el
tercero (Incremento) es valor que se le entrega al cliente al final de cada sprint. Cada incremento
es una parte del producto completamente terminada y operativa. No se debe considerar como
incrementos: prototipos, módulos o subrutinas pendientes de pruebas o de integración.
Eventos
- Reunión de planificación del sprint: “es la reunión de trabajo previa al inicio de cada sprint
en la que se determina cual va a ser el objetivo del sprint y las tareas para llegar al objetivo”
(Manager, 2016) (Es decir se seleccionan actividades prioritarias y relacionadas y con la
restricción del tiempo existente, para que estas formen parte de la siguiente iteración).
- Reunión Scrum diario: “es una breve reunión diaria del equipo” (Manager, 2014), en la
que cada miembro responde a tres preguntas:
El trabajo realizado el día anterior
El que tiene previsto realizar
Cosas que puede necesitar o impedimentos que deben eliminarse para poder realizar el
trabajo.
Esta actividad se lleva a cabo todos los días y debe durar quince minutos o menos.
- Reunión de revisión del sprint: se realiza un análisis e inspección del incremento generado
y adaptación de la pila del producto si resulta necesario (es decir al final del sprint se
muestra a los clientes y al Dueño del Producto lo que ha terminado el equipo).
Historias de Usuario
Las historias de usuario son utilizadas en las metodologías ágiles para la especificación de
requisitos, son una descripción breve de una funcionalidad software tal y como la percibe el
usuario (Mike Cohn, 2004). Describen lo que el cliente o el usuario quiere que se implemente y
se escriben con una o dos frases utilizando el lenguaje común del usuario. Cada historia de
usuario debe ser limitada, esta debería poderse memorizar fácilmente y escribir sobre una
tarjeta o post-it. Poco antes de ser implementadas, estas van acompañadas de conversaciones
con los usuarios y la definición de las pruebas de validación asociadas. Como los cambios son
bienvenidos en agilidad, no vale la pena profundizar antes, ya que en el momento de la
implementación estas pueden haber cambiado desde que fueron escritas. Las pruebas permiten
al equipo, y luego al cliente o usuario, verificar que la historia ha sido completada.
Las historias de usuario se aplican en la mayoría de las metodologías ágiles, siendo así una
herramienta muy importante también en Scrum.
Número: Usuario: -
Nombre Historia de Usuario: -
Prioridad: -
Estimación: -
Responsable: -
Descripción: -
Los campos que se consideran más necesarios para describir de una manera adecuada las
historias de usuario son:
Aunque todas las historias de usuario puedan ser importantes, para poder focalizarnos en el
trabajo de forma eficiente, es necesario destacar aquellas que den mayor valor al sistema, por
tanto, las historias de usuario deben de estar priorizadas. Estas deben de tener asignadas un
valor que intervenga en el sistema de priorización, un valor asignado por el propietario del
producto.
Velocidad
Tiempo
Tiempo ideal se refiere sin embargo al tiempo de trabajo en condiciones ideales, esto es,
eliminando todo lo que no es estrictamente “trabajo”, suponiendo que no hay ninguna pausa
por interrupción o atención de cuestiones ajenas a la tarea y que la persona se encuentra en
buenas condiciones de concentración y disponibilidad.
Unidades de trabajo
Según Manager (2015) la gestión ágil se suele emplear “puntos” como unidad de trabajo,
empleando denominaciones como “puntos de historia” o simplemente “puntos”.
1 𝑝𝑢𝑛𝑡𝑜 𝑑𝑒 ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎
=
1 𝑗𝑜𝑟𝑛𝑎𝑑𝑎 𝑑𝑒 𝑡𝑟𝑎𝑏𝑎𝑗𝑜 𝑑𝑒 𝑢𝑛 𝑚𝑖𝑒𝑚𝑏𝑟𝑜 𝑑𝑒𝑙 𝑒𝑞𝑢𝑖𝑝𝑜 𝑒𝑛 𝑑𝑒𝑑𝑖𝑐𝑎𝑐𝑖𝑜𝑛 𝑒𝑥𝑐𝑙𝑢𝑠𝑖𝑣𝑎
Como tamaño relativo de tareas conocidas que normalmente emplea. Ej: El equipo de
un sistema de venta por internet, podría determinar que un “punto” representara el
tamaño que tiene un “listado de las facturas de un usuario”.
En base al tiempo ideal necesario para realizar el trabajo. Ej: Un equipo puede
determinar que un “punto” es el trabajo realizado en 4 horas ideales.
Gráfico de producto
Según Manager (2015) también se suele llamar a este gráfico con su nombre inglés: burn-down.
Lo actualiza el equipo en el scrum diario, para comprobar el ritmo de avance, y detectar desde
el primer momento si es el previsto, o por el contrario se puede ver comprometida o adelantada
la entrega prevista al final de sprint.
Ilustración 13 - Burn-down
Fuente: Manager (2015)
Se describe la Definición de Hecho (DoD) como una herramienta para aportar transparencia al
trabajo que el equipo Scrum está realizando. Se relaciona más con la calidad de un producto, en
lugar de su funcionalidad. El DoD es por lo general una lista clara y concisa de los requisitos que
un incremento de software debe adherir para que el equipo lo considere completo. Cuando esta
lista se satisface se produce recién un incremento (Schwaber, 2009). El equipo de trabajo
durante la planificación del sprint desarrolla o vuelve a confirmar su DoD. Además, un DoD
común ayuda a:
Debido a la necesidad de agregar calidad a nuestro proyecto de grado definimos esta breve lista
para el cierre de cada sprint. Cada historia de usuario hecha debe cumplir lo siguiente:
Estimación
Según Scrum Manager (s.f.) es una práctica ágil, para conducir las reuniones en las que se estima
el esfuerzo y la duración de tareas. James Grenning ideó este juego de planificación para evitar
discusiones dilatadas que no terminan de dar conclusiones concretas. El modelo inicial de
Grenning consta de 8 cartas, con los números representados en siguiente figura.
Cuando se considera que éste es mayor de x horas ideales (el tamaño máximo considerado por
el equipo para una historia), se levanta la carta “”. Las tareas que exceden el tamaño máximo
deben descomponerse en subtareas de menor tamaño. Cada equipo u organización puede
utilizar un juego de cartas con las numeraciones adecuadas a la unidad de esfuerzo con la que
trabajan, y el tamaño máximo de tarea o historia que se va a estimar.
Muchos operadores móviles se prestan como intermediarios fijos para enviar SMS. Estos están
basados en estándares acordes al European Telecommunications Standards Institute y el
sistema global para las comunicaciones móviles (GSM) para conceder el envío de mensajes en
cualquier dispositivo fijo y móvil. Estos utilizan la modulación por desplazamiento de frecuencia
para transferir el mensaje entre el terminal y el Central de Servicio de Mensajes Cortos (SMSC:
es un elemento de la red de telefonía móvil cuya función es de enviar/recibir mensajes de texto).
Dichos terminales utilizan su identificación por número telefónico basados en Digital Enhanced
Cordless Telecommunications.
También existe la posibilidad de enviar mensajes a partir de clientes de correo electrónico como
Microsoft Outlook o de forma manual. No obstante, los servicios pueden ser usados con fines
de phishing usando enlaces web.
6 - Metodología
Para el presente trabajo se seleccionó Scrum (el cual fue descripto en detalle 5.11 del Marco
Teórico). Por los siguientes aspectos que proporciona:
1. Desarrollo incremental, ya que con cada iteración se obtendrá un entregable funcional
para presentarle al usuario.
2. Ágil: La división del trabajo en pequeñas unidades funcionales (permite mantener una
política de entregas frecuentes de software que ofrecen una visión clara del estado del
proceso y permite la introducción de modificaciones.
3. Simple: facilita un desarrollo rápido, por lo que su complejidad (por ejemplo, desde el
punto de vista de la documentación a generar o de la organización de equipos) se reduce
al máximo.
4. Flexible: ya que permite introducir modificaciones para adaptar el prototipo conforme se
va descubriendo cosas que no se habían entendido bien o que no estaban bien definidas.
6.1 - SPRINT 0:
El sprint 0 es un sprint especial diferente a los demás donde se considera necesario definir en
el:
Ruta Usuarios
Prototipo - Id_Nivel: int
- Direccion: Char
- Id_Ruta: Integer - UserName: char
- TipoNivel: int
- UserPass: char
1 1
+ BuscarRuta() : Integer + BuscarNivelUsuario() : void 1 1
+ InsertarRuta() : void + AgregarUsuarios() : void
+ ControlarAcceso() : void
+ ModificarRuta() : void + BuscarUsuarios() : void
+ HabilitarOpciones() : void
+ EliminarUsuarios() : void
1 1 + ModificarUsuarios() : void
1 1
*
1 1 1
1
Reproduccion Alarma
Niv el
+ BuscarRuta() : void - Id: int
+ CargarGrabaciones() : void - Telefono: int - Id_Nivel: int
- Tipo: int
+ SeleccionarGrabacion() : void
+ InsertarNumero() : void
1 + MostrarNiveles() : void
+ ModificarNumero() : void
Deteccion Mov imiento
- Deteccion: char
Grabacion
+ DetenerDeteccion() : void 1 1
+ AlmacenarGrabacion() : void
+ EnviarSeñal() : void
+ DetenerGrabacion() : void
+ IniciarDeteccion() : void
+ EnviarAlarma() : void
+ GrabacionAutomatica() : void
1 𝑝𝑢𝑛𝑡𝑜 𝑑𝑒 ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎
=
1 𝑗𝑜𝑟𝑛𝑎𝑑𝑎 𝑑𝑒 𝑡𝑟𝑎𝑏𝑎𝑗𝑜 𝑑𝑒 𝑢𝑛 𝑚𝑖𝑒𝑚𝑏𝑟𝑜 𝑑𝑒𝑙 𝑒𝑞𝑢𝑖𝑝𝑜 𝑒𝑛 𝑑𝑒𝑑𝑖𝑐𝑎𝑐𝑖𝑜𝑛 𝑒𝑥𝑐𝑙𝑢𝑠𝑖𝑣𝑎
PUNTOS DE
DIA HORAS
HISTORIA
1 8 1
ID Descripción
Está definida para aquellos
requerimientos necesarios para
Alta 3 obtener las principales funcionalidades
del sistema esbozadas por los
requerimientos del usuario.
Son los requerimientos que le otorgan
ciertas características adicionales al
sistema pero que no interfieren con
sus funciones principales, pero aun así
Media 2
contribuyen a obtener un prototipo en
mayor medida seguro, con alta
disponibilidad, mayor rendimiento, y
con facilidad de uso.
Son aquellos que pueden estar o no y
que no interfieren en el sistema, como
Baja 1 ser el diseño de interfaz, normas de
calidad adicionales, pruebas
adicionales, etc.
A partir del cuadro anterior las historias de usuario quedan ordenadas por prioridad de la
siguiente manera:
6.1.10 - Herramientas
Para el desarrollo y el funcionamiento del prototipo se utilizarán las siguientes herramientas:
Lenguaje de programación: Visual Basic .Net
Base de datos: Access 2010 o AccessDatabaseEngine en el caso de no contar con access
2010 instalado.
Framework 3.5.
Plataforma: Windows (como mínimo Windows XP).
Requisitos de Hardware:
o PC Pentium 4 o Superior, 512 mínimo de RAM.
o Cámara web.
Velocidad de Trabajo
15 13
pesimista Estimada Optimo
10
Puntos Estimados
10
7
0
1 2 3 4 5 6 7 Dias 8 9 10 11 12 13 14
En el gráfico podemos ver los puntos de historias que se realizarán para las estimaciones:
pesimista, estimada y optimista.
A continuación, se definirá las historias de usuario que abarcará cada versión:
Al estimar la cantidad de iteraciones para completar todas las versiones, para las velocidades: la
pesimista, estimada y la optimista, como mínimo para completar todas versiones se necesitarán
3 iteraciones.
Cantidad de Días
Versiones Total Estimación Pesimista Estimada Optimista
1 10 20 14 11
2 7 12 6 5
3 10 20 14 13
Total Días 52 34 29
En el siguiente cuadro se presentan las fechas estimadas de entrega del producto para cada
versión. Con las cuales se podrá comparar más adelante las fechas de finalización reales de cada
versión. El cuadro contiene fechas de finalización de las velocidades pesimista, estimada y
optimista. Se iniciará el prototipo el día 05 de marzo de 2018.
Fecha
Inicio 05/03/2018
Versión Fecha entrega
Pesimista Estimada Optimista
1 02/04/2018 20/03/2018 19/03/2018
2 18/04/2018 28/03/2018 26/03/2018
3 17/05/2018 11/04/2018 08/04/2018
Esta grilla permite tener una estimación de las fechas de los entregables, por lo tanto, más
adelante se comparará estas fechas con las fechas de entrega reales.
En este Sprint se abordarán las historias de usuario HU3, HU4 y HU5, ya que son las de mayor
prioridad. En estas tres historias de usuario si bien tienen la misma prioridad, se abordará
primero a HU4 ya que las restantes tienen dependencia de esta. Luego HU5 y por último HU3.
En este gráfico se puede apreciar que al principio del Sprint las tareas se fueron desarrollando
de manera normal ya que las tareas de las historias de usuario de HU5 y HU4 se completaron en
su totalidad, mientras las tareas de HU3 no se llevaron a cabo ninguno de ellas.
Se puede ver que algunas tareas consumieron más tiempo de lo esperado, como se puede
apreciar en el gráfico.
6.2.3-Retrospectiva Sprint 1:
La principal dificultad que se presentó en este sprint 1, fue a la hora de utilizar una nueva librería
e integrarla para trabajar en conjunto con el lenguaje de programación. A la hora de la
codificación para la detección de movimiento se presentaron ciertos inconvenientes, ya que la
librería detectaba movimiento a través de la cámara web cuando no había movimiento, sin
embargo, este problema se logró solucionar.
Imagen a Imagen b
En la Imagen a podemos observar que no existe movimiento (imagen estática). Al detectar
movimiento en la Imagen a, se presentan líneas en color rojo indicando la detección de
movimiento (Imagen b).
Prueba de Aceptación
ID: 1 HU4: Detección de movimiento
Estado: Aceptada
Descripción: mediante la siguiente interfaz se trata de indicar si se detectó movimiento por
la cámara web en un ángulo que monitorea, cuando el usuario activa el sistema.
Resultados esperados:
Cuando no se detecte ningún movimiento hacia donde apunta la cámara solo se
visualizará la imagen estática.
Cuando se detecte movimiento en la imagen se presentarán unas líneas color rojo
indicando que se detectó movimiento.
Al detectar movimiento se enviará una notificación de SMS.
Prueba de Aceptación
ID: 2 HU5: Envío de Alertas
Estado: Aceptada
Descripción: al recibir la señal de la detección de movimiento se enviará una alerta en forma
de SMS.
Resultados esperados:
Enviar SMS alertando la detección de movimiento.
Sprint 1:
Requerimientos SI NO
¿Todas las historias de usuario seleccionadas fueron desarrolladas? X
¿Todas las pruebas de aceptación fueron aprobadas? X
Observaciones: No todas HU se pudieron llevar a cabo debido a que se
presentaron dificultades a la hora de llevar a cabo las HU4 y HU5. La HU que
no se pudo realizar se desarrollará en el siguiente Sprint.
Los resultados revisados satisfacen los requerimientos y son aceptados por el
propietario.
6.3 - Cálculo del nuevo valor del Factor de dedicación a partir del sprint anterior.
Al haberse completado únicamente las primeras dos historias de usuario la velocidad real del
sprint 1 es de 8 puntos, por lo cual se calculará el nuevo factor de dedicación:
6.5 - Sprint 2
Debido a que no se pudieron cumplir todas las Historias de Usuarios a ser realizadas en el Sprint
1, en este Sprint 2 se tomarán todas las Historias de Usuarios que quedaron pendiente del Sprint
anterior.
En este nuevo Sprint se tomará el nuevo valor de la Velocidad Estimada el cuál es de 8 puntos
aproximadamente, esto quiere decir que se tomarán Historias de Usuario que sumen alrededor
de los 8 puntos.
Podemos observar que gracias a la experiencia adquirida en el sprint anterior, todas las tareas
de las Historias de Usuario se fueron desarrollando de manera constante.
Una de las dificultades fue al trabajar con la base de datos Access junto al lenguaje de
programación para realizar transacciones.
Otro inconveniente que se presentó fue al trabajar con la librería al momento de almacenar las
grabaciones de video automáticamente, ya que si bien se trabajó anteriormente con esta librería
Además surgieron otras dificultades en este sprint y pudieron ser resueltas gracias a la
experiencia adquirida.
Prueba de Aceptación
ID: 1 HU3: Grabación de video
Estado: Aceptada
Descripción: grabación automática de video después del envío de la alerta del SMS.
Resultados esperados:
Comenzar a grabar automáticamente después del envío del SMS.
Se activará un botón “Detener Sistema” para detener el sistema cuando se desee.
Se activará el botón “Detener Grabación” en color rojo para indicar que está en curso la
grabación.
HU1: Logueo
Prueba de Aceptación
ID: 2 HU1: Logueo
Estado: Aceptada
Descripción: a través de esta interfaz se permitirá o negará iniciar sesión en el prototipo:
Ingresando usuario y contraseña válidos
Ingresando usuario y/o contraseña inválidos.
Resultados esperados:
Si se ingresó correctamente un usuario y su contraseña se permitirá el acceso.
Si se ingresó un usuario y/o contraseña inválidos se negará el ingreso al prototipo
mostrando un mensaje que se ingresaron datos erróneos.
Si no se ingresa un usuario ni contraseña se debe mostrar unos iconos indicando que se
necesitan dichos datos para iniciar sesión.
Sprint 2:
Requerimientos SI NO
¿Todas las historias de usuario seleccionadas fueron desarrolladas? X
¿Todas las pruebas de aceptación fueron aprobadas? X
Observaciones: se completaron exitosamente todas las HU abordadas en este Sprint.
Los resultados revisados satisfacen los requerimientos y son aceptados por el
propietario.
6.6 - Sprint 3
Ya que en el sprint 2 se completaron todas las Historias de Usuarios abordadas en él, la velocidad
para el Sprint 3 también será de aproximadamente 8 puntos. Se abordará las Historias de
Usuarios HU2 y HU7:
Podemos observar en el gráfico que todas las tareas se llevaron a cabo de manera constante
gracias a lo aprendido en los Sprint anteriores.
Imagen c
Imagen d
Imagen e
Imagen f
Prueba de Aceptación
ID: 1 HU2: Gestión usuarios
Estado: Aceptada
Descripción: a través de esta interfaz se podrá:
Ingresar nuevos usuarios para usar el prototipo.
Se podrá modificar datos de los usuarios registrados.
Se podrá eliminar usuarios registrados en el prototipo.
Resultados esperados:
Al tratar de dar de alta un usuario nuevo se debe verificar si el nombre de usuario que
se esté tratando de ingresar no esté registrado. Si el nombre de usuario está registrado
se mostrará un mensaje de usuario registrado. Si el usuario se almacena correctamente
mostrará un mensaje de confirmación (Imagen d).
Se podrá modificar el nivel y/o la clave de los usuarios registrados (Imagen e).
Al tratar de eliminar un usuario se debe pedir confirmación para la eliminación del
usuario seleccionado (Imagen f).
Imagen g
Imagen h
Prueba de Aceptación
ID: 2 HU7: Definición dirección almacenamiento
Estado: Aceptada
Descripción: a través de esta interfaz se podrá:
Visualizar el lugar donde se almacenan las grabaciones.
Resultados esperados:
Permitir visualizar el directorio donde se almacenan las grabaciones al detectar el
movimiento por la cámara web (Imagen g).
Permitir cambiar el lugar del almacenamiento de las grabaciones, mostrando un
mensaje confirmando la modificación del lugar para guardar las grabaciones (Imagen
h).
Sprint 3:
Requerimientos SI NO
¿Todas las historias de usuario seleccionadas fueron desarrolladas? X
¿Todas las pruebas de aceptación fueron aprobadas? X
Observaciones: se completaron exitosamente todas las HU abordadas en este Sprint.
Los resultados finales satisfacen los requerimientos y son aceptados por el propietario.
6.7 - Sprint 4
Ya que en el sprint 3 se completaron todas las Historias de Usuarios abordadas en él, se
trabajarán las restantes Historias de Usuarios HU6 y HU8:
Como podemos ver el ritmo de avance al comienzo del sprint fue constante, luego se
presentaron ciertas irregularidades, debido a algunos inconvenientes. De igual manera se logró
completar todas las tareas.
Imagen i
Prueba de Aceptación
ID: 1 HU6: Reproducción de grabaciones
Estado: Aceptada
Descripción: a través de esta interfaz se podrá:
Visualizar y seleccionar la grabación deseada. La cual es producida por la detección de
movimiento si es que la hubiera.
Resultados esperados:
Permitir seleccionar la grabación que se desee visualizar y poder pausarla o detenerla
(Imagen i).
Imagen j
Imagen k
Prueba de Aceptación
ID: 2 HU8: Modificar número de envió de alerta
Estado: Aceptada
Descripción: a través de esta interfaz se podrá:
Visualizar el número ingresado para él envío de la alerta en forma de SMS.
Resultados esperados:
Permitir modificar el número registrado para el envío de alerta en forma de SMS
(Imagen j).
Mostrar mensaje con el formato para ingresar el número de teléfono (Imagen k).
Sprint 4:
Requerimientos SI NO
¿Todas las Historias de Usuario seleccionadas fueron desarrolladas? X
¿Todas las pruebas de aceptación fueron aprobadas? X
6.7 - Conclusión:
Como podemos apreciar que todas las Historias de Usuario definidas para el prototipo se
completaron exitosamente. Para el desarrollo del mismo se necesitó de 4 Sprint de 14 días de
duración cada uno.
Se completaron todas las Historias de Usuario con un factor de dedicación del 57% y se llevaron
a cabo todos los Sprints a una velocidad de 8 puntos aproximadamente.
Se estimaron fechas de finalización del mismo las cuales eran pesimista, estimada y optimista.
Al comparar la fecha real de finalización del prototipo con las fechas de finalización que se
estimaron, se puede decir que la fecha de finalización real se aproxima a la fecha pesimista. La
fecha de finalización pesimista fue para el día 17/05/2018 y la fecha de finalización real fue del
24/05/2018, por lo que se pasó en 8 días la finalización real respecto de la pesimista.
7 - Pruebas
Este capítulo de pruebas tiene por objetivo, ejecutar el prototipo para la aplicación de técnicas
y herramientas para el testing del prototipo presentado en el proyecto y con el fin de encontrar
errores en el mismo. Se probarán las interfaces, ingresando datos al prototipo a través de las
mismas y verificando los resultados obtenidos con los datos de entrada.
ID Prueba: 1
HU: Login
Descripción: permitir el acceso al prototipo al ingresar usuario y contraseña validos
Datos Requeridos:
Ingreso de Usuario válido.
Ingreso Contraseña válida.
Pre Condiciones: Usuario debe estar registrado en la base de datos del prototipo.
Resultados esperados: Permitir el acceso al prototipo.
Imagen 1
ID Prueba: 2
HU: Login
Descripción: No permitir el acceso al prototipo al ingresar un usuario valido pero la contraseña
invalida.
Datos Requeridos:
Ingreso de Usuario válido.
Ingreso de contraseña inválida.
Pre Condiciones: Usuario registrado en la base de datos del prototipo.
Resultados esperados: No permitir el acceso al prototipo.
Post Condiciones:
Negar el ingreso al sistema.
Mostrar un mensaje informando que ingresó mal el usuario y/o contraseña (Imagen 1).
Estado: Terminado – ok
ID Prueba: 3
HU: Login
Descripción: No permitir el acceso al prototipo al ingresar un usuario inválido, pero la contraseña
válida.
Datos Requeridos:
Ingreso de Usuario inválido.
Ingreso de contraseña válida.
Pre Condiciones: Usuario debe estar registrado en la base de datos del prototipo.
Resultados esperados: No permitir el acceso al prototipo.
Post Condiciones:
Negar el ingreso al sistema.
Mostrar un mensaje informando que se ingresó mal el usuario y/o contraseña (Imagen 2)
Estado: Terminado – ok
Imagen 2
ID Prueba: 4
HU: Login
Descripción: no permitir el acceso al prototipo al no ingresar ningún usuario ni contraseña.
Datos Requeridos:
Ingresar usuario vacío.
Ingresar contraseña vacía.
Pre Condiciones: se ingresa el usuario y la clave en blanco.
Resultados esperados: No permitir el acceso al prototipo.
Post Condiciones:
Negar el ingreso al sistema.
Mostrar iconos que indiquen que se debe ingresar usuario y contraseña para poder
ingresar al prototipo (Imagen 3).
Estado: Terminado – ok
Imagen 3
Gestión usuario
ID Prueba: 1
HU: Gestión usuario
Descripción: permitir agregar un nuevo usuario para que pueda usar el prototipo.
Datos Requeridos:
Ingreso de nombre de usuario nuevo.
Ingreso contraseña para el usuario.
Selección del nivel.
Pre Condiciones: El nombre de usuario no debe estar registrado en el prototipo.
Resultados esperados: guardar el nuevo usuario.
Post Condiciones: mostrar un mensaje con la confirmación del nuevo usuario fue guardado
correctamente (Imagen 1).
Estado: Terminado - ok
Imagen 1
ID Prueba: 2
HU: Gestión usuario
Descripción: no permitir ingresar un nombre de usuario ya registrado.
Datos Requeridos:
Ingreso de nombre de usuario nuevo.
Ingreso contraseña para el usuario.
Selección del nivel.
Pre Condiciones: nombre de usuario ya registrado en el prototipo.
Resultados esperados: no guardar el usuario.
Post Condiciones: mostrar un mensaje informando que el nombre de usuario ya se encuentra
registrado (Imagen 2).
Estado: Terminado - ok
Imagen 2
ID Prueba: 3
HU: Gestión usuario
Descripción: controlar que el correcto ingreso de la clave
Datos Requeridos:
Ingreso de nombre de usuario nuevo.
Ingreso contraseña para el usuario.
Selección del nivel.
Pre Condiciones: nombre de usuario no registrado en el prototipo.
Resultados esperados: no almacenar el nuevo usuario.
Post Condiciones: mostrar un mensaje informando que las claves ingresadas no coinciden
(Imagen 3).
Estado: Terminado - ok
Imagen 3
ID Prueba: 4
HU: Gestión usuario
Descripción: permitir modificar la clave y/o nivel de usuario registrados en el prototipo.
Datos Requeridos:
Ingreso nueva contraseña para el usuario.
Selección del nivel.
Pre Condiciones: usuario registrado en el prototipo.
Resultados esperados: almacenar la nueva clave y/o nivel.
Post Condiciones: mostrar un mensaje confirmando el almacenamiento de la modificación de los
datos (Imagen 4).
Estado: Terminado - ok
Imagen 4
ID Prueba: 5
HU: Gestión usuario
Descripción: permitir eliminar un usuario registrado en el prototipo.
Datos Requeridos:
Selección de un usuario.
Pre Condiciones: usuario registrado en el prototipo.
Imagen 5
Imagen 6
Definición dirección almacenamiento
ID Prueba: 1
HU: Definición dirección almacenamiento
Descripción: permitir cambiar el lugar para almacenar las grabaciones.
Datos Requeridos:
Ruta almacenada en el prototipo.
Pre Condiciones: selección del lugar deseado (Imagen 7).
Resultados esperados: almacenamiento del cambio de la ruta.
Post Condiciones: mostrar un cartel confirmando la modificación de la ruta (Imagen 8).
Estado: Terminado - ok
Imagen 7
Imagen 8
Reproducción de grabaciones
ID Prueba: 1
HU: Reproducción de grabaciones.
Descripción: permitir visualizar las grabaciones.
Datos Requeridos:
Ruta registrada.
Grabaciones existentes
Pre Condiciones: seleccionar la grabación deseada a visualizar (Imagen 10).
Resultados esperados: visualización de la grabación.
Post Condiciones: -
Estado: Terminado - ok
Imagen 10
Detección de movimiento
ID Prueba: 1
HU: Detección de movimiento
Descripción: detectar movimiento al iniciar el prototipo.
Datos Requeridos:
Cámara web.
Pre Condiciones: -.
Resultados esperados: detección de movimiento (Imagen 11).
Post Condiciones: envió señal para el envió de la alerta.
Estado: Terminado - ok
Imagen 11
Envió de Alerta
ID Prueba: 1
HU: Envió de Alerta
Descripción: envió de alerta sobre la detección de intrusos.
Datos Requeridos:
Detección de movimiento por la cámara web.
Pre Condiciones: detección de movimiento.
Resultados esperados: envió de alerta (Imagen 12).
Post Condiciones: comenzar la grabación automática de video.
Estado: Terminado - ok
Imagen 12
Grabación de video
ID Prueba: 1
HU: Grabación de video
Descripción: grabación automática de video después de detectar movimiento.
Datos Requeridos:
Recepción de la señal para iniciar la grabación.
Pre Condiciones: envió alerta.
Resultados esperados: grabación de video (Imagen 13).
Post Condiciones: -
Estado: Terminado – ok
Imagen 13
Modificar número de envió de alerta
ID Prueba: 1
HU: Modificar número de envió de alerta.
Descripción: permite modifica el número almacenado para el envió de la alerta.
Datos Requeridos:
Ingreso nuevo número para el envió de la alerta.
Pre Condiciones:
número de la alerta registrado.
Indicar el formato para ingresar el nuevo número (Imagen 14).
Resultados esperados: almacenamiento del nuevo número de celular.
Post Condiciones: mostrar un cartel informando el almacenamiento del cambio de número
(Imagen 15).
Estado: Terminado – ok
Imagen 14
Imagen 15
ID Prueba: 1
HU: Modificar número de envió de alerta.
Descripción: no permitir el ingreso de caracteres al ingresar el nuevo número para alerta.
Datos Requeridos:
Ingreso nuevo número de celular.
Pre Condiciones:
número celular de la alerta registrado.
Indicar el formato para ingresar el nuevo número (Imagen 14).
Resultados esperados: permitir solo ingreso de número.
Post Condiciones: mostrar alerta que se ingresó un valor distinto a un número (Imagen 16).
Estado: Terminado – ok
Imagen 16
Una prueba unitaria, o “unit test”, es un método que prueba una unidad estructural de código.
Para este caso de prueba unitaria, se realiza la prueba sobre el Método: InsertNuevoUsuario de
la Historia de Usuario Gestión de Usuarios.
Para la realización de la prueba se utilizará las herramientas de prueba unitaria que proporciona
el visual studio, llamadas Unit Test Project
ID Prueba: 1
HU: Gestión Usuario
Descripción: insertar un nuevo usuario para que pueda acceder al prototipo.
Datos Requeridos:
Ingresar un nombre de usuario no registrado en el sistema.
Ingresar la clave para el usuario.
Seleccionar nivel.
Pre Condiciones: usuario no debe estar registrado en el sistema.
Resultados esperados: guardar el nuevo usuario.
Post Condiciones:
Informar si la operación tuvo éxito.
Estado: Terminado.
Donde para la realización de la prueba, utilizamos DatosPrueba que es una instancia de la clase
usuarios, a la cual se le asigna los siguientes valores para iniciar la prueba:
DatosPrueba.NUsser1= ”PRUEBA”
DatosPrueba.NPass1= ”PRUEBA”
DatosPrueba.NNivel1= 1
Al ejecutar la prueba el usuario se insertó correctamente ya que no existe otro usuario con el
nombre de usuario PRUEBA, y el resultado es PRUEBA SUPERADA.
DatosPrueba.NUsser1=”PRUEBA”
DatosPrueba.NPass1=”PRUEBA”
DatosPrueba.NNivel1=1
La prueba arroja lo siguiente:
Podemos decir que a partir de estas dos pruebas se pudo probar el funcionamiento del método
InsertNuevoUsuario, los cuales arrojaron resultados correctos al intentar almacenar datos
nuevos y no permitir la inserción de nombres de usuarios repetidos.
ID Prueba: 2
HU: Definición dirección almacenamiento
Descripción: permitir almacenar el lugar para guardar las grabaciones.
Datos Requeridos:
No debe estar registrado el lugar para almacenar las grabaciones.
Pre Condiciones:
ingresar el lugar para almacenar las grabaciones.
Resultados esperados: inserción de la ruta.
Post Condiciones:
Informar si la operación tuvo éxito.
Estado: Terminado.
Donde para la realización de la prueba, utilizamos oRuta que es una instancia de la clase Ruta, a
la cual se le asigna los siguientes valores para iniciar la prueba:
Al ejecutar la prueba, la ruta se almacena correctamente ya que no había una ruta almacenada,
y el resultado es PRUEBA SUPERADA.
La prueba no fue superada debido a que ya se encuentra registrada la Ruta, generando una
excepción.
Podemos decir que a partir de estas dos pruebas se pudo probar el funcionamiento del método
InsertRuta, los cuales arrojaron resultados correctos al intentar almacenar la Ruta y no permitir
la inserción de otra Ruta.
ID Prueba: 3
HU: Definición dirección almacenamiento
Descripción: actualizar el lugar del almacenamiento de las grabaciones.
Datos Requeridos:
Selección de un nuevo lugar para almacenar las grabaciones.
Pre Condiciones: -
Resultados esperados: actualización de la ruta.
Post Condiciones:
Informar si la operación tuvo éxito.
Estado: Terminado.
Donde para la realización de la prueba, utilizamos oRuta que es una instancia de la clase Ruta, a
la cual se le asigna los siguientes valores para iniciar la prueba:
Podemos decir que a partir de esta prueba se pudo probar el correcto funcionamiento del
método ActualizarRuta, los cuales arrojaron resultados correctos al intentar actualizar la Ruta.
ID Prueba: 4
HU: Modificar número de envió de alerta
Descripción: actualizar el número para el envío de la alerta.
Datos Requeridos:
Número para el envió de la alerta debe estar registrado.
Pre Condiciones: Numero registrado.
Resultados esperados: actualización del número.
Post Condiciones:
Informar si la operación tuvo éxito.
Estado: Terminado.
Operación=2
Podemos decir que a partir de esta prueba se pudo probar el correcto funcionamiento del
método OperacionTelefono, los cuales arrojaron resultados correctos al actualizar el número de
teléfono.
ID Prueba: 5
HU: Modificar número de envió de alerta
Descripción: permitir insertar el número de teléfono
Datos Requeridos:
Número de teléfono no debe estar registrado.
Pre Condiciones: Numero no registrado.
Resultados esperados: almacenamiento del número.
Post Condiciones:
Operación=1
oTel.Telefono=”388XXXXXXX”
La prueba arroja lo siguiente:
La prueba no fue superada debido a que ya se encuentra registrado un teléfono para el envío
de la alerta.
Podemos decir que a partir de estas dos pruebas se pudo probar el correcto funcionamiento del
método OperacionTelefono, los cuales arrojaron resultados correctos al intentar almacenar el
insertar el teléfono y no permitir la inserción de otro.
ID Prueba: 6
HU: Logueo
Descripción: permitir iniciar sesión en el prototipo.
Datos Requeridos:
Usuario registrado en el prototipo.
Pre Condiciones:
Ingresar usuario registrado.
Ingresar clave del usuario.
Resultados esperados: permitir el acceso al prototipo
Post Condiciones:
Informar si la operación tuvo éxito.
Estado: Terminado.
Al encontrar que los datos ingresados son correctos, el resultado es PRUEBA SUPERADA.
oUser.NUsser1=” admin”
oUser.NPass1=”1232”
La prueba arroja lo siguiente:
La prueba no fue superada debido a que no se encuentra registrado un usuario con los datos
ingresados.
Podemos decir que a partir de estas dos pruebas se pudo probar el correcto funcionamiento del
método BuscarUser, los cuales arrojaron resultados correctos al intentar iniciar sesión con datos
correctos y no permitir el acceso al prototipo al ingresar datos erróneos.
ID Prueba: 7
HU: Detección de movimiento
Descripción: detecta movimiento por la cámara web
Datos Requeridos:
Iniciar la detección de movimiento.
Pre Condiciones: -
Resultados esperados: detectar movimiento.
Post Condiciones:
Informar si se detectó movimiento
Estado: Terminado.
A partir de esta prueba se pudo probar el funcionamiento del método Timer1_Tick los cuales
arrojaron resultados correctos al detectar movimiento y mostrando el nivel de movimiento
detectado.
ID Prueba: 8
HU: Envío de Alertas
Descripción: envío de alerta a través de SMS.
Datos Requeridos:
Detección de movimiento por la cámara web.
Pre Condiciones: Detección de movimiento.
Resultados esperados: Envió del SMS.
Post Condiciones:
Informar si se detectó movimiento
Estado: Terminado.
Podemos decir que a partir de esta prueba se pudo probar el correcto funcionamiento del
método AlertaMensaje, los cuales arrojaron resultados correctos al enviar la alerta de SMS.
ID Prueba: 9
HU: Gestión Usuario
Descripción: permitir modificar la clave y/o nivel de los usuarios.
Datos Requeridos:
ingresar nueva contraseña.
Seleccionar nivel.
Pre Condiciones:
Usuario registrado en el prototipo.
Resultados esperados: guardar los cambios para el usuario.
Post Condiciones:
Informar si la operación tuvo éxito.
Estado: Terminado.
Al ejecutar la prueba los datos del usuario fueron modificados correctamente, y el resultado es
PRUEBA SUPERADA.
Podemos decir que a partir de esta prueba se pudo probar el funcionamiento del método
UpdateUsuario, los cuales arrojaron resultados correctos al actualizar los datos del usuario ya
sea la clave y/o el nivel.
ID Prueba: 10
HU: Gestión Usuario
Descripción: permitir eliminar un usuario.
Datos Requeridos:
Seleccionar un usuario.
Pre Condiciones:
Usuario registrado en el prototipo.
Resultados esperados: eliminación de usuario.
Post Condiciones:
Informar si la operación tuvo éxito.
Estado: Terminado.
Podemos decir que a partir de esta prueba se puedo probar el funcionamiento del método
EliminarUsuario, los cuales arrojaron resultados correctos al tratar de eliminar un usuario
registrado.
ID Prueba: 11
HU: Gestión Usuario
Descripción: mostrar todos los niveles que pueden ser asignados a los usuarios.
Datos Requeridos:
-
Pre Condiciones:
Niveles registrados en el prototipo.
Resultados esperados: mostrar los niveles disponibles.
Post Condiciones:
Informar si la operación tuvo éxito.
Estado: Terminado.
Al ejecutar la prueba se pudieron visualizar todos los niveles disponibles que pueden ser
seleccionados, y el resultado es PRUEBA SUPERADA.
Podemos decir que a partir de esta prueba se pudo probar el funcionamiento del método
TraerNiveles, los cuales arrojaron resultados correctos al buscar los niveles disponibles, ya sea
cuando se quiere dar de alta un usuario o modificar su nivel.
ID Prueba: 12
HU: Modificar número de envió de alerta
Descripción: controlar el correcto ingreso del número para el envió de la alerta.
Datos Requeridos:
Ingreso de número para la alerta.
Pre Condiciones:
Número para el envió de la alerta registrado.
Resultados esperados: almacenar el número.
Post Condiciones:
Informar si la operación tuvo éxito.
Estado: Terminado.
Al ejecutar otra prueba, pero asignándole un formato incorrecto a tel, por ejemplo, tel:
”03885XXXXX”, el resultado de la prueba fue PRUEBA NO SUPERADA.
Podemos decir que a partir de esta prueba se pudo probar el funcionamiento del método NTel,
los cuales arrojaron resultados correctos intentar insertar o actualizar un número de teléfono
con un formato correcto, y al intentar insertar o actualizar un teléfono con formato incorrecto
no se permite dichas operaciones.
ID Prueba: 13
HU: Gestión usuarios
Descripción: permitir a los usuarios que tienen un nivel de INVITADO cambiar su clave.
Datos Requeridos:
Ingreso de clave actual
Ingreso de nueva clave
Pre Condiciones:
Usuario registrado en el prototipo.
Resultados esperados: actualizar la clave.
Post Condiciones:
Informar si la operación tuvo éxito.
Estado: Terminado.
Donde
npass1 y npass2: son la nueva clave introducida por el usuario.
user: el usuario que desea cambiar la clave con nivel de invitado.
actualPass: la clave actual que tiene registrada el usuario invitado.
Al ejecutar la prueba con estos valores se actualizo la clave del usuario, y el resultado es PRUEBA
SUPERADA.
Al ejecutar otra prueba con otros valores, donde la clave actual se ingresa incorrectamente:
npass1= ”123”
npass2= ”123”
user=” INVITADO”
actualPass=”123”
Podemos decir que a partir de estas pruebas se pudo probar el funcionamiento del método
ControlCambioPass, los cuales arrojaron resultados correctos al cambiar la clave del usuario de
nivel invitado, y al intentar cambiar la clave, pero se ingresa de manera incorrecta la clave actual
o las claves nuevas ingresadas no son iguales no se permite el cambio de clave al usuario.
POSTMAN nos permite realizar peticiones HTTP (GET, POST, DELETE, UPDATE…) a una dirección
de nuestro interés. Esto es de gran utilidad a la hora de interactuar con APIs Web e, incluso, para
testear nuestros propios desarrollos. (Luis, 2017).
Esta herramienta nos permite construir y gestionar de una forma cómoda nuestras peticiones a
servicios REST HTTP (GET, POST, DELETE, UPDATE, entre otros) a una dirección de nuestro
interés. Su manejo es realmente intuitivo ya que simplemente tenemos que definir la petición
que queremos realizar.
Servicios REST: es cualquier interfaz entre sistemas que use HTTP para obtener datos o
generar operaciones sobre esos datos en todos los formatos posibles, como XML y JSON.
(BBVAOPEN4U, 2016).
Uno de los puntos más potentes de Postman, es la posibilidad de definir todas las variables que
se necesite y clasificarlas por entornos de trabajo. Esto es muy útil cuando se tiene diferentes
proyectos o cuando se necesita configurar múltiples entornos para un mismo proyecto (por
ejemplo, diferentes cabeceras, URLs de cada uno de los entornos de trabajo – local,
preproducción o incluso producción, etc.). (Luis, 2017).
POST: para la realización de la prueba se utilizará la solicitud POST la que es un método que se
usa cuando necesitamos enviar una petición al servidor. Al enviar la solicitud POST,
pretendemos realizar algunas modificaciones en el servidor (como la actualización, la
eliminación o la adición), para este caso sería él envío del sms a un destinatario.
Params: Los parámetros de solicitud son parte de la URL que se utiliza para enviar datos al
servidor.
Podemos apreciar en la siguiente figura se cargo la URL y los parametros necesarios para el envio
de la solicitud al servidor:
Parámetros utilizados:
apiKey: se la utiliza como medio de identificación con el servidor, para el envío de la solicitud.
numbers: es el número al que se desea enviar el SMS.
message: es el mensaje a enviar.
send: identificación de quien envía el sms.
Al presionar el botón Send se envía la solicitud al servidor. El servidor al recibir la petición para
el envío del SMS, envía el SMS al celular solicitado en un tiempo de 1705 ms.
Luego del envío de 5 solicitudes, los tiempos para mismo fueron entre 1300 ms y 1900 ms.
Al analizar los tiempos de respuesta, los cuales se podría decir que tienen un máximo de 2
segundos (2000ms), podemos considerar el tiempo aceptable para él envió del SMS (aviso de la
detección de movimiento).
8 - Cronograma
Cabe aclarar que en los Sprint figura la pila del Sprint correspondiente a cada uno de ellos.
9 - Conclusión:
Podemos decir que se ha logrado cumplir con los objetivos específicos de este trabajo, que ha
cumplido con el alcance definido para el prototipo de aviso de intrusos al detectar movimiento
mediante cámara web. Con este prototipo se brinda una herramienta alternativa para reducir la
incertidumbre de los dueños de propiedades a la hora de dejarlas solas.
Dicho prototipo proporciona una herramienta que comunicará a quien corresponda cuando
detecte movimientos en la propiedad, buscando de esta manera reducir los robos o daños a las
mismas, ya que con una simple alerta a los dueños se evita cualquier inconveniente.
Este prototipo se diseñó para que sea accesible a cualquier persona, ya que puede ser utilizado
con una simple cámara web existente en el mercado y proporcionará el beneficio de informar a
los propietarios ante la ocurrencia de un evento de intrusión o daño.
Además, este prototipo realizará la grabación automática de videos después del envío del aviso
de intrusos y permitirá también la visualización de las grabaciones que se producen al detectar
movimientos en un determinado ángulo de visión de la cámara.
También permite controlar quien podrá tener acceso al prototipo, permitiendo gestionar los
usuarios y de este modo se podrá agregar, modificar y/o eliminar usuarios.
De esta manera podemos afirmar que se logró el cumplimiento del objetivo específico, que
motivó la necesidad de realizar este trabajo final.
A futuro se pensó en que se podría adicionar al prototipo otras alternativas, ya que el mismo ha
sido desarrollado con una gran flexibilidad de expansión. Entre ellas podemos mencionar:
Bibliografía
Aarons, A. (2018). Cuál es la función de las camaras de circuito cerrado. Obtenido de
https://techlandia.com/funcion-camaras-circuito-cerrado-hechos_430699/
Angel. (30 de diciembre de 2012). Qué es y para qué sirve Microsoft Access. Obtenido de
http://www.accessyexcel.com/que-es-y-para-que-sirve-microsoft-access/
BBVAOPEN4U. (23 de Marzo de 2016). API REST: qué es y cuáles son sus ventajas en el
desarrollo de proyectos. Obtenido de https://bbvaopen4u.com/es/actualidad/api-rest-
que-es-y-cuales-son-sus-ventajas-en-el-desarrollo-de-proyectos
Luis, L. (2 de Octubre de 2017). POSTMAN, REALIZA PETICIONES HTTP Y PRUEBA TUS API REST.
Obtenido de https://www.luisllamas.es/realizar-peticiones-http-con-postman/
msn. (2018). ¿Qué es y para qué sirve Visual Studio 2017? Obtenido de
https://www.msn.com/es-cl/noticias/microsoftstore/%C2%BFqu%C3%A9-es-y-para-
qu%C3%A9-sirve-visual-studio-2017/ar-AAnLZL9
Velásquez, I. R. (s.f.). Acceso a datos con ADO -NET - Objeto Connection. Obtenido de
https://www.coursehero.com/file/27055462/21-Acceso-a-datos-con-ADO-NET-
Objeto-Connectionpdf/
Anexo
Diseño de la Base de datos
Esquema de datos
Tabla USUARIOS
USUARIOS
Nombre del Campo Tipo Descripción
USERNAME Texto Corto Nombre de usuario unico distinto de vacío para acceder al prototipo
USERPASS Texto Corto Clave correspondiente al usuario distinto de vacío
ID_NIVEL Número Nivel para el usuario, indica los permisos que tendra. Distinto de vacío
Indices
USERNAME Primary Key
ID_NIVEL Foreign Key de la Tabla Nivel
Tabla NIVEL
NIVEL
Nombre del Campo Tipo Descripción
ID_NIVEL Numero Clave unico para el nivel distinto de vacío
TIPO Texto largo Descripción del nivel
Indices
ID_NIVEL Primary Key
Tabla RUTA
RUTA
Nombre del Campo Tipo Descripción
ID_RUTA Numero Clave unica de la ruta distinto de vacío
DIRECCION Texto largo Lugar donde se almacenaran las grabaciones
Indices
ID_RUTA Primary Key
Tabla ALERTA
ALERTA
Nombre del Campo Tipo Descripción
ID Número Clave unica de la alerta distinto de vacío
TELEFONO Número Número de celular para mandar la alerta
Indices
ID_RUTA Primary Key
OpenCV
OpenCV (Open Source Computer Vision Library) es una biblioteca de software de visión abierta
y software de aprendizaje automático. OpenCV fue construido para proporcionar una
infraestructura común para aplicaciones de visión por computadora y para acelerar el uso de la
percepción de la máquina en los productos comerciales. Al ser un producto con licencia de BSD,
OpenCV facilita a las empresas utilizar y modificar el código.
Emgu CV
AccessDatabaseEngine
Conjunto de driver que permiten la conexión con las bases de datos Access sin la necesidad de
tener instalado el paquete office, este es distribuido por Microsoft de manera gratuita. Es decir,
permite realizar operación sobre la base de datos desde un lenguaje de programación aun
cuando no se tiene instalado el paquete office.