Tesis - T1316si
Tesis - T1316si
Tesis - T1316si
TEMA:
Trabajo de Graduación. Modalidad: Proyecto de Investigación, presentado previo la obtención del título de Ingeniero
SUBLÍNEA DE INVESTIGACIÓN:
Ambato - Ecuador
Octubre, 2017
DEDICATORIA
vi
AGRADECIMIENTO
vii
ÍNDICE
AUTORÍA iii
AUTORÍA iv
Dedicatoria vi
Agradecimiento vii
Introducción xx
CAPÍTULO 1 El problema 1
1.1 Tema de investigación . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Delimitación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5.1 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5.2 Específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
CAPÍTULO 3 Metodología 26
3.1 Modalidad básica de la investigación . . . . . . . . . . . . . . . . . . 26
3.1.1 Investigación de campo . . . . . . . . . . . . . . . . . . . . . . 26
3.1.2 Investigación bibliográfica - documental . . . . . . . . . . . . . 26
3.1.3 Investigación aplicada . . . . . . . . . . . . . . . . . . . . . . 26
3.2 Recolección de información . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Procesamiento y análisis de datos . . . . . . . . . . . . . . . . . . . . 27
3.4 Desarrollo del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.1 Metodología . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.2 Diferencias entre metodología tradicionales y ágiles . . . . . . 28
3.4.3 Metodología XP (Extreme Programming) . . . . . . . . . . . 28
3.4.3.1 Definición . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4.3.2 Valores . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4.3.3 Las historias de usuario . . . . . . . . . . . . . . . . 30
3.4.3.4 El proceso XP . . . . . . . . . . . . . . . . . . . . . 30
ix
4.3 Fase II: Planificación de la entrega . . . . . . . . . . . . . . . . . . . 49
4.4 Fase III: Iteraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.4.1 Iteración primera . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.4.2 Iteración segunda . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.4.3 Iteración tercera . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.5 Fase IV: Producción . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.5.1 Pruebas de aceptación . . . . . . . . . . . . . . . . . . . . . . 82
4.5.1.1 Aplicación web (Administración) . . . . . . . . . . . 82
4.5.1.2 Aplicación móvil . . . . . . . . . . . . . . . . . . . . 85
4.5.2 Implantación . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.6 Fase V: Mantenimiento . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.7 Fase VI: Muerte del proyecto . . . . . . . . . . . . . . . . . . . . . . . 89
Bibliografía 92
ANEXOS 97
x
ÍNDICE DE FIGURAS
xii
ÍNDICE DE TABLAS
xiii
4.28 Actividad 2 - Historia 6 - Desarrollo de Web API’s . . . . . . . . . . 64
4.29 Actividad 3 - Historia 6 - Desarrollo de Web API’s . . . . . . . . . . 65
4.30 Actividad 4 - Historia 6 - Desarrollo de Web API’s . . . . . . . . . . 65
4.31 Actividad 1 - Historia 7 - Implementación de menú . . . . . . . . . . 66
4.32 Actividad 2 - Historia 7 - Implementación de menú . . . . . . . . . . 66
4.33 Actividad 1 - Historia 8 - Información de escuela . . . . . . . . . . . . 67
4.34 Actividad 1 - Historia 9 - Ver datos personales . . . . . . . . . . . . . 74
4.35 Actividad 2 - Historia 9 - Ver datos personales . . . . . . . . . . . . . 74
4.36 Actividad 1 - Historia 10 - Ver historial académico . . . . . . . . . . . 75
4.37 Actividad 2 - Historia 10 - Ver historial académico . . . . . . . . . . . 75
4.38 Actividad 1 - Historia 11 - Ver notificaciones . . . . . . . . . . . . . . 76
4.39 Actividad 2 - Historia 11 - Ver notificaciones . . . . . . . . . . . . . . 76
4.40 Actividad 1 - Historia 12 - Ver evento . . . . . . . . . . . . . . . . . . 77
4.41 Actividad 2 - Historia 12 - Ver evento . . . . . . . . . . . . . . . . . . 77
xiv
Resumen
xvi
Abstract
With this in mind, it was proposed to implement a mobile application under the
Android platform in an institution dedicated to the instruction of professional
drivers of the city of Ambato that until some time the use of information and
communication technologies was not very noticeable and not The maximum benefit
was obtained in the normal course of the academic and administrative processes
causing waste of valuable resources for the Institution. This project proposes to
develop and implement a mobile application for Android devices, this application
consists of a web administration panel that serves to feed information of the
whole as data of students, administrative and teaching. Both parties maintain
constant communication through web services based on REST (Representational
State Transfer) or Web API’s (Application Programming Interface).
xviii
Glosario de términos
Algoritmo
Es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas
que permite realizar una actividad mediante pasos sucesivos que no generen dudas a
quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo
los pasos sucesivos se llega a un estado final y se obtiene una solución.
API
La interfaz de programación de aplicaciones (API) es el conjunto de subrutinas,
funciones y procedimientos que ofrece cierta biblioteca para ser utilizado por otro
software como una capa de abstracción. Son usadas generalmente en las bibliotecas.
APK
Se refiere a la extensión que tiene el fichero compacto que contiene todo el código
de la aplicación.
IDE
Es un entorno de programación que ha sido empaquetado como un programa de
aplicación, es decir consiste en un editor de código, un compilador, un depurador y
un constructor de interfaz gráfica.
JSON
Acrónimo de JavaScript Object Notation, es un formato de texto ligero para el
intercambio de datos.
Objeto
Es una unidad dentro de un programa de computadora que consta de un estado y
de un comportamiento, que a su vez constan respectivamente de datos almacenados
y de tareas realizables durante el tiempo de ejecución.
Retrofit
Es un cliente REST para Android y Java, desarrollada por Square, muy simple y
fácil de aprender. Permite hacer peticiones GET, POST, PUT, PATCH, DELETE
y HEAD
xix
INTRODUCCIÓN
xx
CAPÍTULO V denominado “CONCLUSIONES Y RECOMENDACIONES”, expo-
ne de forma clara y concisa las consideraciones mas relevantes que se han obtenido al
finalizar el proyecto, además se indican recomendaciones para futuras adecuaciones.
xxi
CAPÍTULO 1
El problema
1
ha permitido a las instituciones educativas ofrecer servicios de calidad e inmediatos
a los estudiantes y padres de familia. Las escuelas de capacitación de conductores
profesionales también forman parte de este cúmulo de organismos que se dedican a
la educación y capacitación de los ciudadanos.
1.3. Delimitación
2
1.4. Justificación
1.5. Objetivos
1.5.1. General
1.5.2. Específicos
4
CAPÍTULO 2
Marco teórico
5
Johanna Nataly Picón Cajamarca y Sebastián Zhinin Zhinin de la Universidad Poli-
técnica Salesiana realizaron el proyecto Diseño e Implementación de una aplicación
móvil para trabajo operativo de los vendedores de la empresa Agrota cia. Ltda.
donde afirman que un modelo de negocio basado en dispositivos móviles implica
la ejecución de tareas concretas, cortas y rápidas. Android han demostrado ser lo
suficientemente estable para soportar una alta transaccionalidad, disponibilidad y
concurrencia de usuarios. A nivel empresarial una aplicación móvil facilita la mo-
vilidad del negocio, la comunicación con el cliente además de agregar un plus em-
presarial sobre la forma en la que se ofertan los productos frente a la competencia [3].
Movilidad
Tamaño reducido
Cualidad de un dispositivo móvil de ser fácilmente usado con una o dos manos sin
necesidad de ninguna ayuda o soporte externo. El tamaño reducido también permite
transportar el dispositivo cómodamente por parte de una persona.
6
Comunicación inalámbrica
2.2.2.1. Android
2.2.2.2. iOS
4. Con la App Store, casi no hay límite para lo que tu dispositivo iOS puede
hacer.
5. iCloud.
6. Seguridad.
7. Privacidad.
9. Fácil de actualizar.
Facilidad de uso
La facilidad de uso es una de las principales diferencias entre estos tres sistemas. iOS
y Windows Phone diseñados para ser completamente intuitivos, en lo que aventajan
por mucho al Android, que a pesar de los esfuerzos de Google y desarrolladores
independientes, sigue siendo un poco complejo de configurar y utilizar en ciertos
aspectos. Windows Phone ocupa el primer puesto por ser sumamente sencillo de
utilizar, hace falta escasos clics para acceder a cualquier función.
Aplicaciones de terceros
9
Otra diferencia muy marcada entre los tres sistemas, Android permite que cualquier
desarrollador pueda realizar apps o programas para el sistema operativo, lo que le
otorga una enorme cantidad de aplicaciones disponibles, algunas gratuitas y otras
de pago, lo que aventaja enormemente a iOS que sólo permite utilizar aplicaciones
desarrolladas por Apple o por grandes compañías de software. Windows Phone, sin
embargo, a pesar de llevar casi la misma política de iOS, ha lanzado una enorme
cantidad de aplicaciones, que pudieran otorgarle un segundo lugar en este sentido.
Eficiencia
Todas las aplicaciones nativas para Android se programan en lenguaje Java y son
ejecutadas en una máquina virtual especialmente diseñada para esta plataforma,
que ha sido bautizada con el nombre de Dalvik. El núcleo de Android está basado
en Linux 2.6.
Con Android se busca reunir en una misma plataforma todos los elementos
necesarios que permitan al desarrollador controlar y aprovechar al máximo cualquier
funcionalidad ofrecida por un dispositivo móvil (llamadas, mensajes de texto,
cámara, agenda de contactos, conexión Wi-Fi, Bluetooth, aplicaciones ofimáticas,
videojuegos, etc.), así como poder crear aplicaciones que sean verdaderamente
portables, reutilizables y de rápido desarrollo. En otras palabras, Android quiere
mejorar y estandarizar el desarrollo de aplicaciones para cualquier dispositivo móvil
y, por ende, acabar con la perjudicial fragmentación existente hoy día.
10
Además de todo ello, otro aspecto básico para entender la aparición de Android
es que pretende facilitar la integración de estos dispositivos con las posibilidades
cada día mayores ofrecidas por la Web. Por ejemplo, una aplicación desarrollada
en Android podría ser aquella que indicase al usuario, a través de Google Maps, la
localización de sus diferentes contactos de la agenda y que avisase cuando éstos se
encuentren a una distancia cercana o en una ubicación determinada.
Android es una plataforma para dispositivos móviles que contiene una pila de
software donde se incluye un sistema operativo, middleware y aplicaciones básicas
para el usuario. En las siguientes líneas se dará una visión global por capas de cuál
es la arquitectura empleada en Android. Cada una de estas capas utiliza servicios
ofrecidos por las anteriores, y ofrece a su vez los suyos propios a las capas de niveles
superiores, tal como se escribe a continuación [10].
Aplicaciones: Este nivel contiene, tanto las incluidas por defecto de Android
como aquellas que el usuario vaya añadiendo posteriormente, ya sean de
terceras empresas o de su propio desarrollo. Todas estas aplicaciones utilizan
los servicios, las API y librerías de los niveles anteriores.
12
• Biblioteca Surface Manager: Es la encargada de componer los diferentes
elementos de navegación de pantalla. Gestiona también las ventanas
pertenecientes a las distintas aplicaciones activas en cada momento.
• Biblioteca Media Libraries: Proporciona todos los códecs necesarios para
el contenido multimedia soportado en Android (vídeo, audio, imágenes
estáticas y animadas, etc.)
• FreeType: Permite trabajar de forma rápida y sencilla con distintos tipos
de fuentes.
• Biblioteca SSL(Secure Sockets Layer): Posibilita la utilización de dicho
protocolo para establecer comunicaciones seguras.
• Biblioteca SQLite: Creación y gestión de bases de datos relacionales.
• Biblioteca WebKit: Proporciona un motor para las aplicaciones de tipo
navegador y forma el núcleo del actual navegador incluido por defecto en
la plataforma Android.
El diseño web responsive o adaptativo es una técnica de diseño web que busca
la correcta visualización de una misma página en distintos dispositivos. Desde
ordenadores de escritorio a tablets y móviles.
Se trata de redimensionar y colocar los elementos de la web de forma que se adapten
al ancho de cada dispositivo permitiendo una correcta visualización y una mejor
experiencia de usuario. Se caracteriza porque los layouts (contenidos) e imágenes
son fluidos y se usa código media-queries de CSS (Cascading Style Sheets). El diseño
responsive permite reducir el tiempo de desarrollo, evita los contenidos duplicados,
y aumenta la viralidad de los contenidos ya que permite compartirlos de una forma
mucho más rápida y natural [12].
Características
13
Sitio web adaptativo en diferentes pantallas
14
Razones para desarrollar una web con Bootstrap
2.2.5.1. Bootstrap
15
Contenidos de la versión original de Bootstrap
bootstrap/
css/
bootstrap.css
bootstrap.min.css
bootstrap-theme.css
bootstrap-theme.min.css
js/
bootstrap.js
bootstrap.min.js
fonts/
glyphicons-halflings-regular.eot
glyphicons-halflings-regular.svg
glyphicons-halflings-regular.ttf
glyphicons-halflings-regular.woff
Componentes de Bootstrap
Bootstrap brinda una gran cantidad de componentes reutilizables construidos para
proporcionar la iconografía, menús desplegables, los grupos de entrada, navegación,
alertas, y mucho más. Entre ellos se tiene:
1. Glyphicons
2. Dropdowns
3. Headers
4. Divider
5. Button groups
6. Button toolbar
7. Nesting
8. Vertical variation
9. Button dropdowns
10. Split button dropdowns
11. Sizing
12. Dropup variation
Categorías de patrones
Según la escala o nivel de abstracción [15]:
Patrones de arquitectura
Los patrones arquitectónicos, o patrones de arquitectura, también llamados
arquetipos ofrecen soluciones a problemas de arquitectura de software en ingeniería
de software. Dan una descripción de los elementos y el tipo de relación que
tienen junto con un conjunto de restricciones sobre cómo pueden ser usados. Un
patrón arquitectónico expresa un esquema de organización estructural esencial
para un sistema de software, que consta de subsistemas, sus responsabilidades
e interrelaciones. En comparación con los patrones de diseño, los patrones
arquitectónicos tienen un nivel de abstracción mayor [17].
17
Programación por capas
Tres niveles
Invocación implícita
Arquitectura en pizarra
2.2.6.1. MVC
2. Vista
3. Controlador
19
Microsoft .NET como marco de trabajo para aplicaciones web
Luego de haber realizado un estudio de qué son y cómo se comportan las
aplicaciones web, la siguiente actividad se centraría en hallar un marco de trabajo
para el desarrollo de la aplicación web destinada al control de la aplicación Android.
Microsoft la primera opción de trabajo por las ventajas e innovaciones constantes
en el campo de desarrollo de software.
La empresa tecnológica Microsoft ha crecido exponencialmente desde sus inicios,
ahora no solo distribuye su famoso sistema operativo Windows, si no que incursiona
en la tecnología móvil con el sistemas operativo para teléfonos inteligentes Window
Phone. Los negocios en la nube también han sido de preocupación para para esta
multinacional, cubriendo esta demanda con Windows Azure que ofrece servicios de
computo en la nube para pequeñas y grandes empresas. Estas son algunas de sus
iniciativas, por no nombrar más.
Microsoft al ser una empresa de largo trayecto e impacto en la sociedad brinda
seguridad, confianza, además de soporte técnico para todos sus productos, se la eligió
para la implementación de la administración web.
A continuación las herramientas Microsoft utilizadas para el presente trabajo de
investigación, cada una de ellas fue estudiada para su posterior utilización y también
se midió su compatibilidad con otras plataformas como es Android.
2.2.8.1. C#
2.2.8.2. ASP.NET
ASP.NET MVC
El marco de ASP.NET MVC proporciona una alternativa al modelo de formularios
Web Forms de ASP.NET para crear aplicaciones web, es un marco de presentación
de poca complejidad y fácil de comprobar que (como las aplicaciones basadas en
formularios Web Forms) se integra con las características de ASP.NET existentes,
tales como páginas maestras y la autenticación basada en pertenencia. El marco de
MVC se define en el ensamblado System.Web.Mvc [23].
21
variedad de clientes que pueden acceder a través de la web: estaciones de
trabajo, sistemas industriales y dispositivos móviles.
Los métodos HTTP más importantes son PUT, GET, POST y DELETE. Ellos
suelen ser comparados con las operaciones asociadas a la tecnología de base de
datos, operaciones CRUD: CREATE, READ, UPDATE, DELETE [25].
La tabla siguiente muestra con claridad los métodos HTTP:
Fuente: [25]
Servidor IIS
Los servicios de Internet Information Server (o IIS), son los servicios de software que
admiten la creación, configuración y administración de sitios Web o aplicaciones web,
además de otras funciones de Internet. Este servicio convierte a un PC en un servidor
web para Internet o una Intranet, es decir que en los ordenadores que tienen este
servicio instalado se pueden publicar páginas web tanto local como remotamente.
Se basa en varios módulos que le dan capacidad para procesar distintos tipos
de páginas. Por ejemplo, Microsoft incluye los de Active Server Pages (ASP) y
ASP.NET. También pueden ser incluidos los de otros fabricantes, como PHP3 o
Perl [26].
22
2.2.8.3. SQL Server
Para mejor entendimiento de todo el contexto que abarca la realización del presente
proyecto se continua a nombrar textualmente algunas de las normas y reglamentos
para Escuelas de Capacitación de Conductores Profesionales emitida por la ANT
(Agencia Nacional de Tránsito), las cuales son necesarias tener en cuenta [28].
ECCP
Se denominará Escuelas de Capacitación para Conductores Profesionales - ECCP, a
los Sindicatos de Conductores Profesionales; a los Institutos Técnicos de Educación
Superior; Universidades y Escuelas Politécnicas debidamente autorizados por
la Secretaría Nacional de Educación Superior - SENESCYT; a la Federación
Ecuatoriana de Operadores y Mecánicos de Equipos Camioneros - FEDESOMEC;
y, al Servicio Ecuatoriano de Capacitación Profesional - SECAP, debidamente
autorizados por la ANT, que se encuentren habilitados en el país para la capacitación
y formación de conductores profesionales.
Estructura organizacional
Las escuelas de capacitación para conductores profesionales - ECCP, para su
funcionamiento deberán tener como mínimo la siguiente estructura organizacional:
2. Director Pedagógico
3. Tesorero
4. Secretario
5. Consejo Académico
23
6. Cuerpo Docente de nivel superior reconocido por el órgano competente
9. Inspector
10. Contador
De los alumnos
4. Las horas teóricas y prácticas impartidas para los diferentes cursos deberán
ser consideradas horas pedagógicas de 45 minutos y el cupo por aula no podrá
ser superior a 30 alumnos
24
2.3. Propuesta de solución
Desarrollar una aplicación móvil bajo la plataforma Android que será controlada
por un panel de administración, ambas mantendrán una constante comunicación
recibiendo y enviando información con el uso de Web API’s (web service). El
panel de administración estará desarrollado en el Framework de Microsoft .NET
por lo que será una aplicación ASP.NET, este servirá para el ingreso de datos de
administrativos, docentes y demás información relevantes para el conjunto en sí.
25
CAPÍTULO 3
Metodología
26
3.3. Procesamiento y análisis de datos
Para el desarrollo del presente proyecto se ha optado por utilizar una metodología
fuera de las tradicionales, tal es el caso de XP que se colocado y preferido por la
mayoría de programadores para el desarrollo de aplicaciones móviles. A continuación
se explicará conceptos para el mejor entendimiento de la metodología seleccionada.
3.4.1. Metodología
Fuente: [30]
Después de un estudio de las metodologías ágiles y las ventajas que presentan frente
a las metodologías tradicionales se ha seleccionado Extreme Programming por las
razones que se señalan a continuación.
28
de trabajo pueden implementar soluciones sobre la marcha. Ya no es necesario
esperar hasta el final para corregir fallos.
3.4.3.1. Definición
3.4.3.2. Valores
Las historias de usuario son la técnica utilizada en XP para especificar los requisitos
del software. Se trata de tarjetas de papel en las cuales el cliente describe brevemente
las características que el sistema debe poseer, sean requisitos funcionales o no
funcionales. El tratamiento de las historias de usuario es muy dinámico y flexible,
en cualquier momento historias de usuario pueden romperse, reemplazarse por otras
más específicas o generales, añadirse nuevas o ser modificadas. Cada historia de
usuario es lo suficientemente comprensible y delimitada para que los programadores
puedan implementarla en unas semanas [33].
3.4.3.4. El proceso XP
30
5. Vuelve al paso 1.
Fase I: Exploración
En esta fase, los clientes plantean a grandes rasgos las historias de usuario que son
de interés para la primera entrega del producto. Al mismo tiempo el equipo de desa-
rrollo se familiariza con las herramientas, tecnologías y prácticas que se utilizarán en
el proyecto. Se prueba la tecnología y se exploran las posibilidades de la arquitectura
del sistema construyendo un prototipo.
Fase V: Mantenimiento
Mientras la primera versión se encuentra en producción, el proyecto XP debe mante-
ner 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.
31
La fase de mantenimiento puede requerir nuevo personal dentro del equipo y cam-
bios en su estructura.
32
CAPÍTULO 4
Desarrollo de la propuesta
Título
Institucionales
Beneficiarios
Ubicación
Provincia: Tungurahua
Cantón: Ambato
Dirección: Av. Los Incas y Nazacota Puento
Teléfono: 03 2840618 - 2421272
Equipo responsable
Tutor: Ing. Mg. Clay Aldás Flores.
Investigador: Sr. Luis Alberto Marcalla
33
Tomando en cuenta que la metodología Extreme Programming (XP) es la
seleccionada es la seleccionada, se detalla a continuación el proceso de desarrollo
del proyecto.
Durante la realización de esta fase se señaló que la aplicación móvil debe de tener
un panel de administración para darle más versatilidad y comodidad al proyecto,
teniendo en cuenta esto se decidió realizar un panel de administración. Luego de un
periodo de investigación y análisis se decidió desarrollar una aplicación ASP.NET
con la ayuda de Visual Studio utilizando LINQ (Language Integrated Query) para
acceder a la base de datos, el patrón de arquitectura MVC para la programación, el
34
uso de estilos CSS de Bootstrap para que el sitio sea adaptativo y finalmente el uso
de los Web API’s para la comunicación con la aplicación móvil.
35
Tabla 4.2: Historia de usuario 2 - Mantenimiento de tablas
36
Tabla 4.4: Historia de usuario 4 - Envío de notificaciones
39
Tabla 4.10: Historia de usuario 10 - Académico
40
Tabla 4.12: Historia de usuario 12 - Eventos
El diseño material recibe su nombre por estar basado en objetos materiales, piezas
colocadas en un espacio (lugar) y con un tiempo (movimiento) determinado. Es
un diseño donde la profundidad, las superficies, los bordes, las sombras y los
colores juegan un papel principal. Los elementos clave es la luz y las sombras, una
iluminación realista proporciona indicios de cómo se comportará un elemento y en
qué nivel se encuentra.
42
Acceso a la aplicación móvil
Módulo Escuela
43
Módulo Perfil
Módulo Académico
Módulo Eventos
45
4.2.4. Diseño de aplicación web
Para la administración web se propuso usar el marco de trabajo Bootstrap para que
la página se adaptara a cualquier dispositivo donde se mostrara, esto incluyendo PC’s
de escritorio, tabletas y celulares inteligentes. En vista de eso se procede a nombrar
los procedimientos que se hicieron para que la aplicación web sea adaptativo.
46
Implementación de Bootstrap en solución de ASP.NET
1 <html>
2 <head>
3 < !−− R e f e r e n c i a s de l a s h o j a s de e s t i l o de B o o t s t r a p −−>
4 <l i n k href=" ~/ Content / B o o t s t r a p . c s s " r e l=" s t y l e s h e e t " />
5 <l i n k href=" ~/ Content / B o o t s t r a p . min . c s s " r e l=" s t y l e s h e e t " />
6 <t i t l e>A d m i n i s t r a c i ó n web </ t i t l e>
7 </head>
8 <body >
9 <h2>ESCUELA DE FORMACIÓN Y CAPACITACIÓN DE CONDUCTORES PROFESIONALES
AMBATO </h2>
10 < !−− Jumbotron −−>
11 <div c l a s s=" jumbotron " s t y l e=" background : u r l ( / Content / Images /
e s c u 1 _ r e c o r t e . j p g )>
12 <!−− Imagen de l a i n s t i t u c i ó n de c a p a c i t a c i ó n −−>
13 </div>
14 </body>
15 </html>
47
1. Barra de título.- La barra de título muestra el nombre de la aplicación web.
Al igual que todos los componentes de Bootstrap se adapta al tamaño de la
pantalla donde se visualiza.
48
4.3. Fase II: Planificación de la entrega
Tiempo estimado
No. Historia de Usuario
Semanas Días Horas
1 Acceso a sistema web 2 10 40
2 Mantenimiento de tablas 2 10 40
3 Ingreso de notas 1 5 20
4 Envío de notificaciones 1 5 20
5 Desarrollo de Web API’s 2 10 40
6 Acceso a la aplicación móvil 1.5 8 32
7 Implementación de menú 1 5 20
8 Información de escuela 1 5 20
9 Ver datos personales 1.5 8 32
10 Ver historial académico 2 10 40
11 Ver notificaciones 1.5 8 32
12 Ver eventos 1.5 8 32
Tiempo estimado total 18 92 368
Tabla 4.13: Estimación del tiempo de desarrollo
Para una mejor organización de tareas y trabajo se dispuso que por cada iteración
se debe realizar 4 historias de usuario, como la fase de exploración arrojó unas
doce historias de usuario el proyecto se fraccciona en tres iteraciones; cada iteración
producirá una parte del sistema operativa y funcional.
49
Iteración 1 Iteración 2 Iteración 3
Horas 120 112 136
Semanas 6 5.5 6.5
Historias implementadas 1,2,3,4 5,6,7,8 9,10,11,12
Cantidad de historias 4 4 4
Tabla 4.14: Velocidad de proyecto
División en iteraciones
En esta iteración se desarrolló la administración web que son las cuatro primeras
historias de usuario descritas anteriormente.
50
Aplicación Web (Administración)
Actividades - Historia 1
51
Tabla 4.17: Actividad 3 - Historia 1 - Acceso a la administración web
52
Actividades - Historia 2
53
Actividades - Historia 3
Actividades - Historia 4
Resultados
54
Diagrama Entidad-Relación implementada (SQL Server). Tarea 1 de
historia 1.
55
Login de la aplicación web (ASP.NET). Tarea 2 de historia 1.
1 u s i n g System ;
2 u s i n g System . C o l l e c t i o n s . G e n e r i c ;
3 u s i n g System . LINQ ;
4 u s i n g System . Web ;
5 u s i n g System . Web . Mvc ;
6 u s i n g E sc ue la Co nd uc ci on . Models ;
7 u s i n g E sc ue la Co nd uc ci on . H e l p e r ;
8 u s i n g E sc ue la Co nd uc ci on . C o n t r o l l e r s . SysAdmin ;
9 namespace E s c u e l a . C o n t r o l l e r s {
10 public c l a s s L o g i n C o n t r o l l e r : C o n t r o l l e r {
11 public A c t i o n R e s u l t Index ( ) {
12 i f ( ! ( S e s s i o n [ " Rol " ] == null ) ) {
13 return R e d i r e c t T o A c t i o n ( " Index " , "Home" ) ; }
14 return View ( ) ;
15 }
16
17 public A c t i o n R e s u l t S a l i d a ( )
56
18 { S e s s i o n . Remove ( " Rol " ) ;
19 return R e d i r e c t T o A c t i o n ( " Index " , "Home" ) ; }
20
21 // POST: / I n g r e s o /
22 [ HttpPost , ActionName ( " I n g r e s a r " ) ]
23 public A c t i o n R e s u l t I n i c i o ( User u s u a r i o ) {
24 A u n t e n t i c a t i o n H e l p e r o b j = new A u n t e n t i c a t i o n H e l p e r ( ) ;
25 i f ( o b j . F i n d A d m i n i s t a r t i v o ( u s u a r i o ) != null ) {
26 var a d m i n i s t r a t i v o = o b j . F i n d A d m i n i s t a r t i v o ( u s u a r i o ) ;
27 S e s s i o n A d m i n i s t r a t i v o H e l p e r S e s s i o n A d m i n i s t r a t i v o = new
SessionAdministrativoHelper ( administrativo ) ;
28 return R e d i r e c t T o A c t i o n ( " Index " , "Home" ) ; } e l s e i f ( o b j . Usu ario Docen te
( u s u a r i o ) == true ) {
29 var Docente = o b j . BuscarDocente ( u s u a r i o . Cedula ) ;
30 S e s s i o n D o c e n t e H e l p e r objSesDoc = new S e s s i o n D o c e n t e H e l p e r ( Docente ) ;
D oc en t eH el pe r o b jD o c en t e = new D oc en t eH el pe r ( ) ;
31 AuxIdentidad . P a r a l e l o s = o b j Do c en t e . C o d i g o s P a r a l e l o s ( Docente ) ;
32 S e s s i o n P a r a l e l o D o c e n t e o b j P a r a l e l o = new S e s s i o n P a r a l e l o D o c e n t e (
AuxIdentidad . P a r a l e l o s ) ;
33 return R e d i r e c t T o A c t i o n ( " Index " , "Home" ) ; }
34 else {
35 ViewData [ " MensajeError " ] = " U s u a r i o no encontrado , v e r i f i q u e s u s d a t o s
!";
36 return View ( " Index " ) ; }
37 }
38 } }
Al igual que el login de aplicación web, el home de la aplicación hace uso estilos CSS
de Bootstrap para adaptarse en la pantalla que se muestra. Una breve descripción de
la estructura de esta pantalla y de sus componentes Bootstrap a continuación. En la
parte superior se encuentra la barra de título con el nombre de la institución, debajo
de la barra de título se encuentra el Navigation Bar, este elemento tiene la facultar
de contraerse en dispositivos móviles como se muestra en la figura 4.15 y al igual que
en la vista de PC despliga las pestañas disponibles para el usuario sin problemas. El
Dropdows tiene la capacidad de enlistar y organizar un grupo de pestañas cuando el
espacio se ve reducido, como por ejemplo la pestañá matenimiento mantenimiento
agrupa todas las entidades de base de datos. El Jumbotron es un componente
ligero y flexible que opcionalmente puede extender toda la ventana de visualización
para mostrar el contenido clave del sitio, en este caso contiene la localidad de la
institución.
57
Home de la aplicación web (ASP.NET). Tarea 4 de historia 1.
58
El modelo, parte del patrón de diseño de software utilizado en el presente proyecto
y el medio para acceder a una entidad de la base de datos cuando requiramos realizar
una operación de los métodos CRUD (create, read, update, delete) en la base de
datos. ASP.NET MVC nos facilita el trabajo al generar nuestros modelos a partir
de la base de datos (SQL Server). El modelo estudiante a continuación.
1 namespace E sc ue la Co nd uc ci on . Models {
2 u s i n g System ;
3 u s i n g System . C o l l e c t i o n s . G e n e r i c ;
4 u s i n g System . ComponentModel . DataAnnotations ;
5 u s i n g System . ComponentModel . DataAnnotations . Schema ;
6
7 public p a r t i a l c l a s s E s t u d i a n t e {
8 public E s t u d i a n t e ( ) {
9 t h i s . C a l i f i c a c i o n = new HashSet<C a l i f i c a c i o n >() ;
10 t h i s . N o t i f i c a c i o n = new HashSet<N o t i f i c a c i o n >() ; }
11
12 // Cedula
13 [ Key ]
14 [ S t r i n g L e n g t h ( 1 0 , ErrorMessage=" Cedula no v á l i d a " , MinimumLength=10) ]
15 [ Required ( ErrorMessage = "Campo o b l i g a t o r i o " ) ]
16 [ D i s p l a y (Name=" Cedula " ) ]
17 public s t r i n g Cedula { g e t ; s e t ; }
18
19 // Nombres
20 [ Required ( ErrorMessage = "Campo o b l i g a t o r i o " ) ]
21 [ D i s p l a y (Name = " Nombres " ) ]
22 [ S t r i n g L e n g t h ( 2 0 , ErrorMessage = "No . de c a r á c t e r e s e x c e d i d o s " ) ]
23 public s t r i n g Nombres { g e t ; s e t ; }
24
25 // A p e l l i d o p a t e r n o
26 [ Required ( ErrorMessage = "Campo o b l i g a t o r i o " ) ]
27 [ D i s p l a y (Name = " A p e l l i d o Paterno " ) ]
28 [ S t r i n g L e n g t h ( 2 0 , ErrorMessage = " El A p e l l i d o Materno no puede s e r
mayor de {0} c a r a c t e r e s . " ) ] public
s t r i n g Apellido_Paterno { get ; s e t ; }
29
30 // A p e l l i d o materno
31 [ S t r i n g L e n g t h ( 2 0 , ErrorMessage=" El A p e l l i d o Materno no puede s e r mayor
de {0} c a r a c t e r e s . " , MinimumLength = 1 ) ]
32 [ Required ( ErrorMessage = "Campo o b l i g a t o r i o " ) ]
33 [ D i s p l a y (Name = " A p e l l i d o Materno " ) ]
59
34 public s t r i n g Apellido_Materno { g e t ; s e t ; }
35
36 // Email
37 [ Required ( ErrorMessage = "Campo o b l i g a t o r i o " ) ]
38 [ DataType ( DataType . EmailAddress ) ]
39 [ D i s p l a y (Name = " Email " ) ]
40 public s t r i n g Email { g e t ; s e t ; }
41
42 // Codigo d e l p a r a l e l o
43 [ Required ( ErrorMessage = "Campo o b l i g a t o r i o " ) ]
44 [ Range ( 1 , 1 0 0 , ErrorMessage = " S e l e c c i o n e un p a r a l e l o " ) ]
45 [ D i s p l a y (Name = " P a r a l e l o " ) ]
46 public int C o d i g o _ P a r a l e l o { g e t ; s e t ; }
47
48 //Nombre c o m p l e t o
49 [ NotMapped ]
50 [ D i s p l a y (Name = " Nombre " ) ]
51 public s t r i n g NombreCompleto{ g e t { return s t r i n g . Format ( " {0}{1}{2} " ,
Apellido_Paterno , Apellido_Materno , Nombres ) ; } }
52
53 public v i r t u a l I C o l l e c t i o n <C a l i f i c a c i o n > C a l i f i c a c i o n { g e t ; s e t ; }
54 public v i r t u a l P a r a l e l o P a r a l e l o { g e t ; s e t ; }
55 public v i r t u a l I C o l l e c t i o n <N o t i f i c a c i o n > N o t i f i c a c i o n { g e t ; s e t ; }
56 } }
var N o t i f i c a c i o n e s P o r E s t u d i a n t e s =
10 ( from n o t i f i c a t i o n D b in db . N o t i f i c a c i o n
11 where n o t i f i c a t i o n D b . Codigo_Estudiante
== c e d u l a
60
12 s e l e c t n o t i f i c a t i o n D b ) . OrderByDescending ( x=>x .
Fecha_Insercion ) ;
13 cedula_estudiante = cedula ;
14 return View ( N o t i f i c a c i o n e s P o r E s t u d i a n t e s ) ;
15 }
En esta iteración se desarrollo y probaron los Web API’s junto con los primeros
módulos de la aplicación.
61
Aplicación Web (Web API)
Actividades - Historia 5
62
Tabla 4.25: Actividad 3 - Historia 5 - Desarrollo de Web API’s
63
Aplicación Móvil
Actividades - Historia 6
64
Tabla 4.29: Actividad 3 - Historia 6 - Desarrollo de Web API’s
65
Actividades - Historia 7
66
Actividades - Historia 8
Resultados
1 // POST: a p i / A u t e n t i c a c i o n
2 [ ResponseType ( t y p e o f ( P e r f i l E s t u d i a n t e ) ) ]
3 p u b l i c P e r f i l E s t u d i a n t e P o s t E s t u d i a n t e ( User u s e r ) {
4 String paralelo ;
5 E s t u d e n t H e l p e r o b j = new E s t u d e n t H e l p e r ( ) ;
6
67
7 var p r o f i l e s t u d e n t = ( from studentDb in db . E s t u d i a n t e
8 from p a r a l e l o D b in db . P a r a l e l o
9 from t i p o _ l i c e n c i a D b in db . T i p o _ L i c e n c i a
10 where studentDb . C o d i g o _ P a r a l e l o == p a r a l e l o D b . Codigo
11 where p a r a l e l o D b . C o d i g o _ L i c e n c i a == t i p o _ l i c e n c i a D b . Codigo
12 where studentDb . Cedula == u s e r . Cedula
13 where studentDb . Email==u s e r . Email
14 s e l e c t new P e r f i l E s t u d i a n t e {
15 Cedula = studentDb . Cedula ,
16 Nombres = studentDb . Nombres ,
17 A p e l l i d o _ P a t e r n o = studentDb . Apellido_Paterno ,
18 Apellido_Materno = studentDb . Apellido_Materno ,
19 Email = studentDb . Email ,
20 P a r a l e l o = p a r a l e l o D b . Nombre ,
21 Tipo_Licencia = tipo_licenciaDb . Categoria ,
22 Modalidad = p a r a l e l o D b . Modalidad } ) . F i r s t O r D e f a u l t ( ) ;
23 i f ( p r o f i l e s t u d e n t == n u l l ) {
24 return n u l l ; }
25 return p r o f i l e s t u d e n t ;
26 }
Para verificar la operación correcta de la anterior Web API se utilizó un cliente para
web services basados en REST, Postman es una extensión de Chrome que nos ayuda
en esta tarea.
A continuación una prueba exitosa del Web API de autenticación.
68
La Web API como las demás hace uso de LINQ para realizar operaciones en la base
de datos.
1 u s i n g System . C o l l e c t i o n s . G e n e r i c ;
2 u s i n g System . Data ;
3 u s i n g System . Data . E n t i t y ;
4 u s i n g System . Data . E n t i t y . I n f r a s t r u c t u r e ;
5 u s i n g System . LINQ ; u s i n g System . Net ;
6 u s i n g System . Net . Http ; u s i n g System . Web . Http ;
7 u s i n g System . Web . Http . D e s c r i p t i o n ;
8 u s i n g E sc ue la Co nd uc ci on . Models ;
9 namespace E sc ue la Co nd uc ci on . C o n t r o l l e r s . API {
10 public c l a s s CalificacionController : ApiController {
11 p r i v a t e e s c u e l a D B E n t i t i e s db = new e s c u e l a D B E n t i t i e s ( ) ;
12 [ ResponseType ( t y p e o f ( C a l i f i c a c i o n e s ) ) ]
13 p u b l i c L i s t <C a l i f i c a c i o n e s > G e t C a l i f i c a c i o n ( i n t i d ) {
14 var c a l i f i c a c i o n = ( from c a l i f i c a t i o n d b in db . C a l i f i c a c i o n
15 where c a l i f i c a t i o n d b . Codigo_Estudiante == i d . T o S t r i n g ( )
16 s e l e c t new C a l i f i c a c i o n e s {
17 NombreModulo = ( from moduloDb in db . Modulo where
moduloDb . Codigo ==
calificationdb .
Codigo_Modulo s e l e c t moduloDb . Nombre ) . F i r s t O r D e f a u l t
() ,
Nota1 = c a l i f i c a t i o n d b . Nota1 . T o S t r i n g ( ) ,
18 Nota2 = c a l i f i c a t i o n d b . Nota2 . T o S t r i n g ( ) ,
19 Nota3 = c a l i f i c a t i o n d b . Nota3 . T o S t r i n g ( ) ,
20 Nota4 = c a l i f i c a t i o n d b . Nota4 . T o S t r i n g ( ) ,
21 Promedio = c a l i f i c a t i o n d b . Promedio . T o S t r i n g ( ) ,
22 S u p l e t o r i o = c a l i f i c a t i o n d b . S u p l e t o r i o . ToString ( ) ,
23 N ot a F in a l = c a l i f i c a t i o n d b . Nota_Final . T o S t r i n g ( ) ,
24 Estado = c a l i f i c a t i o n d b . Estado } ) . ToList ( ) ;
25 i f ( c a l i f i c a c i o n == n u l l ) {
26 return n u l l ; }
27 return c a l i f i c a c i o n ;
28 }
29 }
30 }
69
Se define un layout como una estructura visual para una interfaz de usuario, es decir,
aquello que hace de intermediario entre el terminal móvil y el usuario. Un elemento
de una interfaz de usuario (widgets o layouts) se puede declarar desde un fichero
XML o en tiempo de ejecución de la aplicación.
Las interfaces en java especifican métodos para ser implementadas por otras clases
que las necesiten. Retrofit es un cliente REST para Java que usa los métodos HTTP
(GET, POST, PUT). A continuación se muestra una interfaz hecha en java para
Android que especifica métodos de petición a un Web API (web service basado en
REST) usando librerías de Retrofit, dependiendo de su naturaleza hará esta solicitud
usando un verbo o método del protocolo HTTP, GET o POST.
1 public i n t e r f a c e a u t e n t i c a c i o n {
2
3 public s t a t i c f i n a l S t r i n g BASE_URL = " h t t p : / / e s c u e l a c o n d u c c i o n a m b a t o
. marckala . com/ " ;
4
5 @GET( " a p i / C a l i f i c a c i o n /{ c e d u l a } " ) C a l l <L i s t <C a l i f i c a c i o n e s >>
G e t C a l i f i c a t i o n s ( @Path ( " c e d u l a " ) S t r i n g c e d u l a ) ;
70
6
7 @GET( " a p i / P u b l i c a c i o n " ) C a l l <A r r a y L i s t <C a l e n d a r i o >> G e t P u b l i c a c i o n ( ) ;
8
9 @GET( " a p i / N o t i f i c a c i o n /{ c e d u l a } " ) C a l l <L i s t <N o t i f i c a c i o n e s >>
G e t N o t i f i c a t i o n s ( @Path ( " c e d u l a " ) S t r i n g c e d u l a ) ;
10
11 @POST( " a p i / A u t e n t i c a c i o n " ) C a l l <P e r f i l E s t u d i a n t e > l o g i n (@Body User u s e r
);
12 }
Para hacer las respectivas peticiones a las Web API’s se implementaron métodos
propios de la librería de Retrofit junto con la ayuda de la interfaz anteriormente
mostrada, cada método hace un "Call" o llamado a una lista u objeto para lo cual
envía los parámetros respectivos. En el siguiente método se envían la cédula de
identidad y el correo electrónico del estudiante y se le responde con un objeto que
contiene los datos personales del estudiante cuando esta registrado en la aplicación
web. Todo este intercambio de datos se lo realiza en formato JSON (JavaScript
Object Notation) por la naturaleza de los web services.
1 import r e t r o f i t 2 . Call ;
2 import r e t r o f i t 2 . Callback ;
3 import r e t r o f i t 2 . Response ;
4 import retrofit2 . Retrofit ;
5 import r e t r o f i t 2 . c o n v e r t e r . gson . G s o n C o n v e r t e r F a c t o r y ;
6 import a n d r o i d . s u p p o r t . d e s i g n . w i d g e t . TextInputLayout ;
7 import a n d r o i d . s u p p o r t . v4 . app . A c t iv i t y O p t io n s C o m pa t ;
8 import a n d r o i d . s u p p o r t . v7 . app . AppCompatActivity ;
9 import r e t r o f i t 2 . Call ;
10 import r e t r o f i t 2 . Callback ;
11 import r e t r o f i t 2 . Response ;
12 import retrofit2 . Retrofit ;
13 import r e t r o f i t 2 . c o n v e r t e r . gson . G s o n C o n v e r t e r F a c t o r y ;
14 import a n d r o i d . s u p p o r t . d e s i g n . w i d g e t . TextInputLayout ;
15 import a n d r o i d . s u p p o r t . v4 . app . A c t iv i t y O p t io n s C o m pa t ;
16 import a n d r o i d . s u p p o r t . v7 . app . AppCompatActivity ;
17
18 C a l l <P e r f i l E s t u d i a n t e > l o g i n C a l l = A u t e n t i c a c i o n . l o g i n (new User ( e m a i l , password ) ) ;
19 l o g i n C a l l . enqueue (new C a l l b a c k <P e r f i l E s t u d i a n t e >() {
20 @Override
21 public void onResponse ( C a l l <P e r f i l E s t u d i a n t e > c a l l , Response<P e r f i l E s t u d i a n t e >
response ) { // Mostrar p r o g r e s o
22 i f ( response . i s S u c c e s s f u l () ){
23 i f ( ! ( r e s p o n s e . body ( )==n u l l ) ) {
24 S e s s i o n P r e f s P r o f i l e . g e t ( L o g i n A c t i v i t y . t h i s ) . s a v e S t u d e n t ( r e s p o n s e . body ( ) ) ;
25 I n t e n t i n t e n t = new I n t e n t ( g e t A p p l i c a t i o n C o n t e x t ( ) , C o n t a i n e r A c t i v i t y .
class ) ; i f ( B u i l d . VERSION .
SDK_INT >= B u i l d .VERSION_CODES. LOLLIPOP) {
71
26 S l i d e s l i d e = new S l i d e ( ) ;
27 s l i d e . setDuration (4000) ;
28 getWindow ( ) . s e t E x i t T r a n s i t i o n ( s l i d e ) ; startActivity (
intent , ActivityOptions . makeSceneTransitionAnimation (
L o g i n A c t i v i t y . t h i s ) . toBundle ( ) ) ; } else
29 { startActivity ( intent ) ;}
30 showProgress ( false ) ;
31 } else {
32 showProgress ( false ) ;
33 Toast . makeText ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E s t u d i a n t e no e n c o n t r a d o " , Toast .
LENGTH_LONG) . show ( ) ; return ;
34 }
35 } else {
36 S t r i n g e r r o r = " Ha o c u r r i d o un e r r o r . C o n t a c t e a l a d m i n i s t r a d o r " ;
37 i f ( r e s p o n s e . e r r o r B o d y ( ) . contentType ( ) . s u b t y p e ( ) . e q u a l s ( " j s o n " ) ) {
ApiError apiError =
A p i E r r o r . fromResponseBody ( r e s p o n s e . e r r o r B o d y ( ) ) ;
38 e r r o r = apiError . getMessage ( ) ;
39 }
40 else {
41 try {
42 Log . d ( " L o g i n A c t i v i t y " , r e s p o n s e . e r r o r B o d y ( ) . s t r i n g ( ) )
;
43 } catch ( IOException e ) {
44 e . printStackTrace () ; }
45 }
46 showProgress ( false ) ;
47 showLoginError ( e r r o r ) ;
48 return ;
49 }
50 }
51
52 @Override
53 public void o n F a i l u r e ( C a l l <P e r f i l E s t u d i a n t e > c a l l , Throwable t ) {
54 showProgress ( false ) ;
55 Toast . makeText ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E r r o r en l a c o n s u l t a " , Toast .LENGTH_LONG
) . show ( ) ;
56 }
La aplicación ASP.NET, así como las Web API necesarias para la posterior consulta
de la aplicación móvil se desarrollaron hasta la tarea número 4 de la historia de
usuario 5. Para la prueba de las Web API’s se utilizó un cliente REST como se
mostró anteriormente.
Después de la finalización de las tareas de esta actividad se prosiguió a integrar los
layouts , las clases de java y los métodos de la librería Retrofit. Arrojando como
resultado los módulos siguientes.
72
Módulos desarrollados de la aplicación móvil (Android).
73
4.4.3. Iteración tercera
Actividades - Historia 9
74
Actividades - Historia 10
75
Actividades - Historia 11
76
Actividades - Historia 12
Resultados
79
Captura de proyecto en Android Studio 2.3.2
80
Figura 4.20: Módulo administrativo - Aplicación móvil
Elaborado por: Investigador
81
4.5. Fase IV: Producción
Las pruebas de aceptación son un requisito para cumplir con los objetivos de las
historias de usuario, las pruebas dan la oportunidad de saber si lo implementado
es lo que en realidad se deseaba. Como anteriormente se mostró las pruebas de
aceptación están divididas para la aplicación web y la aplicación móvil.
Las pruebas a las funciones de la aplicación web fueron efectuadas para cada tipo de
usuario habilitado para acceder, la aplicación respondió en concordancia a los datos
ingresados. A continuación las pruebas efectuadas a la aplicación web.
82
Figura 4.23: Prueba 2 - Mantenimiento de tablas
Elaborado por: Investigador
83
Figura 4.25: Prueba 4 - Envío de notificaciones
Elaborado por: Investigador
84
4.5.1.2. Aplicación móvil
86
4.5.2. Implantación
87
Figura 4.32: Ejecución de firma - Firma de APK
Desarrollado por: Investigador
La metodología XP estipula que cada versión del sistema, resultado de cada itera-
ción debe ser operativa y funcional, dándole valor al negocio. El equipo de desarrollo
debe procurar el buen funcionamiento de la versión reciente y al mismo tiempo desa-
rrollar la siguiente iteración, de ser necesario aumentar nuevas historias de usuario
o nuevos requerimientos cuando lo requiera el propietario del software
Después de la última entrega y los cambios solicitados por parte del representante
de la institución tanto la aplicación web y la aplicación móvil quedaron a disposición
de los estudiantes matriculados y personal administrativo. Cabe recalcar que en esa
ocación estaba en vigencia 8 paralelos, 4 paralelos para licencia tipo D y cuatro
paralelos tipo E.
89
CAPÍTULO 5
Conclusiones y recomendaciones
5.1. CONCLUSIONES
90
5.1.1. RECOMENDACIONES
91
Bibliografía
92
[8] V. Saldaña, “Sistemas operativos móviles.” Disponi-
ble en: http://sistoperativos98.blogspot.com/2016/07/
sistemas-operativos-moviles.html, Junio 2016.
93
[20] M. Peñafiel, “Aplicaciones web.” Disponible en: https://es.scribd.com/doc/
136052164/APLICACIONES-WEB-pdf, Julio 2013.
[23] Microsoft, “Información general sobre asp.net mvc.” Disponible en: https:
//msdn.microsoft.com/es-es/library/dd381412(v=vs.108).aspx, 2017.
94
[31] J. M. BAUTISTA, “Programación extrema (xp) extreme program-
ming (xp).” Disponible en: http://ingenieriadesoftware.mex.tl/images/
18149/PROGRAMACI%C3%93N%20EXTREMA.pdf, 2017.
95
Anexos y apéndices
96
Malla curricular emitida por la Agencia Nacional de Tránsito para la obtención de Título de Conductor
Profesional
Exteriores de la ECCP
100
Anexo A
A.1. Introducción
A.2. Instalación
A.3.1. Autenticación
B.1. Introducción
Luego de haberse logeado el usuario Administrador puede acceder a las tablas del
sistema donde por medio de una interfaz fácil de usar puede realizar cualquier
operación(inserción, actualización, borrado y ver detalles).
A continuación se muestran las entidades de la base de datos que pueden ser
modificadas
Las relaciones primordiales para tener una base consistente se evidencian en la tabla
horario donde se asigna , esto va depender de el módulo que el docente imparte, horas
disponibles, etc.
Figura B.5: Horarios de clases - Aplicación web
Elaborado por: Investigador
A continuación un ejemplo.
Después de haber realizado todos estos pasos por parte de determinado administra-
tivo el estudiante puede observar enseguida los detalles del mensaje enviado desde
la aplicación móvil en la opción Administrativo, para una mejor vista diríjase al
módulo Académico de la guía de uso de la app.
Nota: Para la creación de cada notificación existe un atributo «fecha vence» que
sirve para definirse un tiempo de validez a la notificación, después de la fecha
la notificación ya no sera recibida por el estudiante por ya estar vencida. Con
esto se evita que las notificaciones se envíen permanentemente al un estudiante
determinado.