|
1 | 1 | \capitulo{5}{Aspectos relevantes del desarrollo del proyecto} |
2 | 2 |
|
3 | | -Este apartado pretende recoger los aspectos más interesantes del desarrollo del proyecto, comentados por los autores del mismo. |
4 | | -Debe incluir desde la exposición del ciclo de vida utilizado, hasta los detalles de mayor relevancia de las fases de análisis, diseño e implementación. |
5 | | -Se busca que no sea una mera operación de copiar y pegar diagramas y extractos del código fuente, sino que realmente se justifiquen los caminos de solución que se han tomado, especialmente aquellos que no sean triviales. |
6 | | -Puede ser el lugar más adecuado para documentar los aspectos más interesantes del diseño y de la implementación, con un mayor hincapié en aspectos tales como el tipo de arquitectura elegido, los índices de las tablas de la base de datos, normalización y desnormalización, distribución en ficheros3, reglas de negocio dentro de las bases de datos (EDVHV GH GDWRV DFWLYDV), aspectos de desarrollo relacionados con el WWW... |
7 | | -Este apartado, debe convertirse en el resumen de la experiencia práctica del proyecto, y por sí mismo justifica que la memoria se convierta en un documento útil, fuente de referencia para los autores, los tutores y futuros alumnos. |
| 3 | +En esta sección se van a detallar los aspectos más relevantes que han ido surgiendo a lo largo del desarrollo del proyecto. Este a sido un desarrollo \textit{software} y como tal ha estado lleno de retos y decisiones técnicas que han tenido que ir tomándose. La formación ha sido un punto de inflexión, sumado a la aplicación de buenas prácticas, ha resultado en un producto de calidad. |
| 4 | + |
| 5 | + |
| 6 | +\subsection{Investigación} |
| 7 | +Uno de los componentes principales que posee el proyecto es el apartado de investigación en el campo del Aprendizaje Automático, concretando un poco más, el efecto de la aplicación de técnicas de selección de instancias en el aprendizaje semi-supervisado. |
| 8 | + |
| 9 | +Uno de los principales retos enfrentados en una primera instancia ha sido adquirir una rápida capacidad de lectura y asimilación de documentación científica, si bien el idioma (inglés) no ha supuesto una barrera, el no poseer experiencia en realizando estas tareas generó una necesidad que tuvo que ser solventada poco a poco. En los últimos meses del proyecto la agilidad ya estaba ahí, resultando en tareas más fluidas y veloces. |
| 10 | + |
| 11 | +\subsection{Metodología SCRUM} |
| 12 | +Como ya se mencionó en la Sección~\ref{SCRUM}, el proyecto se ha realizado siguiendo una metodología ágil, permitiendo trabajar en \textit{sprints} de manera que el trabajo de cada \textit{sprint} se encuentre correctamente fundamentado al inicio de cada uno, permitiendo trabajar con una mayor eficiencia, priorizar el trabajo en función las tareas existentes, y disponer de versiones funcionales a la vez que se sigue con el desarrollo del proyecto. |
| 13 | + |
| 14 | +Si bien se conocía SCRUM de manera puramente teórica, el haber trabajado siguiendo esta metodología ha permitido ganar experiencia en modelos de desarrollo ágiles, diferente de los clásicos a los que se acostumbraba, y tal y como se define, el trabajo se ha visto afectado de forma positiva con esta aproximación. |
| 15 | + |
| 16 | +Se disponían de cerca de 9 meses (máximo) para cumplimentar el proyecto, un tiempo mucho más elevado del habitual para este tipo de proyectos, es por ello que se han invertido múltiples \textit{sprints} para validación y calidad, permitiendo asegurar que los pasos dados son correctos y seguir construyendo sobre seguro. |
| 17 | + |
| 18 | +Una de las principales dificultades encontradas en este campo es la asignación de puntos de historia, el definir en base a un nombre de tarea y una descripción el tiempo que va a ser necesario invertir para cumplir con ella no ha sido siempre muy preciso. El no poseer experiencia previa en proyectos de esta envergadura propició que se considerara la equivalencia de 1 punto de historia igual a 45 minutos o menos. Y si bien ha habido múltiples \textit{sprints} en los cuales se ha conseguido seguir esta relación, no ha sido algo lineal en el proyecto, debido a que se tuvo en cuenta la experiencia que se iba consiguiendo a la hora de asignar los siguientes puntos de historia, y ha habido múltiples \textit{sprints} desfasados por lo alto. |
| 19 | + |
| 20 | +\subsection{Actualización y modificación de un \textit{software} pre-existente} |
| 21 | +Posiblemente será el aspecto relevante más cercano a el futuro laboral de cualquier alumno. Supuso todo un reto el coger un proyecto que había sido desarrollado por 5 personas y <<hacerlo propio>>. Como es lógico cada persona programa de una forma diferente para alcanzar la misma funcionalidad, y ya no solo eso, sino la propia temática del proyecto era desconocida, por lo tanto supuso un esfuerzo doble. |
| 22 | + |
| 23 | +La no existencia de una documentación, ni técnica ni formal, acerca del propio \textit{software} no ayudó a obtener una visión del proyecto más allá de la estructura de paquetes y nombres. Fue algo que se echó en falta, y que con la finalización de este proyecto, ya posee. |
| 24 | + |
| 25 | +\subsection{Desarrollo Web} |
| 26 | +A lo largo del Grado no se ha visto nada en cuanto a desarrollo web se refiere, siendo toda una desventaja a la hora de actualizar y modificar \texttt{UBUMLaaS}. Trabajar con una REST API era algo hasta enero desconocido, y la curva de aprendizaje no ha sido especialmente sencilla, han sido necesarias numerosas horas para familiarizarse tanto con el proyecto como con la forma de trabajo que poseen las aplicaciones que siguen esta arquitectura. |
| 27 | + |
| 28 | +A la hora de integrar nuevas modificaciones sobre el \textit{backend} del proyecto no supuso grandes problemas, fue un trabajo laborioso como es de esperar, pero al ser Python ya se estaba acostumbrado al lenguaje de programación. La dificultad llegó con el \textit{frontend} lenguajes de marcas como HTML o CSS, y de programación como JavaScript, no eran desconocidos, pero no se habían utilizado nunca en grandes proyectos; es por ello que hubo tareas que se vieron retrasadas. |
| 29 | + |
| 30 | +Destacar que como ha sido la tónica general del proyecto y así queda recogido en el resumen de numerosos \textit{sprints} en su anexo correspondiente. En cuanto el equipo de desarrollo se familiarizaba con el lenguaje y entorno de aplicación, la velocidad de implementación de funcionalidades crecía de forma exponencial. |
| 31 | + |
| 32 | +La web ha sufrido una renovación por completa, siendo necesario re-escribir todos los documentos HTML, si bien se tuvo desde un inicio en cuenta que ciertas páginas tuvieran un diseño similar al que ya poseían anteriormente para seguir con el diseño inicial. El nuevo diseño soporta múltiples resoluciones de pantalla, habiendo sido priorizadas aquellas soportadas en tabletas sobre las de dispositivos móviles. |
| 33 | + |
| 34 | +\subsubsection{Funcionalidades <<sobre la marcha>>} |
| 35 | +En el momento de desarrollo de la parte de administración de \texttt{UBUMLaaS} surgían cada día nuevas funcionalidades que parecían correctas o adecuadas para implementar y añadir, permitiendo a los administradores tener más control del que iban a poseer una vez pase a producción la versión creada. |
| 36 | + |
| 37 | +Muchas de estas nuevas funcionalidades se han llevado a cabo y se encuentran disponibles y completamente integradas con la plataforma, si bien muchas otras no, se han quedado como trabajos futuros. Aquellas que se han quedado sin implementar fueron clasificadas con una relevancia baja, siendo priorizadas aquellas que se consideraron más útiles o curiosas. |
| 38 | + |
| 39 | +\subsection{PIP} |
| 40 | +\texttt{IS-SSL} es una biblioteca desarrollada con la finalidad de que sea útil a la mayor cantidad de desarrolladores posible, siguiendo las directrices del \textit{Open Source}, es por ello que se encuentra disponible a través del gestor de paquetes de Python, PIP. |
| 41 | + |
| 42 | +El proyecto también puede ser descargado directamente desde el repositorio de GitHub y realizar todas las instalaciones de dependencias necesarias a través del fichero de \textit{requeriments.txt} o creando un entorno de \texttt{Conda} (a través del fichero \textit{is-ssl.yml}). |
| 43 | + |
| 44 | +\subsection{Docker} |
| 45 | +\texttt{UBUMLaaS} se encuentra desplegado en la Universidad de Burgos sobre un servidor directamente, pero con el fin de permitir que se despliegue en cualquier equipo y que la configuración específica sea mínima, se ha creado un contenedor Docker en el cuál reside la última versión de la aplicación. |
| 46 | + |
| 47 | +El futuro de la aplicación podría ser únicamente en Docker perfectamente, siendo mucho más sencillo desplegarla en diferentes servidores, pero en la actualidad ese no es el enfoque deseado, por lo que se dejó para hacer al final en caso de que sobrara tiempo, como ha sucedido. |
| 48 | + |
| 49 | + |
| 50 | +\subsection{Experimentación de filtros de ruido para aprendizaje semi-supervisado} |
| 51 | +\imagenFlotante{../img/memoria/aspectos-relevantes/General}{Resumen en función del clasificador y filtro}{exp-general} |
0 commit comments