Calidad De Codigo

20
.1 Calidad de Código Calidad de Código Guillermo Rugilo Guillermo Rugilo Diego Ferreyra Diego Ferreyra

description

Tuve el honor de dar esta presentación con el excelente profesional, colega y amigo Guillermo Rugilo. La publico para que la puedan ver a quien le sirva e interese.

Transcript of Calidad De Codigo

Page 1: Calidad De Codigo

.1

Calidad de CódigoCalidad de Código

Guillermo RugiloGuillermo RugiloDiego FerreyraDiego Ferreyra

Page 2: Calidad De Codigo

.2

AgendaAgenda• Qué es Calidad de Código?• Aspectos a considerar• Herramientas• Conclusiones

Page 3: Calidad De Codigo

.3

¿QUÉ ES CALIDAD DE CÓDIGO?¿QUÉ ES CALIDAD DE CÓDIGO?

Page 4: Calidad De Codigo

.4.4Definiciones de CalidadDefiniciones de Calidad

• La Calidad es una propiedad inherente de cualquier cosa que permite que esta sea comparada con cualquier otra de su misma especie.

• Conjunto de propiedades inherentes a un objeto que le confieren capacidad para satisfacer necesidades implícitas o explícitas.

• Cumplimiento de los requisitos, ya sea que estos sean explícitos o implícitos, para la satisfacción de un cliente

• ISO 9000: “Calidad: grado en el que un conjunto de características inherentes cumple con los requisitos”

Page 5: Calidad De Codigo

.5.5Precondiciones para definir CalidadPrecondiciones para definir Calidad

Público

Requerimientos

Características

Page 6: Calidad De Codigo

.6.6Público y RequerimientosPúblico y Requerimientos

Desarrollador

Operaciones

Usuario Final Tester

Arquitecto

Cerveeeza…

•0 bugs•Adaptabilidad al negocio•Usabilidad•Que haga lo que quiero

•Deployment simple•Disponibilidad•Instrumentación•Escalabilidad

•Lineamientos•Convenciones•Uso de

herramientas•Métricas

•Simple promoción entre ambientes•Requerimientos claros•Pocas regresiones

Page 7: Calidad De Codigo

.7.7

• Ideas que nos gustan… establezcamos un contexto– Kent Beck: Implementation Patterns

CaracterísticasCaracterísticas

Values

Principles

Patterns

Page 8: Calidad De Codigo

.8.8

• Hablemos de programación…– Estilos– Entablando discusiones de calidad de código

• … y de los programas en sí– El código es leído mucho más seguido de lo que es escrito– Los lectores necesitan entender el concepto y los detalles– Nunca se llega a la perfección– Construídos en torno a los mismos conceptos básicos

CaracterísticasCaracterísticas

Page 9: Calidad De Codigo

.9.9Características – Kent BeckCaracterísticas – Kent Beck

• Valores1. Communication

– Pensar en otros– Fundamento económico

2. Simplicity– Complejidad esencial vs. Exceso de complejidad

3. Flexibility– Simplicidad + tests vs. Diseño especulativo

• Principios– Local Consequences– Minimize Repetition– Logic and Data Together– Symmetry– Declarative Expression– Rate of change

Page 10: Calidad De Codigo

.10.10

• Motivación económica– CostoTotal = CostoDesarrollo + CostoMantención– Y el costo de mantener un software…

CostoEntenderCódigo+

CostoCambio+

CostoTest+

CostoDeploy

Características – ¿Por qué esas?Características – ¿Por qué esas?

Page 11: Calidad De Codigo

.11.11Nivel de CalidadNivel de Calidad

• Objetivos de calidad• Métricas• Herramientas

Page 12: Calidad De Codigo

.12.12Objetivos de calidadObjetivos de calidad

• Valores y Principios• Requerimientos del

Público• Requerimientos del

proyecto• Requerimientos

corporativos• Limitaciones

Page 13: Calidad De Codigo

.13.13MétricasMétricas

• Usos– Caracterizar Sistemas.– Entender su estructura.– Encontrar problemas.

• Tipos– Tamaño y complejidad– Acoplamiento– Herencia– Polimétricas

Page 14: Calidad De Codigo

.14.14PolimétricasPolimétricas

Page 15: Calidad De Codigo

.15.15HerramientasHerramientas

• FxCop • Resharper• Reflector+AddIns• Ncover• NDepend• CodeIt.Right• DocumentX• VS TS• CodeCity• FxArch

Page 16: Calidad De Codigo

.16.16CodeCityCodeCity

• Análisis de software• Sistemas vistos como

ciudades en 3D• Clases == Edificios• Packages == lotes• Los edificios muestran

un set de métricas definidas para el código

Page 17: Calidad De Codigo

.17

CONCLUSIONESCONCLUSIONES

Page 18: Calidad De Codigo

.18.18ConclusionesConclusiones

• Setear objetivos• Revisiones de código• Leemos más código del que escribimos• Codificamos para otro desarrollador

Page 19: Calidad De Codigo

.19

ReferenciasReferencias

• MOOSE http://moose.unibe.ch/

• Code City http://moose.unibe.ch/randomhighlight/codecity

• Implementation Patterns (Kent Beck)– http://www.amazon.com/Implementation-

Patterns-Addison-Wesley-Signature-Kent/dp/0321413091

Page 20: Calidad De Codigo

.20