SlideShare una empresa de Scribd logo
PreparaTIC
Micael Gallego
Correo: micael.gallego@urjc.es
Twitter: @micael_gallego
02-2021
¿Cómo poner software de
calidad en manos de los
usuarios de forma rápida?
¿Quién soy?
@micael_gallego micael.gallego@urjc.es @micaelgallego
Micael Gallego
Profesor Universitario, Formador y Consultor
Desarrollador software
http://codeurjc.es https://www.codeurjc.es/mastercloudapps/
Desarrollo y Despliegue de
Aplicaciones en la Nube
Laboratorio de
Software
Cloud Computing
Distributed Systems
WebTechnologies
Extreme Programming
AutomatedTesting
CI / CD
Consultoría y
Formación
Plataforma de
Videoconferencia
http://openvidu.io
Ciclo de vida del software
1
¿Cómo poner software de calidad en
manos de los usuarios de forma rápida?
2 DevOps y despliegue continuo
Ciclo de
vida del
software
1
¿Cómo poner software de calidad en
manos de los usuarios de forma rápida?
¿Cuál es el ciclo de vida
del software?
Ciclo de vida del software
Software listo para ser
desplegado (puesto a
disposición de los usuarios)
Control
de
Calidad
Ciclo de vida del software
Software listo para ser
desplegado (puesto a
disposición de los usuarios)
Control
de
Calidad
Repositorio de
Código
Repositorio de código
● El software se suele desarrollar en
equipos de desarrolladores
● Los desarrolladores tienen que compartir
el código que van desarrollando con los
demás
● El código de cada desarrollador se
integra para crear la app
● Para ello usan los repositorios de código
Repositorio de código
● Similares a sistemas como Dropbox, pero con
funcionalidades específicas para desarrollo
software
Repositorio de código
● Los sistemas de control de versiones
(VCS) (Version control system) son
herramientas para desarrollo colaborativo
● Otros nombres:
● Gestor de código fuente (SCM) (Source
Code Manager)
● Repositorios de código (Code repository)
Tipos de repositorio de código
Repositorios git
● Zonas de trabajo
independientes
(ramas, branches)
● Funcionalidades,
experimentos,
bug fixes...
Servidores para repositorios git
GitHub
● GitHub es un servicio para desarrolladores que
proporciona repositorios git en sus servidores
● Gratuito para repositorios públicos con software libre
● Comercial para otros servicios
● Funcionalidades adicionales:
● Historias de usuario, Bug reports, wiki, releases...
GitHub
GitHub
Comentarios
asociados a
cambios en el
código
(code review)
Ciclo de vida del software
Software listo para ser
desplegado (puesto a
disposición de los usuarios)
Control
de
Calidad
Servidor de
Integración Continua
Servidor de Integración Continua
● Un servidor que monitoriza el repositorio de
código para detectar cuando un desarrollador
publica un cambio en el código
● Cada vez que hay un cambio en el código, el
servidor de integración continua hace un
control de calidad del mismo
● El control de calidad pasa por diferentes
etapas
Pruebas de Software (Tests)
Servidor de Integración Continua
Realimentación
Construcción
(Build)
Descarga de
dependencias,
compilación,
empaquetado
Tests
Unitarios
Análisis
de
código
fuente
Tests
de
Integración
Software pipeline
Servidor de Integración Continua
Realimentación
Servidor de Integración Continua
Realimentación
Servidor de Integración Continua
Jenkins
Jenkins
Jenkins
Pruebas de Software (Tests)
Servidor de Integración Continua
Realimentación
Construcción
(Build)
Descarga de
dependencias,
compilación,
empaquetado
Tests
Unitarios
Análisis
de
código
fuente
Tests
de
Integración
Análisis de código
fuente
Análisis de código fuente
● La calidad del código es un indicador sobre
cómo de rápido los desarrolladores pueden
añadir valor a un sistema software
● El análisis estático del código (SCA) consiste
en realizar un análisis de un programa sin
ejecutarlo
● En la mayoría de los casos el análisis se realiza
sobre código fuente, aunque puede hacerse
sobre el bytecode o binario
¿Por qué medir la calidad del código?
● El código fuente es el corazón de un sistema
software
● Desarrolladores (casi nunca) escriben nuevo
software, siempre mantienen código heredado
● Un software (casi) nunca se termina
● Lo que no se mide, no se puede mejorar
● Hay que tener en cuenta la teoría de las
ventanas rotas
Deuda técnica
● El ahorro inicial en calidad, pasará factura
a medio plazo en forma de dificultad para
añadir más funcionalidad
● Si la deuda crece lo suficiente, el equipo
empleará más tiempo en “pagar la deuda”
del que invierta en incrementar el valor
Deuda técnica
Lo que le
puede pasar
a tu código si
su deuda
técnica crece
y crece...
Deuda técnica
Lo que le
puede pasar
a tu código si
su deuda
técnica crece
y crece...
¿Qué determina la calidad del código?
● Bugs y bugs potenciales
● Violación de los estándares de código
● Código duplicado
● Falta de (suficientes) tests
● Mala distribución de la complejidad
● Diseño espagueti (complejidad ciclomática,
referencias circulares...)
● Pocos o muchos componentes...
Herramientas y plugins
http://checkstyle.sourceforge.net/
http://pmd.github.io/ http://findbugs.sourceforge.net/
https://www.sonarsource.com/
Sonarqube
● Reglas
● Reglas de formato o estilo de código
● Buenas prácticas en el uso de funcionalidades
del lenguaje o librerías
● Detección de malos olores en el código
● Vulnerabilidades de seguridad
● Detección de mal funcionamiento con análisis
formal
Sonarqube
●Sonar es un lugar centralizado para
gestionar la calidad del código
●Ofrece informes visuales de los
proyectos
●Permite analizar la evolución de las
métricas a lo largo del tiempo
Sonarqube
● Métricas: Issues (Malos olores)
● Posibles bugs
● Posibles problemas de seguridad
● Violaciones de las reglas de estilo
● Números mágicos en el código
Sonarqube
● Métricas: Issues (Malos olores)
Pruebas de Software
Pruebas de Software (Tests)
Servidor de Integración Continua
Realimentación
Construcción
(Build)
Descarga de
dependencias,
compilación,
empaquetado
Tests
Unitarios
Análisis
de
código
fuente
Tests
de
Integración
Pruebas de Software (Tests)
● Escribir software libre de defectos, es sumamente
difícil
● No existen métodos formales que se puedan
aplicar a software real para demostrar que no
existen defectos
● Una de las mejores formas que tienen
los desarrolladores softwares de tener
un grado razonable de certeza de que
el software desarrollado se comporta
como se espera es probar su
funcionamiento en ciertas
circunstancias
● A estas ejecuciones o ensayos de
funcionamiento se las denomina
"pruebas" o "tests"
Pruebas de Software (Tests)
● Al ejercutar un caso de prueba (de forma
manual o automática) pueden ocurrir dos
cosas:
● Que la prueba sea un éxito (SUCCESS): El
sistema se comporta de la forma esperada.
Cumple con los requisitos. En esa prueba no
se observa ningún defecto. (VERDE)
● Que la prueba falle (FAIL): El sistema no se
comporta de la forma esperada. No cumple
con los requisitos. La prueba ha puesto de
manifiesto un defecto o bug en el SUT. (ROJO)
Pruebas de Software (Tests)
● Existen muchos tipos de pruebas
● Las pruebas se pueden clasificar
atendiendo a diferentes criterios (tamaño,
quién las crea, qué prueban…)
● Tests funcionales vs no funcionales
● Tests unitarios vs Tests integración vs Tests
de sistema
Pruebas de Software (Tests)
Pruebas unitarias
● Son aquellas pruebas que verifican el
comportamiento de las partes internas del
código
● Se ejecutan muy rápidamente porque no
acceden al disco ni se conectan a otros
sistemas
● Son ejecutadas por el desarrollador de forma
habitual mientras desarrolla
● Son las que se desarrollan cuando se aplica el
Test Driven Development (TDD)
Pruebas de integración
● Son aquellas pruebas que verifican cómo los
módulos del software se integran entre sí
(Bases de datos, envío de correos...)
● Tardan más en ejecutarse porque se conectan
con otros sistemas mediante protocolos de red
● Necesitan más recursos para ejecutarse, el
desarrollador no las ejecuta frecuentemente
(suelen impedir el trabajo con el ordenador
durante la ejecución)
Pruebas de sistema (e2e)
● Prueban el sistema completo, simulando las
interacciones de un usuario usando la interfaz de
usuario (UI)
● Pueden ser funcionales o no funcionales
● Son las que más tardan más en ejecutarse porque
involucran todos los elementos de la aplicación
● Simular las interacciones del usuario de forma
automática es un proceso mucho más costoso
que implementar las pruebas unitarias y de
integración
Pirámide del testing
https://martinfowler.com/articles/practical-test-pyramid.html
Pruebas de Software (Tests)
Servidor de Integración Continua
Realimentación
Construcción
(Build)
Descarga de
dependencias,
compilación,
empaquetado
Tests
Unitarios
Análisis
de
código
fuente
Tests
de
Integración
Servidor de Integración Continua
Realimentación
Construcción
(Build)
Descarga de
dependencias,
compilación,
empaquetado
Análisis
de
código
fuente
Test
Unitarios
Tests
de
Integración
Repositorio
artefactos
Package Deploy
Tests
sistema
e2e
Entorno
dev
Pruebas de Software (Tests)
Servidor de Integración Continua
Realimentación
Construcción
(Build)
Descarga de
dependencias,
compilación,
empaquetado
Análisis
de
código
fuente
Test
Unitarios
Tests
de
Integración
Repositorio
artefactos
Package Deploy
Tests
sistema
e2e
Entorno
dev
Pruebas de Software (Tests)
Repositorio
de artefactos y
entornos
● Cuando el software pasa
algunos controles de calidad,
se empaqueta en un
artefacto
● El formato del artefacto
depende de la tecnología
utilizada (.zip, .exe, carpeta...)
● Usando el artefacto, el
software se puede desplegar
en cualquier entorno
Repositorio de artefactos y entornos
● Los repositorios de
artefactos alojan los
artefactos generados en
el pipeline de CI
● Existen repositorios
específicos (para una
tecnología concreta) o
genéricos (para múltiples
formatos)
Repositorio de artefactos y entornos
Repositorio de artefactos y entornos
● Un entorno (environment) es un despliegue de
una aplicación (generalmente web)
● Cuando se empaqueta una aplicación web, se
despliega en un entorno llamado “dev”
● “dev” es interno, no está disponible para los
usuarios
● Ese entorno se usa para realizar los tests de
sistema (e2e) o para que los desarrolladores
realicen pruebas manuales
Repositorio de artefactos y entornos
Entornos más habituales
Repositorio de artefactos y entornos
Repositorio de artefactos y entornos
Entornos más habituales
User AceptanceTests
(Pruebas de usuarios reales)
● Entorno de desarrollo DEV:
● Se usa para tests de sistema y para ser
manipulado por los desarrolladores.
● Se pueden tener tantos entornos dev como
sean necesarios
● Se actualizan en cada cambio del código o a
petición del desarrollador
Repositorio de artefactos y entornos
● Entorno de Quality Assurance QA:
● Se usa para pruebas manuales por el equipo
de QA (si existe)
● Se suele tener un único entorno QA
● Se actualiza cuando el código está estable
como para ser probado manualmente
Repositorio de artefactos y entornos
● Entorno de User Acceptance Test (UAT):
● En contextos en los que es posible, es un entorno
usado por un grupo de usuarios para validar el
software
● Se suele tener un único entorno UAT
● Se actualiza con el código estable y listo para
producción
● Se le suele llamar versión BETA, Preview...
Repositorio de artefactos y entornos
● Entorno de Staging:
● En ciertos contextos existe un entorno en el que se
realizan pruebas no funcionales llamado staging
● Es el entorno más parecido al de producción, pero sin
usuarios reales
● Se actualiza con el código estable y listo para
producción
● También se le llama PRE o PRE-Producción
Repositorio de artefactos y entornos
STAGING
● Entorno de Producción:
● El software está publicado a los usuarios
● Se actualiza en cada release
● Generalmente se tiene que parar el servicio
(downtime), pero nuevas técnicas permiten
actualizar el software sin que sea necesario
Repositorio de artefactos y entornos
Conclusiones
Conclusiones
● Los repositorios de código permiten compartir el
código entre los desarrolladores
● Los servidores de integración continua verifican la
calidad del código cada vez que se publica un
cambio en el repositorio
● Si los controles pasan, el código se publica en un
repositorio de artefactos y se despliega en
diferentes entornos para ser sometido a más
pruebas
● Finalmente, se publica en el entorno de
producción
DevOps y
Despliegue
Continuo
2
¿Cómo poner software de calidad en
manos de los usuarios de forma rápida?
¿Quién participa en la
creación y puesta a
disposición de los usuarios
del software?
Biz Dev QA Ops
Developer
Desarrollador software, programador, analista,
arquitecto
Operaciones
Administrador de sistemas, sysadmin, admin, DBA
Negocio / UX / QA / Diseño
Todos los demás
¿Cómo colaboran entre sí?
https://msdnshared.blob.core.windows.net/media/2016/06/image846.png
https://msdnshared.blob.core.windows.net/media/2016/06/image846.png
https://medium.com/@yevgeniy.zhitomirskiy/what-is-devops-9a1acc0c2a28
http://www.wirfs-brock.com/PDFs/QA2AQThree.pdf
https://blog.rocketsoftware.com/2015/05/silo-madness-put-end-silos-devops-alm/#.XOhnd3UzbRY
Desarrollo en cascada
https://medium.com/@davidjbland/the-state-of-waterfall-9e06a64665aa
Metodologías ágiles
https://medium.com/@davidjbland/the-state-of-waterfall-9e06a64665aa
Sprints de 2 semanas
Feedback constante
Metodologías ágiles
https://medium.com/@davidjbland/the-state-of-waterfall-9e06a64665aa
Sprints de 2 semanas
Feedback constante
?
Ciclos de publicación (release)
● Se publica una nueva versión a los usuarios
cada varios meses (4, 6, 12...)
● Hay que dejar de parar el servicio para
hacerlo
● Se hace por la noche para reducir el impacto
en negocio (pero puede durar varios días)
● Suele haber problemas, suele ser un evento
estresante
https://medium.com/signal-sciences-labs/more-silo-smashing-ideas-bringing-infosec-and-devops-together-c338eb3b36ad
https://www.accenture.com/us-en/blogs/blogs-reshma-shinde-devops-transformations-operations
https://www.accenture.com/us-en/blogs/blogs-reshma-shinde-devops-transformations-operations
¿Qué es DevOps?
"DevOps es un conjunto de prácticas
que tienen como objetivo reducir el
tiempo desde que se añade una
funcionalidad (o se soluciona un
problema) en un producto software
y este cambio llega a producción,
siempre asegurando la calidad”
Len Bass, Ingo Weber, and Liming Zhu
DevOps: A Software Architect's Perspective. 2015
"DevOps es una cultura, movimiento
o práctica que enfatiza la
colaboración y comunicación de los
desarrolladores software y otros
profesionales de las tecnologías de
la información mientras automatiza
el proceso de la entrega de software
y los cambios en la infraestructura”
https://www.youtube.com/watch?v=HnWuIjUw_Q8
DevOps
https://www.accenture.com/us-en/blogs/blogs-reshma-shinde-devops-transformations-operations
DevOps
https://www.telehouse.com/2016/03/devops-how-a-culture-of-empathy-creates-massive-productivity/
Damon Edwards y John Philips
a principios de los 2000s como
una forma de definir la cultura
de la empatía
Principios DevOps
https://www.telehouse.com/2016/03/devops-how-a-culture-of-empathy-creates-massive-productivity/
● Culture > Gente, procesos, herramientas
● Automation > Scripts, infraestructura como
código, contenedores
● Measurement > Mide todo
● Sharing > Colaboración, realimentación
Principios DevOps
https://medium.com/@neonrocket/devops-is-a-culture-not-a-role-be1bed149b0
Continuamente
Prácticas DevOps
https://devops.com/eight-critical-devops-practices-innovate-deliver-repeat/
https://www.linkedin.com/pulse/9-critical-steps-devops-transformation-enterprises-sakthi-vadivelu/
Integración continua,
entrega continua y
despliegue continuo
https://www.youtube.com/watch?v=HnWuIjUw_Q8
Integración Continua
Continuous Integration
https://www.youtube.com/watch?v=HnWuIjUw_Q8
Entrega Continua
Continuous Delivery
Software listo para ser
desplegado (puesto a
disposición de los usuarios)
Entornos donde se
publica el software para
que esté accesible para
los desarrolladores, las
pruebas automáticas,
las manuales...
Entrega Continua
Continuous Delivery
Entornos donde se
publica el software para
que esté accesible para
los desarrolladores, las
pruebas automáticas,
las manuales...
Despliegue Continuo
Continuous Deployment
CI / CD
¿Funciona?
DevOps Report 2016
https://puppet.com/resources/whitepaper/2016-state-of-devops-report
Saber más...
https://es.slideshare.net/jallspaw/1
0-deploys-per-day-dev-and-ops-co
operation-at-flickr
10+ Deploys Per
Day: Dev and Ops
Cooperation at
Flickr
https://conferences.oreilly.com/v
elocity/velocity2009/public/sched
ule/detail/7641
2014 2016
2009 2010
¿Cómo se implementa el
Despliegue Continuo?
http://www.eferro.net/2018/01/code-continious-delivery-germinando-una.html
Eduardo Ferro Aldama
https://youtu.be/hbggtXmQcf8
Gestión del riesgo / Adaptabilidad
De la idea a producción
http://www.eferro.net/2018/01/code-continious-delivery-germinando-una.html
“Rolling release, rolling update, in software
development, is the concept of frequently
delivering updates to applications.This is in
contrast to a standard or point release
development model which uses software versions
that must be reinstalled over the previous version”.
https://en.wikipedia.org/wiki/Rolling_release
Reducción del tiempo / aumento
frecuencia
¿Qué se necesita?
Sistema de despliegue
fiable y rápido
¿Qué se necesita?
● De commit a producción < 15m
● Despliegue 100% fiable
● Despliegue sin pérdida de
servicio (Zero downtime)
¿Qué se necesita?
Recuperarnos rápido
(en caso de fallo)
¿Qué se necesita?
Confiar en el software que
vamos a desplegar
en cualquier momento
¿Qué se necesita?
● Integración continua
● Tests automáticos (TDD)
● Código de calidad (Clean code)
Integración Continua
● Integrar lo que hace cada desarrollador
al menos 1 vez al día
● Cada contribución (commit) se construye
y verifica (tests)
● Trunk based vs Feature branches
Integración Continua
● Rama por funcionalidad (Feature branches)
Integración Continua
● Trabajar en trunk / máster > Integración continua
Integración Continua
● ¿Qué hacemos con las funcionalides “sin
terminar”?
https://martinfowler.com/articles/feature-toggles.html
Feature toggles
(Selector de funciones)
Feature toggle
https://launchdarkly.com/blog/beta-testing-using-feature-flags/
Tests Automáticos
● Confiar en que el
código “funciona”
siempre
● Podemos desplegar en
cualquier momento
● Test Driven
Development
https://josemyduarte.github.io/2018-12-09-tdd-outside-in/
Código de calidad
● Que pueda evolucionar
a lo largo del tiempo de
forma sostenible
● Sin complejidad
innecesaria
● Para que se puedan
hacer tests
automáticos
¿Qué se necesita?
Diferenciar entre
despliegue y release
Despliegue Release
Despliegue Release
● Subir el software a las máquinas
● Verificaciones técnicas (sin
usuarios)
● No afecta al servicio
Despliegue Release
● Subir el software a las máquinas
● Verificaciones técnicas (sin
usuarios)
● No afecta al servicio
● Las nuevas funcionalidades se
activan
● Los usuario empiezan a usarlas
Blue/Green
Deployment
Blue / Green Deployment
La “build” (paquete) sale de CI y está lista para desplegarse
Se despliega en el entorno de producción junto con la
versión anterior (pero sin publicarse a los usuarios)
Blue / Green Deployment
Se publica a los usuarios y se recibe feedback
Blue / Green Deployment
Si se detectan problemas, se puede volver a la versión
anterior rápidamente
Blue / Green Deployment
● Cuando hacemos release de una
nueva versión llega a todos los
usuarios
● Las nuevas funcionalidades de la
release pueden fallar o necesitar
refinamiento
● Necesitamos feedback de los
usuarios cuanto antes
Blue / Green Deployment
¿Podemos hacer que sólo se active la
release para algunos usuarios?
● Se reduce el impacto en caso de
problemas
● Se recibe feedback de un grupo reducido
de usuarios
● Se mejora la funcionalidad y se publica a
los demás
● Los usuarios “reales” también prueban
Pruebas en producción
(Testing in production)
● Pruebas por usuarios reales
● En entorno real (de producción)
● Sin afectar a todos los demás
Pruebas en producción
Testing in production
Alex Soto
Red Hat Engineer
@alexsotob
Producción ha dejado de
ser un entorno sagrado
La nueva pirámide? del testing
Dark Launches
Dark Launches
La nueva versión se despliega primero a usuarios internos
Dogfooding
https://appinstitute.com/dogfooding-in-business/
https://deviq.com/dogfooding/
Come tu propia
comida de perro
Canary Release
Canary Release
La nueva release (build) está lista para ser desplegada
Canary Release
Se despliega en el entorno de producción, sin usuarios
Canary Release
Sólo algunos usuarios empiezan a usar la nueva release
Canary Release
Su número crece en función del feedback recibido
Canary Release
El número es cada vez mayor
Canary Release
Finalmente no quedan usuarios usando la versión anterior
Herramientas y servicios para
implementar DevOps
Herramientas
Herramientas
http://www.netforthtech.com/blogs/best-10-devops-tools-for-every-software-development-company/
Conclusiones
● DevOps es una cultura en la que
desarrolladores y administradores
colaboran estrechamente y tienen los
mismos objetivos
● Desplegar frecuentemente permite
responder antes a las necesidades
de los usuarios y reduce los errores
y caídas del servicio
Conclusiones
Conclusiones
● Desarrollo con ciclos cortos, con realimentación para
poder adaptarse y conocer
● El software tiene que llegar a los usuarios reales, a
producción
● Hay que eliminar los silos y fomentar la colaboración
● El código debe estar preparado para desplegarse en
cualquier momento (Integración continua)
● El despliegue tiene que ser rápido, fiable y sin detener
el servicio (Despliegue continuo)

