Desarrollo
de software verde
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