Code Monkey home page Code Monkey logo

apaw's Introduction

Arquitectura y Patrones para Aplicaciones Web

Este proyecto es un apoyo docente de la asignatura. Cada release liberada corresponde al código utilizado en clase del curso indicado

Estado del código

DevOps Quality Gate

Tecnologías necesarias

Java Maven GitHub GitHub Actions CI Sonarcloud Better Code Hub Slack Spring-boot Heroku OpenAPI

⚙️ Instalación del proyecto

  1. Clonar el repositorio en tu equipo, mediante consola:
> cd <folder path>
> git clone https://github.com/miw-upm/apaw
  1. Importar el proyecto mediante IntelliJ IDEA
    1. Open Project, y seleccionar la carpeta del proyecto.
    2. Marcar Create Project from external model, elegir Maven.
    3. NextFinish.

📖 Diapositivas (/docs)

  • Lista de reproducción: APAW. Arquitectura y Patrones para Aplicaciones Web

📃 Enunciado de la práctica

La practica consiste en ampliar de forma colaborativa una aplicación: https://github.com/miw-upm/apaw-practice.
NOTA. Todo el software deberá estar en ingles.

1. Clonar el proyecto y crear una etiqueta en GitHub con el nombre de la ampliación

Por ejemplo: story:sport, story:team... no puede haber repetidas. En todos los issues# creados, se deberá asociar dicha etiqueta, además de la etiquita de estimación (puntos). Los nombres de los paquetes, deben coincidir exactamante con la historia, ejemplo, story:winter-games, paquete: winter_games.

2. Diseñar el Modelo (0,5 pto)

Crear un 1️⃣ issue# (por ejemplo: Team model). Debe colocarse el diagrama de clases del modelo en los detalles del issue y debe estar siempre actualizado. Para resolverlo se utilizará un flujo de trabajo ramificado, y una vez finalizado e incorporado a develop y añadido el tiempo consumido, se debe avisar al profesor mediante Slack dando en el mensaje privado la url del issue, si es correcto el profesor autorizará el cierre del issue y se podrá continuar, sino, se deberán realizar los cambios.

  • Crear 4 documentos. No puede haber 2 documentos, con el mismo nombre en toda la aplicación, ni dos atributos dentro de la misma práctica.
    • Cada documento: >=3 atributos, y en total >= 12 atributos, con al menos uno LocalDateTime o LocalDate, Boolean y uno numérico (Integer, Double, Long o BigDecimal).
    • Los atributos para manejo de dinero deben ser BigDecimal.
    • Relaciones necesarias: 1..n, n..1 y n..n.

3. Diseñar la persistencia (2️⃣ issue#) (1 pto)

  • Crear el modelo de entidades.
  • Crear los DAOs (Repositorios).
  • Crear una clase para poblar las BD: <Story>SeederService e integrarlo con DatabaseSeederService.

4. Crear 5 end-points (mediante 3️⃣..7️⃣ issue#) (4 ptos)

  • GET, POST, PUT, DELETE (0,75 ptos/end-point).
  • PATCH (1 pto).
  • Repartidos proporcionalmente entre el modelo.
  • Los end-points deben estar 100% probados y los servicios también.

5. Búsquedas y Patrones (4,5 ptos)

  • Una vez finalizado los seis issues anteriores, se debe avisar al profesor por Slack, y el profesor añadirá :
    • 8️⃣..9️⃣ issues# para realizar end-points de búsquedas. Recordar que en búsquedas, a cualquier nivel, resource, service, repository... siempre se coloca en el tipo de lo devuelto.
    • 🔟..1️⃣1️⃣ issues# con la aplicación de dos patrones.

✅ Criterios de evaluación

  • Uso correcto del flujo de trabajo ramificado. Hasta -3 ptos.
  • Adecuación de la temporalidad de desarrollo según el enunciado. Hasta -3 ptos.
  • Mantenimiento de calidad del código según GitHub Actions y Sonar. Cobertura >= 80%. Hasta -3 ptos. 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-4 parámetros, <15 líneas.
    • Eliminar redundancias (copy & paste).
    • Eliminar código muerto.
    • Tratamiento de errores.
    • Calidad de la arquitectura (GRASP, SOLID, patrones...).
  • Gestión adecuada, completa y equilibrada (estimación, tiempo real...) durante el desarrollo. Hasta -3 ptos.
  • Uso del ingles. Hasta -1 pto.

👏 Entraga de la práctica

Indicar como texto en la subida:

  • Nombre de la historía:
  • Cuenta de GitHub:
  • Nombre aparecen en los commits:
  • Estimación total y tiempo total consumido:

NOTA. Acordarse de dar al botón de envío.

apaw's People

Contributors

jesusbernalbermudez avatar miw-upm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

apaw's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.