Más contenido relacionado

La actualidad más candente

Monitoring and Control System
Monitoring and Control SystemMonitoring and Control System
Monitoring and Control System
mahmoud anwar
 
Instrumentation
InstrumentationInstrumentation
Instrumentation
Maria Romina Angustia
 
Security Incident Log Review Checklist by Dr Anton Chuvakin and Lenny Zeltser
Security Incident Log Review Checklist by Dr Anton Chuvakin and Lenny ZeltserSecurity Incident Log Review Checklist by Dr Anton Chuvakin and Lenny Zeltser
Security Incident Log Review Checklist by Dr Anton Chuvakin and Lenny Zeltser
Anton Chuvakin
 
Auctioneering control system
Auctioneering control systemAuctioneering control system
Auctioneering control system
Ashvani Shukla
 
Managing People In Software Environment.pptx
Managing People In Software Environment.pptxManaging People In Software Environment.pptx
Managing People In Software Environment.pptx
72Anjumaara
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - Basics
Purvik Rana
 
Introduction to Vim
Introduction to VimIntroduction to Vim
Introduction to Vim
Brandon Liu
 
Pid control by Adarsh singh
Pid control  by Adarsh singhPid control  by Adarsh singh
Pid control by Adarsh singh
Adarsh Singh
 

La actualidad más candente (8)

