6.2.
Roles llevados a cabo
En cuanto al sistema de aulas desarrollado se vio necesario asumir varios roles. Esto llev´o a una buena formaci´on profesional teniendo diferentes visiones sobre el proyecto. A continuaci´on se har´a una descripci´on de las actividades pertenecientes a los diferentes roles adoptados a lo largo del ciclo de vida.
Captura de requerimientos
Todo proceso de desarrollo de software comienza con la captura de los requeri- mientos del cliente (usuario final). Como el proyecto cont´o con 2 etapas, en las cuales, primero estuvieron como unidades acad´emicas participantes s´olo 2 facultades (Fac. de Cs. Exactas y Fac. de Cs. Econ´omicas) y otra en la que se unieron las facultades restantes, se tuvieron que realizar el relevamiento de requerimientos en momentos diferentes. Cabe aclarar que al contar con un proceso de desarrollo iterativo, se tiene posibilidad de incorporar y refinar continuamente estos requerimientos f´acilmente (ver Secci´on 3.2.1).
En primer instancia, se realizaron reuniones con los responsables de la asignaci´on y reservas de aulas de las facultades correspondientes a la primer etapa. El objetivo de estas reuniones fue confeccionar un documento que defina las tareas a realizar por los mismos y captar las deficiencias en dicho proceso que pueda agilizar el sistema a desarrollar. Estos requerimientos, fueron el punto de partida para dicho desarrollo.
En cuanto a la segunda etapa, tambi´en se realiz´o las correspondientes reuniones con los usuarios que se incorporaron al uso del sistema (Fac. de Cs Humanas, Fac. de Cs Veterinarias, Biblioteca, responsables de aulas de Rectorado). Se analizaron sus proceso de trabajo buscando similitudes y diferencias con los ya entrevistados en la etapa anterior y, a diferencia de esta, se busc´o tambi´en adaptar las necesidades encontradas al sistema ya desarrollado.
Luego de las reuniones se generaron los correspondientes documentos que detallan los requisitos captados, como as´ı tambi´en el material necesario para poder crear el producto de manera correcta (por ejemplo, modelos de publicaciones en cartelera).
Cap´ıtulo 6. Roles adoptados 47
Desarrollo
El desarrollo se realiz´o en su totalidad por los alumnos acreedores de la beca de contraprestaci´on. En un principio, no se realiz´o una divisi´on de tareas puntual por m´odulos a implementar por cada desarrollador, pero luego se fueron adoptando especialidades de cada uno teniendo en cuenta sus habilidades. As´ı, un desarrollador se dedic´o m´as al front-end y otro al back-end. Sin embargo, se necesit´o un previo conocimiento en ambas ´areas para poder mantener una correcta comunicaci´on y funcionamiento.
En todo momento, se busc´o mantener la arquitectura establecida en el sistema y una buena calidad de codigo. Esta tarea requiri´o el correspondiente refactoring 1 en muchas etapas del desarrollo.
Para poder establecer un progreso colaborativo del producto se uso un versionado de c´odigo utilizando herramientas que lo permiten (SVN)[25]. Se busco establecer cada commit con su correcto comentario para poder llevar un mejor control de ca- da versi´on. Fue necesario establecer un constante contacto y buena comunicaci´on entre los programadores para poder mantener la consistencia del sistema y el correc- to avance de la producci´on de las funcionalidades. Esta tarea no present´o muchos inconvenientes dado que fueron pocas las personas dedicadas a esta etapa.
La idea del incremento del producto fue resolver las funcionalidades a realizar prioritariamente y establecer r´apidas entregas respetando metodolog´ıas ´agiles.[3]
Test
Una vez desarrollada una funcionalidad y previo a realizar su despliegue, es ne- cesario generar casos de test para verificar el correcto funcionamiento de la misma. Estos se realizaron sobre el server de desarrollo, ya que contaba con las mismas caracter´ısticas que el de producci´on, con lo que su funcionamiento, en teor´ıa, ser´ıa id´entico.
Para llevarlos a cabo, se probaron ejemplos de uso, utilizando diferentes tipos de usuarios con sus permisos correspondientes y verificando que el sistema siga consis- tente y sin errores. Tambi´en se tuvieron en cuenta en el uso los atributos de calidad
1T´ecnica de ingenier´ıa de software que implica reestructurar el c´odigo fuente, alterando su es- tructura interna sin cambiar su comportamiento externo buscando tener un c´odigo m´as limpio.
Cap´ıtulo 6. Roles adoptados 48
del sistema como la disponibilidad del mismo, o una adecuada performance. El uso de un usuario no debiera dejar saturado el sistema para el resto de los usuarios.
Despliegue
La etapa de despliegue (odeploy) consiste en la puesta en producci´on del sistema. Los servidores que corren el sistema est´an f´ısicamente ubicados en el DataCenter del campus universitario. El sistema se aloja y ejecuta en una de las m´aquinas virtuales que se encuentran sobre los mismos.
La virtualizaci´on ofrece varias ventajas, hace m´as f´acil la administraci´on y mante- nimiento de hardware al tener en pocas m´aquinas f´ısicas y es posible la generaci´on de m´aquinas con similares caracter´ısticas para poder realizar pruebas. Para virtualizar, el DataCenter utiliza Xen [27]. Como la m´aquina virtual utilizada corr´ıa con Unix, la tarea de despliegue requiri´o mucho aprendizaje este tipo de sistemas operativos.
Se tuvieron que tener en cuenta muchas cuestiones para dejar el sistema funcio- nando de manera correcta, como la consistencia de la base de datos, sin que esta pierda informaci´on o compatibilidad de versiones utilizadas con las instaladas.
Mantenimiento
El proceso de desarrollo de un sistema que cumpla con los objetivos planteados implica el correcto y constante mantenimiento del mismo. Nuevos requerimientos son obtenidos a partir de su uso. Durante esta etapa se propuso una continua interacci´on con el usuario con el objetivo de obtener el feedback correspondiente y realizar las posibles mejoras o arreglos en base al mismo. Peri´odicamente se realizaron reuniones con los usuarios para verificar el correcto uso del sistema y si se encontr´o alg´un tipo de cr´ıtica que ayude a mejorarlo, como as´ı tambi´en para establecer soporte para el correcto uso de la aplicaci´on.
Capacitaci´on
Como la utilizaci´on del nuevo sistema impone un nuevo proceso de trabajo, tal vez m´as agilizado por el uso de la tecnolog´ıa, el mismo requiere su respectivo aprendizaje. De nada sirve tener un sistema ´optimo si no se sabe usarlo o si se usa de manera incorrecta.
Cap´ıtulo 6. Roles adoptados 49
El sistema fue pensado para utilizarse estableciendo un proceso apropiado, pe- ro dicho proceso debe ser ejecutado de manera adecuada. Para esto fue necesario capacitar a los usuarios finales. As´ı, se realizaron reuniones generales con todas las unidades acad´emicas y usuarios involucrados en el manejo de las aulas de UNCPBA con el objetivo de presentarles el correcto uso del sistema desarrollado y capacitarlos en el mismo. Se puede ver en el Ap´endice D un resumen de los puntos a tener en cuenta al momento de dicha capacitaci´on. Como complemento, se arm´o y entreg´o el correspondiente manual de usuario (Anexado en ap´endice C). Adem´as, en cada etapa importante del proceso, se asisti´o a los lugares de trabajo de cada usuario para indicar c´omo realizar el mismo y verificar su funcionamiento.
Cap´ıtulo 7
Asignaci´on autom´atica de aulas
En este cap´ıtulo se dar´a explicaci´on de algunas t´ecnicas investigadas para poder realizar una distribuci´on de aulas autom´atica, realizando una b´usqueda eficiente de objetivos. Esta etapa, se desarroll´o de manera independiente al sistema. Una vez en uso el sistema, fue posible contar con datos reales para poder aplicar algunas t´ecnicas de distribuci´on ´optima de aulas.
7.1.
Algoritmos Gen´eticos
Existen varios algoritmos o variantes de los mismos para poder realizar una buena optimizaci´on de los usos de los recursos de los espacios institucionales. Los algoritmos gen´eticos han demostrado ser una herramienta muy eficiente para resolver este tipo de problemas[9][10]. Estos consisten en una t´ecnica de programaci´on que imita a la evoluci´on biol´ogica como estrategia para resolver problemas.
Dado un problema espec´ıfico, la t´ecnica parte desde soluciones potenciales llama- das individuos. Estos individuos son codificados o representados de alguna manera para que pueda ser posible medirle su calidad como soluci´on. El algoritmo selecciona desde un conjunto de individuos (poblaci´on), aquellos que son m´as capacitados para luego generar otros (reproducirlos) y realizar mutaciones, con el fin de generar nuevas soluciones que estar´an mejoradas con respecto a la anterior generaci´on.
El proceso planteado se realiza de forma reiterada hasta el cumplimiento de alg´un criterio de convergencia o llegar a una cierta cantidad de iteraciones.