Universidad de Carabobo
Facultad Experimental de Ciencias y Tecnología
Dirección de Extensión
Coordinación de Pasantías
Informe Final de Pasantías
Implementación de Mejoras al Sistema de
Gestión de Pasantías (SGP) de FACYT - UC
Pasante:
Br. Alejandro González
Tutor Empresarial:
Lic. Lorena Febres
Tutor Académico:
Ing. Reina Loaiza
Presentado ante la ilustre Universidad de Carabobo como requisito parcial
para la obtención del título de Licenciado en Computación
Bárbula, abril de 2010
Objetivos
Objetivo General
• Implementar mejoras al Sistema de Gestión de Pasantías (SGP) de
FACYT basándose en los aspectos y necesidades señaladas por la Lic.
Lorena Febres, Coordinadora de Pasantías.
Objetivos Específicos
• Realizar un estudio preliminar para conocer el Sistema de Gestión de
Pasantías.
• Establecer los aspectos específicos a ser mejorados aplicando técnicas de
extracción de requisitos a los usuarios involucrados, de manera
particular, los aspectos presentados por la Lic. Lorena Febres.
• Efectuar un proceso de retroingeniería de la aplicación para obtener los
artefactos utilizados en el desarrollo original.
• Seleccionar una metodología de desarrollo de software apropiada para el
caso particular.
• Implementar las mejoras siguiendo la metodología seleccionada.
Descripción de la Organización
Coordinación de Pasantías de FACYT
Es una unidad de apoyo para los estudiantes de la Facultad Experimental de
Ciencias y Tecnología de la Universidad de Carabobo que opten por la práctica
académica como requisito de grado.
Objetivos Generales de la Coordinación de Pasantías
Brindar a los estudiantes de las distintas carreras la oportunidad de enriquecer
su formación académica, desarrollar nuevas destrezas que resulten útiles a la
formación profesional y le permita conocer la realidad en la cual se va a
desempeñar como profesional, a objeto de contribuir a la solución de problemas
en su hábito laboral.
Misión
La misión de la Coordinación de Pasantías es promover, coordinar, divulgar y
orientar en los procedimientos relacionados a este importante requisito de
grado, conservando una relación estrecha con los ofertantes de plazas vacantes
para conocer sus requerimientos.
Visión
Captar la mayor cantidad de ofertantes a través de la creación de una base de
datos que incluya a instituciones públicas y privadas asociadas a las carreras
de la Facultad de Ciencias y Tecnología, mediante la cual estudiantes y
ofertantes se beneficien mutuamente en el desarrollo de las pasantías.
Bases Teóricas
Aplicación Web
En la ingeniería de software se denomina aplicación web a aquellas
aplicaciones que los usuarios pueden utilizar accediendo a un servidor web a
través de Internet o de una intranet mediante un navegador. En otras
palabras, es una aplicación software que se codifica en un lenguaje soportado
por los navegadores web (HTML, JavaScript, Java, asp.net,php, etc.) en la que
se confía la ejecución al navegador.
Es importante mencionar que una página Web puede contener elementos que
permiten una comunicación activa entre el usuario y la información. Esto
permite que el usuario acceda a los datos de modo interactivo, gracias a que la
página responderá a cada una de sus acciones, como por ejemplo rellenar y
enviar formularios, participar en juegos diversos y acceder a gestores de base
de datos de todo tipo.
Programación de Aplicaciones Web
Las Aplicaciones Web están programadas bajo un lenguaje de programación.
Un lenguaje de programación es un idioma artificial diseñado para expresar
computaciones que pueden ser llevadas a cabo por máquinas como las
computadoras. Los lenguajes de programación orientados a aplicaciones web de
uso más común son: PHP, JSP y ASP.NET.
Vale la pena acotar que el software utilizado en la Universidad de Carabobo,
por decreto presidencial, debe estar desarrollado bajo los principios de software
libre. El lenguaje de programación PHP está desarrollado bajo software libre y
por ello fue seleccionado para desarrollar la aplicación.
PHP (PHP Hypertext Preprocessor)
PHP es un lenguaje de programación interpretado, diseñado originalmente
para la creación de páginas web dinámicas. Es usado principalmente en
interpretación del lado del servidor (serverside scripting) pero actualmente
puede ser utilizado desde una interfaz de línea de comandos o en la creación de
otros tipos de programas incluyendo aplicaciones con interfaz gráfica usando
las bibliotecas Qt o GTK+.
PHP es un acrónimo recursivo que significa PHP Hypertext Preprocessor
(inicialmente PHP Tools, o, Personal Home Page Tools). Fue creado
originalmente por Rasmus Lerdorf en 1994; sin embargo la implementación
principal de PHP es producida ahora por The PHP Group y sirve como el
estándar de facto para PHP al no haber una especificación formal. Publicado
bajo la PHP License, la Free Software Foundation considera esta licencia como
software libre.
Sistema de Gestión de Bases de Datos (SGBD)
Los sistemas de gestión de bases de datos (en inglés database management
system, abreviado DBMS) son un tipo de software muy específico, dedicado a
servir de interfaz entre la base de datos, el usuario y las aplicaciones que la
utilizan.
MySQL
MySQL es un sistema de gestión de base de datos relacional, multihilo y
multiusuario con más de seis millones de instalaciones. MySQL AB —desde
enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle
Corporation desde abril de 2009— desarrolla MySQL como software libre en un
esquema de licenciamiento dual.
Patrón ModeloVistaControlador (MVC)
Modelo Vista Controlador es un estilo de arquitectura de software que separa
los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres
componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones
web, donde la vista es la página HTML y el código que provee de datos
dinámicos a la página. El modelo es el Sistema de Gestión de Base de Datos y
la Lógica de negocio, y el controlador es el responsable de recibir los eventos de
entrada desde la vista.
Framework
En el desarrollo de software, un framework es una estructura conceptual y
tecnológica de soporte definida, normalmente con artefactos o módulos de
software concretos, en base a la cual otro proyecto de software puede ser
organizado y desarrollado. Típicamente, puede incluir soporte de programas,
bibliotecas y un lenguaje interpretado entre otros programas para ayudar a
desarrollar y unir los diferentes componentes de un proyecto.
CodeIgniter
CodeIgniter es un entorno de desarrollo (framework) abierto que permite crear
webs dinámicas con PHP. Su principal objetivo es ayudar a que los
desarrolladores, puedan realizar proyectos mucho más rápido que creando toda
la estructura desde cero. También hay que destacar que CodeIgniter es más
rápido que muchos otros entornos. Incluso en una discusión sobre entornos de
desarrollo con PHP, Rasmus Lerdorf (el creador de PHP) expresó que le
gustaba CodeIgniter "porquee es rápido, ligero y parece poco un entorno".
JavaScript
JavaScript es un lenguaje de scripting basado en objetos, utilizado para acceder
a objetos en aplicaciones. Principalmente, se utiliza integrado en un navegador
web permitiendo el desarrollo de interfaces de usuario mejoradas y páginas
web dinámicas. JavaScript se caracteriza por ser un lenguaje basado en
prototipos, con entrada dinámica y con funciones de primera clase. JavaScript
ha tenido influencia de múltiples lenguajes y se diseñó con una sintaxis similar
al lenguaje de programación Java, aunque más fácil de utilizar para personas
que no programan.
AJAX (Asynchronous JavaScript And XML)
Ajax es una técnica de desarrollo web para crear aplicaciones interactivas o
RIA (Rich Internet Applications). Estas aplicaciones se ejecutan en el cliente,
es decir, en el navegador de los usuarios mientras se mantiene la comunicación
asíncrona con el servidor en segundo plano. De esta forma es posible realizar
cambios sobre las páginas sin necesidad de recargarlas, lo que significa
aumentar la interactividad, velocidad y usabilidad en las aplicaciones.
Metodología de Desarrollo
Para el desarrollo de la aplicación, se empleó la metodología de desarrollo XP
(eXtreme Programming) con algunos artefactos de RUP (Rational Unified
Process). De manera específica, se generaron los siguientes
artefactos/documentos:
• Historias de Usuarios
• Diagrama de Casos de Uso UML
• Diagrama de Clases UML
Vale la pena destacar que de las características fundamentales de XP, las
siguientes estuvieron presentes en el proceso de desarrollo de la aplicación:
• Desarrollo iterativo e incremental
• Pruebas unitarias continuas
• Integración del equipo de programación con el cliente
• Refactorización del código
• Corrección de errores antes de añadir nueva funcionalidad
Consideraciones generales
• Para el desarrollo de la aplicación, no se contó con la documentación
adecuada del sistema.
• La aplicación estaba desarrollada sin el uso del patrón MVC, por lo que
además de implementar las mejoras deseadas, se cambió la estructura
de la misma siguiendo el patrón mencionado.
• Los aspectos a ser mejorados fueron establecidos en una reunión con la
Lic. Lorena Febres de la cual se redactó una minuta (ver Anexos) donde
se mencionan detalladamente.
Equipo proporcionado por la Dirección de Servicios Telemáticos de
FACYT para el desarrollo de la pasantía
• 1 computador Pentium IV con sus periféricos (teclado y mouse) y monitor
de 19”. En el mismo se instaló el software necesario para llevar a cabo el
desarrollo de la aplicación.
Pantallazos de la aplicación ANTES de la implementación de las
mejoras
Interfaz Principal
Biblioteca de Informes de Pasantía
Resultados
Previo a la fase de implementación, se generaron algunos documentos y
diagramas de valiosa importancia. Entre ellos se encuentran las Historias de
Usuarios, que debido a la longitud del documento, no se pudo mostrar en este
informe.
Luego de haber establecido y escrito las historias de usuarios, se siguió con la
elaboración del diagrama de casos de uso. En el mismo se identifican los
Actores y las Acciones que éstos realizan en el sistema. El diagrama de casos de
uso es muy importante para cumplir con los requisitos establecidos por los
usuarios finales.
Diagrama de Casos de Uso de UML
Después de esto, se procedió a realizar el diagrama de clases (de las clases
involucradas en las mejoras). Con esto se busca facilitar la creación y
modificación de las estructuras persistentes (tablas de BD) involucradas en las
mejoras requeridas al sistema y facilitar su consecuente programación.
Diagrama de Clases de UML
A partir de aquí se empezó con la fase de implementación y programación de
las mejoras a la aplicación, siguiendo las características y mejores prácticas de
XP (eXtreme Programming). Se realizaron reuniones frecuentes con la Lic.
Lorena Febres y otros coordinadores de pasantías para ir revisando las mejoras
que se iban implementando.
A mediados de noviembre de 2009 se instaló una primera versión del nuevo
sistema. Luego de un período de pruebas, se detectaron algunos errores y se
sugirieron nuevas funcionalidades que fueron implementadas a partir de
febrero de 2010. Para mediados de abril de 2010, se instaló la versión final y
definitiva del Sistema de Gestión de Pasantías.
Pantallazos de la aplicación luego de la implementación de las mejoras
Interfaz Principal
Interfaz del área de Pasantes
Biblioteca de Informes de Pasantía
Otras actividades realizadas durante la pasantía
• Creación de una galería virtual de imágenes en la página principal de
FACYT con imágenes relativas a infraestructura de la Facultad y
eventos realizados en la misma.
• Realización de consultas directas a la base de datos en lenguaje SQL
para extraer información necesaria para la Lic. Lorena Febres en la
elaboración de ciertos reportes.
• Elaboración de trípticos y materiales de apoyo relativos a la
Coordinación de Pasantías y la Dirección de Extensión que fueron
donados durante las diferentes jornadas de intercambio de FACYT con
empresas del sector público y privado.
• Servir de apoyo tecnológico durante la realización de encuentros de
intercambio entre FACYT y empresas del sector público y privado,
auspiciados por la Dirección de Extensión, quien rige a la Coordinación
de Pasantías.
Conclusiones
La implementación de mejoras al Sistema de Gestión de Pasantías de FACYT
se llevó a cabo de manera exitosa y la misma sirvió como una experiencia tanto
académica como profesional. Académica debido a que se obtuvieron
conocimientos en el área de programación web y sistemas de información que
antes no se tenían; y profesional ya que se trabajó en un ambiente institucional
similar al de cualquier empresa donde la responsabilidad, puntualidad y
profesionalismo son factores que identifican a sus trabajadores.
Recomendaciones
• Realizar un estudio exhaustivo de la base de datos, debido a que en la
misma se encuentran algunas inconsistencias en cuanto a estructura.
Preferiblemente, rediseñar la base de datos.
• Realizar otro sistema paralelo a éste que use esa nueva base de datos.
• Implementar las mejoras señaladas por la Directora de Extensión de la
Facultad, Prof. Marlene Arias, del Departamento de Matemática.
• Siguiendo los mismos paradigmas y procedimientos llevados a cabo en
esta pasantía, desarrollar el Sistema de Gestión de Servicio
Comunitario.
• Un problema crítico en el desarrollo de la pasantía era que los cambios
realizados se cargaban en el servidor de una manera incómoda. Es decir,
había que contactar al encargado del servidor con varios días (a veces
semanas) de anticipación, y darle los archivos para que los cargue. Si
había que hacer cambios, era necesario realizar este proceso
nuevamente. Por lo tanto, al realizar otras mejoras a este Sistema, se
recomienda facilitar al pasante una cuenta de usuario (con sus
respectivas directivas y restricciones) para subir al servidor los cambios
hechos al Sistema y no depender de otras personas para hacerlo, ya que
esto ocasiona pérdida de tiempo que se puede aprovechar de una mejor
manera.
Bibliografía
Tríptico Informativo de la Coordinación de Pasantías
http://es.wikipedia.org/wiki/Aplicación_web
http://es.wikipedia.org/wiki/PHP
http://es.wikipedia.org/wiki/SGBD
http://es.wikipedia.org/wiki/MySQL
http://es.wikipedia.org/wiki/Patrón_MVC
http://es.wikipedia.org/wiki/Framework
http://codeigniter.com/user_guide