Monitoring and Control System
Monitoring and Control SystemMonitoring and Control System
Monitoring and Control System
 
Instrumentation
InstrumentationInstrumentation
Instrumentation
 
Security Incident Log Review Checklist by Dr Anton Chuvakin and Lenny Zeltser
Security Incident Log Review Checklist by Dr Anton Chuvakin and Lenny ZeltserSecurity Incident Log Review Checklist by Dr Anton Chuvakin and Lenny Zeltser
Security Incident Log Review Checklist by Dr Anton Chuvakin and Lenny Zeltser
 
Auctioneering control system
Auctioneering control systemAuctioneering control system
Auctioneering control system
 
Managing People In Software Environment.pptx
Managing People In Software Environment.pptxManaging People In Software Environment.pptx
Managing People In Software Environment.pptx
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - Basics
 
Introduction to Vim
Introduction to VimIntroduction to Vim
Introduction to Vim
 
Pid control by Adarsh singh
Pid control  by Adarsh singhPid control  by Adarsh singh
Pid control by Adarsh singh
 

Similar a ¿Cómo poner software de calidad en manos del usuario de forma rápida?

Calidad de software y TDD
Calidad de software y TDDCalidad de software y TDD
Calidad de software y TDD
Jose Luis Bugarin Peche
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
.. ..
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de software
Miguel Sanchez
 
