SlideShare uma empresa Scribd logo
1 de 22
Revisión de Código Fuente de
Manera Ágil
Jose Luis Bugarin
CEO ILUMINATIC SAC
jbugarin@iluminatic.com
@jlbugarin
consultorjava.com – iluminatic.com
¿Por qué Debemos cuidar la
calidad de nuestro código?
Pensemos…
• "Los programas deben ser escritos para que la
gente lea, y sólo las máquinas puedan
ejecutarlos “
Abel & Sussman
Cambios en Los Requerimientos
Costo de un Defecto
Defectos en nuestro software
Algunos números referenciales
• Encontrar, la solución de problemas en la producción
es 100 veces más
caro que durante la fase de diseño / requisitos
•
• 40-50% del trabajo de proyecto típico es "reescribir"
• 80% de retrabajo proviene del 20% de los defectos
• 80% de los defectos provienen del 20% de los
módulos
• 90% del tiempo de inactividad viene de 10% de los
defectos
• Las revisiones cruzadas atrapan 60% de los defectos
• Las prácticas personales disciplinado puede reducir
los defectos hasta en un 75%
Pero…
• La evidencia es abrumadora, pero ..
• Nos parece que nunca tenemos tiempo para
hacerlo, pero siempre parece que
encontramos tiempo para "rehacer“
“reescribir” “comenzar desde cero”
¿Qué onda con el QA?
• QA puede o no puede cuidar la calidad de Nuestro
software? ¿Por qué los desarrolladores deben
cuidar su código?
> Porque QA debe o no debe preocuparse por la
calidad del diseño y la implementación.
> En su lugar, deben preocuparse por "testeos
funcionales,aceptación, rendimiento, facilidad de
uso, etc.”
> Tu desarrollador entrega un software de mejor
calidad por lo que QA realmente puede centrarse
en
"Testeos de funcionalidad"
Deuda Tecnica
• "La deuda técnica" son actividades (como la
refactorización, la actualización de una
librería, codificación estándar, ..) que usted ha
dejado de realizar.
¿Cómo mejorar la calidad de
nuestro software?
Maneras de mejorar nuestro software
• Comience temprano.
• Programe tiempo para bajar su deuda
técnica.
• Hacer que funcione (de inmediato).
• Requiere vigilancia y el cambio de actitud.
• Estar dispuesto a ayudar y ser ayudado.
Esfuerzo Individual
• Preocuparse uno mismo por la calidad de su
código.
• > Buenas nombres de las variables, métodos,
Método corto, clases más pequeñas,
• Debe ser sencillo.
• Escribir las pruebas con alta cobertura.
• Ejecutar todas las pruebas necesarias.
• Compruebe con frecuencia.
• Pida retroalimentación.
Esfuerzos de Equipo
• Evitar los atajos.
• Hable propiedad colectiva - equipo debe
poseer el código.
• Promover la interacción positiva.
• Proporcionar retroalimentación constructiva.
• revisión de código constante.
Tratar Advertencias (Warning) como
errores
• “Es solo una advertencia”
• Estas advertencias pueden tener “cosas”
ocultas
• Si es inevitable, suprimir selectivamente
Verificación de Código
Cobertura de Código
• ¿Qué cantidad (%) de su código está cubierto por la
prueba?
• Las herramientas de cobertura de código pueden decir
cuáles y cuánto código
está cubierto
> Clover
> Cobertura
> JaCoCo
• Algunas herramientas de código de eliminación que
no tienen ninguna prueba de
> Guantánamo
> Ashcroft
Duplicado de Código
• Código duplicado es caro de mantener
> Código duplicado es común
• Herramientas que permiten detectar la
duplicación de código
> PMD
Análisis de Código
• Análisis de código para encontrar errores
> Los errores lógicos
> Codificación, violaciones
> Problemas de sincronización y mas
• Herramientas
> PMD
> FindBugs
> Jlint
Principios para Generación de Códigos
• Sencillez
• Claridad
• brevedad
• Humanidad
Comentarios en el Código
• Los comentarios deben decir "por qué" o el
"propósito" no "cómo"
• No comentar lo que hace el código - Soy
capaz de leer el código y entenderlo
• No conservar la documentación separada
del código
Herramientas Recomendadas
• PMD
• CHECKSTYLE
• FINDBUGS
• CODEPRO
• SONAR

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Inserción,borrado y búsqueda en Arboles Binarios(Java)
Inserción,borrado y búsqueda en Arboles Binarios(Java)Inserción,borrado y búsqueda en Arboles Binarios(Java)
Inserción,borrado y búsqueda en Arboles Binarios(Java)
 
