calidad en el desarrollo del software

60
Calidad en el desarrollo del software Joan Sebastián Ramírez Pérez 2015

Upload: joan-sebastian-ramirez-perez

Post on 13-Apr-2017

979 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Calidad en el desarrollo del software

Calidad en el desarrollo del softwareJoan Sebastián Ramírez Pérez2015

Page 2: Calidad en el desarrollo del software

Agenda

¿Qué es calidad del software? ISO 8402 ISO 9000/9001 ISO / IEC TR 15504 CMMI Bibliografía

Page 3: Calidad en el desarrollo del software

Agenda

¿Qué es calidad del software? ISO 8402 ISO 9000/9001 ISO / IEC TR 15504 CMMI Bibliografía

Page 4: Calidad en el desarrollo del software

¿Qué es calidad?

Según ISO 8492:1986: Totalidad de aspectos o características de un producto o servicio que le hace satisfacer necesidades explícitas o implícitas.

Según ISO 8402 (1994): Calidad de un producto o servicio es la capacidad de dicho producto o servicio para satisfacer las exigencias para las que fue creado, estando su valor medido por el grado de satisfacción del consumidor que lo ha adquirido o lo utiliza

IEEE Std 610.12-1990: El grado en que un sistema, un componente o un proceso satisface las necesidades o expectativas de un cliente o usuario.

Page 5: Calidad en el desarrollo del software

¿Qué es software de calidad?

Calidad es cumplir con los requisitos (Crosby, Quality is free, 1979). Calidad es cumplir con los requisitos de una persona determinada

(Weinberg, Software quality management, vol1, 1991). Conjunto de características que confieren al software la aptitud para

satisfacer las necesidades establecidas y las implícitas.

Page 6: Calidad en el desarrollo del software

Software de calidad vs calidad del software. Software de calidad es la percepción que tiene un cliente. Calidad del software es algo objetivo y cuantificado.

Page 7: Calidad en el desarrollo del software

¿Qué es un error software?

Error: Inconsistencia gramatical en alguna o algunas líneas de código. Incoherencia con respecto a algún requisito.

Fault: defecto. Es un error software que no es mitigado por otras líneas.

Failure: fallo. Es un defecto que ocurre.

Page 8: Calidad en el desarrollo del software

Causas de errores del software

1. Mala definición de requisitos.2. Mala comunicación con el cliente.3. Desviaciones deliberadas:

Mala reutilización Presupuesto/ tiempo

4. Errores lógicos de diseño: Algoritmos erróneos. Error en secuencia planteada. Condiciones frontera erróneas. Omisión de estados. Omisión de tratamiento de excepciones.

Page 9: Calidad en el desarrollo del software

Causas de errores del software

5. Errores de codificación.6. Incumplimiento de estándares de codificación y documentación.7. Pruebas incompletas.8. Errores de procedimiento.9. Errores de documentación.

Page 10: Calidad en el desarrollo del software

¿Qué nos obliga a tener calidad en el software?1. Condiciones contractuales.2. Relación cliente-proveedor.3. Trabajo en equipo.4. Cooperación y coordinación.5. Interfaces con otros sistemas software.6. Cambios de componentes del equipo.7. Mantenimiento de producto.

Page 11: Calidad en el desarrollo del software

Condiciones contractuales

Lista de requisitos funcionales. Presupuesto del proyecto. Planificación temporal. Equipos predefinidos.

Page 12: Calidad en el desarrollo del software

Relación cliente proveedor

Cooperación continua. Propenso a cambios.

Page 13: Calidad en el desarrollo del software

Trabajo en equipo

Criterios. Objetivos. Motivación. Planteamientos profesionales. Meta común.

Page 14: Calidad en el desarrollo del software

Cooperación y coordinaciónOtro equipo

subcontratado

Equipo deDesarrollo del

Cliente

Equipo deDesarrollo SW

Equipo deDesarrollo HW

NuestroEquipo

Equipo deDesarrollo SW

Otro equiposubcontratado

Otro equiposubcontratadoOtro equipo

subcontratado

Page 15: Calidad en el desarrollo del software

Interfaces con otros sistemas de software Interfaces de entrada de otros sistemas software. Interfaces de salida a otros sistemas software. Interfaces de entrada y salida al panel de control.