Calidad de software
Calidad de softwareCalidad de software
Calidad de software
Software Guru
 
Curso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdfCurso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdf
BarcodeBarcode
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
Edison Morales
 
Técnicas de programación
Técnicas de programaciónTécnicas de programación
Técnicas de programación
Alvaro Enrique Ruano
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
will2294
 
Is clase 13_metodos_y_procesos
Is clase 13_metodos_y_procesosIs clase 13_metodos_y_procesos
Is clase 13_metodos_y_procesos
Ale Mejia
 
métodos y procesos
métodos y procesosmétodos y procesos
métodos y procesos
Edward Andres Aponte Rodrigurez
 
Tarea 2 de fundamentos del computador
Tarea 2 de fundamentos del computadorTarea 2 de fundamentos del computador
Tarea 2 de fundamentos del computador
Diogenes Gomez Santana
 
Fundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del softwareFundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del softwareWilliam Remolina
 
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe... Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
Federico Toledo
 
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Abstracta
 
16 Cast Software Solo Pruebas 2009
16 Cast Software Solo Pruebas 200916 Cast Software Solo Pruebas 2009
16 Cast Software Solo Pruebas 2009
Pepe
 
RA.1.pdf
RA.1.pdfRA.1.pdf
Las mejores herramientas para realizar pruebas de software
Las mejores herramientas para realizar pruebas de softwareLas mejores herramientas para realizar pruebas de software
Las mejores herramientas para realizar pruebas de software
Universidad Militar Nueva Granada-Universidad de Cundinamarca
 