INTRODUCCION A LA POO
INTRODUCCION A LA POOINTRODUCCION A LA POO
INTRODUCCION A LA POO
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
Manejo de cadenas de caracteres java
Manejo de cadenas de caracteres javaManejo de cadenas de caracteres java
Manejo de cadenas de caracteres java
 
Uml a java
Uml a javaUml a java
Uml a java
 
Jtextarea
JtextareaJtextarea
Jtextarea
 
Modelo Entidad Relación Extendido.
Modelo Entidad Relación Extendido.Modelo Entidad Relación Extendido.
Modelo Entidad Relación Extendido.
 
flip flop.pdf
flip flop.pdfflip flop.pdf
flip flop.pdf
 
Practica 1
Practica 1Practica 1
Practica 1
 
Familia lógica
Familia lógicaFamilia lógica
Familia lógica
 
Diagramas de paquetes
Diagramas de paquetesDiagramas de paquetes
Diagramas de paquetes
 
Metodos de Ordenamiento Parte 1
Metodos de Ordenamiento Parte 1Metodos de Ordenamiento Parte 1
Metodos de Ordenamiento Parte 1
 
Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacion
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean Architecture
 
MYSQL
MYSQLMYSQL
MYSQL
 
Python Pilas y Colas
Python Pilas y ColasPython Pilas y Colas
Python Pilas y Colas
 
Teoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaTeoría De La Complejidad Algoritmica
Teoría De La Complejidad Algoritmica
 
Máquinas de Estado
Máquinas de EstadoMáquinas de Estado
Máquinas de Estado
 
Circuito integrado 7486
Circuito integrado 7486Circuito integrado 7486
Circuito integrado 7486
 
Recursividad
RecursividadRecursividad
Recursividad
 

Destaque

Diagrama de flujo de datos dfd
Diagrama de flujo de datos dfdDiagrama de flujo de datos dfd
Diagrama de flujo de datos dfdJesús Riera
 
Plan de gestion de configuración de software
Plan de gestion de configuración de softwarePlan de gestion de configuración de software
Plan de gestion de configuración de softwareilianacon
 
Metricas de Codigo Fuente y Metricas de Prueba
Metricas de Codigo Fuente y Metricas de PruebaMetricas de Codigo Fuente y Metricas de Prueba
Metricas de Codigo Fuente y Metricas de PruebaKevin Castillo
 
Validacion Y Verificacion
Validacion Y VerificacionValidacion Y Verificacion
Validacion Y VerificacionFARIDROJAS
 
Gestion de la configuracion del software
Gestion de la configuracion del softwareGestion de la configuracion del software
Gestion de la configuracion del softwareJohan Prevot R
 
Titulo en Ciencias de la Computación
Titulo en Ciencias de la Computación Titulo en Ciencias de la Computación
Titulo en Ciencias de la Computación Yaskelly Yedra
 
Categorización de usuarios de Twitter
Categorización de usuarios de TwitterCategorización de usuarios de Twitter
Categorización de usuarios de TwitterYaskelly Yedra
 
Inyección de dependencia
Inyección de dependenciaInyección de dependencia
Inyección de dependenciaAdrián Paredes
 

Destaque (19)

En 20 minutos ... Sonar Qube: cómo de bueno es el código de tu proyecto
En 20 minutos ... Sonar Qube: cómo de bueno es el código de tu proyectoEn 20 minutos ... Sonar Qube: cómo de bueno es el código de tu proyecto
En 20 minutos ... Sonar Qube: cómo de bueno es el código de tu proyecto
 
En 20 minutos ... Charla selenium
En 20 minutos ... Charla seleniumEn 20 minutos ... Charla selenium
En 20 minutos ... Charla selenium
 
En 20 minutos ... Arquitectura Oracle
En 20 minutos ... Arquitectura OracleEn 20 minutos ... Arquitectura Oracle
En 20 minutos ... Arquitectura Oracle
 
tecnicas de revisión del software
tecnicas de revisión del softwaretecnicas de revisión del software
tecnicas de revisión del software
 
Gestion De Calidad Cap 26
Gestion De Calidad Cap 26Gestion De Calidad Cap 26
Gestion De Calidad Cap 26
 
Diagrama de flujo de datos dfd
Diagrama de flujo de datos dfdDiagrama de flujo de datos dfd
Diagrama de flujo de datos dfd
 
