Vector – Camino del Cerro de los Gamos 1, Edificio. 6, Planta 1 – 28224 Pozuelo de Alarcón – Madrid. Tel. (+34) 91 183 03 00 − www.vectorsf.com
Usando el aseguramiento de la calidad como una herramienta que nos permita innovar
1
2
3
4
5
6
Vector
El desarrollo de software
Aseguramiento de la calidad
Índice
Tendencias
Metodología
Cover
Copyright © 2012 Vector– www.vectorsf.com 3
La compañía
• Vector es una compañía dedicada a la consultoría y al desarrollo e
implantación de soluciones avanzadas, en el entorno de nuevas
tecnologías IT.
• El desarrollo de nuestras soluciones soporta diferentes modelos de
producción con foco en la industrialización de los procesos de
implantación.
• Nuestro modelo de operación permite cubrir todos las fases de la
construcción de soluciones desde su conceptualización hasta el
desarrollo de aplicaciones a medida o la implantación/integración
de soluciones de terceros.
Sobre nosotros
Copyright © 2012 Vector– www.vectorsf.com 4
El equipo Vector
02 03 04 05 06 07 08 09 10 11 año43 61 130 210 300 350 350 360 420 650 empleados
Progresión 2002- 2011
Más de 770 personas
en 2012 Pre
visi
ón
"Trabajar en Vector me da la oportunidad de que mi
carrera profesional se desarrolle en un entorno de
aprendizaje continuo".
"Nuestro equipo
humano, nuestro
gran valor
empresarial."
Copyright © 2012 Vector– www.vectorsf.com 5
Estamos
Madrid
Sevilla
Coruña
España
Inglaterra
Suiza
Vigo
Valencia
Albacete
Córdoba
Alemania
Andorra
Méjico
Brasil
Copyright © 2012 Vector– www.vectorsf.com 6
Quienes somos
Sobre nosotros
Soluciones ytecnologíasConsultoría Servicios de
desarrollo
Áreas de Negocio
Especialización Sectorial
Retail, Gran Consumo y
Servicios
Telco y Media
Finanzas y Seguros
Admon. Públicas
Industria y Utilities
1
2
3
4
5
6
Vector
El desarrollo de software
Aseguramiento de la calidad
Índice
Tendencias
Metodología
Cover
Copyright © 2012 Vector– www.vectorsf.com 8
El desarrollo de software
¿Qué percibimos?
Clientes
¿Calidad? Ahora no
puedo
Explosión del
Mercado
¿Presu-puestos?
Inventar la rueda
Falta de estándares
…
La Calidad en crisis
Oferta y demanda en desequilibrio
Los recortes presupuestariosI+D+i
Desarrollo Heterogéneo
Copyright © 2012 Vector– www.vectorsf.com 9
Desarrollo de software
La Calidad en crisis
• Producción• La crisis resulta en problemas de planificación e
ineficiencias de producción (poco valor añadido en los procesos de producción).
• Es frecuente que los planes de producción se centren en respuesta tácticas de forma habitual, resultando en situaciones ineficientes de baja calidad en los trabajos realizados.
• Personas• Cuando hay “muchos fuegos que apagar”
con “pocos bomberos” es difícil trabajar sin avivar otros o nuevos fuegos. Pérdida de sensación de logro por el trabajo bien hecho y la consecuente desmotivación.
• Política de calidad• Reducción de costes se ha traducido en
reducción de calidad en el servicio.• Se sacrifican las estrategias de calidad con
el consecuente deterioro de la imagen y del alineamiento estratégico de la organización.
Clientes
¿Calidad? Ahora no
puedo
Copyright © 2012 Vector– www.vectorsf.com 10
Desarrollo de software
Oferta y demanda en desequilibrio
• Muchos competidores en un mercado en recesión.
• Muchos “nuevos actores”.
• La competencia entre proveedores se basa en la reducción de precios, lo cual se ha traducido en un incremento de los riesgos operativos y funcionales.
• Paradójicamente existe una reducción del margen de elección dada la necesidad de mitigar los riesgos de continuidad del servicio.
Clientes
Explosión del
mercado
Copyright © 2012 Vector– www.vectorsf.com 11
Desarrollo de software
Recortes presupuestarios
• Reducción de las partidas presupuestarias TIC que oscilan entre el 25% y el 90%.
• Se cae en la tentación de buscar el más por menos, sin realizar el análisis detallado mas allá de la solución táctica y olvidando las soluciones estratégicas.
• Existen una situaciones de alto riesgo, donde se combinan aspectos como la falta de presupuesto, la quiebra de proveedores y la continuidad del servicio administrativo …
• Se incrementa la carga de gestión debido a la proliferación de conflictos de producción, operación y humanos.
Clientes
¿Y la partida?
Copyright © 2012 Vector– www.vectorsf.com 12
Desarrollo de software
Desarrollo heterogéneo
• Cada organización tiene una normativa o una interpretación propia de la misma
• La mayoría de las veces la aplicación de la normativa adolece de mecanismos automatizados, resultando en la ejecución de labores manuales por equipos especializados(infrautilizados).
• Dada la sobre carga de los recursos, los procesos normativos no son revisados o mejorados. ¿Cómo afecta mi norma al desarrollo? ¿Y a la explotación? ¿Qué resultados obtenemos?
Clientes
Falta de estándares…
Copyright © 2012 Vector– www.vectorsf.com 13
Desarrollo de software
I+D+i
• Dificultades y/o debilidades (AAPP/Proveedores) en la aplicación de conceptos como reutilización, eficiencia y optimización.
• Se han realizado grandes inversiones en I+D+i, pero la innovación sigue escribiéndose con letra minúscula…
• Es necesario utilizar nuevos paradigmas• En la toma de decisiones, es necesario
introducir criterios de análisis de las iniciativas sobre la base de conceptos como Lean o Sostenibilidad
• La estandarización debe soportarse sobre una visión holística de las mejores prácticas existentes y ajustadas a la realidad de AAPP.
• Es necesario cambiar el modelo de la competición, a la colaboración en todos los ámbitos
• Ante la crisis, es necesario es encontrar el equilibrio entre el mantenimiento de los procesos que aportan valor en el PRESENTE y la investigación, desarrollo e innovaciónpara generar nuevos paradigmas que mejoren el FUTURO.
Clientes
Inventar la rueda
Copyright © 2012 Vector– www.vectorsf.com 14
Conclusión
Desarrollo de software
1
2
3
4
5
6
Vector
El desarrollo de software
Aseguramiento de la calidad
Índice
Tendencias
Metodología
Cover
Copyright © 2012 Vector– www.vectorsf.com 16
$150.000$5.000$1.200$200 - $500Boehm
15 uds
Pruebas
60 – 100 uds
O&M
6.5 uds1 udsPressm an
CódigoAntes de códigoCoste corrección
$150.000$5.000$1.200$200 - $500Boehm
15 uds
Pruebas
60 – 100 uds
O&M
6.5 uds1 udsPressm an
CódigoAntes de códigoCoste corrección
IASCSIDSIASIIASCSIDSIASI
Coste debido a iteraciones sucesivas Coste debido a SQA
Coste
Tiempo
Recortes en SQA y pruebas Inversión en SQA y pruebas
IASCSIDSIASIIASCSIDSIASI
Coste debido a iteraciones sucesivas Coste debido a SQA
Coste
Tiempo
Recortes en SQA y pruebas Inversión en SQA y pruebas
Costes durante el desarrollo
...
Escenario sin atenciónsuficiente a SQA
Mantenimiento
Explotación (ordinario)
Explotación
(extraordinario)
...Explotación (ordinario)
Mantenimiento
Escenario con atenciónsuficiente a SQA
Explotación
(extraordinario)
...
Escenario sin atenciónsuficiente a SQA
Mantenimiento
Explotación (ordinario)Explotación (ordinario)
Explotación
(extraordinario)
...Explotación (ordinario)
Mantenimiento
Escenario con atenciónsuficiente a SQA
Explotación
(extraordinario)
Costes durante el mantenimiento
Una respuesta
Aseguramiento de la calidad
• Está demostrado que la inversión en Calidad desde las fases iniciales del desarrollo software influye directamente en la reducción de los costes de mantenimiento
Copyright © 2012 Vector– www.vectorsf.com 17
AnalisisDefinición
deRequisitos
Definición Diseño CodificaciónConstrucción
Pruebas Despliegue Mantenimiento
Ciclo de vida de proyecto
Actividades de Aseguramiento de la Calidad del Software (SQA) a lo largo de TODO el ciclo de vida del proyecto
Gestión de RiesgosPlan deGestión de Riesgos
Plan dePruebas
DiseñoPruebas
Funcionales
Matriz de Trazabilidadde los requisitos ycasos de prueba
Ejecuciónde las Pruebas
DiseñoPruebas
No-Funcionales
Gestión de la Configuración, Gestión de Cambios, Métricas
Marco de Pruebas según los Riesgos
PruebasDe regresión
Plan de Gestiónde la Configuración
Gestión de RiesgosPlan deGestión de Riesgos
Plan dePruebas
DiseñoPruebas
Funcionales
Matriz de Trazabilidadde los requisitos ycasos de prueba
Ejecuciónde las Pruebas
DiseñoPruebas
No-Funcionales
Gestión de la Configuración, Gestión de Cambios, Métricas
Marco de Pruebas según los Riesgos
PruebasDe regresión
Plan de Gestiónde la Configuración
Automatización de las pruebas
Oficina Calidad
KB
Aseguramiento de la calidad
Ciclo de vida de un proyecto
Copyright © 2012 Vector– www.vectorsf.com 18
Aseguramiento de la calidad
CMMI
• CMMI (Capability MaturityModel Integration) es un modelo de mejora (Model) y evaluación de los procesos de desarrollo de sistemas y software, donde la madurez (Maturity) se refiere a la capacidad (Capability) de los procesos de la organización para producir productos de buena calidad, en el coste y plazos estimados de una forma predecible.
• CMMI establece una escala de 5 niveles de madurez, los cuales están compuesto por uno conjunto predefinido de procesos, resultado de mejores prácticas observadas.
1
2
3
4
5
6
Vector
El desarrollo de software
Aseguramiento de la calidad
Índice
Tendencias
Metodología
Cover
Copyright © 2012 Vector– www.vectorsf.com 20
Metodología
En la mente del cliente
Copyright © 2012 Vector– www.vectorsf.com 21
Metodología
Dos actividades
Análisis funcional y diseño
Pruebas y Automatización
Análisis funcional
Escenarios de neogcio
Diagrama de contexto
Diseño/ Arquitectura/ Documentación
Requerimientos
Procesos de pruebas/ Documentación
Plan de pruebas
Herramientas QA
� �
Copyright © 2012 Vector– www.vectorsf.com 22
Metodología
Análisis funcional y diseño
• Durante este proceso es necesario dibujar la trazabilidad (matriz de trazabilidad) desde las necesidades del negocio hasta los casos de prueba. Posteriormente será necesario continuar este proceso hasta que los componentes de software. Y ya en la último estadio, la granularidad de los componentes de software, se define caso por caso.
• La metodología se focaliza en identificar las necesidades del negocio y a partir de allí, profundizar en los escenarios funcionales del negocio, componentes de negocio y casos de usos.
Requerimientos
Escenarios de negocios
Componentes de negocios
Casos de
usos
Casos de
prueba
Pruebas de
regresión
Automatización
Copyright © 2012 Vector– www.vectorsf.com 23
Metodología
Entregables
�Descripción de los objetivos del sistemaObjetivos del sistema
�Descripción de los procesos ejecutados por actores�Definición del escenario críticos para el negocioEscenarios de negocio
�Descripción de los principales componentes del sistema�Relaciones entre los actores y componentes del sistemaDiagrama de contexto
� Clasificación de actores y tipología (sistema externo y los usuarios)Actores
� Para cada componente del sistema (o módulo)�Modelado de casos de usoComponentes
� Analizar casos de uso sobre la base de las acciones de los Actores y la respuesta del sistema.
�Modelado de entidad para casos de usosCasos de uso
�Descrpción de pallas� Flujo de pantallasDescrpción de IU
� Proporciona una visión general de arquitectura del sistema,�Diferentes puntos de vista arquitectónicos para representar
diferentes aspectos del sistema
Documentación de la arquitectura de software
Copyright © 2012 Vector– www.vectorsf.com 24
¿Qué entendemos por pruebas de regresión?
Metodología
• Resumen• "Para garantizar que una aplicación es todavía funcional y estable después de un
cambio cualquiera."
• Principales objetivos• Gestionar los riesgos provenientes de:
� Corrección de errores en el código no siempre resuelve problemas funcionales (entender que una intervención en el software no siempre resuelve el problema del usuario)
� Antiguos bugs reaparecen (ayudar a descubrir los errores que fueron parcialmente o selectivamente resueltos)
� Los cambios tienen efectos secundarios (entender la forma en que un cambio en el software impacta otras áreas de la aplicación)
• Fortalezas• Efectivamente reduce el tiempo dedicado a realizar una prueba integral de la aplicación
• Debilidades • Sólo se ejecutan pruebas funcionales – para los casos de uso, previamente
automatizado• Sólo es efectiva si los flujos de trabajo de las aplicaciones o el comportamiento
funcional no se cambia con respecto a la versión anterior. Esta situación induce la necesidad de llevar un estrecho control y mantenimiento, para los casos de prueba automatizados.
Copyright © 2012 Vector– www.vectorsf.com 25
Definición de pruebas
Diagrama funcional
• Componentes• Entidades• Relaciones• Data• Usuarios• Entorno• Flow de
información
Optimización de pruebas
• Gestión de pruebas• Mejorar
documentación de casos de prueba
• Gestión de incidencias
• Gestión de cambios
Matriz de trazabilidad
• Relacción entre los requerimientos y los casos de pruebas
Flujos crítcos de negocio
Metodología
Framework
Análisis funcional
Copyright © 2012 Vector– www.vectorsf.com 26
Metodología
Matriz de trazabilidad
Las áreas directamente afectadasCubre la funcionalidad general y característica básicaConjunto de pruebas para clientes sensibles a la funcionalidad
Matriz de relación
ChecklistPruebas críticas
Jerarquización de cada flujo de
negocio
Herramienta de regresión
1er Grupo
2do GrupoConjunto de pruebas que incluyen problemas que se han presentado en ocasiones anteriores
3ro Grupo
Hot-Spot suiteLas pruebas adicionales debido a la adición de código a finalesClean-Run/sanity Testing
Herramienta de gestión de pruebasData Set
GUI & Non GUI
Matriz de trazabilidad
Copyright © 2012 Vector– www.vectorsf.com 27
Metodología
¿Cuánto automatizar?
• En general tenemos que responder por cada CP, preguntas como:• La automatización de cada CP y la ejecución de estos, va a costar más que ejecutar de
forma manual cada CP? ¿Cuánto más?• La prueba automatizada tiene una vida útil, con el tiempo algunos ajustes se requieren
en los scripts. ¿Cuál es el horizonte de vida útil de un CP? ¿Qué eventos son susceptibles acortar este horizonte?
• Durante la vida de CP: ¿Qué tan probable es que el CP descubra errores adicionales (más allá de lo que sea que los problemas se encuentran por primera vez)?
Copyright © 2012 Vector– www.vectorsf.com 28
Control versus aseguramiento de la calidad
Metodología
• La calidad se debe asumir de forma proactiva a lo largo de todo el ciclo de vida del proyecto de implantación, de forma que se persigue un incremento de la eficiencia y productividad de los equipos, al detectar cualquier no conformidad en una fase temprana del proyecto, limitando el impacto de posibles errores o deficiencias.
2
8
Análisis y Diseño
Preparación y lanzamiento
Construcción / Prototipo Pruebas Soporte
Ciclo de vida
Preparación y arranque
�Verificación de requisitos
1
�Verificación del diseño funcional
2
�Verificación modelo de procesos
3
�Verificación pruebas unitarias
4
�Análisis estáticos
5
�Verificación de documentación
6
�Pruebas de prestaciones
9
�Verificación plan despliegue
10
�Pruebas de regresión
11
�Gestión y verificación de cambios
12
�Gestión de pruebas
7
�Gestión de Incidencias
8
Copyright © 2012 Vector– www.vectorsf.com 29
Metodología
Pruebas Agile
Copyright © 2012 Vector– www.vectorsf.com 30
Metodología
Herramientas
• Asegurar la calidad de un desarrollo requiere considerar mucho aspectos de la codificación e implementación realizada:
• Garantizar el cumplimiento de los estándares de codificación
• Revisión de sintaxis y tipos• Analizar acoplamiento y cohesión• Identificar excepciones• Detectar problema de seguridad o
vulnerabilidad de la implementación• Identificar potenciales patrones de
código asociables a defectos• Revisar funciones y relaciones para el
caso de dominios vacíos• Analizar el flujo de información• Verificar condiciones previas,
invariantes y posteriores para los procesos ejecutados
• Realiza reingeniería inversa del código
• La aplicación de una normativa de codificación por parte de los desarrolladores de software es compleja si no se dispone de herramientas que automaticen esta tarea.
• La normativa es un elemento vivo, ya que se basa en parte en las buenas prácticas, y por lo tanto requiere actualizaciones.
• La normativa en formato papel o en un fichero no es de gran ayuda y en algunos casos está sujeta a una interpretación subjetiva por parte del desarrollador.
• La revisión posterior del código para comprobar si se ajusta a la normativa es un proceso tedioso y que no aporta valor.
• Existen un conjunto importante herramientas disponibles para atender la rutina asociado a las actividades mencionadas.
1
2
3
4
5
6
Vector
El desarrollo de software
Aseguramiento de la calidad
Índice
Tendencias
Metodología
Cover
Índice
Copyright © 2012 Vector– www.vectorsf.com 32
¿Qué es?
COVER
• COVER es una herramienta desarrollada por Vector SF que permite comprobar que el software desarrollado cumple los estándares establecidos de calidad.
• Para ello, la herramienta valida la sintaxis del código generado contra un conjunto de reglas.
• Estas reglas se agrupan en categorías ISO9126 (Fiabilidad, Eficiencia, Mantenibilidad, Portabilidad, Funcionalidad y Usabilidad).
• Es un servicio que está disponible on-line.
• Entre los diferentes paquetes de software que son admitidos por esta herramienta están: las aplicaciones J2EE, las maquetas de HTML y los desarrollos de portales de Internet (Fatwire).
Copyright © 2012 Vector– www.vectorsf.com 33
Características de la herramienta
COVER
• Validación de código• Diferentes validadores (JAVA, XML, SQL, PL-SQL y Properties)• Validación mixta (código embebido de otro lenguaje)• Validación global (más de un fichero o estructura del proyecto)• Categorización de reglas por ISO9126
• Base de datos de reglas• Reglas por tipología del desarrollo, y reglas por proyecto• Documentación de reglas y ejemplos integrados en la aplicación
• Generación de informes de la validación (formato HTML)• Tramos de corrección (4 grados: correcto, parcialmente correcto, con errores, con
muchos errores)• Activación / desactivación de reglas por proyecto• Ponderación de mensajes / Umbrales de validación
• Administración • Según las diferentes entidades que forman parte del servicio: Usuarios, Empresas,
Grupos, Proyectos, Escenarios.
Copyright © 2012 Vector– www.vectorsf.com 34
Visión General
COVER
Menú navegación
Ubicación
Menú usuario
Buscador
Listado
Operaciones
Copyright © 2012 Vector– www.vectorsf.com 35
Servicios asociados
Cover
• Consultoría de análisis de la normativa. • En este servicio se realiza el análisis de la normativa del destinatario y de la normativa
basada en buenas prácticas de la herramienta (+600 reglas) y se establece un plan de implantación y adaptación del servicio.
• Implantación de la herramienta. • Desarrollo de las adaptaciones e inclusión de la nueva normativa establecida en el plan
realizado previamente. Así mismo como conclusión de esta implantación se realizará la parametrización de la herramienta (definición de escenarios, ponderaciones, proyectos y roles, usuarios…).
• Ejecución del Servicio. • Mantenimiento perfectivo y adaptativo de la herramienta. Administración de usuarios,
resolución de incidencias , ajustes de parametrización, etcétera.
• Alojamiento. • Servicio de alojamiento de la herramienta.
1
2
3
4
5
6
Vector
El desarrollo de software
Aseguramiento de la calidad
Índice
Tendencias
Metodología
Cover
Copyright © 2012 Vector– www.vectorsf.com 37
Tendecias
Control de tipos
template<int M, int K, int S>struct Unit { // a unit in the MKS system
enum { m=M, kg=K, s=S }; };
template<typename Unit> // magnitude with unitstruct Value {
double val; // the magnitudeexplicit Value(double d)
: val(d) {} // construct a Value from a double};
using Speed = Value<Unit<1,0,-1>>; // m /susing Acceleration = Value<Unit<1,0,-2>>; //m/s/s
constexprValue<Second> operator”” s(long double d)
// a f-p literal suffixed by 's'{
return Value<Second> (d); }
// a very explicit notation (quite verbose):Speed sp1 = Value<1,0,0> (100)/ Value<0,0,1> (9.8);
// use a shorthand notation:Speed sp1 = Value<M> (100)/ Value<S> (9.8);
// abbreviate further still:Speed sp1 = Meters(100)/Seconds(9.8); Speed sp1 = M(100)/S(9.8); // this is getting cryptic}
Problema: Necesitamos reducir los errores asociados a la gestión de variables con significado específico dentro del sistemas de medidas SI, velocidad y aceleración. Respuesta: En C++ estándar de C+11, es posible asignar las normas de las unidades SI en un sistema de tipo general:
(*) Fuente IEEE Computer Enero 2012
Copyright © 2012 Vector– www.vectorsf.com 38
Tendecias
Software o Hardware
• Como hemos visto, cada vez es mas importante trabajar en nuestros desarrollos de software con variables que utilicen “tipos ricos”.
• Sin embargo, cada vez es mas importante entender las piezas que se utilizan para implementar una solución y el impacto de estas sobre el rendimiento del sistema HR y SW.
• e.g. En la gráfica se muestra un ejemplo de lo que significa en tiempo de procesamiento, el organizar una lista que tiene dos posibles representaciones para el arreglo, un arreglo tipo Vector o una Lista.
• Codesign es un proceso iterativo, en el que el objetivo es optimizar las aplicaciones y el hardware a través de una combinación de rendimiento, consumo y el costo
x 100.000
(*) Fuente IEEE Computer Enero 2012
Copyright © 2012 Vector – www.vectorsf.com
MADRID
Camino del Cerro de los Gamos, 1
Edificio. 6, Planta 1
28224 Pozuelo de Alarcón – Madrid.
Tel. (+34) 91 183 03 00
Fax: (+34) 91 372 83 66
MADRID
Avda. De la Universidad, 1
28691 Villanueva de la Cañada – Madrid
Tel. (+34) 91 810 53 00
Fax. (+34) 91 810 51 64
ALBACETE
C/ Cristóbal Lozano, 12
02002 – Albacete
Tel.: (+34) 967 96 12 00
Fax: (+34) 967 61 50 05
CÓRDOBA
C/ Claudio Marcelo, 15, 2º Izq.
14002 – Córdoba
Tel.: (+34) 957 48 21 32
LEVANTE
Parc Científic
Universitat de València
Polígono La Coma s/n
46980 Paterna
Valencia
GALICIA
Rúa do Pintor Juan Luis, 5
15702 - Santiago de Compostela
A Coruña