Page 16: Calidad en el desarrollo del software

Cambios de componentes del equipo

Page 17: Calidad en el desarrollo del software

Mantenimiento de producto

El software no se termina cuando se entrega al cliente, sino que nace.

Page 18: Calidad en el desarrollo del software

¿Qué es un Sistema de Gestión de Calidad? Según ISO 9000:2000: Conjunto de elementos mutuamente relacionados

que interactúan para establecer la política y los objetivos de calidad de una organización, y para dirigir y controlar dicha organización para lograr dichos objetivos.

Generalmente incluye el establecimiento de: Política de la calidad. Objetivos de calidad. Planificación de la calidad. Control de la calidad. Mejora de la calidad. Aseguramiento de la calidad.

Page 19: Calidad en el desarrollo del software

¿Qué es planificación de la calidad?

Según ISO 9000:2000: Parte de la gestión de la calidad enfocada al establecimiento de los objetivos de la calidad y a la especificación de los procesos operativos necesarios y de los recursos relacionados para cumplir los objetivos de la calidad.

Page 20: Calidad en el desarrollo del software

¿Qué es aseguramiento de la calidad? El aseguramiento de la calidad del software es el sistema de métodos y

procedimientos empleados para asegurar que el producto software satisface sus requisitos. Este sistema implica la planificación, medida y seguimiento de las actividades de desarrollo llevadas a cabo.

Page 21: Calidad en el desarrollo del software

¿Qué es ISO?

ISO es la Organización Internacional para la Normalización. Es una federación de los Organismos Nacionales de Normalización de unos 130 países.

Es una Organización no gubernamental establecida en 1947. El resultado de los trabajos de ISO son acuerdos internacionales que se publican en forma de Normas.

Page 22: Calidad en el desarrollo del software

Aporte de los marcos de referencia

Page 23: Calidad en el desarrollo del software

Agenda

¿Qué es calidad del software? ISO 8402 ISO 9000/9001 ISO / IEC TR 15504 CMMI Bibliografía

Page 24: Calidad en el desarrollo del software

¿Qué es ISO 8402?

Define los términos básicos y fundamentales relacionados con los conceptos dela calidad, aplicables a todos los campos.

La norma ISO 8402 fue dada a conocer en 1986. Esta define calidad como "el conjunto de características de una entidad le confieren la aptitud para satisfacer las necesidades establecidas e implícitas". También podría decirse que es la "conformidad con los requisitos" y el "grado de excelencia", entendiéndose calidad como la satisfacción del cliente.

La norma ISO 8402 fue sustituida en el año 2000 por la norma ISO 9000.

Page 25: Calidad en el desarrollo del software

Agenda

¿Qué es calidad del software? ISO 8402 ISO 9000/9001 ISO / IEC TR 15504 CMMI Bibliografía

Page 26: Calidad en el desarrollo del software

¿Qué es ISO 9000 o ISO 9001?

ISO 9001 define requisitos para un sistema de gestión de calidad de cualquier organización. Es un estándar.

ISO es general y no incluye prácticas.

Page 27: Calidad en el desarrollo del software

Certificación

La certificación respecto a la norma está pensada para que los clientes tengan la seguridad de que la organización es capaz de desarrollar software con una calidad consistente.

También asegura que la organización está siguiendo las normas y procedimientos que tiene definidos. Para mantener la certificación es necesario llevar a cabo auditorías externas periódicas.

La norma no especifica de que manera se debe desarrollar el software, sino los elementos del sistema de calidad y el contenido del manual de calidad.

Page 28: Calidad en el desarrollo del software

ISO 9000

Su misión es normalizar en el campo de gestión de la calidad, incluyendo los sistemas de calidad, el aseguramiento de la calidad y guías para su selección y aplicación.

La serie ISO 9000 evolucionó desde el BS5750 y se publicó por primera vez en 1987.

La versión más utilizada es la versión de 1994. En 2000 se ha publicado una nueva versión de la serie 9000, que

sustituye a la de 1994.

Page 29: Calidad en el desarrollo del software

Series vigentes ISO 9000

ISO 9001:1994. Sistemas de la Calidad, modelo para aseguramiento de la calidad en diseño, desarrollo, producción, instalación y servicio.