Plan de gestion de configuración de software
Plan de gestion de configuración de softwarePlan de gestion de configuración de software
Plan de gestion de configuración de software
 
Metricas de Codigo Fuente y Metricas de Prueba
Metricas de Codigo Fuente y Metricas de PruebaMetricas de Codigo Fuente y Metricas de Prueba
Metricas de Codigo Fuente y Metricas de Prueba
 
Validacion Y Verificacion
Validacion Y VerificacionValidacion Y Verificacion
Validacion Y Verificacion
 
Gestion de la configuracion del software
Gestion de la configuracion del softwareGestion de la configuracion del software
Gestion de la configuracion del software
 
Verificación y Validación del Diseño
Verificación y Validación del DiseñoVerificación y Validación del Diseño
Verificación y Validación del Diseño
 
ejemplos de pruebas unitarias y de integracion
ejemplos de pruebas unitarias y de integracion ejemplos de pruebas unitarias y de integracion
ejemplos de pruebas unitarias y de integracion
 
Titulo en Ciencias de la Computación
Titulo en Ciencias de la Computación Titulo en Ciencias de la Computación
Titulo en Ciencias de la Computación
 
Elaboracion de algoritmos
Elaboracion de algoritmosElaboracion de algoritmos
Elaboracion de algoritmos
 
Categorización de usuarios de Twitter
Categorización de usuarios de TwitterCategorización de usuarios de Twitter
Categorización de usuarios de Twitter
 
Teoría del Diseño Web
Teoría del Diseño WebTeoría del Diseño Web
Teoría del Diseño Web
 
Solid
SolidSolid
Solid
 
Principios de diseño
Principios de diseñoPrincipios de diseño
Principios de diseño
 
Inyección de dependencia
Inyección de dependenciaInyección de dependencia
Inyección de dependencia
 

Semelhante a Revisión de código fuente de manera ágil

.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup
 
Módulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilMódulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilJohnny Ordóñez
 
Verificacion --validacion
Verificacion --validacionVerificacion --validacion
Verificacion --validacioneduardoao2
 
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...Abstracta
 
Trabajando con código heredado y ser feliz
Trabajando con código heredado y ser felizTrabajando con código heredado y ser feliz
Trabajando con código heredado y ser felizDiego Caballero
 
Tema 3 proseso de desarrollo del software
Tema 3 proseso de desarrollo del softwareTema 3 proseso de desarrollo del software
Tema 3 proseso de desarrollo del softwareLuis Garcia
 
Obfuscation & unpacking
Obfuscation & unpackingObfuscation & unpacking
Obfuscation & unpackingRicardoGomez94
 
Personal Software Process / Sesion 03
Personal Software Process / Sesion 03Personal Software Process / Sesion 03
Personal Software Process / Sesion 03andres hurtado
 
Mejores formas de aprender a programar
Mejores formas de aprender a programarMejores formas de aprender a programar
Mejores formas de aprender a programarEduardo Enriquez
 
Taller evento TestingUY 2016 - Metricas en Tiempo Real y Automatización Dinám...
Taller evento TestingUY 2016 - Metricas en Tiempo Real y Automatización Dinám...Taller evento TestingUY 2016 - Metricas en Tiempo Real y Automatización Dinám...
Taller evento TestingUY 2016 - Metricas en Tiempo Real y Automatización Dinám...TestingUy
 

Semelhante a Revisión de código fuente de manera ágil (20)

.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
 
Módulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilMódulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágil
 
El camino de Tester Agil.pdf
El camino de Tester Agil.pdfEl camino de Tester Agil.pdf
El camino de Tester Agil.pdf
 
Testing, tipos y otros flamewars
Testing, tipos y otros flamewarsTesting, tipos y otros flamewars
Testing, tipos y otros flamewars
 
Software
SoftwareSoftware
Software
 
Practicas técnicas
Practicas técnicasPracticas técnicas
Practicas técnicas
 
Verificacion --validacion
Verificacion --validacionVerificacion --validacion
Verificacion --validacion
 
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
 
Trabajando con código heredado y ser feliz
Trabajando con código heredado y ser felizTrabajando con código heredado y ser feliz
Trabajando con código heredado y ser feliz
 
Mantenimiento
MantenimientoMantenimiento
Mantenimiento
 
"Al rico" PHP
"Al rico" PHP"Al rico" PHP
"Al rico" PHP
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
 
Tema 3 proseso de desarrollo del software
Tema 3 proseso de desarrollo del softwareTema 3 proseso de desarrollo del software
Tema 3 proseso de desarrollo del software
 
