Calidad y El Software

69
CALIDAD Y EL SOFTWARE

description

calidad y el sofware

Transcript of Calidad y El Software

Name of presentation

CALIDAD Y EL SOFTWAREINTRODUCCIONLas computadoras estn siendo usadas en una amplia y creciente variedad de reas de aplicacin y su operacin correcta es a menudo crtica para el xito de los negocios y la seguridad humana

Hoy en da programas altamente complejos controlan aspectos fundamentales de nuestras vidas , desde cuestiones mnimas como el funcionamiento de nuestro telfono mvil hasta situaciones esenciales, como las constantes de un enfermo.2Desarrollar o seleccionar productos de software de alta calidad es por lo tanto un asunto de primera importancia.

No debe hacerse distincin entre construir un programa y cualquier otro bien de consumo.

INTRODUCCION1-Parece claro que todas las aplicaciones que pueden tener el software deben ser productos de alta calidad: fciles de usar, confiables y seguros tan rpidos como necesite el cliente, baratos en relacin con sus prestaciones, flexibles y fciles de mantener y modificar.2Sin embargo la realidad nos muestra que estamos acostumbrados a buscar certificado de calidad cuando adquirimos, por ejemplo, una lavadora, pero por otro lado, aceptamos que muchas aplicaciones que usamos no cumplan con mnimos requisitos de calidad exigibles a cualquier otra mercanca.

3Existen estudios y estadsticas que representan con claridad la problemtica del desarrollo de software:Slo el 51% de los proyectos de software tienen xitoStandish Group, CHAOS ReportINTRODUCCION Otro de los conceptos que se maneja es el de Ingeniera del Software que incluye una serie de principios, metodologas, tcnicas y herramientas para el desarrollo de software.El objetivo primordial de la ingeniera de software es producir un sistema, aplicacin o producto de software de alta calidad

4CONCEPTOS BASICOS DE CALIDAD

La Calidad no siempre es gratuita, pero siempre es ms barata que la alternativa.

5Las cinco vistas principales segn Kitchenham y Pfleeger son:

En la vista trascendental, calidad es difcil de definir o describir en trminos abstractos, pero puede ser reconocido si est presente.

En la vista del usuario, la calidad es la idoneidad para un propsito o las necesidades del usuario.

CONCEPTOS BASICOS DE CALIDAD

Software Quality engineeringA continuacin examinaremos las diferentes opiniones de calidad en forma sistemtica, basada en los distintos roles, responsabilidades y expectativas de calidad de diferentes personas.

Trascendental, usuario, fabricacin, producto y vistas basadas en el valor.

6En la vista de producto, el enfoque es sobre caractersticas inherentes en el propio producto, se controlan estos indicadores de calidad interna (o tambin llamado mtricas internas) con la esperanza de obtener un mejor comportamiento externo en el producto (calidad en uso).

CONCEPTOS BASICOS DE CALIDAD

En la vista de la fabricacin, calidad significa conformidad para procesar las normas.

En la vista basada en el valor, la calidad es la disposicin de los clientes a pagar por un producto/servicio/software.

CONCEPTOS BASICOS DE CALIDAD

Veamos otras definiciones planteadas por instituciones reconocidas:

Propiedad o conjunto de propiedades inherentes a un objeto que permiten apreciarlo como mejor, igual o peor que otros objetos de su especie [DRAE: Diccionario de la Real Acadmica Espaola]

CONCEPTOS BASICOS DE CALIDAD

calidad de los productos puede medirse como una comparacin de sus caractersticas y atributos. Una de las formas de realizar una medida de calidad es observar las diferencias ocurridas en la produccin de dos productos iguales.

Estas diferencias tienen diversos orgenes y, por tanto, distintas y amplias formas de corregirlos9Calidad suele significar el conjunto de las cualidades

Es la totalidad de las caractersticas de una entidad que dan soporte a su capacidad de satisfacer necesidades manifiestas e implcitas [ISO 8402:1994]

CONCEPTOS BASICOS DE CALIDAD

Cuando se dice que un caballo es de buena calidad, se da a entender que posee todas las cualidades que constituyen el caballo bueno. Por esta esta razn llamamos calidad y no cualidad."

La identidad en nuestro caso es un producto de software.