ISO 9002:1994. Sistemas de la Calidad, modelo para aseguramiento de la calidad en producción, instalación y servicio.

ISO 9003:1994. Sistemas de la Calidad, modelo para aseguramiento de la calidad en inspecciones finales y pruebas.

ISO 9004:1994. Guía de los componentes de la gestión de la calidad y de los sistemas de la calidad.

Page 30: Calidad en el desarrollo del software

Características ISO 9001

Comprensión y cumplimiento de requisitos. Consideración de los procesos en términos que aporten valor. Obtención de resultados del desempeño y eficacia del proceso. Mejora continua de los procesos mediante mediciones objetivas.

Page 31: Calidad en el desarrollo del software

SQA basado en procesos

Clientes Clientes

Mejora continua delsistema de gestión de calidad

Requisitos

Satisfacción

Realización del producto

Medición, análisisy mejora

Responsabilidad de ladirección

Gestión de los recursos

Producto

Salidas

Entradas

Page 32: Calidad en el desarrollo del software

¿Cuándo usar ISO 9001?

Necesita demostrar su capacidad de ofrecimiento de productos de manera coherente, satisfaciendo los requisitos del cliente y los reglamentos aplicables.

Aspira a aumentar la satisfacción del cliente.

Page 33: Calidad en el desarrollo del software

¿Qué contiene la norma?

Papel de la Documentación. Responsabilidad de la Dirección. Gestión de los recursos. Realización de los productos. Mediciones, análisis y mejoras.

Page 34: Calidad en el desarrollo del software

Agenda

¿Qué es calidad del software? ISO 8402 ISO 9000/9001 ISO / IEC TR 15504 CMMI Bibliografía

Page 35: Calidad en el desarrollo del software

ISO / IEC TR 15504

Proporciona el marco para evaluar la capacidad y madurez de los procesos de desarrollo de software.

Page 36: Calidad en el desarrollo del software

ISO / IEC TR 15504

Page 37: Calidad en el desarrollo del software

Modelo ISO / IEC TR 15504

1.Examine

organisation’sneeds

8.Monitor

performance

7.Sustain

improvementgains

6.Confirm

improvements

5.Implement

improvements4.Analyze results

and deriveaction plan

2.Initiate processimprovement

3.Prepare and

conduct processassessment

• Industrial benchmarksPractice descriptions from the assessmentmodel in Part 5 or another assessmentmodel compatible (Part 2)

• Process improvement programme plan forFor capability determination.

• Target capability profiles from capability determination

(Part 8)

Assessmentresults

Approvedaction plan

Analyzedre-assessmentresults

Implementedimprovements

Validatedimprovementresults

Re-assessmentrequest

Identifiedscope andpriorities

Improvementinitiation

Software processimprovement request

Organisation’s needs

Institutionalisedimprovements

Improvements inorganisational unit’s

software process

Assessmentrequest (Parts 3 and 4)

current assessedcapability

Preliminary processimprovementprogrammeplan

model compatible with Part 2

Page 38: Calidad en el desarrollo del software

Agenda

¿Qué es calidad del software? ISO 8402 ISO 9000/9001 ISO / IEC TR 15504 CMMI Bibliografía

Page 39: Calidad en el desarrollo del software

¿Qué es madurez?

Atributo de las organizaciones que desarrollan o mantienen los sistemas de software. En la medida que éstas llevan a cabo su trabajo siguiendo procesos, y en la que éstos se encuentran homogéneamente implantados, definidos con mayor o menor rigor; conocidos y ejecutados por todos los equipos de la empresa; y medidos y mejorados de forma constante, las organizaciones serán más o menos “maduras”.

Page 40: Calidad en el desarrollo del software

¿Qué es capacidad?

Atributo de los procesos. El nivel de capacidad de un proceso indica si sólo se ejecuta, o si también se planifica se encuentra organizativa y formalmente definido, se mide y se mejora de forma sistemática

Page 41: Calidad en el desarrollo del software

¿Qué es CMMI?

Capability Maturity Model o Integration. La calidad de un producto o de un sistema es, en su mayor parte,

consecuencia de la calidad de los procesos empleados en su desarrollo y mantenimiento.