prueva
pruevaprueva
prueva
1081913395
 
Ra.1..
Ra.1..Ra.1..
Entregables de pruebas
Entregables de pruebasEntregables de pruebas
Entregables de pruebas
Jesús E. CuRias
 

Similar a ¿Cómo poner software de calidad en manos del usuario de forma rápida? (20)

Calidad de software y TDD
Calidad de software y TDDCalidad de software y TDD
Calidad de software y TDD
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de software
 
Calidad de software
Calidad de softwareCalidad de software
Calidad de software
 
Curso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdfCurso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdf
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Técnicas de programación
Técnicas de programaciónTécnicas de programación
Técnicas de programación
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
Is clase 13_metodos_y_procesos
Is clase 13_metodos_y_procesosIs clase 13_metodos_y_procesos
Is clase 13_metodos_y_procesos
 
métodos y procesos
métodos y procesosmétodos y procesos
métodos y procesos
 
Tarea 2 de fundamentos del computador
Tarea 2 de fundamentos del computadorTarea 2 de fundamentos del computador
Tarea 2 de fundamentos del computador
 
Fundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del softwareFundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del software
 
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe... Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
 
16 Cast Software Solo Pruebas 2009
16 Cast Software Solo Pruebas 200916 Cast Software Solo Pruebas 2009
16 Cast Software Solo Pruebas 2009
 