10Origen y Conceptos

En los aos 50, el software comenz a encontrar su camino dentro de los sistemas del DoD (del ingls Deparment of Defense of USA). Usualmente estos proyectos estaban muy alejados de la planificacin, se pasaban del presupuesto y tenan muchos problemas tcnicos. Origen

Para intentar resolver este problema se estableci la Verificacin y Validacin Independientes (IV&V del ingls Independent Verification and Validation)Origen

Luego durante los aos 70 la actividad de desarrollo de software comenz a expandirse y las compaas de desarrollo de software fueron experimentando los mismos pobres resultados que las agencias gubernamentales (DoD, NASA etc.) en las dcadas tempranas. Origen

Varios proyectos desarrollados entre 1980 y 1990 fueron desastrosos, muchos excedan ampliamente el presupuesto y la planificacin o entregaban software de baja calidad .

Durante los 80 esta experiencia se convirti en lo que conocemos como crisis del software.

Origen

Mientras SQA era visto como un pequeo paso dentro del proceso del desarrollo del software, muchos jefes de proyectos vieron beneficios cuantificables a partir de integrar SQA dentro del proceso de desarrollo de software. Origen

CALIDAD DE SOFTWAREHablamos todo el tiempo de problemas relacionados con la calidad del software pero no tenemos una definicin precisa de lo que sta significaCALIDAD DE SOFTWARE

Sin una definicin clara, concisa y medible de lo que es la calidad del software, no podemos tomar buenas decisiones de negocio respecto del uso de los recursos.

CALIDAD DE SOFTWARE

Roger Pressman :

El cumplimiento de los requerimientos funcionales y de performance explcitamente definidos, de los estndares de desarrollo explcitamente documentados y de las caractersticas implcitas esperadas del desarrollo de software profesional. CALIDAD DE SOFTWARE

Watts Humphrey dice: El foco principal de cualquier definicin de calidad de software debera ser las necesidades del cliente. Crosby al igual que Pressman define la calidad como conformidad con los requerimientos. Mientras uno puede discutir la diferencia entre requerimientos, necesidades y deseos, la definicin de calidad debe considerar la perspectiva de los usuarios. Entonces las preguntas claves son Quines son los usuarios?, Qu es importante para ellos? Y Cmo sus prioridades se relacionan con la manera en que se construye, empaqueta y se da soporte al producto? CALIDAD DE SOFTWARE

PRINCIPIOS DE CALIDADWatts Humphrey, considerado padre de la calidad de los procesos de software, public los 6 principios bsicos de la calidad del software, los cuales son: Principio 1. Si un cliente no demanda calidad, probablemente no la conseguir.Principio 2. Para obtener calidad de manera constante, los desarrolladores deben gestionarla en su trabajo. Principio 3. Para gestionar la calidad, los desarrolladores deben medirla.

CALIDAD DE SOFTWAREPRINCIPIOS DE CALIDADPrincipio 4. La calidad de un producto la determina el proceso usado para desarrollarlo. Principio 5. Ya que las pruebas solucionan solo una fraccin de los defectos, debes tener pruebas de calidad.Principio 6. La calidad solo la producen profesionales motivados orgullosos de su trabajo.

CALIDAD DE SOFTWAREAl Davis define calidad del software como: La calidad no se trata de tener cero defectos o una mejora medible de la proporcin de defectos, no se trata de tener los requerimientos documentados. No es ms ni menos que satisfacer las necesidades del cliente (por ms que las necesidades estn o no correctamente documentadas)

CALIDAD DE SOFTWARE

Glosario de la IEEE CALIDAD DE SOFTWAREEl grado con el cual un sistema, componente o proceso cumple con los requerimientos y con las necesidades y expectativas del usuario.Finalmente, desde estas dos perspectivas el glosario de la IEEE para la ingeniera de software define la calidad del software como:

Ms all de cmo definamos la calidad del software, para que la definicin tenga sentido esta debe ser medible. Para poder controlar la calidad del software es necesario, ante todo, definir los parmetros, indicadores o criterios de medicin como son el Tiempo de respuesta, Tiempo Lmite, Tiempo de respuesta, etc ; ya que, como bien plantea Tom De Marco, "no se puede controlar lo que no se puede medir.

