Este proyecto es un apoyo docente de la asignatura
- Java
- Maven
- Spring
- GitHub
- Travis-ci
- Sonarcloud
- Bettercodehub
- Heroku
- Situarse en una carpeta raíz donde se encuentran los proyectos, mediante la consola:
>cd %ruta-de-la-carpeta% - Clonar el repositorio, se visualizará el contenido de la rama por defecto:
>git clone https://github.com/miw-upm/apaw
- Import Project, y seleccionar la carpeta del proyecto
- Marcar Create Project from external model, elegir Maven
- Next … Finish
🎥 Videos (www.youtube.com/miw-upm)
- Lista de reproducción: APAW (Curso 2019-20). Arquitectura y Patrones para Aplicaciones Web
- Plantilla de la práctica en: docs/apaw-ep-template.zip.
- Proyecto de ejemplo: https://github.com/miw-upm/apaw-ep-themes
- Nombre del proyecto: ☝️apaw-ep-nombre-apellido, 👫 apaw-ep-n-apellido-n-apellido, 👪 apaw-ep-n-apellido-n-apellido-n-apellido
- Todo el software deberá estar en ingles.
- Modelo del dominio. Práctica:
APAW. EP. Diagrama de Clases & API (0%)(OBLIGATORIO)
, junto con suretroalimentación
.- End-points: al menos un GET, POST, PUT, PATCH, DELETE & /search?q=
- ☝️ 5 documentos.
- Cada documento: >=2 atributos + [id:String].
- Total >= 15 atributos, con al menos LocalDateTime, Boolean, Integer.
- Relaciones: 1 sin relación, 1..n, n..1, 1..1 o n..n.
- 8 end-points.
- 2 Releases.
- Patrones: Builder, Composite & Observer.
- 👫 6 documentos.
- Cada documento: >=3 atributos + [id:String].
- Total >= 23 atributos, con al menos LocalDateTime, Boolean, Integer, Double.
- Relaciones: 1 sin relación, 1..n, n..1 & n..n.
- 14 end-points (2x7).
- 2 Releases (2x1).
- Patrones: Builder, Composite & 2X-Observer (a repartir).
- 👪 7 documentos.
- Cada documento: >=3 atributos + [id:String].
- Total >= 28 atributos, con al menos LocalDateTime, Boolean, Integer, Double.
- Relaciones: 1 sin relación, 1..n, n..1 & n..n.
- 18 end-points (3x6).
- 3 Releases (3x1).
- Patrones: Singleton, Builder, Composite & 3X-Observer (a repartir).
- Crear el proyecto local y remoto a partir de la plantilla dada, con el ecosistema completo (Travis-CI, Sonarcloud, Better Code Hub & Heroku, con badges con links).
- Preparar un proyecto de gestión (tipo Scrum) en GitHub, con los end-points, las liberaciones y los patrones.
- Se deben implementar un API con los end-points dada en la retroalimentación,
cada end-point asociado a un issue# diferente, cada miembro del equipo lo hace de forma secuencial.
Se debe aplicar la arquitectura dada en la retroalimentación (layers VS resources).
- ☝️ & 👫 Issue#. 1ª liberación (v1.0.0-release), una vez cerrado los end-points.
- 👪 Issue#. 1ª liberación & 2ª liberación, a mitad y al final de los end-points.
- Aplicar patrones, a repartir entre el equipo y un issue# por patrón.
- Issue#. última liberación (v1.x.0-release), una vez cerrado los patrones.
- Además, se podrán utilizar las issues adicionales que se consideren convenientes.
Indicar como texto en la subida la URL de GitHub
NOTA. Acordarse de dar al botón de envío
- Completud y corrección de lo entregado respecto al enunciado.
- Adecuación de la temporalidad de desarrollo según el enunciado.
- Mantenimiento de calidad del código (Travis-CI, Sonar, Better Code Hub,...).
- Uso correcto del flujo de trabajo ramificado (Git Workflow).
- Commits correctos y completos.
- Gestión adecuada y completa (Scrum, uso de issues, estimación, tiempo real...) durante el desarrollo.
- Planificación temporal adecuada y equilibrada en el desarrollo.
- Calidad del código. Todos los aspectos vistos en teoría, y poniendo espeacial enfásis en:
- Formatear.
- Herramienta del IDE.
- Líneas en blanco.
- Ordenar métodos.
- Repasar nombres de clases, métodos, atributos, parámetros y variables.
- Sencillez del código.
- Simplificar el código.
- Eliminar comentarios.
- Estructuras anidadas: <3.
- Complejidad ciclomática: <8-12.
- Métricas.
- Paquete: <20 clases.
- Clases: <500-200 líneas, <20 métodos.
- Métodos: <3-5 parámetros, <15 líneas.
- Cobertura de test: >80%.
- Eliminar redundancias (copy & paste).
- Eliminar código muerto.
- Tratamiento de errores.
- Calidad de la arquitectura (GRASP, SOLID, patrones...).
- Formatear.