Desarrollo de software verde

Green Computing aplicado a la ingeniería del software

Curso de verano, CEMED

Desarrollo ágil para la eficiencia energética

20 años del Manifiesto ágil

Algunos lemas

➖ documentación ➕ código funcionando

➖ procesos ➕ interacción

➖ contratos ➕ colaboración

Y principios

Resolver problemas

Publicar frecuentemente

Buenas prácticas y buen diseño

La simplicidad es esencial

Revisar el trabajo frecuentemente

Ingeniería del software: resolver problemas mediante código

Ingeniería del software verde: tener en cuenta la eficiencia energética en cada paso

Publicar frecuentemente: cada hito debe tener un producto mínimamente viable

La calidad empieza por el diseño

Buscar siempre las mejores prácticas en cualquier decisión técnica

En este caso, la que consuma menos energía

Revisar el trabajo en "retros" y en los PRs

Historias de usuario

Los deseos de los clientes

Las HUs se agrupan en épicas

Como usuario de tipo x, en el contexto y, quiero que suceda z, y si no, w

¿Scrum o Kanban?

O un poco de cada

Organizando un tablero kanban

Las mejores prácticas son las mejores

E incluyen el uso de repositorios de código

Las ramas agrupan trabajo

Y crean flujos de trabajo en equipo

Usa nombres significativos para las ramas

PRs siempre desde una rama

Creando y cambiando a una rama

git checkout -b nombre-guay-de-rama

Y push

git push -u origin $(git describe --contains --all HEAD)

Tipos de pull

Squash

Merge commit

Rebase y merge ⋆⋆⋆⋆⋆

Resolviendo conflictos

git checkout --theirs file
# O
git checkout --ours file                                

Pull requests

"Haz un pull de este código que arregla algo

Oportunidad para revisar código

Tagging y releasing

Publicación frecuente de MVP

git tag -a v0.0.1 -m "First release"

Rama desde un tag

git checkout v0.0.1
git checkout -b branch-from-tag

Design thinking: pensar para diseñar (un producto)

Necesidades reales

Centrado en el cliente

Encaja con desarrollo ágil

① Empatizar

Primera fase del proceso

Problema: precios inadecuados para productores agroalimentarios

Empatía: personalizar los tipos de usuarios de una aplicación

Se resuelve un problema para alguien

¿Quién usará esta aplicación?

¿Tiene un portátil? ¿Una Nvidia GPU? ¿Está pagando en la nube?

Un algoritmo en la nube tienen clientes y usuarios

② Definir

¿Cuál es el problema exactamente?

Crear un proyecto desde cero es sencillo

Si uno sabe como

El diseño para el ahorro energético tiene que partir desde la base

Desarrollo ágil: énfasis en la calidad

Principios SOLID

Single Responsibility Principle: SRP

Open/closed

Liskov substitution principle

Interface segregation

Dependency inversion

Una responsabilidad por función

Ayuda en el profiling...

... y en la optimización energética

Código limpio: las funciones deben ser pequeñas

Al mismo nivel de abstracción

Mantenlo simple: KISS