25ASEGURAMIENTO DE CALIDAD DE SOFTWARE Y TECNICAS ASOCIADAS

ASEGURAMIENTO DE CALIDAD DE SOFTWARELas actividades para la garanta de calidad (QA) garantizan que pocos, o ningn defecto en el sistema de software exista cuando se entregue a sus clientes o se lance al mercado

Adems, queremos asegurarnos de que estos defectos restantes causarn daos o interrupciones mnimas.27

Clasificacin de actividades de acuerdo a los defectosExisten actividades de control de calidad como intentar prevenir, eliminar, reducir o contener diversos problemas especficos de acuerdo a los defectos. Podemos clasificar estas alternativas de control de calidad en tres categoras genricas:Prevencin de defectos a travs bloqueo de error o remocin de la fuente del errorReduccin de defectos a travs de deteccin y remocin de fallasContencin de defectos a travs de prevencin y contencin de fallas :

Prevencin de defectos a travs bloqueo de error o remocin de la fuente del errorEliminar fuentes de error, tales como ambigedades y errores de conceptualizacin que son la raz de los errores.Prevencin o bloqueo de fallas. Este grupo de tcnicas rompe la relacin entre las fuentes de errores y fallas a travs del uso de herramientas, tecnologas y la aplicacin de ciertas normas de proceso y producto.

Clasificacin de actividades de acuerdo a los defectos

Reduccin de defectos a travs de deteccin y remocin de fallasInspeccin, deteccin y remocin directa de fallas del cdigo del software, diseo, etc.Pruebas para remover fallas, basadas en observacin durante la ejecucin del programa

Clasificacin de actividades de acuerdo a los defectos

Contencin de defectos a travs de prevencin y contencin de fallas : Algunas alternativas de control de calidad, tales como el uso de tcnicas de tolerancia a fallos.Una extensin relacionada con tolerancia a fallos son las medidas de contencin para evitar consecuencias catastrficas, como la muerte, lesiones personales, daos a la propiedad o daos ambientales, en caso de fallas.Clasificacin de actividades de acuerdo a los defectos

Tratar con defectos al post y pre lanzamientoLas fallas restantes en el producto terminado son comnmente llamadas defectos dormidos, estos pueden estar dormidos por algn tiempo, pero tienen el potencial de causar problemas a los usuarios del producto, situacin que se debe minimizar o evitar.

Despus del lanzamiento del producto, las fallas observadas y problemas reportados por los clientes y usuarios tambin necesitan ser solucionados.

Por otra parte las actividades de contencin de defectos tienen por objetivo minimizar el impacto negativo de estas fallas remanentes durante las operaciones de uso despus del lanzamiento del producto.Tratar con defectos al post y pre lanzamiento

Representacin grafica

La figura tambin muestra la relacin entre las actividades de Aseguramiento de Calidad y los errores relacionados a travs de algunos ejemplos:Algunos errores conceptuales teles como e6 son directamente removidos por las actividades de remocin de erroresOtras acciones incorrectas o errores, tales fuentes de error provocados por la fuente e3 y e5 son bloqueados.Clasificacin de actividades de acuerdo a los defectos-tales como una mejor educacin para corregir especficos errores de conceptualizacin.-Si una fuente de error puede ser bloqueado consistentemente como e5, esto es equivalente a removerlo. Por otra parte, si una fuente de error es bloqueado algunas veces, como e3, tcnicas de prevencin adicionales o alternativas deben usarse, similar a la situacin para otras fuentes de error como e1, e2 y e4, donde las fallas pueden ingresar al sistema debido a estas fuentes de error.

35Siguen otras fallas como f2, son bloqueadas a travs de tolerancia a fallas por algunas instancias de ejecucin. Entre las instancias de error, las estrategias de contencin podran ser aplicadas para aquellos con consecuencias graves. Clasificacin de actividades de acuerdo a los defectos-Sin embargo usualmente las tcnicas de tolerancia a fallas no identifican ni solucionan los errores que lo provocaron. Por lo tanto estas fallas podran seguir ocasionando fallas operacionales bajo diferentes ambientes, tales como f2 ocasionando x2.-. Por ejemplo, x1 es una de ellas, donde la contencin de fallas es aplicada a este, mostrado como un crculo punteado alrededor.36Educacin y formacinLa educacin y formacin proporcionan soluciones basadas en el personal para la eliminacin de origen del error.