Es un modelo basado en la búsqueda de la optimización permanente (aplicación de TQM(Total Quality Management)) en procesos ingenieriles y afines, esto a través de estados de evaluación conocidos en el modelo como “Niveles de madurez”.

En CMMI no se usa el termino “Certificación”, se habla de valoración. Si una empresa aplica los procesos descritos en el PMBOK ya ha

institucionalizado gran parte de las prácticas de Gerencia de Proyectos que define CMMI.

Page 42: Calidad en el desarrollo del software

¿Qué es CMMI?

Es un modelo de evaluación de los procesos de una organización y se ha convertido en un estándar para promocionar la capacidad de desarrollar software de alta criticidad, una ventaja para las empresas que participan de proyectos complejos, riesgosos y de alto costo.

Es un conjunto de metas de mejoramiento en 4 categorías de procesos:• Ingeniería• Gestión de Proyectos• Gestión de Procesos• Apoyo a Proyectos

Page 43: Calidad en el desarrollo del software

¿Quién lo creo?

CMMI es parte del movimiento TQM que tomo fuerza en los años 80 en Estados Unidos y Europa. Historia CMM y CMMI: El departamento de defensa de los Estados Unidos tenía muchos problemas con el software

que encargaba desarrollar a otras empresas, los presupuestos se disparaban, las fechas se prolongaban.

Como esta situación les parecía intolerable se convocó un comité de expertos para buscar soluciones, en el año 1983 dicho comité concluyó “crear un instituto de la ingeniería del software, dedicado exclusivamente a los problemas del software, y a ayudar al Departamento de Defensa".

Convocaron un concurso público en el que dijeron: "Cualquiera que quiera enviar una solicitud tiene que explicar como van a resolver estos 4 problemas", se presentaron diversos estamentos y la Universidad Carnegie Mellon ganó el concurso en 1985, creando el SEI.

El SEI (Software Engineering Institute) es el instituto que creó y mantiene el modelo de calidad CMM - CMMI

Page 44: Calidad en el desarrollo del software

Estructura CMM-CMMI

Page 45: Calidad en el desarrollo del software

¿Qué es necesario para implementar CMMI?1. Conocimientos de Ingeniería De Software. 2. Conocimientos de Gestión de Calidad. 3. Conocimientos de Gerencia de Proyectos.4. Habilidades de Gestión del Cambio y “Venta” de Ideas.5. Consultoría para interpretación de las prácticas y sus interrelaciones.

Page 46: Calidad en el desarrollo del software

Niveles CMMI

Page 47: Calidad en el desarrollo del software

1. Inicial: El proceso de alguna manera llega a su objetivo.2. Repetible: el proceso es gestionado y controlado durante el desarrollo, lo cual

permite repetir la obtención de los objetivos. 3. Definido: la forma de desarrollar proyectos (gestión e ingeniería) esta definida y

es evaluado respecto a la consecución de los objetivos. La mayoría de las empresas que llegan al nivel 3 paran aquí, ya que es un nivel que proporciona muchos beneficios y no ven la necesidad de ir más allá porque tienen cubiertas la mayoría de sus necesidades.

4. Cuantitativamente Gestionado: Se usan métricas para satisfacer las necesidades de los clientes y la compañía.

5. Optimizado: Los procesos de los proyectos y de la organización están orientados a la mejora de las actividades. Mejoras incrementales e innovadoras de los procesos que mediante métricas son identificadas, evaluadas y puestas en práctica. Generalmente las empresas realizan simultáneamente los niveles 4 y 5.

Page 48: Calidad en el desarrollo del software

CMMI 1

Nivel donde están todas las empresas que no tienen procesos. Los presupuestos se disparan, no es posible entregar el proyecto en

fechas, sobre esfuerzos del personal para terminar un proyecto. No hay control sobre el estado del proyecto. Si no sabes el tamaño del proyecto y no sabes cuanto llevas hecho,

nunca sabrás cuando vas a terminar.

Page 49: Calidad en el desarrollo del software

CMMI 2

El éxito de los resultados obtenidos se pueden repetir. La principal diferencia entre este nivel y el anterior es que el proyecto es gestionado y controlado durante el desarrollo del mismo. 

