Título: Aplicación Android para el “Jardín Botánico de la UCLV”
Autor: José Alberto Bisbal Marín
Tutores: Dr. Daniel Gálvez Lio
MSc. Lázaro Jesús Pérez Lugo
, junio, 2019
Departamento
, June, 2019
Department of Computing
Title:
Android application for the "Botanical Garden of the UCLV".
Author:
José Alberto Bisbal Marín
Thesis Director: Dr. Daniel Gálvez Lio
Este documento es Propiedad Patrimonial de la Universidad Central “Marta Abreu” de Las Villas, y se encuentra depositado en los fondos de la Biblioteca Universitaria “Chiqui Gómez Lubian” subordinada a la Dirección de Información Científico Técnica de la mencionada casa de altos estudios.
Se autoriza su utilización bajo la licencia siguiente:
Atribución- No Comercial- Compartir Igual
Para cualquier información contacte con:
Dirección de Información Científico Técnica. Universidad Central “Marta Abreu” de Las Villas. Carretera a Camajuaní. Km 5½. Santa Clara. Villa Clara. Cuba. CP. 54 830 Teléfonos: +53 42281503-1419
i
Pensamiento
“No importa lo lento que vayas mientras no te detengas”
ii
Dedicatoria
A mi novia María, ya que sin su apoyo incondicional no hubiera llegado a este resultado y que ha sido la que me ha motivado a seguir hacia adelante.
iii
Agradecimientos.
A mi novia por confiar en mí y apoyarme siempre y por todos los sacrificios para lograr de mi lo que soy.
A mis profesores Yanet Rodríguez Sarabia y Gerardo Hernández Cuellar por confiar en mí y brindarme todo su apoyo, sin ellos no hubiera podido llegar a este resultado. A mis amigos Manuel Enrique, Víctor San Gil, Leticia La Guardia, Julio César, Oscar
Miguel, Ernesto Pérez y Miguel Ángel, por todo el tiempo dedicado, por sus consejos,
por sus apoyos incondicionales tanto en el plano docente como en lo personal.
A mis profesores y compañeros de aula especialmente Alejandro Ramón y Ruddy por brindarme todo su apoyo durante la carrera.
A Jesús Daniel por transmitirme sus experiencias en las tecnologías empleadas para el desarrollo de aplicaciones móviles.
A todas aquellas personas que de una forma u otra contribuyeron a que este sueño fuese hoy una realidad.
iv
Resumen
En la actualidad el uso de los teléfonos celulares se ha convertido en una necesidad de las personas ya que nos brindan disímiles funciones, gracias a los avances de hardware y de software. Con el desarrollo de esta aplicación móvil se desea lograr la divulgación de la historia, los servicios y las áreas de colecciones vivas contenidas en el Jardín Botánico de la UCLV. En el desarrollo de la aplicación se emplean diferentes librerías de software, varias tecnologías y diferentes diagramas. Concluida la aplicación se sometió a diferentes pruebas de software para corregir las posibles fallas del sistema. La aplicación “Jardín Botánico UCLV” permite difundir la historia, los servicios que presta y las áreas de colecciones vivas de plantas del Jardín Botánico de la UCLV.
v
Abstract
Now days the use of smartphones has become a necessity for people, they provide us different functions thanks to advances in hardware and software. With the development of this mobile application it is desired to achieve the disclosure of the history, services and living collections areas contained in the Botanical Garden of the UCLV. In the development of the mobile application different software libraries, several technologies and different diagrams are used. The application was submitted to different software tests to correct possible system failures. The application "Botanical Garden UCLV" allows to disseminate the history, the services it provides and the areas of living collections of plants of the Botanical Garden of the UCLV.
vi
Contenido
Introducción ... 1
CAPÍTULO 1. CARACTERIZACIÓN DEL MARCO TEÓRICO ... 4
1.1 El Jardín Botánico de la UCLV ... 4
1.2 Aplicaciones existentes vinculados al campo de acción. ... 5
1.3 “Android” El Sistema Operativo de Google para dispositivos móviles ... 5
1.3.1 Evolución del Sistema Operativo Android ... 7
1.4 Metodologías Ágiles empleadas en el desarrollo de aplicación móviles ... 8
1.5 Tipos de Aplicaciones para Dispositivos Móviles. ... 10
1.6 Entorno de desarrollo, Lenguaje de Programación y Tecnologías empleadas. ... 12
1.6.1 Android Studio ... 12
1.6.2 Material Design ... 12
1.6.3 PhotoView ... 13
1.6.4 animated svg view ... 14
1.6.5 android image slider ... 14
1.6.6 zxing ... 15 1.6.7 SQLite ... 16 1.6.8 Adobe Photoshop CC 2018 ... 16 1.6.9 Adobe Illustrator CC 2018 ... 16 1.6.10 Resize ... 17 1.7 Conclusiones parciales ... 18
vii CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DE LA APLICACIÓN MÓVIL “JARDÍN
BOTÁNICO UCLV” ... 19
2.1 Ejecutante del sistema a automatizar ... 19
2.2 Definición de Requerimientos ... 19
2.2.1 Requerimientos Funcionales ... 19
2.2.2 Requerimientos No Funcionales ... 20
2.3 Diagrama de Casos de Uso del Sistema ... 21
2.4 Diagrama de secuencia ... 22
2.5 Mapa de Navegación de la aplicación ... 24
2.6 Modelo de Componentes ... 25
2.7 Diseño e implementación de la Base de Datos ... 28
2.7.1 Modelo Entidad-Relación ... 28
2.7.2 Implementación de la Base de Datos ... 29
2.8 Diagrama de Despliegue ... 32
Conclusiones parciales del capítulo ... 32
CAPÍTULO 3. PRUEBAS DE SOFTWARE ... 34
3.1 Pruebas de software ... 34
3.2 Estrategias de Pruebas ... 35
3.3 Pruebas de Caja Negra ... 36
3.3.1 Método de prueba basados en grafos ... 39
3.4 Pruebas de Usabilidad ... 41
viii
3.4.2 Resultado de la encuesta aplicada. ... 44
3.5 Pruebas de compatibilidad ... 50
Conclusiones parciales del Capítulo ... 55
Conclusiones ... 56
Recomendaciones... 57
1
Introducción
El Jardín Botánico existente en la Universidad Central “Marta Abreu” de Las Villas (UCLV) es una institución de connotación provincial que constituye la interface de la Universidad multidisciplinaria, moderna, humanista y tecnológica con la sociedad. El Jardín Botánico se propone dar cumplimiento a la política ambiental cubana de conservación de la diversidad biológica a través de técnicas integradas de conservación, fundamentadas por la investigación científica, generadora de conocimientos, que se reviertan en la formación y educación ambiental de estudiantes de pre y postgrado, así como de la población de Villa Clara en general y la prestación de servicios científico-técnicos que resuelvan problemas ambientales de tipo práctico.
Las tecnologías, sobre todo los dispositivos móviles son una herramienta vital para la difusión de información ya que hacen efectiva la búsqueda de esta, con precisión y rapidez. El presente trabajo hace referencia a las potencialidades del uso de las TICS en la divulgación de la información del Jardín Botánico de la UCLV.
Esta investigación surge por la necesidad de contribuir a la divulgación del (Jardín Botánico UCLV, JB), mediante la promoción de los servicios que presta el JB en cuanto a la atención de clientes, ventas de plantas, locación para fotos/videos para quinces, bodas, otras celebraciones y talleres comunitarios. Es también un lugar muy propicio para la observación de aves, el mismo cuenta con diez áreas de colecciones vivas de plantas.
A pesar de los esfuerzos realizados para este fin, aún se puede apreciar la falta de divulgación de los servicios que presta, así como la ausencia de una herramienta informática que brinde un acceso completo o parcial al jardín botánico. De esta forma se plantea la siguiente problemática.
Problema de Investigación
La disponibilidad y divulgación de la información de las colecciones vivas y los servicios que presta el Jardín Botánico de la UCLV es deficiente por lo que es necesario incidir en
2 la mejoría de esta problemática para lograr un mayor conocimiento sobre esta área de la UCLV.
Objetivo General
Desarrollar una aplicación móvil para la divulgación de la historia, los servicios y las colecciones vivas contenidas en el Jardín Botánico de la UCLV.
Objetivos Específicos
1. Realizar un levantamiento de la información relevante del Jardín Botánico de la UCLV.
2. Diseñar una base de datos con la información básica sobre el Jardín Botánico de la UCLV.
3. Desarrollar una aplicación Android para hacer accesible la información sobre el Jardín Botánico.
4. Validar la usabilidad y funcionamiento de la aplicación.
El proceso de investigación estará guiado por las siguientes preguntas de investigación:
1. ¿Cuál es la información más importante del Jardín Botánico y cómo podemos organizarla para su gestión desde una aplicación informática?
2. ¿Cómo implementar una aplicación móvil que facilite el conocimiento sobre la historia, los servicios y las áreas de colecciones vivas de plantas del “Jardín Botánico de la UCLV” con una interfaz amena y fácil de usar?
3. ¿Cómo evaluar el funcionamiento de la aplicación?
Justificación y Viabilidad de la investigación
El Jardín Botánico de la UCLV es un área de interés científico basado en las colecciones vivas de plantas, la docencia e investigación que realiza y los servicios que ofrece. Cuenta con un personal especializado de amplio conocimiento, lo que facilita el levantamiento de la información necesaria para la elaboración de una aplicación informática para dispositivos móviles con
3
sistema operativo Android que facilite la divulgación y el conocimiento sobre este importante Jardín de la provincia de Villa Clara.
Valor práctico
Con este trabajo de diploma se hace un levantamiento de la información relevante del Jardín Botánico de la UCLV y se desarrolla una aplicación para móviles que contiene esa información. La aplicación brinda al usuario información detallada sobre las plantas, imágenes y documentos, reduciendo el tiempo de acceso a la información, además que posee un escáner de códigos QR para la visualización de la información más detalladamente y precisa de las plantas y un mapa del jardín botánico donde se encuentra señalado las ubicaciones de las áreas de las plantas. De esta manera no es imprescindible la asistencia de un especialista para recorrer el área del jardín botánico ya que la aplicación muestra imágenes y descripciones de las áreas y de las plantas además de su ubicación.
Estructura del Documento
El trabajo consta con una Introducción y tres capítulos que abordan los temas siguientes: El Capítulo I trata los aspectos generales sobre el sistema operativo Android, sus características y tecnologías empleadas para el desarrollo de la aplicación como herramienta para el esparcimiento del jardín botánico.
El Capítulo II describe el proceso de desarrollo de la aplicación a través de diagramas y algoritmos empleados para el desarrollo de la misma.
El Capítulo III describe las pruebas de software para validar la funcionalidad de la aplicación, a través de pruebas de software de caja negra, de usabilidad y de compatibilidad.
4
CAPÍTULO 1. CARACTERIZACIÓN DEL MARCO TEÓRICO
En este capítulo se abordan aspectos generales sobre el Jardín Botánico de la UCLV, como cumplimiento a la política ambiental cubana de conservación de la diversidad biológica. Se caracteriza el sistema operativo Android y las tecnologías utilizadas en el diseño e implementación de aplicaciones móviles como herramientas para la divulgación del jardín botánico de la UCLV.1.1 El Jardín Botánico de la UCLV
El Jardín Botánico es una institución comprometida en dar cumplimiento a la política ambiental cubana de conservación de la diversidad biológica. Contribuye a la formación y educación ambiental de estudiantes de pre y postgrado, así como de la población de Villa Clara en general. Presta servicios científico técnicos que soluciona problemas ambientales de tipo práctico, también presta servicios como atención a visitantes, ventas de plantas, locación para fotos/videos de quinces, bodas, y otras celebraciones, es un sitio que se presta para la observación de aves y para el desarrollo de talleres comunitarios con el objetivo del entretenimiento sano y la capacitación en alguna temática relacionada con las plantas.
El Centro está representado en el Grupo de especialistas de plantas cubanas (GEPS) – CSE/UICN. Participa en talleres regionales para la definición de las metas Nacionales del Convenio sobre Diversidad Biológica de la República de Cuba y para la elaboración del Informe de país. También forma parte del Comité Científico Nacional del proyecto Flora de la República de Cuba.
Este resultado ha permitido dar respuesta al cumplimiento de las metas que Cuba tiene comprometidas con la Convención de Diversidad Biológica a través de la Agenda Global para la Conservación Vegetal definida por la BGCI (Asociación Internacional para la Conservación en Jardines Botánicos) y por la Red de Jardines Botánicos de Cuba.
Se cuenta con un Grupo Científico de Estudiantes que lleva el nombre de “Ovelio Alfonso Alfonso”; Premio del Rector por varios años de trabajo. Sus miembros han ido dejando huellas notables en los resultados científicos del centro, asociado a los
5 proyectos de investigación que se desarrollan y a los cuales han tributado sus trabajos de diplomas.
1.2 Aplicaciones existentes vinculados al campo de acción.
La presencia de dispositivos móviles (Smartphone) en la vida cotidiana son de vital importancia, producto a las facilidades que estos brindan en la búsqueda de información sobre cualquier tema a través de los navegadores. En la actualidad el jardín botánico posee una sección en la página web de Universidad Central “Marta Abreu” de Las Villas en la cual se abordan noticias, eventos relacionados con el mismo, cuenta con documentos y fotos relacionados con la historia del centro. En la Ecured se presentan aspectos generales sobre el Jardín Botánico de la UCLV. Como antecedente se puede señalar la aplicación móvil sobre el Jardín Botánico de Madeira el cual se encuentra dispuesto en unas terrazas que dominan el valle de la Ribeira de João Gomes, en la ciudad de Funchal. La aplicación brinda información acerca de la historia del jardín, las plantas más significativas a la región que pertenecen, posee una sección información la cual muestra los servicios que presta a los visitantes, contiene un mapa del área en la cual se encuentra señalada la ubicación de las plantas y de los establecimientos que brindan servicios a los visitantes, tiene un escáner QR para mostrar información detallada sobre las plantas más relevantes del jardín.
1.3
“Android” El Sistema Operativo de Google para dispositivos
móviles
Un Sistema Operativo para dispositivos móviles es considerado el programa principal, con el cual se pueden administrar todos los recursos tanto de software como de hardware para ser utilizados de manera eficiente, cómoda y sin interrupciones por los usuarios (Polanco and Taibo, 2011).
El sistema operativo Android está basado en Linux, desarrollado por Android Inc. El cual fue comprado por la empresa Google en el año 2005. Android ha gozado de éxito por ser un sistema operativo en el cual gran parte a que su plataforma es abierta, dando la posibilidad a los desarrolladores de software a seguir generando aplicaciones con el código abierto (Martínez, n.d.).
6 En la Figura 1.1 se muestra la arquitectura del sistema operativo Android.
Figura 1.1 Diagrama de la arquitectura del SO Android (Enrique Ramírez
Hernández and Juan Vicente Oltra Gutiérrez, 2011).
Núcleo Linux: El sistema operativo Android está basado en Linux por lo cual los
controladores de pantalla, de la cámara, de memorias, Binder(IPC), de teclado, de Wifi, de audio y de energía están gestionados por las librerías del núcleo de Linux (Enrique Ramírez Hernández and Juan Vicente Oltra Gutiérrez, 2011).
Bibliotecas: Se encuentran incluidas una gran variedad de bibliotecas de C/C++
que son usadas por diferentes secciones del sistema operativo. Los desarrolladores de aplicaciones pueden hacer uso de estas bibliotecas, las más significativas son : System C library, bibliotecas de medios, bibliotecas de gráficos, 3D, SQLite (Enrique Ramírez Hernández and Juan Vicente Oltra Gutiérrez, 2011).
7
Runtime de Android: Incluye la recopilación de un set de bibliotecas base que
proporcionan casi la totalidad de las funciones de Java. Cada aplicación de android que se esté ejecutando utiliza su propio proceso con una llamada a la máquina virtual Dalvik. Dalvik está diseñada para que se ejecuten concurrentemente varias máquinas virtuales de este tipo sin que surja problemas en el dispositivo. Dalvik ejecuta archivos optimizados para memoria mínima en el formato Dalvik Executable (.dev). La Máquina Virtual Dalvik está basada en registros y ejecuta clases compiladas por el compilador de Java que cambiaron al formato .dex a través de la herramienta incluida "dx"(Enrique Ramírez Hernández and Juan Vicente Oltra Gutiérrez, 2011).
Marco de trabajo de aplicaciones cualquier desarrollador puede acceder a
Framework de aplicaciones, para la realización de sus aplicaciones. La arquitectura está diseñada para simplificar la reutilización de los componentes del sistema. Las aplicaciones pueden publicar sus capacidades y otras aplicaciones pueden luego hacer uso de estas capacidades permitiendo que los componentes sean remplazados por el desarrollador (Enrique Ramírez Hernández and Juan Vicente Oltra Gutiérrez, 2011).
Aplicaciones: Son las que se encuentran instaladas en el sistema, algunas de las
aplicaciones que vienen por defecto en el sistema son: un cliente de correo electrónico, programa de SMS, calendario, mapas, navegador, contactos. Están escritas completamente en Java.(Enrique Ramírez Hernández and Juan Vicente Oltra Gutiérrez, 2011).
1.3.1 Evolución del Sistema Operativo Android
El sistema operativo de Google está presente en dispositivos móviles, y una historia de más de una década que cosecha nombres basados en deliciosos postres ordenados alfabéticamente Tabla 1.1. Es un sistema maduro, pero para llegar a este punto han sido necesarios muchos cambios, ensayos y errores.
8
Tabla 1.1: Evolución del sistema operativo Android
1.4 Metodologías Ágiles empleadas en el desarrollo de aplicación
móviles
La popularidad de las metodologías ágiles viene por la buena solución para proyectos a corto plazo, en especial, aquellos proyectos en dónde los requisitos están cambiando constantemente. En las aplicaciones móviles es muy popular el empleo de Metodologías Agiles ya que estas tienen que satisfacer una serie de características y condicionantes especiales, tales como: canal, movilidad, portabilidad, capacidades específicas de las terminales, entre otras. Existen miles de aplicaciones para dispositivos móviles sean con sistema operativo Android, IOS, BlackBerry y Windows Mobile estas hasta cierto punto suplen las necesidades de los usuarios, aunque sus calidades de desarrollo en muchas ocasiones son de las peores, ya que no se considera importante el uso de las metodologías agiles en este ámbito (Balaguera, 2013).
9 Una metodología de desarrollo nueva, especialmente diseñada para el desarrollo de aplicaciones móviles, recibe el nombre de Mobile-D muy centrada en las plataformas móviles la cual fue empleada en el desarrollo de la aplicación móvil “Jardín Botánico UCLV”.
Mobile-D
Mobile-D consta de cinco fases: exploración, iniciación, producción, estabilización y prueba del sistema. Cada una de estas fases tiene un número de etapas, tareas
y prácticas asociadas (Balaguera, 2013).
Fases de Mobile-D
En la fase Explorar, el equipo de desarrollo debe generar un plan y establecer las
características del proyecto. Esta fase está enmarcada en tres etapas: establecimiento de actores, definición del alcance y el establecimiento de proyectos. Las tareas asociadas a esta fase incluyen el establecimiento del cliente (los clientes que toman parte activa en el proceso de desarrollo), la planificación inicial del proyecto y los requisitos de recogida, y el establecimiento de procesos.
En la fase Iniciación, los desarrolladores preparan e identifican todos los recursos
necesarios que serán necesarios para las siguientes fases y se establece el entorno técnico como los recursos físicos, tecnológicos y de comunicaciones (incluyendo el entrenamiento del equipo de desarrollo). Esta fase se divide en cuatro etapas: la puesta en marcha del proyecto, la planificación inicial, el día de prueba y día de salida.
La fase de Producción está dividida en tres días (planificación, trabajo y
liberación). Primero se planificará cómo será el trabajo en cuestiones de requisitos y tareas a realizar. Durante el día de trabajo las tareas se llevarán a cabo, desarrollando e integrando el código con los repositorios existentes. Durante el último día se lleva a cabo la integración del sistema (en caso de que estuvieran trabajando varios equipos de forma independiente) seguida de las pruebas de aceptación.
10
En la fase de Estabilización se llevan a cabo las últimas acciones para que el
sistema funcione correctamente. Los desarrolladores realizarán tareas dirigidas a la integración del sistema. En esta fase se desarrollará la producción de la documentación.
En la fase (prueba y reparación del sistema) tiene como meta la disponibilidad
de una versión estable y plenamente funcional del sistema. El producto terminado e integrado se prueba con los requisitos de cliente y se eliminan todos los defectos encontrados.
Figura1.2: Ciclo de desarrollo Mobile-D (Balaguera, 2013).
1.5 Tipos de Aplicaciones para Dispositivos Móviles.
Los dispositivos móviles forman parte de la vida cotidiana y cada vez prestan más servicios a los usuarios. Estos dispositivos han aumentado su poder de cómputo generando posibilidades que no eran pensadas en años atrás. Producto a estas posibilidades los usuarios demandan de manera creciente de desarrollo de software específico para estos dispositivos. Actualmente existen tres tipos de aplicaciones móviles: web, nativas e híbridas, que se definen como (Lisandro Delía et al., 2013):
Aplicaciones Web
Las aplicaciones web para móviles son diseñadas para ser ejecutadas en el navegador del dispositivo móvil. Estas aplicaciones son desarrolladas utilizando HTML, CSS y JavaScript, es decir, la misma tecnología que la utilizada para crear sitios web. Una de las ventajas de las aplicaciones web es que los dispositivos no necesitan instalar ningún componente en particular, ni la aprobación del fabricante
11 para que la aplicación sea utilizada, solamente se necesita que el dispositivo esté conectado a internet. Cuando la aplicación es actualizada esta se visualiza directamente en el dispositivo porque los cambios son aplicados sobre el servidor. Otra ventaja de este tipo de aplicación es su independencia de plataforma, es decir, no necesita adaptarse a ningún otro entorno, puede ser visualizada tanto en dispositivos con sistema operativo Android que en dispositivos con sistema operativo IOS. Por otra parte estas aplicaciones al ser visualizadas en el navegador y el dispositivo requiere de internet, pueden mostrarse menos atractivas que las aplicaciones nativas ya que por problemas de conectividad pueden presentar problemas de funcionamiento, es decir, se pueden mostrar de una manera muy lenta e incluso no cargar de manera correcta la interfaz.
Aplicaciones Nativas
Las aplicaciones nativas son aquellas que se conciben para ejecutarse en una plataforma específica, es decir, se debe considerar el tipo de dispositivo, el sistema operativo a utilizar y su versión. Este tipo de aplicaciones pueden interactuar con todos los recursos del dispositivo como la cámara, el GPS, acelerómetro, agenda, entre otras. Además, no requieren de manera estricta el internet por lo cual su ejecución es rápida, pueden ejecutarse en modo background y cuando ocurre un evento le notifica al usuario para que le preste atención. Una de las desventajas es que si se desea cubrir varias plataformas se deberá generar una aplicación para cada una de las ellas, por lo que conlleva a mayores costos de actualización y distribución de nuevas versiones.
Aplicaciones Híbridas
Las aplicaciones híbridas combinan lo mejor de los dos tipos de aplicaciones anteriores. Se utilizan tecnologías multiplataforma como HTML, JavaScript y CSS, pero se puede acceder a buena parte de las capacidades específicas de los dispositivos. En resumen, son desarrolladas utilizando tecnología web y son ejecutadas dentro de un contenedor web sobre el dispositivo móvil. Estas aplicaciones son ventajosas ya poseen la posibilidad de distribución de a través de las tiendas de aplicaciones, la reutilización de código para múltiples plataformas y
12 la posibilidad de utilizar las prestaciones del hardware del dispositivo. Como desventajas de este tipo de aplicaciones es que, al utilizar la misma interfaz para todas las plataformas, la apariencia de la aplicación no será como la de una aplicación nativa, además que su ejecución será más lenta que la ejecución en una aplicación nativa.
1.6 Entorno de desarrollo, Lenguaje de Programación y
Tecnologías empleadas.
Para la implementación de esta aplicación móvil fue necesario varios softwares de desarrollo como el Android Studio con la utilización de librerías de software como PhotoView, animated-svg-view, slider, zxing, SQLite, también se necesitó el Adobe Photoshop, Adobe Illustrator, Resize.
1.6.1 Android Studio
Android Studio es el entorno de desarrollo integrado oficial para la plataforma
Android. Fue anunciado el 16 de mayo de 2013 en la conferencia Google I/O, y reemplazó a Eclipse como el IDE oficial para el desarrollo de aplicaciones para Android. La primera versión estable fue publicada en diciembre de 2014. Está basado en el software IntelliJ IDEA de JetBrains y ha sido publicado de forma gratuita a través de la Licencia Apache 2.0. Está disponible para las plataformas Microsoft Windows, macOS y GNU/Linux. Ha sido diseñado específicamente para el desarrollo de aplicaciones para dispositivos con sistema operativo Android. Estuvo en etapa de vista previa de acceso temprano a partir de la versión 0.1, en mayo de 2013, y luego entró en etapa beta a partir de la versión 0.8, lanzada en junio de 2014. La primera compilación estable, la versión 1.0, fue lanzada en diciembre de 2014. La última versión estable es la 3.4.0, y fue lanzada en abril de 2019 es una versión importante que incluye una variedad de nuevas características y mejoras, aunque ya está la versión 3.4.1 lanzada en mayo de 2019 (“Android Studio release notes | Android Developers,” n.d.).
1.6.2 Material Design
Material Design es un lenguaje visual que sintetiza los principios clásicos del buen diseño con la innovación de la tecnología y la ciencia, diseñado por Matías Duarte. Material Design está inspirado en el mundo físico y sus texturas, incluida la forma
13 en que reflejan la luz y proyectan sombras ya que los objetos tienen tres dimensiones: la anchura, la altura y el grosor. Las superficies de los materiales reimaginan los medios de papel y tinta. Esta filosofía de diseño ayuda hacer productos hermosos y más rápido; además que está diseñado para evolucionar con el tiempo. A partir de mayo de 2018, se ha desarrollado una cadencia de lanzamiento mensual para aumentar las capacidades expresivas del sistema de Diseño de Materiales, brindándole aún más capacidad de Material Theming. Es un sistema adaptable de pautas, componentes y herramientas que respaldan las mejores prácticas de diseño de interfaces de usuario. Respaldado por el código de código abierto, Material agiliza la colaboración entre diseñadores y desarrolladores, y ayuda a los equipos a crear productos hermosos rápidamente.(Sitio Oficial de Material Design, n.d.).
1.6.3 PhotoView
PhotoView es una librería de software la cual tiene como objetivo ayudar a producir una implementación fácil para darle zoom a un ImageView de Android (Banes, 2019).
Características
Acercamiento fuera de la caja, con multitoque y doble toque.
Desplazamiento, con suave desplazamiento de desplazamiento.
Funciona a la perfección cuando se utiliza en un elemento principal con desplazamiento (como ViewPager).
Permite que se notifique a la aplicación cuando la Matriz mostrada haya cambiado. Útil para cuando necesita actualizar su interfaz de usuario según la posición actual de zoom / desplazamiento.
Permite que se notifique a la aplicación cuando el usuario toca la foto.
Uso
Se proporciona una muestra del código de la aplicación Jardín Botánico UCLV tomado del archivo ImageDetailActivity.java que muestra cómo usar la biblioteca de una manera más avanzada.
14
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_detail, container, false);
final PhotoView imageView = rootView.findViewById(R.id.detail_image);
Picasso.with(getActivity()).load(getArguments().getString(ARG_IMG_URL)).i nto(imageView);
return rootView; }
...
1.6.4 animated svg view
animated svg view es una librería de software que tiene como objetivo ayudar a producir una implementación fácil para crear dibujo SVG animado para Android (Rummler, 2019).
Uso
Se proporciona una muestra del código de la aplicación Jardín Botánico UCLV tomado del archivo SplashActivity.Java que muestra cómo usar la biblioteca de una manera más avanzada.
final AnimatedSvgView svgView = (AnimatedSvgView) findViewById(R.id.animated_svg_view);
svgView.start();
svgView.setOnStateChangeListener(new
AnimatedSvgView.OnStateChangeListener() { @Override
public void onStateChange(@AnimatedSvgView.State int i) { if (i == AnimatedSvgView.STATE_FINISHED) {
startActivity(new Intent(SplashActivity.this, MainActivity.class));
finish(); }
} });
1.6.5 android image slider
android image slider es una librería de software empleada como deslizador de imagen para la plataforma Android. Puede cargar fácilmente imágenes desde una URL de Internet, dibujable o archivo. Hay muchos tipos de animaciones (daimajia, 2019)
15 Se proporciona una muestra del código de la aplicación Jardín Botánico UCLV tomado del archivo HomeFragment.java que muestra cómo usar la biblioteca de una manera más avanzada.
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_home, container,
false);
mSlider = (SliderLayout) view.findViewById(R.id.slider); TextSliderView textSliderView;
for (ImageModel model : ResUtil.IMAGE_MODELS) {
textSliderView = new TextSliderView(getContext()); // initialize a SliderLayout textSliderView .description(model.getImageInfo()) .image(model.getFileURL()) .setScaleType(BaseSliderView.ScaleType.CenterCrop) .setOnSliderClickListener(this);
//add your extra information
textSliderView.bundle(new Bundle()); mSlider.addSlider(textSliderView); }
...
1.6.6 zxing
Zxing es una librería de software que se implementó en el entorno OpenGL, ofrece
la posibilidad de evaluar y comparar diferentes puntos y la influencia de las distorsiones en el proceso de decodificación, es decir es un decodificador de códigos de barras y códigos qr (Constantin Scheuermann et al., n.d.), (Dushyanth, 2019).n
Uso
Se proporciona una muestra del código de la aplicación Jardín Botánico UCLV tomado del archivo QRActivity.java que muestra cómo usar la biblioteca de una manera más avanzada.
public class QRActivity extends AppCompatActivity implements
ZXingScannerView.ResultHandler {
private ZXingScannerView scannerView;
16 @Override
public void onResume() { super.onResume();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (Util.checkPermission(QRActivity.this, CAMERA)) { if (scannerView == null) {
scannerView = new ZXingScannerView(this); setContentView(scannerView);
}
scannerView.setResultHandler(this); scannerView.startCamera();
} else {
Util.requestPermission(this, new String[]{CAMERA},
REQUEST_CAMERA); } } } ... } 1.6.7 SQLite
SQLite es una librería compacta y auto contenida de código abierto y distribuida
bajo dominio público que implementa un gestor de bases de datos SQL embebido, sin configuración y transaccional. Es compacta porque con todas las características habilitadas, el tamaño de la librería es inferior a 250Kb y es auto contenida porque requiere muy poco soporte de librerías externas o del sistema operativo esto la hace adecuada para usarla en pequeños dispositivos que no son tan completos como las PC de escritorio (DANIEL PONSODA MONTIEL, 2008).
1.6.8 Adobe Photoshop CC 2018
Adobe Photoshop es un editor de gráficos rasterizados desarrollado por Adobe
Systems Incorporated. Usado principalmente para el retoque de fotografías y gráficos, su nombre en español significa literalmente "taller de fotos". Es líder mundial del mercado de las aplicaciones de edición de imágenes y domina este sector de tal manera que su nombre es ampliamente empleado como sinónimo para la edición de imágenes en general (Sitio Oficial de Adobe, 2019a).
1.6.9 Adobe Illustrator CC 2018
Adobe Illustrator (AI) es un editor de gráficos vectoriales en forma de taller de arte
que trabaja sobre un tablero de dibujo, conocido como «mesa de trabajo» y está destinado a la creación artística de dibujo y pintura para ilustración (ilustración como
17 rama del arte digital aplicado a la ilustración técnica o el diseño gráfico, entre otros). Es desarrollado y comercializado por Adobe Systems y constituye su primer programa oficial de su tipo en ser lanzado por esta compañía definiendo en cierta manera el lenguaje gráfico contemporáneo mediante el dibujo vectorial. Adobe Illustrator contiene opciones creativas, un acceso más sencillo a las herramientas y una gran versatilidad para producir rápidamente gráficos flexibles cuyos usos se dan en (maquetación-publicación) impresión, vídeo, publicación en la Web y dispositivos móviles. Las impresionantes ilustraciones que se crean con este programa le han dado una fama de talla mundial a esta aplicación de manejo vectorial entre artistas gráficos digitales de todo el planeta, sin embargo, el hecho de que hubiese sido lanzado en un principio para ejecutarse solo con el sistema operativo Macintosh y que su manejo no resultara muy intuitivo para las personas con muy poco trasfondo en manejo de herramientas tan avanzadas afectó la aceptación de este programa entre el público general de algunos países (Sitio Oficial de Adobe, 2019b).
Fue empleado para vectorizar las imágenes del mapa y la imagen que se observa al iniciar la aplicación la cual se muestra de manera animada gracias a la utilización de la librería animated svg view mencionada anteriormente.
1.6.10 Resize
Resize permite controlar la capacidad de cambio de tamaño de un elemento teniendo en cuenta los valores que se pueden seleccionar en Resize. Tales valores son:
None: El elemento no ofrece método para que el usuario controle el cambio de
tamaño del elemento.
Both: El elemento ofrece un mecanismo que permite al usuario cambiar el tamaño
del elemento el cual puede ser tanto horizontal como verticalmente.
Horizontal: El elemento ofrece un mecanismo que permite al usuario cambiar el
tamaño del elemento sólo horizontalmente.
Vertical: El elemento ofrece un mecanismo que permite al usuario cambiar el
18 Fue aplicado para reducir el tamaño de todas las fotos empleadas en las secciones galería, planta y menú principal, con el objetivo de que la aplicación cargue con facilidad y ocupe menos espacio en memoria cuando sea instalada.
1.7 Conclusiones parciales
En este capítulo se abordan las tecnologías utilizadas para el desarrollo de aplicaciones móviles con fines de divulgación de sitios de interés potencial como el Jardín Botánico de la UCLV. Para ello se decidió el uso de Android como sistema operativo base para la creación de la aplicación móvil, utilizando para el desarrollo de la app la metodología ágil Mobile-D, esta posee características que se adaptan aun desarrollo eficiente y ágil de una aplicación para móviles.
19
CAPÍTULO 2. DISEÑO E IMPLEMENTACIÓN DE LA
APLICACIÓN MÓVIL “JARDÍN BOTÁNICO UCLV”
En este capítulo se abordan temas relacionados con el boceto y puesta en funcionamiento de la aplicación desarrollada, así como una descripción detallada de la misma, para ello se mostrarán algunos diagramas de análisis y diseño. También se describe el funcionamiento de la misma en las diferentes secciones.
2.1 Ejecutante del sistema a automatizar
El ejecutante o el actor del sistema va a ser la persona que visita el centro. El sistema está concebido para ofrecer información sobre el Jardín Botánico de la UCLV, localizado en la Universidad Central “Marta Abreu” de Las Villas por lo que cualquier persona que desee utilizar el sistema es considerada como actor del sistema.
2.2 Definición de Requerimientos
Es la condición o capacidad que un usuario necesita para poder resolver un problema o lograr un objetivo, por lo cual debe exhibir o poseer un sistema para satisfacer un contrato, estándar, especificación, u otra documentación formalmente impuesta. Debe ser conformada por el Lenguaje Unificado de Modelado (UML). En el de desarrollo de un sistema, los desarrolladores desafían a la dificultad de la comprensión de requisitos. Esta comprensión de las necesidades del sistema es un desarrollo complejo; ya que hay que reconocer la exigencia que el sistema debe cumplir para amortizar las necesidades de los usuarios finales y de los clientes (María José Escalona and Nora Koch, 2002).
2.2.1 Requerimientos Funcionales
Los requisitos funcionales son declaraciones de los servicios que prestará el sistema describiendo la funcionalidad o los servicios que se espera que este proveerá lo cual es el fruto fundamental de la interacción entre analista y el cliente (José A. Cerrada Somolinos and Manuel E. Collado Machuca, 2006).
RF1: Que posea una opción para mostrar la historia del Jardín Botánico de la UCLV a
BOTÁNICO UCLV”
20
RF2: Que muestre el mapa del jardín botánico.
RF2: Seleccionar una opción que muestre las áreas de colecciones vivas de plantas. RF2.1: Seleccionar una de las áreas de colecciones vivas de plantas la cual muestre
una lista con todas las plantas que pertenecen al área seleccionada.
R2.1.1 Dentro de la opción área que de la posibilidad de mostrar la ubicación de
la misma en el mapa del jardín botánico.
R2.1.2 Dentro de la opción área se pueda seleccionar una de las plantas del área
y que muestre una imagen de la planta, el nombre común, el nombre científico y una descripción de la misma.
RF3:(Requisito deseable) Se dispondrá de un escáner de códigos QR que facilitará la
información de la planta.
RF4: Que tenga una galería de imágenes que muestre las diferentes áreas del jardín.
2.2.2 Requerimientos No Funcionales
Los requerimientos no funcionales son los requerimientos que no se refieren directamente a las funciones específicas que proporciona el sistema. Estos requerimientos incluyen restricciones de tiempo, sobre el proceso de desarrollo de software y estándares. Estos requerimientos surgen por las necesidades del usuario, debido a las restricciones en el presupuesto, a las políticas de la organización, a la necesidad de la interoperabilidad con otros sistemas de software o hardware, o a factores externos como regulaciones de seguridad o legislaciones sobre privacidad (IAN SOMMERVILLE, 2005).
BOTÁNICO UCLV”
21
Figura 2.1: Tipos de requerimientos no funcionales (IAN SOMMERVILLE, 2005).
RNF1: Soporte. El dispositivo móvil tiene que tener sistema operativo Android y como
mínimo la versión 6.0 Marshmallow.
RNF2: Capacidad. El dispositivo como mínimo debe contar con 28Mb de capacidad
interna para la instalación de la aplicación.
RNF3: Seguridad. A partir de la versión 6.0 de Android Marshmallow se deben otorgar permisos manualmente de acceso a la cámara. En la versión android 7.1.1 Nougat se debe desactivar la opción de Play Protect que se encuentra ubicado en la aplicación de Google Play Store para poder instalar, una vez instalada la aplicación se puede volver activar Play Protect.
2.3 Diagrama de Casos de Uso del Sistema
Los casos de uso son los escenarios que facilitan una descripción de cómo el sistema se usará. Para conformar un caso de uso, el ingeniero del software primero debe de identificar los diferentes tipos de personas o dispositivos que utilizarán el sistema o producto. Un actor define un rol que un usuario puede desempeñar cuando interactúa con el sistema. Un usuario puede ser un individuo u otro sistema. Los actores tienen un nombre y una
BOTÁNICO UCLV”
22 breve descripción y se asocian con los casos de uso, con los cuales interactúan. Un actor y un usuario no son la misma cosa ya que un usuario normal puede jugar un número de papeles diferentes cuando utiliza un sistema y un actor representa una clase de entidades externas (a veces, pero no siempre personas) que llevan a cabo un papel (Roger S. Pressman, 2010).
El caso de uso del actor de esta aplicación es el siguientes: CU1: Consultar información del Jardín Botánico de la UCLV
Figura 2.2: Diagrama de Casos de Uso del Sistema.
2.4 Diagrama de secuencia
Un diagrama de secuencia es usado para modelar la interacción entre objetos en un sistema. En estos diagramas se muestran los objetos participantes en la interacción ordenados según su secuencia. La línea vertical se llama línea de vida del objeto, esta línea representa la vida del objeto durante la interacción. Los mensajes se representan mediante una flecha entre líneas de vida de dos objetos y el orden en que se dan transcurre de arriba hacia abajo. Cada mensaje es etiquetado como mínimo con el nombre del mensaje; pueden incluirse también los argumentos y algunas informaciones de control, y se puede mostrar la auto-delegación, que es un mensaje que un objeto se envía a el mismo, regresando la flecha de mensaje de vuelta a la misma línea de vida (Martin Fowler, 1999).
Un diagrama de secuencia muestra las interacciones entre los objetos para ejecutar un caso de uso. Estos diagramas son importantes para los diseñadores debido a que ellos
BOTÁNICO UCLV”
23 aclaran los roles de los objetos en el flujo y por lo tanto brindan la entrada básica para la determinación de los roles y las interfaces de las clases.
La figura siguiente muestra el Diagrama de Secuencia relacionado con la opción Plantas.
Figura 2.3 Diagrama de Secuencia para la opción Plantas.
La figura siguiente muestra el Diagrama de Secuencia relacionado con la opción Información.
BOTÁNICO UCLV”
24
2.5 Mapa de Navegación de la aplicación
Al crear una aplicación móvil, siempre es bueno planificar a gran escala esta etapa, en este proceso debemos saber ubicar las piezas fundamentales de la articulación de nuestro desarrollo, en este proceso debemos generar y guiarnos mediante la Arquitectura de Información para poder ordenar nuestros contenidos y es este el momento donde debemos crear los mapas de navegación.
Los mapas de navegación permiten visualizar la estructura y contenidos generales, al crear los módulos que componen la aplicación, a partir de un modelo de diseño instruccional. El mapa de navegación representa todas las relaciones de jerarquía y secuencia de la aplicación; además de ofrecer al usuario una guía del material. Son considerados gráficos ya que muestran la forma en que se distribuyen las interfaces graficas de usuario, también incluyen imágenes de la aplicación como la imagen principal y si hay algún hipervínculo que la interconecte se hará un despliegue (García Sánchez et al., 2016).
En la siguiente figura se muestra el mapa de navegación de la aplicación. Como nodo raíz se encuentra la vista principal, de ella derivan las diferentes vistas de la aplicación.
BOTÁNICO UCLV”
25
Figura 2.5: Mapa de Navegación de la Aplicación
2.6 Modelo de Componentes
Un modelo de componentes es una definición de los estándares para la definición de componentes, documentación, y despliegue. Los desarrolladores de software utilizan estos estándares para asegurar que los componentes puedan interoperar. Los elementos en un modelo de componentes se clasifican en elementos relacionados con las interfaces de los componentes, elementos relacionados con la información que se necesita para utilizar el componente en un programa y elementos relacionados con el despliegue del componente ver Figura 2.8.
Los elementos que definen a un componente son sus interfaces. El modelo de componentes especifica cómo deberían definirse las interfaces y los elementos, tales como nombres de operaciones, parámetros y excepciones, que deberían incluirse en la definición de una interfaz; también debería especificar el lenguaje utilizado para definir
BOTÁNICO UCLV”
26 las interfaces. Existen modelos de componentes que requieren interfaces específicas que deben ser definidas por un componente. Son empleadas para integrar el componente con la infraestructura del modelo de componentes que proporciona servicios estandarizados tales como seguridad y gestión de transacciones. Los componentes para que puedan ser distribuidos y ser accedidos de forma remota, necesitan tener un nombre o manejador único asociado a ellos. Los componentes son entidades independientes, tienen que ser empaquetados con el resto de los elementos que no son proporcionados por la infraestructura de componentes o no están definidos en una interfaz. La información de despliegue incluye sobre los contenidos de un paquete y su organización binaria.
A medida que surgen nuevos requerimientos, los componentes tendrán que ser cambiados o reemplazados. Por lo tanto, el modelado de componentes debería incluir reglas para regular cuando y como se permite el reemplazo de componentes. Finalmente, el modelo de componentes debería definir la documentación asociada a los componentes. Esta es utilizada para encontrar el componente y decidir si es adecuado o no (IAN SOMMERVILLE, 2005).
Figura 2.6: Elementos básicos de un Modelo de Componentes (IAN SOMMERVILLE,
BOTÁNICO UCLV”
27 En la siguiente Figura se muestra el Diagrama de Componentes de la aplicación (Jardín Botánico UCLV), la cual muestra las diferentes librerías utilizadas como:
PhotoView: Se utiliza para darle zoom a un ImageView.
animated-svg-view: Ayuda a producir una implementación fácil para crear dibujo SVG
animado para Android.
android image slider: Es un deslizador de imagen. Se utiliza para cargar fácilmente
imágenes desde una URL de Internet, dibujable o archivo.
Zxing: Se utiliza para escanear el código QR que tienen las plantas.
Sqlite: Se utiliza en la creación de la base de datos que se encuentra embebida dentro
de la aplicación.
Estas librerías fueron empleadas para mejorar la apariencia visual de la aplicación y su rapidez.
En la siguiente figura se muestra el modelo de componentes de la aplicación desarrollada.
BOTÁNICO UCLV”
28
2.7 Diseño e implementación de la Base de Datos
Las Bases de Datos son programas que tienen como función administrar información, por lo que la hacen más ordenada, aparte de hacerla fácil de buscar. Presentan características que pueden ser ventajosas o desventajosas: ya que pueden favorecer el almacenamiento, la organización, la recuperación, la comunicación y el manejo de la información en formas que serían imposibles sin tecnologías informáticas, pero también nos afecta de alguna manera ya que existen enormes cantidades de información en bases de datos de las que no se tiene control del acceso. Sus usos: nos facilitan el almacenamiento de grandes cantidades de información; permiten la recuperación rápida y flexible de información, con ellas se puede organizar y reorganizar la información, así como imprimirla o distribuirla en diversas formas (Ricardo Vicente Jaime Vivas, 2009).
2.7.1 Modelo Entidad-Relación
El modelo Entidad-Relación es un mecanismo formal para representar y manipular información de manera general y sistemática. En él cualquier dato o concepto debe ser definido o modelado de manera única. Los elementos de este modelo son las entidades, los atributos, las asociaciones o relaciones y los diagramas (Alberto González Carrasco and Luis Müller Heiberg, 2017).
A continuación, se mostrará el diagrama de Entidad-Relación de la base de datos de la aplicación “Jardín Botánico UCLV”
BOTÁNICO UCLV”
29
2.7.2 Implementación de la Base de Datos
Para crear la Base de Datos se implementó la clase GardenDatabase.java la cual se deriva de la clase SQLiteOpenHelper, Figura 2.9.
Figura 2.9: Clase GardenDatabase.java se deriva de la clase SQLiteOpenHelper.
Para crear las tablas AREA y PLANT de la base de datos se sobrescribe el método onCreate() como se muestra en la Figura 2.10 a continuación.
BOTÁNICO UCLV”
30
Figura 2.10: Se sobrescribe el método onCreate y se crean las tablas AREA y PLANT
dentro de la clase GardenDatabase.java
Para insertar la información de las plantas dentro de la tabla AREA se implementó el siguiente método Figura 2.11.
Figura 2.11: Método para insertar la información de las plantas dentro de la tabla PLANT
BOTÁNICO UCLV”
31
Figura 2.12. Ejemplo del uso del método insertPlant().
Para insertar la información de las áreas dentro de la tabla AREA se implementó el siguiente método Figura 2.13.
Figura 2.13: Método para insertar la información de las áreas dentro de la tabla AREA.
A continuación, se mostrará el uso del método insertArea() Figura 2.14.
Figura 2.14: Ejemplo del uso del método insertArea
El método onUpgrade() se lanzará automáticamente cuando sea necesaria una actualización de la estructura de la base de datos o una conversión de los datos Figura 2.15.
BOTÁNICO UCLV”
32
2.8 Diagrama de Despliegue
Los Diagramas de Despliegue muestran la disposición física de los distintos nodos que componen un sistema y el reparto de los componentes sobre dichos nodos (Patricio Letelier Torres, n.d.).
Estos diagramas modelan la arquitectura en tiempo de ejecución de un sistema, además muestra la configuración de los elementos de hardware(nodos) y muestra como los elementos y artefactos del software se trazan en esos nodos(IAN SOMMERVILLE, 2005).
En la siguiente figura se muestra el Diagrama de Despliegue del Sistema, este contiene los componentes de hardware que se utilizarán. El componente “Plataforma Android” son todos los usuarios que interactúan con la aplicación mediante diferentes tipos de dispositivos móviles con sistema operativo Android.
Figura 2.8: Diagrama de Despliegue del Sistema
Conclusiones parciales del capítulo
En este capítulo se definieron los requerimientos funcionales y los no funcionales del sistema. Se modeló el sistema utilizando el lenguaje UML (Lenguaje Unificado de Modelado) manejando todas las facilidades que el mismo brinda, además se describieron los casos de usos del sistema. Se emplean los modelos de trazabilidad específicamente a través de la Matriz de Trazabilidad, también se emplean modelos de componentes del
BOTÁNICO UCLV”
33 sistema y diagramas de despliegue. Se logró implementar un sistema que permite brindar información acerca del “Jardín Botánico de la UCLV” para dispositivos móviles con sistema operativo Android.
34
CAPÍTULO 3. PRUEBAS DE SOFTWARE
3.1 Pruebas de software
Las pruebas de software representan un grande esfuerzo técnico en el proceso de desarrollo de software. No importa el tipo de software que se desarrolle, la estrategia para planificar, ejecutar y controlar pruebas sistemáticas comienza por examinar pequeños elementos del software y moverse hacia afuera, hacia el programa como un todo.
El objetivo de las pruebas del software es encontrar errores. Para el software habitual, este objetivo se logra mediante una serie de pasos de prueba. Una de las pruebas son las pruebas de unidad e integración las cuales se concentran en la verificación funcional de un componente y en la anexión de componentes en una arquitectura de software. Otra de las pruebas son las de validación las cuales demuestran la correlación con los requerimientos del software y las pruebas del sistema validan el software una vez que se incorporó en un sistema más grande. Estos pasos de pruebas se logran a través de una serie de técnicas de pruebas sistemáticas que ayudan en el diseño de casos de prueba. Para probar software orientado a objeto la estrategia que se sigue es la siguiente: se comienza con pruebas que adiestran las operaciones dentro de una clase y luego avanzan hacia la prueba basada en hebra para integración. Las hebras no son más que conjuntos de clases que responden a una entrada o evento. Las pruebas basadas en uso se proyectan en clases que no colaboran demasiado con otras clases (Roger S. Pressman, 2010).
35
3.2 Estrategias de Pruebas
“El proceso de software puede verse como la espiral que se ilustra en la figura 3.2 Inicialmente, la ingeniería de sistemas define el papel del software y conduce al análisis de los requerimientos del mismo, donde se establecen los criterios de dominio, función, comportamiento, desempeño, restricciones y validación de información para el software. Al avanzar hacia adentro a lo largo de la espiral, se llega al diseño y finalmente a la codificación. Para desarrollar software de computadoras, se avanza en espiral hacia adentro (contra las manecillas del reloj) a lo largo de una línea que reduce el nivel de abstracción en cada vuelta.”(Roger S. Pressman, 2010).
Figura 3.2 Estrategia de pruebas.(Roger S. Pressman, 2010)
Características de la Estrategia de Pruebas:
1. Comienza en el nivel de módulo y trabaja "hacia fuera", hacia la integración completa del sistema completo.
2. En diferentes puntos son utilizada las técnicas de pruebas distintas.
3. Si el software es desarrollado por una sola persona este es el encargado de realizar las pruebas, pero si el software es de mayor magnitud y es desarrollado por un mayor número de personas las pruebas se llevan a cabo por un grupo de prueba independiente.
36 4. La prueba y la depuración son actividades diferentes, pero la depuración puede
entrar en cualquier estrategia de prueba.
Los productos de software pueden ser verificados de dos formas diferentes:(Roger
S. Pressman, 2001a)
Prueba de Caja Blanca.
La prueba de caja blanca, en ocasiones llamada prueba de caja de vidrio, es una filosofía de diseño de casos de prueba que consiste en centrarse en la estructura interna (implementación) del programa para elegir los casos de prueba. Al usar los métodos de prueba de caja blanca, puede derivar casos de prueba que:
1. Garanticen que todas las rutas independientes dentro de un módulo se revisaron al menos una vez,
2. Revisen todas las decisiones lógicas en sus lados verdadero y falso,
3. Ejecuten todos los bucles en sus fronteras y dentro de sus fronteras operativas 4. Revisen estructuras de datos internas para garantizar su validez.
Prueba de Caja Negra.
La prueba de caja negra se refiere a las pruebas que se llevan a cabo en la interfaz del software. Una prueba de caja negra examina algunos aspectos fundamentales de un sistema con poca preocupación por la estructura lógica interna del software.
3.3 Pruebas de Caja Negra
“Las pruebas de caja negra, también llamadas pruebas de comportamiento, se enfocan en los requerimientos funcionales del software; es decir, las técnicas de prueba de caja negra le permiten derivar conjuntos de condiciones de entrada que revisarán por completo todos los requerimientos funcionales para un programa. Las pruebas de caja negra no son una alternativa para las técnicas de caja blanca. En vez de ello, es un enfoque complementario que es probable que descubra una clase de errores diferente que los métodos de caja blanca.”(Roger S. Pressman, 2010)
37 Las Pruebas de Caja Negra tratan de hallar errores en diferentes categorías. Tales categorías son las siguientes:(Roger S. Pressman, 2010)
1. Funciones incorrectas o faltantes, 2. Errores de interfaz.
3. Errores en las estructuras de datos o en el acceso a bases de datos externas. 4. Errores de comportamiento o rendimiento
5. Errores de inicialización y terminación
Las pruebas de Caja Negra tienden a realizarse durante las últimas etapas de la prueba. Estas pruebas se diseñan para responder a las siguientes preguntas:
¿Cómo se prueba la validez funcional?
¿Cómo se prueban el comportamiento y el rendimiento del sistema? ¿Qué clases de entrada harán buenos casos de prueba?
¿El sistema es particularmente sensible a ciertos valores de entrada? ¿Cómo se aíslan las fronteras de una clase de datos?
¿Qué tasas y volumen de datos puede tolerar el sistema?
¿Qué efecto tendrán sobre la operación del sistema algunas combinaciones específicas de datos?
Para desarrollar la prueba de caja negra existen varios métodos, entre ellas están: (Roger S. Pressman, 2001b)
Método de prueba basados en grafos
La prueba del software empieza creando un grafo de objetos importantes y sus relaciones, y después diseñando una serie de pruebas que cubran el grafo de manera que se ejerciten todos los objetos y sus relaciones para descubrir los errores. Fue la
38
Partición equivalente
La partición equivalente es un método de prueba de caja negra que divide el campo de entrada de un programa en clases de datos de los que se pueden derivar casos de prueba. Un caso de prueba ideal descubre de forma inmediata una clase de errores (por ejemplo, proceso incorrecto de todos los datos de carácter) que, de otro modo, requerirían la ejecución de muchos casos antes de detectar el error genérico. La partición equivalente se dirige a la definición de casos de prueba que descubran clases de errores, reduciendo así el número total de casos de prueba que hay que desarrollar.
Análisis de valores límite
El análisis de valores límite es una técnica de diseño de casos de prueba que complementa a la partición equivalente. En lugar de seleccionar cualquier elemento de una clase de equivalencia, el análisis de valores límite lleva a la elección de casos de prueba en los extremos de la clase. En lugar de centrarse solamente en las condiciones de entrada, el análisis de valores límite obtiene casos de prueba también para el campo de salida.
Prueba de comparación
Para las aplicaciones críticas, se deben desarrollar versiones de software independientes, incluso aunque sólo se vaya a distribuir una de las versiones. Esas versiones independientes son la base de una técnica de prueba de caja negra denominada prueba de comparación o prueba mano a mano.
Prueba de la tabla ortogonal
La prueba de la tabla ortogonal puede aplicarse a problemas en que el dominio de
entrada es relativamente pequeño, pero demasiado grande para posibilitar pruebas exhaustivas. El método de prueba de la tabla ortogonal es particularmente útil al encontrar errores asociados con fallos localizados una categoría de error asociada con defectos de la lógica dentro de un componente Software.
39
3.3.1 Método de prueba basado en errores de interfaz Tabla 3.1 Secciones a probar la opción “QR”
Nombre de la Sección Escenarios de la Sección Descripción de la funcionalidad Flujo Central SC1: QR EC 1.1: El usuario desea escanear el código por primera vez.
La aplicación chequea los permisos de acceso a la cámara. Abrir automáticamente la interfaz de la cámara. EC 1.2: El usuario desea acceder nuevamente al QR. La aplicación necesitará solo que el visitante acceda a la cámara. Abrir automáticamente la interfaz de la cámara.
Tabla 3.2 Escenarios a probar la opción “QR” Id del escenario Escenario Variable 1 Permisos Respuesta del Sistema Resultado de la Prueba
EC1 Primera vez V El sistema
chequea los permisos de acceso a la Prueba superada con éxito.
40 [Las celdas de la tabla contienen V, I, V indica válido, I indica inválido.]
cámara y carga la interfaz del escáner. I El sistema lanza una alerta notificando que no tienes permisos para acceder a la cámara.
EC2 Nuevamente V El sistema
comprueba los permisos y carga la interfaz de la cámara. Prueba superada con éxito. I El sistema lanza una alerta notificando que no tienes permiso para acceder a la cámara.
41
3.4 Pruebas de Usabilidad
La usabilidad es una condición muy importante que debe poseer todo software. Un software presenta buena usabilidad cuando su interfaz gráfica es amigable para el usuario y este no necesite la presencia de un experto que le guie a trabajar con el software.
La prueba de usabilidad evalúa el grado en el cual los usuarios pueden interactuar con la aplicación y el grado en el que la aplicación guía las acciones del usuario, proporciona retroalimentación significativa y refuerza un enfoque de interacción concreto. En lugar de enfocarse atentamente en la semántica de algún objetivo interactivo, las revisiones y pruebas de usabilidad se diseñan para determinar el grado en el cual la interfaz de la
aplicación facilita la vida del usuario (Roger S. Pressman, 2001a).
El ingeniero en software contribuirá con el diseño de las pruebas de usabilidad,
pero las pruebas en sí las realizan los usuarios finales. La siguiente secuencia de pasos es aplicable para tal fin (Roger S. Pressman, 2010):
1. Definir un conjunto de categorías de prueba de usabilidad e identificar las metas de cada una.
2. Diseñar pruebas que permitirán la evaluación de cada meta. 3. Seleccionar a los participantes que realicen las pruebas.
4. Instrumentar la interacción de los participantes con la aplicación mientras se lleva a cabo la prueba.
5. Desarrollar un mecanismo para valorar la usabilidad de la aplicación.
Las siguientes categorías y objetivos de prueba (escritos en forma de pregunta) ilustran este enfoque:
Interactividad: ¿Los mecanismos de interacción (por ejemplo, menús desplegables,
botones, punteros) son fáciles de entender y usar?
Plantilla: ¿Los mecanismos de navegación, contenido y funciones se colocan de forma
42
Legibilidad: ¿El texto está bien escrito y es comprensible?8 ¿Las representaciones
gráficas se entienden con facilidad?
Estética: ¿La plantilla, color, fuente y características relacionadas facilitan el uso? ¿Los
usuarios “se sienten cómodos” con la apariencia y el sentimiento de la aplicación?
Características de despliegue: ¿La aplicación usa de manera óptima el tamaño y la
resolución de la pantalla?
Sensibilidad temporal: ¿Las características, funciones y contenido importantes pueden
usarse o adquirir en forma oportuna?
Personalización: ¿La aplicación se adapta a las necesidades específicas de diferentes
categorías de usuario o de usuarios individuales?
Prueba de Usabilidad a la Aplicación Móvil “Jardín Botánico UCLV”
Para validar la usabilidad de la aplicación se emplea la siguiente encuesta:
3.4.1 Encuesta aplicada a los usuarios
Estimado usuario: con el objetivo de validar la usabilidad de la aplicación “Jardín Botánico UCLV” solicitamos su opinión sincera para el perfeccionamiento del sistema.
Antes de comenzar con las preguntas de validación necesitamos la siguiente información:
Información del usuario encuestado Edad: ___________.
Nivel Escolar: ___6to ___9no ___12mo ___ Nivel superior
En caso de nivel superior diga:
especialidad: _______________________________. grado científico: _____________________________.
Después de usar la aplicación responda las siguientes interrogantes colocando al final de cada una el número que corresponda, según su opinión.