Educacin y formacin de profesionales de software pueden ayudarles a controlar, administrar y mejorar su forma de trabajar.

-Se ha observador que los profesionales de software son el factor ms importante que determina la calidad y, en ltima instancia, el xito o el fracaso de la mayora de los proyectos de software-La eliminacin de los errores humanos ayudar a impedir que ciertos tipos de errores ingresen en el producto de software37Conocimiento de producto y el dominio especificoPor ejemplo, los desarrolladores familiarizados con software integrado pueden disear software sin tener en cuenta sus limitaciones ambientales, provocando a diversos problemas de la interfaz y la interaccin entre el software y su entorno fsico.Educacin y formacin

Si las personas involucradas no estn familiarizadas con el dominio de aplicacin o tipo de producto, hay una buena posibilidad de que se apliquen mal las soluciones38Conocimiento en el desarrollo de software y experienciaPor ejemplo, la falta de experiencia con la especificacin de anlisis y requisitos de producto generalmente conduce a muchos problemas y afectan en posterior diseo, codificacin y pruebas de actividades.Educacin y formacin

desempea un papel importante en el desarrollo de productos de software de alta calidad. 39Conocimientos sobre metodologa, tecnologa y herramientas de desarrollo Por ejemplo, en una implementacin de la tecnologa de contorsionista (Mills et al., 1987b), si los desarrolladores no estn familiarizados con los componentes clave de verificacin formal o pruebas estadsticas, hay pocas posibilidades para la produccin de productos de alta calidad.

Educacin y formacin

tambin desempea un papel importante en el desarrollo de productos de software de alta calidad.40Conocimiento del proceso de desarrolloPor ejemplo, si las personas involucradas en el desarrollo de software incremental no saben cmo encajan los esfuerzos de desarrollo individuales para los diferentes incrementos puede llevar a muchos problemas de interfaz o interaccin.

Educacin y formacin

. Si el personal de proyectos no tienen un buen conocimiento del proceso de desarrollo, es poco probable que el proceso pueda aplicarse correctamente. 41Mtodo formalLos Mtodos formales proporcionan una forma para eliminar ciertas fuentes de error y para comprobar la ausencia de fallos relacionados. Los mtodos de desarrollo formal, incluyen la especificacin formal y verificacin formal.

Mtodo formalEl mtodo oficial ms antiguo y ms influyente es el enfoque axiomtico. En este enfoque, el "significado" de un elemento de programa o la interpretacin formal de los efectos de su ejecucin se resumieron en un axioma. Reglas y axiomas adicionales se usan para conectar diferentes piezas.

Un conjunto de condiciones formales que describe el estado del programa antes de su ejecucin llamado pre condiciones y el conjunto despus de la ejecucin del programa llamados pos condiciones. Este mtodo comprueba que un determinado programa satisfacen las precondiciones y postcondiciones43Otras tcnicas de verificacin formal influyentes incluyen la transformacin de predicados basado en ideas de condicin ms dbiles (Dijkstra, 1975; Gries, 1987), y clculo de programa o enfoque funcional basado en funciones matemticas y ejecuciones simblicas (Mills et al, 1987a)Mtodo formal

Las ideas bsicas son similares al enfoque axiomtico, pero los procedimientos de pruebas son algo diferentes.44Tambin existen tcnicas semiformales , Por ejemplo, las tcnicas de control de modelo estn ganando popularidad en la comunidad de investigacin de ingeniera de software (Ghezzi et al., 2003). Mtodo formal

Varios mtodos semiformales basados en formularios o tablas, como (Parnas y Madey, 1995), en lugar de lgica formal o funciones matemticas, han encontrado tambin aplicaciones importantes.45Hasta ahora, el mayor obstculo para los mtodos formales es el alto costo asociado con la difcil tarea de llevar a cabo correctamente estas actividades humanas intensivas sin suficiente apoyo automatizado. Mtodo formal