Los procesos que hay que implantar para alcanzar este nivel son: Gestión de requisitos. Planificación de proyectos. Seguimiento y control de proyectos. Gestión de proveedores. Aseguramiento de la calidad. Gestión de la configuración.

Page 50: Calidad en el desarrollo del software

CMMI 3

Significa que la forma de desarrollar proyectos (gestión e ingeniería) esta definida, es decir, esta establecida, documentada y tiene métricas para la consecución de objetivos concretos.

Los procesos que hay que implantar para alcanzar este nivel son: Desarrollo de requisitos. Solución Técnica. Integración del producto. Verificación. Validación. Desarrollo y mejora de los procesos de la organización. Definición de los procesos de la organización. Planificación de la formación. Gestión de riesgos. Análisis y resolución de toma de decisiones.

Page 51: Calidad en el desarrollo del software

CMMI 4

Los proyectos usan objetivos medibles para alcanzar las necesidades de los clientes y la organización. Se usan métricas para gestionar la organización.

Los procesos que hay que implantar para alcanzar este nivel son: Gestión cuantitativa de proyectos. Mejora de los procesos de la organización.

Page 52: Calidad en el desarrollo del software

CMMI 5

Los procesos de los proyectos y de la organización están orientados a la mejora de las actividades. Mejoras incrementales e innovadoras de los procesos que mediante métricas son identificadas, evaluadas y puestas en práctica.

Los procesos que hay que implantar para alcanzar este nivel son: Innovación organizacional. Análisis y resolución de las causas.

Normalmente las empresas que intentan alcanzar los niveles 4 y 5 lo realizan simultáneamente ya que están muy relacionados.

Page 53: Calidad en el desarrollo del software

Áreas de proceso

Page 54: Calidad en el desarrollo del software

¿En que ayuda?

¿Para que necesito CMMI si no es certificable? escrito por Tecuser, Diciembre 05, 2008:1) El propio beneficio económico que implica. Evitar redundancia en la generación de código, capturar los requerimientos en tiempo y forma, clasificarlos, no quedar pagando con los clientes, etc. 

2) Es posible que tengas un cliente que te exija un determinado nivel de madurez para habilitarte como proveedor. Será el cliente el que te certifique para si mismo. En este caso, para evitar malas experiencias conviene comenzar a implementar buenas prácticas y hacerlas evaluar. Si logras un buen resultado es posible que tu cliente te acepte luego cuando haga las auditorías respectivas. Muchos clientes AAA hacen este tipo de verificaciones antes de aceptarte. 

Page 55: Calidad en el desarrollo del software

Estadísticas de éxito

Reducir Costos en un 20% en promedio. Reducir Tiempos en un 37% en promedio. Aumentar productividad en un 62% en promedio. Calidad en un 50% en promedio. Satisfacción del Cliente en un 14% en promedio.

Page 56: Calidad en el desarrollo del software

¿Quiénes Valoran en Colombia?

Partners SEI en Colombia: European Software Institute Instituto Tecnologico Metropolitano It Era S.A. de C.V. MS SPI Solutions Procesix Colombia Ltda. Procesix Inc. SEONTI S.A. de C.V.

Page 57: Calidad en el desarrollo del software

Agenda

¿Qué es calidad del software? ISO 8402 ISO 9000/9001 ISO / IEC TR 15504 CMMI Bibliografía

Page 58: Calidad en el desarrollo del software

Bibliografía

http://www.sei.cmu.edu/partners/directory/organization/PartnerSearchResults.cfm http://www.acis.org.co/fileadmin/Conferencias/IntroduccionCMMI_CarlosMendez.pdf http://slprog.wikispaces.com/EmpresasCMMI http://it-institute.org/index.php?

option=com_content&task=view&id=164&Itemid=64 http://www.ingenierosoftware.com/calidad/cmm-cmmi.php http://www.navegapolis.net/files/articulos/sinopsis_cmm.pdf An Introduction to International Standard ISO/IEC 12207 Software Life Cycle

Processes. R. Singh, FAA, Washington DC, April 1999. A Comparison of IEEE/EIA 12207, ISO/IEC 12207, J-STD-016 and MIL-STD-498 for

acquirers and developers. L. Gray, Ph.D. Abelia Corporation.

Page 59: Calidad en el desarrollo del software
Page 60: Calidad en el desarrollo del software

Gracias