Universidad Autónoma de Zacatecas Unidad Académica de Ingeniería Eléctrica “Una probada a la Calidad de Software” Ingeniería de Software 7to Semestre Grupo “A” Andrea Barragán González 19/09/2021 Calidad de Software Dra. María de León Sigg Cualquiera puede involucrarse en el desarrollo de software, sin embargo, un ingeniero de software debe cumplir con las habilidades más altas en el campo. Y debido a que, somos humanos que cometemos errores, se necesita de una manera que brinde control sobre la calidad de los productos que podemos proporcionar. Aunque, ¿qué es realmente la calidad?, y precisamente, ¿qué es la calidad de software? Para comprender qué es la calidad de software debemos estar conscientes de que calidad es un concepto diferente para el consumidor tanto como para la empresa; cada uno tiene diferentes puntos de vista, es ahí donde entran las vistas de calidad: 1. Usuario final 2. Cliente 3. Proveedor de bienes 4. Proveedor de servicios 5. Gobierno 6. Industria1. Comprender que para un usuario final la calidad significa poseer de un producto que funcione y tenga cierta tolerancia a fallos, nos habla acerca de sus expectativas. Así como, para un cliente (usuario de un servicio) su vista de calidad se enfoca en que exista un buen desempeño. Cada uno de estos, considera diferentes aptitudes al hablar de calidad. Por lo que es crucial conocer cada una de las vistas, esto, para poder definir la calidad de un producto. Por otro lado, se deben considerar las características inherentes que presente un producto, es decir, aquellas aptitudes que son necesarias para el funcionamiento y por lo tanto son permanentes. Dentro de los atributos de los componentes del producto, se deben conocer las dimensiones de calidad, ya que, para crear algo de calidad, se deben cumplir con cuatro aspectos importantes: 1. Especificaciones 2. Diseño 3. Desarrollo 4. Conformidad2. Es crucial que las especificaciones estén correctamente definidas, para que podamos comprender qué es lo que se debe atender exactamente (es por eso que existen documentos, como el SRS). Por delante está el diseño, que se encarga de que el producto esté diseñado correctamente (además que, si las especificaciones están mal, estas nos llevarán a un diseño inadecuado). Tras diseñar nos encaminamos al desarrollo que se enfoca meramente en un buen desarrollo del producto. Y finalizamos con la conformidad, que se lleven un buen control de calidad y que se cumplan con ciertas características medibles (del fabricante) que puedan ser comprendidas por el cliente. Ambas, vistas de calidad y dimensiones de calidad, impactan la definición de calidad pues sitúan las bases de lo que significa calidad para todos los lados involucrados, y, se deja en claro qué fases son requeridas para llevar un producto a la mayor calidad posible. En calidad de software, es necesario cumplir con las expectativas de un usuario (vistas), y con requerimientos especificados al sistema, los cuales necesitan de dimensiones de calidad. Así que, la calidad se define como “el grado en el cual un conjunto de características inherentes satisface requerimientos” (ISO 9000). Y hablando de calidad de software, se conoce como el grado de desempeño de un sistema, el cual cumple con requerimientos especificados y las necesidades o expectativas del cliente o usuario, durante el ciclo de vida. 1 de Leon, M. (2021). Calidad [Diapositivas]. https://docs.google.com/presentation/d/1ewhLG3Ii1EldIznlWMHlNPrI08QQ__E91O6nLp0A7Y/edit#slide=id.g94c795b5d5_2_81 2 de Leon, M. (2021). Dimensiones de calidad del Software [Diapositivas]. https://docs.google.com/presentation/d/1V53UWsPj1hoUIA1e7IoycVMDpfjvz7jH3T4QdbtBJc/edit#slide=id.g965c36b9ce_1_0 Aunque, al considerar que los productos están desarrollados por humanos, necesitamos considerar la confiabilidad, pues esta es aquella que se les proporcionará a los clientes. A pesar de que un proyecto posea defectos, se pueden definir condiciones específicas bajos las que este funcione en su ciclo de vida, por lo tanto, cumplirá con una calidad definida por ciertos atributos. Con el paso del tiempo el concepto de calidad ha evolucionado: El hombre primitivo, buscó mejorar las herramientas que utilizaba, 2680 A.C. en Egipto, ya no aceptaban cualquier papiro, comenzaron a implementar los estándares, 429 A.C. en Babilonia, se adquiría de otro estado por lo que exigían productos de calidad, en el Siglo XVIII estaban de acuerdo que si querían producir en masa, todos los productos debían tener la misma calidad, en 1924 se crean los departamentos de aseguramiento de calidad, después de la segunda guerra mundial, la infraestructura económica japonesa quedó destruida, así que, para demostrar que podían competir, durante los años 50’s empezaron a separar los productos buenos de los malos, en los años 70’s se le empezó a dar prioridad a la calidad, para los años 80’s ISO y la definición de calidad cobraron mucha fuerza, finalmente en los años 90’s nace Seis-Sigma, empezando a hablar de los procesos1. Es aquí donde destacamos la importancia los gurús de calidad. Tales como: W. E. Deming, estándares de calidad. Trabajó para manejar procesos, tales como los que se siguen en software. Philip Crosby, concepto drf (doing right at the first time). Si un equipo de software pone énfasis en la calidad de fases, reduce costos, etc. Shigeo Shigo, su filosofía era hacer el cambio más rápido en un minuto, sistema push y pull, y método kaizen; mejora continuamente; clasificación, orden, limpieza, disciplina, etc. Push es “voy creando, aunque no use” y pull es llevar orden, “te lo pido y aquí no se desperdicia.” Kaoru Ishikawa, todos los miembros de una organización son responsables por la calidad. Identificar problemas, buscar soluciones, ejecutarlas y valorar el desempeño. Diagrama Ishikawa, identifica inserción de errores, identifica las causas y previene. Pero eso no es todo, pues existen determinantes de la evolución del concepto de calidad: como la Inspección (verificación, donde entran herramientas como “go/no-go”, en la cual los participantes responden a ciertos estímulos [go] y a otros estímulos no lo hacen [no-go], la principal medida es la tasa de error de la comisión, menos errores significan una mejor inhibición de la respuesta3), la Competitividad (de hacer que la calidad, el diseño y esta misma vayan de la mano, las tres se complementan para crear un producto mejor) y el Aseguramiento de Calidad. Expandiéndonos respecto al Aseguramiento de Calidad, que se refiere a la inspección, las pruebas y los estándares de diseño; que, son medios planeados y sistemáticos para asegurar que en la administración se aplican estándares, prácticas, procedimientos y métodos del proceso. Existen diferentes técnicas y actividades para ayudarnos a asegurarla, tales como: las técnicas de monitoreo, la retroalimentación para prevenir la inserción de defectos, la matriz de riesgos, etc. Aunque el uso de estas depende del producto y del modelo de negocio que maneje este, ya que existen diferentes consideraciones para cada caso, pues se tienen en cuenta los factores críticos genéricos; como que el costo de arreglar defectos varía entre diferentes productos de software, los usuarios quieren o necesitan cosas diferentes, los tamaños de los proyectos son diferentes, las regulaciones son distintas, entre otras cosas. 3 Go-No Go Task. Science of Behavior Change. https://scienceofbehaviorchange.org/measures/go-no-go-task/ Finalmente, el modelo de calidad que me define a mí como ingeniera de software, es el designado por la IEEE pues este tiene en consideración componentes como: eficiencia, usabilidad, portabilidad, funcionalidad, fiabilidad y compatibilidad4. Me interesa que es posible medir estos factores y, considero que cada uno es crucial en la calidad de un proyecto de software; al igual que el uso de estándares, son factores muy importantes. Además, para poder nombrarme ingeniera de software, debo ser capaz de tener las habilidades para: administrar la calidad de software (incluyendo la mejora continua, herramientas, planes, etc.), hacer revisiones (como inspección, realizando pruebas para verificar la calidad), ser capaz de realizar auditorías (que se refiere a la examinación de un programa de software) y llevar un control estadístico. Para concluir, es notable destacar que la calidad no es un término que se pueda tomar a la ligera, requiere de distintos puntos de vista y dimensiones que nos ayuden a comprender cómo esta funciona para nosotros, así como para terceros. Si no comprendemos de dónde viene su historia, no podremos situarnos en la posición que la calidad representa hoy en día. Es importante incluir métodos y técnicas de otras industrias, en la calidad de software, pues al ser relativamente nuevos en esto (alrededor de 50 años), tenemos la necesidad de avanzar tan rápido como nos sea posible, hablando de los ingenieros de software. 4 Software Quality Models. (2020). ProfessionalQA. https://www.professionalqa.com/comparison-qualitymodels