Este hecho tambin explica, en un grado, la creciente popularidad de alcance limitado y enfoques semiformales.46OTRAS TECNICAS DE PREVENCION DEFECTOSUn proceso bien gestionado tambin puede eliminar muchos problemas. Por ejemplo, no tener un proceso definido o no siguindolo para la gestin de la configuracin del sistema puede dar lugar a incoherencias o problemas de interfaz entre los diferentes componentes de software. OTRAS TECNICAS DE PREVENCION DEFECTOSA veces, las herramientas de software especficas tambin pueden ayudar a reducir las posibilidades de que las inyecciones de falla. Por ejemplo, un editor dirigido para la sintaxis que equilibra automticamente cada parntesis de apertura, "{", con un parntesis de cierre "}", puede ayudar a reducir los problemas sintcticos en los programas escritos en el lenguaje C.

48REDUCCION DE FALLASPara la mayora de los sistemas grandes de software en uso hoy en da, es poco realista esperar que las actividades de prevencin de defectos sea 100% efectiva en la prevencin de las inserciones de falla accidentales. Por lo tanto, necesitamos tcnicas efectivas para eliminar la mayor cantidad de fallas inyectadas como sea posible bajo las restricciones del proyecto.

49INSPECCIN: DETECCIN DE REMOCIN DIRECTA DE FALLOSInspecciones de software son exmenes crticos de software por parte de inspectores humanos destinados a descubrir y corregir fallas en los sistemas de software. La inspeccin es una alternativa de control de calidad conocida, familiar para la mayora de profesionales con experiencia de calidad de software. La obra ms antigua y de mayor influencia en la inspeccin de software es la inspeccin Fagan (Fagan, 1976).PRUEBAS: OBSERVACIN Y REMOCIN DE FALLASLas pruebas son una de las partes ms importantes de QA y la actividad de control de calidad ms comnmente utilizada. Las pruebas consisten en la ejecucin de software y la observacin del comportamiento del programa o el resultado. Si se observa un fracaso, se analiza el registro de ejecucin de localizar y corregir el fallo que lo causo. Actividades de pruebas individuales y tcnicas se pueden clasificar utilizando diversos criterios y se examinaron en consecuencia, como se discute a continuacin.

CUNDO REALIZAR LAS PRUEBAS Y DETECTAR LOS FALLOS RELACIONADOS?

Dado que las pruebas es una actividad de control de calidad basado en ejecucin, un requisito previo para la prueba real es la existencia de las implementadas unidades de software, componentes, o sistema para ser probado, aunque la preparacin para la prueba puede llevarse a cabo en las fases anteriores de desarrollo de software.Si se utilizan prototipos de software, como por ejemplo en el proceso de espiral, o si un sistema de software es desarrollado mediante un proceso incremental o iterativo, la prueba general puede conseguir comenzado mucho antes.

QUE PROBAR, Y QU TIPO DE FALLOS ENCONTRAMOS?Prueba de la caja negra o funcional verifica el correcto manejo de las funciones externas proporcionadas por el software, o si el comportamiento observado se ajusta a las expectativas del usuario o las especificaciones del producto. Caja blanca (o estructural), prueba que verifica la correcta implementacin de las unidades internas, las estructuras y las relaciones entre ellos. Varias tcnicas pueden ser utilizadas para construir modelos y generar casos de prueba para llevar a cabo pruebas de caja negra o de caja blanca.

OTRAS TCNICAS E IDENTIFICACIN DE RIESGOSLa inspeccin es de las tcnicas estticas ms utilizadas para la deteccin de defectos y su remocin. Varias otras tcnicas estticas estn disponibles, incluyendo diversos modelo formales basados en los anlisis como el anlisis de algoritmos, anlisis de tabla de decisiones, anlisis de valores en los lmites, la mquina de estados finitos y modelado Petri-net, el control anlisis de flujo de datos, rboles de fallos de software, etc. Regla de 80:20

CONTENCION DE FALLASDebido al gran tamao y alta complejidad de la mayora de los sistemas de software en uso hoy en da, las actividades de reduccin de defectos anteriores slo pueden reducir el nmero de fallos a un nivel bastante bajo, pero no eliminarlos por completo. Para los sistemas de software donde el impacto fracaso es sustancial, como muchos sub-sistemas de software de control en tiempo real de medicina, nuclear, transporte y otros sistemas integrados, este bajo nivel de defectos y riesgos todava pueden ser inadecuados. Se necesitan algunas alternativas de control de calidad adicionales.