Obfuscation & unpacking
Obfuscation & unpackingObfuscation & unpacking
Obfuscation & unpacking
 
Hablemos de Deuda Técnica
Hablemos de Deuda TécnicaHablemos de Deuda Técnica
Hablemos de Deuda Técnica
 
Personal Software Process / Sesion 03
Personal Software Process / Sesion 03Personal Software Process / Sesion 03
Personal Software Process / Sesion 03
 
Esto es ingeniería inversa
Esto es ingeniería inversaEsto es ingeniería inversa
Esto es ingeniería inversa
 
Practicas tecnicas
Practicas tecnicasPracticas tecnicas
Practicas tecnicas
 
Mejores formas de aprender a programar
Mejores formas de aprender a programarMejores formas de aprender a programar
Mejores formas de aprender a programar
 
Taller evento TestingUY 2016 - Metricas en Tiempo Real y Automatización Dinám...
Taller evento TestingUY 2016 - Metricas en Tiempo Real y Automatización Dinám...Taller evento TestingUY 2016 - Metricas en Tiempo Real y Automatización Dinám...
Taller evento TestingUY 2016 - Metricas en Tiempo Real y Automatización Dinám...
 

Mais de Jose Luis Bugarin Peche

ILUMINATIC TECNOLOGIA | 3 Tecnologías Open Source para la Transformación Tecn...
ILUMINATIC TECNOLOGIA | 3 Tecnologías Open Source para la Transformación Tecn...ILUMINATIC TECNOLOGIA | 3 Tecnologías Open Source para la Transformación Tecn...
ILUMINATIC TECNOLOGIA | 3 Tecnologías Open Source para la Transformación Tecn...Jose Luis Bugarin Peche
 
ILUMINATIC TECNOLOGIA | Inteligencia Artificial con Java
ILUMINATIC TECNOLOGIA | Inteligencia Artificial con JavaILUMINATIC TECNOLOGIA | Inteligencia Artificial con Java
ILUMINATIC TECNOLOGIA | Inteligencia Artificial con JavaJose Luis Bugarin Peche
 
Gestión de Rendimiento en Aplicaciones Java - APM
Gestión de Rendimiento en Aplicaciones Java - APMGestión de Rendimiento en Aplicaciones Java - APM
Gestión de Rendimiento en Aplicaciones Java - APMJose Luis Bugarin Peche
 
Arquitectura de Apis & GRPC | #JCONFPERU
Arquitectura de Apis & GRPC | #JCONFPERUArquitectura de Apis & GRPC | #JCONFPERU
Arquitectura de Apis & GRPC | #JCONFPERUJose Luis Bugarin Peche
 
Amazon ec2 | Jose Luis bugarin | Arquitecto Empresarial
Amazon ec2 | Jose Luis bugarin | Arquitecto EmpresarialAmazon ec2 | Jose Luis bugarin | Arquitecto Empresarial
Amazon ec2 | Jose Luis bugarin | Arquitecto EmpresarialJose Luis Bugarin Peche
 
Aprendizaje Supervisado | Redes Neuronales Perceptron | Jose Luis Bugarin
Aprendizaje Supervisado | Redes Neuronales Perceptron | Jose Luis BugarinAprendizaje Supervisado | Redes Neuronales Perceptron | Jose Luis Bugarin
Aprendizaje Supervisado | Redes Neuronales Perceptron | Jose Luis BugarinJose Luis Bugarin Peche
 
Transformación Digital | Enfoque para Estudiantes Universitarios
Transformación Digital | Enfoque para Estudiantes UniversitariosTransformación Digital | Enfoque para Estudiantes Universitarios
Transformación Digital | Enfoque para Estudiantes UniversitariosJose Luis Bugarin Peche
 
Comunicar la tierra con la nube jlbugarin v1.0
Comunicar la tierra con la nube jlbugarin v1.0Comunicar la tierra con la nube jlbugarin v1.0
Comunicar la tierra con la nube jlbugarin v1.0Jose Luis Bugarin Peche
 
Iluminatic facturacion electronica_referencia
Iluminatic facturacion electronica_referenciaIluminatic facturacion electronica_referencia
Iluminatic facturacion electronica_referenciaJose Luis Bugarin Peche
 
Introduccion inteligencia negocios | business intelligence
Introduccion inteligencia negocios | business intelligenceIntroduccion inteligencia negocios | business intelligence
Introduccion inteligencia negocios | business intelligenceJose Luis Bugarin Peche
 
