Home - manuvillalba-uclm/ISO-II-Alumavic GitHub Wiki
Alumavic Wiki - Proyecto: Gestión Cadena de Coches.
La Práctica
Enunciado de práctica
Creación de Empresa: Alumavic
Dado el enunciado de práctica anterior, el grupo C-02 de la asignatura ISO-II, creó la empresa de desarrollo software Alumavic - web, utilizando Google Sites se implementó su respectiva página web, creándose a su vez este repositorio en Github, en los cuales todos los integrantes del grupo junto al profesor de prácticas Ismael tienen acceso, también se crea el Google Groups.
FASE INICAL: Especificación requisitos usuario simplificada.
Comienza la producción de este producto software, queremos destacar una detallada lista de actividades que iremos desarrollando a lo largo de la práctica es esta CheckList.
PUD:
Mediante el estudio del enunciado del ejercicio, el equipo ha identificado los siguientes requisitos funcionales a desarrollar:
- CD1 Reserva de boxes: Los clientes pueden llamar para reservar un Box. El Jefe de taller es el encargado de controlar que los clientes lleguen a tiempo (si exceden 20 min de su reserva es cancelada) para mantener los boxes activos. Los boxes tienen diferentes estados (libre, reservado, ocupado, pidiendo, en espera, servidos, eserando, pagando y en preparación). Además se guardará el registro de boxes.
- CD2 Pedidos de piezas de recambio: Los mecánicos seleccionan el Box en el que están trabajando y eligen (tras inspección) una serie de piezas que creen que van a utulizar en la reparación.
- CD3 Box, Almacén y Control de piezas de respuestas: Se realiza una predicción de las piezas más utilziadas. Se actualiza el almacén en los boxes. El almacen realiza pedidos automáticos en base a un umbral por piezas consumidas.
- CD4 Pago y liberación del box: El Mecánico realiza la la cuenta de la reparación del box asignado. Cuando se completa el pago el Box pasa a estar "libre".
- CD5 Realización de estadísticas: Se recopilarán: tiempo medio de espera para asignar box, tiempo medio de reparación de averías, tiempo medio de ganaración de la cuenta y tiempo medio de preparación para que quede el box libre.
Para más información sobre los casos de uso: Wiki Casos de Uso Gestión de cadena de talleres
Planificación:
Como bien indicamos en nuestra página web en el apartado de estructura, nuestro sueldo mensual es de 10.000€/mes por persona, como nuestra jornada laboral es de semana completa 8 horas al día, tenemos como resultado unas 240 horas mensuales pagadas a 40€ brutos.
Durante el proyecto los integrantes del grupo que no estén trabajando sobre el mismo, están efectuando tareas independientes relacionadas con la empresa que no se reflejan en el presupuesto ni en la planificación.
Consideramos que cada la finalización de cada una de las iteraciones equivale a obtener una versión superior de la aplicación que se está desarrollando. Para más información consulte Versioning y Gestión de Configuración de Cambios
Coste total del proyecto: 5240€.
Horas empleadas en el proyecto: 168 Horas.
Finalización del proyecto: 26/11/2019 con posibles retrasos debido a riesgos no esperados, con un margen de maniobra de 3 días antes de la entrega.
Cabe destacar que las dos primeras iteraciones son de mayor duración porque se estimó un riesgo debido al proceso de adaptación con el modelo trabajo que se está enseñando en la asignatura.
FASE ELABORACIÓN: Proporciona la línea base del sistema
Iteración 1:
La iteración ha sido finalizada en el plazo estimado, siendo aprobada la pull request por el coordinador del grupo en el commit Aprobada Pull Request Iteración 1
Puedes consultar su documentación en Iteracion 1, toda la información detallada relacionada con requisitos, análisis y diseño en el Visual Paradigm subido en Google Drive y la implementación junto con el testing en este repositorio.
Iteración 2:
La iteración ha sido finalizada en el plazo estimado, siendo aprobada la pull request por el coordinador del grupo en el commit Aprobada Pull Request Iteración 2
Puedes consultar su documentación en Iteracion 2, toda la información detallada relacionada con requisitos, análisis y diseño en el Visual Paradigm subido en Google Drive y la implementación junto con el testing en este repositorio.
FASE CONSTRUCCIÓN: Capacidad operacional.
Iteración 3 e Iteración 4:
Puedes consultar su documentación en iteracion 3 y Iteracion 4, con toda la información detallada relacionada con requisitos, análisis y diseño en el Visual Paradigm subido en Google Drive
Ambas iteraciones se han empezado a la vez, siguiendo la planificación. Debido a un problema de entendimiento durante las iteraciones los autores se intercambiaron las iteraciones. Puesto que estamos simulando el desarrollo de un proyecto, las únicas medidas que podemos adoptar es cambiar la planificación para que refleje la realidad, ya que el autor de las iteraciones, en esta situación, es irrelevante. En un proyecto real, habría que tomar medidas sobre la mala gestión de las iteraciones y también poner medios para que los integrantes del equipo tengan que revisar las vías de comunicación más frecuentemente y con mayor atención. Además ambas iteraciones se han retrasado debido a unos riesgos no calculados relacionados con el uso de las herramientas que utilizamos en nuestro entorno(GitHub y Maven). Puedes consultar la documentación en los siguientes enlaces: Iteración 3 Iteración 4
ACTUALIZACIÓN DE LA PLANIFICACIÓN
Debido a los riesgos implevistos mencionados anteriormente, la planificación ha consumido un día extra, siguiendo estando en plazo, pero esto ha provocado un aumento en coste y esfuerzo.
Coste total del proyecto: 6520€.
Horas empleadas en el proyecto: 216 Horas.
Finalización del proyecto: 27/11/2019 con posibles retrasos debido a riesgos no esperados, con un margen de maniobra de 2 días antes de la entrega.
NOTA SOBRE LA ITERACIÓN 3:
Debido a un problema de familiarización y entendimiento con la herramienta Maven, el proyecto se ha desarrollado duplicando las clases entre módulos, esto además de romper con todas las filosofías y buenas prácticas de dependencia e integración del proyecto, provocará diversos problemas a la hora de hacer Build en siguientes iteraciones. Esta mala práctica también ha provocado que la Iteración 3 esté compuesta por sólo por clases repetidas, iteración que se queda descolgada porque posiblemente la tengamos que dejar vacía.
POSIBLES SOLUCIONES EN UN PROYECTO REAL:
-
Mediante Herencia: Una de las soluciones que se han contemplado es hacer herencia de aquella clase que se quiere modificar, añadiendo aquellos atributos y/o metodos necesarios.Resulta ser poco intrusiva.
-
Correción de la Iteración: Se avisaría al coordinador de proyecto para que planifique una nueva iteración, o una rectificación con aquella/s clases que se quieran mejorar/rectificar para que cumplan con los requisitos necesarios. La volveran a implementar aquellas personas del proyecto que lo hicieron por primera vez. Cuando se finalizara se daría un aviso de que las clases han sido corregidas para continuar así con la planificación del proyecto.
-
Crear una nueva versión: Pero se incumpliría la norma de integridad ya que no todas las personas del proyecto tendrían la misma versión de clase.
En esta iteración es cuando el grupo ha entendido realmente el funcionamiento de Maven y su proposito, tomando nota de los errores cometidos para no cometerlos en futuros proyectos. En la iteración 6 se intentará aplicar una de estas soluciones para corregir el error.
Iteración 5:
La iteración no ha sido finalizada en el plazo estimado porque la aceptación del pull request se retrasó dos días, la pull request fue aprobada por el coordinador del grupo en el commit Aprobada Pull Request Iteración 5
Puedes consultar su documentación en Iteracion 5, toda la información detallada relacionada con requisitos, análisis y diseño en el Visual Paradigm subido en Google Drive y la implementación junto con el testing en este repositorio.
ACTUALIZACIÓN DE LA PLANIFICACIÓN
Debido a más riesgos no calculados, la planificación ha consumido varios días extra, siguiendo estando en plazo, pero esto ha provocado un aumento de esfuerzo significativo.
Coste total del proyecto: 7160€.
Horas empleadas en el proyecto: 240 Horas.
Finalización del proyecto: 29/11/2019
En caso de retraso seguiremos reajustando la planificación pare ceñirnos a ella. Como podemos comprobar a lo largo del proyecto han surgido imprevistos que, aunque teníamos días dispuestos para ello, han acabado consumiendose.
Iteración 6:
En esta iteración pre-despliegue nuestra intención ha sido corregir aquellos fallos que hemos ido cometiendo a lo largo de las fases anteriores. Al no trabajar en un proyecto real y al hacerlo al unísono del aprendizaje de nuevas herramientas y metodologías, ha dificultado la detección de estos errores hasta las últimas fases del desarrollo Software. Entendemos que un proyecto real ésta no es la forma correcta de proceder ya que lo ideal sería detectar los riesgos antes o poco después de cometerlos, pero queremos demostrar que los contenidos se han comprendido poniéndoles solución y tomando nota para no cometerlos de nuevo en futuros proyectos.
Iter3 1.1:
Para solucionar los errores de la Iteración 3, hemos optado por crear una clase nueva llamada Almacen_Automatic.java que hereda de Almacen, en ella se implementarían aquellos métodos y atributos relacionados con la Automatización del Almacen. Como el propio nombre del apartado indica, el módulo Maven se ha avanzado de versión después de aplicar dichos cambios, siguiendo con el versioning planificado.
Dependencias Maven:
Mediante plantillas de dependencia en los pom.xml hemos marcado las dependencias entre los módulos que hemos ido implementado,atendiendo siempre a las diferentes versiones.
Este sería un ejemplo de una de estas plantillas, siendo este el pom.xml de Iter2 con dependencia al módulo Iter1
Lamentablemente no hemos conseguido generar un UML a partir de nuestro proyecto Maven, pero con el árbol del proyecto nos podemos hacer una idea clara de las diferentes dependencias existentes.
También las despendencias se ven representadas en GitHub
Plugin Jar:
Tras poder hacer Build con exito del proyecto Maven. En el pom.xml general se ha implementado el maven-jar-plugin para que en la siguiente fase se puedan generar los .jar de los módulos de nuestro Maven.
Java Doc:
Finalmente tenemos una documentación de las clases para que se puedan consultar, en este caso nuestras clases tienen poco contenido pero en un proyecto real habría información de interés. Puedes consultarse en el siguiente enlace.
Para más información sobre los commit y el pull request de la Iteración 6
FASE TRANSICIÓN: Despliegue del sistema.
Si este proyecto fuera real, en esta fase cubriríamos la formación del cliente, dándole una línea de asistencia y corrigiendo los defectos que se encuentren en la entrega. En esta fase cubriremos el despliegue de los paquetes .jar.
Como en la Iteración anterior hemos implementado el maven-jar-plugin, es tan fácil como ejecutar el build "Package" del Lifecycle de nuestro proyecto Maven.
Como resultado de proceso obtenemos los .jar dentro de los directorios target de cada uno de los módulos. Los archivos .jar estarán disponibles en el repositorio de Google Drive
Cabe destacar el éxito en la simulación del proyecto ya que se ha conseguido realizar un mapeo 1:1 de las iteraciones y de los módulos.
CONCLUSIONES
Una vez terminada esta práctica hemos entendido el funcionamiento básico y el potencial del PUD y las herramientas que hemos untilizado. Pensamos que al inicio de esta práctica el escalón de dificultad es mayor, necesitando mucho conocimiento teórico para hacer las cosas bien. A medida que hemos avanzado, el escalon iba reduciendose. Como sujerencia, nosotros pensamos que si se dedicase un par de sesiones a realizar un "mini" proyecto del estilo de esta práctica con la Agenda propuesta como ejercicio, el escalón inicial de dificultad sería menor.
Estamos muy satisfechos con el resultado final de nuestra práctica puesto que se ha seguido la planificación en todo momento, y cuando no ha sido posible, se ha reajustado. Además que contamos con gran cantidad de documentación sobre la práctica: CheckList, Versioning, etc. Creemos que hemos cometido ciertos errores por falta de atención a la práctica o bien falta de conocimientos.
Los recursos recomendados (libro de GitHub, Maven, etc) nos han sido muy útiles sobre todo, como decía antes, en la etapa inicial del proyecto.