SOFTWARE TOLERANTE A FALLOSLos bloques de recuperacin utilizan ejecuciones repetidas (o redundancia en el tiempo) como un mecanismo bsico de tolerancia a fallos. Si se detectan fallos en algunas reas locales, una parte de la ltima ejecucin se repite, con la esperanza de que esta ejecucin repetida no dar lugar a la misma falla. Por lo tanto, las fallas locales no se propagarn, aunque podra involucrar algunos retrasos.NVP utiliza redundancia en paralelo, donde N copias, cada una de una versin diferente, de los programas cumpliendo las mismas funciones se estn ejecutando en paralelo. El algoritmo de decisin en NVP se asegura de que las fallas locales en un nmero limitado de estas versiones paralelas no ponga en peligro los resultados de ejecucin global.Un hecho a destacar es que en la mayora de las tcnicas de tolerancia a fallos, los errores no se identifican tpicamente, por lo tanto, no se elimina, pero son tolerados

56QA Y CONTENCION DE FALLASLa eliminacin de peligros a travs de la sustitucin, la simplificacin, la disociacin, la eliminacin de errores humanos especficos, y la reduccin de los materiales o condiciones peligrosas. Reduccin del peligro a travs del diseo para la capacidad de control (por ejemplo, la liberacin automtica de la presin en las calderas),

Control de riesgos a travs de la reduccin de la exposicin, el aislamiento y la contencin (por ejemplo, las barreras entre el sistema y el medio ambiente), Control de daos a travs de las vas de evacuacin, el abandono seguro de los productos y materiales, y los dispositivos para limitar los datos fsicos al equipo y personal.QA Y CONTENCION DE FALLAS

OBSERVACIONES FINALES QALa prevencin de defectos a travs de eliminacin de fuentes de error y actividades error de bloqueo, como la educacin y la formacin, la especificacin formal y verificacin, y la seleccin y aplicacin de tecnologas apropiadas, herramientas, procesos o normas. Reduccin de defectos a travs de la inspeccin, pruebas y otros anlisis estticos o actividades que detectan y eliminan los fallos de software. Como una de las alternativas ms importantes y ampliamente usadas, Defectos de contencin a travs de la tolerancia a fallos, la prevencin o minimizacin de impacto, para garantizar la fiabilidad y seguridad del software.

An escptico?Si aun, despus de haberte mostrado lo que es calidad de software ,dudas de su importancia dentro del desarrollo de software espero que con las siguientes diapositivas quedes completamente convencido.60Algunos hechos para considerar el importante papel que juega la Calidad dentro del desarrollo de Software:

28 de julio 1962 Mariner I.Un error en el software de la sonda Mariner I hace que el cohete se desve de su trayectoria cayendo sobre el Ocano Atlntico.

Una serie de acciones de espionaje por parte de la CIA para controlar el gaseoducto transiberiano acabo instalando un bug que provoc la mayor explosin no nuclear de la historia.

04 de junio 1996 Ariane 5 Vuelo 501 ,explot por un defecto en el software de control internoantes de que pasara un minuto de vuelo.Este ingenio que cost 10 aos y 7.000 millones de euros desarrollar,explot por un defecto en el software de control internoantes de que pasara un minuto de vuelo.63

1985-1987 Acelerador mdico Therac 25.Un error en el tratamiento de radiacin del dispositivo proporcion dosis letales de radiacin en varios centros mdicos. Cinco personas murieron y muchas otras se vieron afectadas.

65CONCLUSIONESLa situacin actual de la industria mundial de desarrollo de software y mantenimiento de software requiere implementar normas de calidad que permitan mejorar los procesos de todas las reas de la empresa.CONCLUSIONES

, con el fin de que estos procesos sirvan de gua durante la gestin del negocio, gestin de procesos y el proceso de creacin de software y se logre que el producto final de este desarrollo sea un producto de calidad.67La prioridad actual de estas organizaciones no debe centrarse nicamente de un producto terminado. Debe medirse a los largo de todos los procesos que se llevan a cabo en una empresa que desarrolla software.CONCLUSIONES

Enfocarse en cada uno de los procesos implica aplicar las mejores prcticas en gestin e ingeniera de software para alcanzar una evolucin hacia la cultura de excelencia.68