Tecnologías de la Información y Comunicación en la Contabilidad...
Tecnologías de la Información y Comunicación en la Contabilidad...Tecnologías de la Información y Comunicación en la Contabilidad...
Tecnologías de la Información y Comunicación en la Contabilidad...Jose Luis Bugarin Peche
 

Mais de Jose Luis Bugarin Peche (20)

ILUMINATIC TECNOLOGIA | 3 Tecnologías Open Source para la Transformación Tecn...
ILUMINATIC TECNOLOGIA | 3 Tecnologías Open Source para la Transformación Tecn...ILUMINATIC TECNOLOGIA | 3 Tecnologías Open Source para la Transformación Tecn...
ILUMINATIC TECNOLOGIA | 3 Tecnologías Open Source para la Transformación Tecn...
 
ILUMINATIC TECNOLOGIA | Inteligencia Artificial con Java
ILUMINATIC TECNOLOGIA | Inteligencia Artificial con JavaILUMINATIC TECNOLOGIA | Inteligencia Artificial con Java
ILUMINATIC TECNOLOGIA | Inteligencia Artificial con Java
 
Gestión de Rendimiento en Aplicaciones Java - APM
Gestión de Rendimiento en Aplicaciones Java - APMGestión de Rendimiento en Aplicaciones Java - APM
Gestión de Rendimiento en Aplicaciones Java - APM
 
Inteligencia artificial en las Empresas
Inteligencia artificial en las EmpresasInteligencia artificial en las Empresas
Inteligencia artificial en las Empresas
 
Arquitectura de Apis & GRPC | #JCONFPERU
Arquitectura de Apis & GRPC | #JCONFPERUArquitectura de Apis & GRPC | #JCONFPERU
Arquitectura de Apis & GRPC | #JCONFPERU
 
Amazon ec2 | Jose Luis bugarin | Arquitecto Empresarial
Amazon ec2 | Jose Luis bugarin | Arquitecto EmpresarialAmazon ec2 | Jose Luis bugarin | Arquitecto Empresarial
Amazon ec2 | Jose Luis bugarin | Arquitecto Empresarial
 
Aprendizaje Supervisado | Redes Neuronales Perceptron | Jose Luis Bugarin
Aprendizaje Supervisado | Redes Neuronales Perceptron | Jose Luis BugarinAprendizaje Supervisado | Redes Neuronales Perceptron | Jose Luis Bugarin
Aprendizaje Supervisado | Redes Neuronales Perceptron | Jose Luis Bugarin
 
Ecosistema Tecnología Java
Ecosistema Tecnología JavaEcosistema Tecnología Java
Ecosistema Tecnología Java
 
Transformación Digital | Enfoque para Estudiantes Universitarios
Transformación Digital | Enfoque para Estudiantes UniversitariosTransformación Digital | Enfoque para Estudiantes Universitarios
Transformación Digital | Enfoque para Estudiantes Universitarios
 
¿Que son los microservicios?
¿Que son los microservicios?¿Que son los microservicios?
¿Que son los microservicios?
 
Comunicar la tierra con la nube jlbugarin v1.0
Comunicar la tierra con la nube jlbugarin v1.0Comunicar la tierra con la nube jlbugarin v1.0
Comunicar la tierra con la nube jlbugarin v1.0
 
Sistemas Distribuidos Introduccion
Sistemas Distribuidos IntroduccionSistemas Distribuidos Introduccion
Sistemas Distribuidos Introduccion
 
Iluminatic facturacion electronica_referencia
Iluminatic facturacion electronica_referenciaIluminatic facturacion electronica_referencia
Iluminatic facturacion electronica_referencia
 
Arquitectura empresarial
Arquitectura empresarial Arquitectura empresarial
Arquitectura empresarial
 
Desarrollo empresarial con java
Desarrollo empresarial con javaDesarrollo empresarial con java
Desarrollo empresarial con java
 
Introduccion inteligencia negocios | business intelligence
Introduccion inteligencia negocios | business intelligenceIntroduccion inteligencia negocios | business intelligence
Introduccion inteligencia negocios | business intelligence
 
Servicios Web en Android
Servicios Web en AndroidServicios Web en Android
Servicios Web en Android
 
Tecnologías de la Información y Comunicación en la Contabilidad...
Tecnologías de la Información y Comunicación en la Contabilidad...Tecnologías de la Información y Comunicación en la Contabilidad...
Tecnologías de la Información y Comunicación en la Contabilidad...
 