RA.1.pdf
RA.1.pdfRA.1.pdf
RA.1.pdf
 
Las mejores herramientas para realizar pruebas de software
Las mejores herramientas para realizar pruebas de softwareLas mejores herramientas para realizar pruebas de software
Las mejores herramientas para realizar pruebas de software
 
prueva
pruevaprueva
prueva
 
Ra.1..
Ra.1..Ra.1..
Ra.1..
 
Entregables de pruebas
Entregables de pruebasEntregables de pruebas
Entregables de pruebas
 

Más de Micael Gallego

Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferencias
Micael Gallego
 
La evaluación con realimentación y posibilidad de recuperación para evitar el...
La evaluación con realimentación y posibilidad de recuperación para evitar el...La evaluación con realimentación y posibilidad de recuperación para evitar el...
La evaluación con realimentación y posibilidad de recuperación para evitar el...
Micael Gallego
 
WebRTC en tu web con OpenVidu
WebRTC en tu web con OpenViduWebRTC en tu web con OpenVidu
WebRTC en tu web con OpenVidu
Micael Gallego
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
Micael Gallego
 
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Micael Gallego
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Micael Gallego
 
Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019
Micael Gallego
 
Testing cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestTesting cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTest
Micael Gallego
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJC
Micael Gallego
 
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Micael Gallego
 
OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 OpenVidu Commitconf 2018
OpenVidu Commitconf 2018
Micael Gallego
 
Introducción a las Pruebas Software
Introducción a las Pruebas SoftwareIntroducción a las Pruebas Software
Introducción a las Pruebas Software
Micael Gallego
 
Node para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigoNode para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigo
Micael Gallego
 
Testing fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornosTesting fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornos
Micael Gallego
 
Using Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and JenkinsUsing Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and Jenkins
Micael Gallego
 
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Micael Gallego
 
Como ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicacionesComo ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicaciones
Micael Gallego
 
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
TypeScript: Un lenguaje aburrido para programadores torpes y tristesTypeScript: Un lenguaje aburrido para programadores torpes y tristes
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
Micael Gallego
 
Docker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJCDocker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJC
Micael Gallego
 
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
Micael Gallego
 

Más de Micael Gallego (20)

Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferencias
 
La evaluación con realimentación y posibilidad de recuperación para evitar el...
La evaluación con realimentación y posibilidad de recuperación para evitar el...La evaluación con realimentación y posibilidad de recuperación para evitar el...
La evaluación con realimentación y posibilidad de recuperación para evitar el...
 
WebRTC en tu web con OpenVidu
WebRTC en tu web con OpenViduWebRTC en tu web con OpenVidu
WebRTC en tu web con OpenVidu
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
 
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
 
Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019
 
Testing cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestTesting cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTest
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJC
 
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
 
OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 OpenVidu Commitconf 2018
OpenVidu Commitconf 2018
 
Introducción a las Pruebas Software
Introducción a las Pruebas SoftwareIntroducción a las Pruebas Software
Introducción a las Pruebas Software
 
Node para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigoNode para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigo
 
Testing fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornosTesting fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornos
 
Using Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and JenkinsUsing Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and Jenkins
 
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
 
Como ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicacionesComo ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicaciones
 
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
TypeScript: Un lenguaje aburrido para programadores torpes y tristesTypeScript: Un lenguaje aburrido para programadores torpes y tristes
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
 
Docker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJCDocker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJC
 
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
 

Último

PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
AbbieDominguezGirond
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 

Último (6)

PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 

¿Cómo poner software de calidad en manos del usuario de forma rápida?