Administracion servidores linux
Administracion servidores linuxAdministracion servidores linux
Administracion servidores linux
 
Spring - Inyección de Dependencias
Spring - Inyección de DependenciasSpring - Inyección de Dependencias
Spring - Inyección de Dependencias
 

Revisión de código fuente de manera ágil

  • 1. Revisión de Código Fuente de Manera Ágil Jose Luis Bugarin CEO ILUMINATIC SAC jbugarin@iluminatic.com @jlbugarin consultorjava.com – iluminatic.com
  • 2. ¿Por qué Debemos cuidar la calidad de nuestro código?
  • 3. Pensemos… • "Los programas deben ser escritos para que la gente lea, y sólo las máquinas puedan ejecutarlos “ Abel & Sussman
  • 4. Cambios en Los Requerimientos
  • 5. Costo de un Defecto
  • 7. Algunos números referenciales • Encontrar, la solución de problemas en la producción es 100 veces más caro que durante la fase de diseño / requisitos • • 40-50% del trabajo de proyecto típico es "reescribir" • 80% de retrabajo proviene del 20% de los defectos • 80% de los defectos provienen del 20% de los módulos • 90% del tiempo de inactividad viene de 10% de los defectos • Las revisiones cruzadas atrapan 60% de los defectos • Las prácticas personales disciplinado puede reducir los defectos hasta en un 75%
  • 8. Pero… • La evidencia es abrumadora, pero .. • Nos parece que nunca tenemos tiempo para hacerlo, pero siempre parece que encontramos tiempo para "rehacer“ “reescribir” “comenzar desde cero”
  • 9. ¿Qué onda con el QA? • QA puede o no puede cuidar la calidad de Nuestro software? ¿Por qué los desarrolladores deben cuidar su código? > Porque QA debe o no debe preocuparse por la calidad del diseño y la implementación. > En su lugar, deben preocuparse por "testeos funcionales,aceptación, rendimiento, facilidad de uso, etc.” > Tu desarrollador entrega un software de mejor calidad por lo que QA realmente puede centrarse en "Testeos de funcionalidad"
  • 10. Deuda Tecnica • "La deuda técnica" son actividades (como la refactorización, la actualización de una librería, codificación estándar, ..) que usted ha dejado de realizar.
  • 11. ¿Cómo mejorar la calidad de nuestro software?
  • 12. Maneras de mejorar nuestro software • Comience temprano. • Programe tiempo para bajar su deuda técnica. • Hacer que funcione (de inmediato). • Requiere vigilancia y el cambio de actitud. • Estar dispuesto a ayudar y ser ayudado.
  • 13. Esfuerzo Individual • Preocuparse uno mismo por la calidad de su código. • > Buenas nombres de las variables, métodos, Método corto, clases más pequeñas, • Debe ser sencillo. • Escribir las pruebas con alta cobertura. • Ejecutar todas las pruebas necesarias. • Compruebe con frecuencia. • Pida retroalimentación.
  • 14. Esfuerzos de Equipo • Evitar los atajos. • Hable propiedad colectiva - equipo debe poseer el código. • Promover la interacción positiva. • Proporcionar retroalimentación constructiva. • revisión de código constante.
  • 15. Tratar Advertencias (Warning) como errores • “Es solo una advertencia” • Estas advertencias pueden tener “cosas” ocultas • Si es inevitable, suprimir selectivamente
  • 17. Cobertura de Código • ¿Qué cantidad (%) de su código está cubierto por la prueba? • Las herramientas de cobertura de código pueden decir cuáles y cuánto código está cubierto > Clover > Cobertura > JaCoCo • Algunas herramientas de código de eliminación que no tienen ninguna prueba de > Guantánamo > Ashcroft
  • 18. Duplicado de Código • Código duplicado es caro de mantener > Código duplicado es común • Herramientas que permiten detectar la duplicación de código > PMD
  • 19. Análisis de Código • Análisis de código para encontrar errores > Los errores lógicos > Codificación, violaciones > Problemas de sincronización y mas • Herramientas > PMD > FindBugs > Jlint
  • 20. Principios para Generación de Códigos • Sencillez • Claridad • brevedad • Humanidad
  • 21. Comentarios en el Código • Los comentarios deben decir "por qué" o el "propósito" no "cómo" • No comentar lo que hace el código - Soy capaz de leer el código y entenderlo • No conservar la documentación separada del código
  • 22. Herramientas Recomendadas • PMD • CHECKSTYLE • FINDBUGS • CODEPRO • SONAR