EL SOFTWARE COMO PRODUCTO OBJETO DE LA CALIDAD

El Software como un Producto

Importancia del QA de Software

El Software y su valor de uso

Podemos entender como producto de valor "aquello resultado de la ejecución de un proceso de creación cuya finalidad es satisfacer una demanda social y adquirir un valor de uso", este "uso" se percibe como algo real en una expresión material y todos sabemos que un Software no es tangible pero su resultado sí, así que como su resultado es solo una capa más de todo lo que opera detrás podemos decir que si es un producto de valor y por ende se debe garantizar su calidad.
El software es todo lo que ves y usas en una computadora, celular o cualquier dispositivo electrónico, que no es una parte física (como el teclado o la pantalla), sino lo que hace que todo funcione. Es como el cerebro de los dispositivos, pero en forma de programas. Imagina que tienes un microondas. El microondas en sí es el hardware (la parte física).Pero cuando accionas los botones y eliges cuánto tiempo calentar, el proceso es porque un software le dice al microondas qué hacer.
En una computadora, celular o cajero automático, pasa lo mismo. Hay un software que da instrucciones: qué mostrar, qué hacer cuando haces click, cómo guardar datos, etc.
En resumen:
Software = Conjunto de instrucciones/programas/componentes lógicos que que hacen que las computadoras, celulares y otros dispositivos necesarios, puedan la realizar tareas específicas, en contraposición a los componentes físicos que son llamados hardware. Los componente lógicos se traducen en Aplicacionesenfocadas hacia tareas específicas para usuarios, cómo una App de correo; además están los componentes lógicos de Sistemas como un sistema operativo OS,Linux o un motor de base de datos, que permite que funcionen otros programas, un sistema tecnológico en su expresión más general se refiere a los componentes lógicos y fisicos que hacen que un dispositivo funcione para recibir una entrada de información, procersarla y transformarla, cambiándola de acuerdo con el uso del sistema y luego produciendo un resultado , por ende de aquí que a los Software también les denominen "Sistemas".
Otro detalle importante que debo precisar es el origen de la palabra Software: "soft" de blando, "ware" de mercancía, en términos informáticos es el soporte lógico para las operaciones computacionales, así que es la parte blanda que no se ve, solo se usa y necesita una parte material, o sea el hardware, "hard" de duro, y ware de mercancía, en términos informáticos es el soporte físico para las operaciones computacionales.

concepto-software

El software es como una receta que le dice al sistema paso a paso qué tiene que hacer, hace operativo a un dispositivo.
Sin software, los dispositivos no sabrían cómo funcionar. Para hacer un producto de Software, se necesitan crear instrucciones, reglas, procedimientos, documentarlos y se usan datos incluso de los usuarios del mismo producto, además de los niveles de cómputo de código fuente, binario y ejecutable. Estos temas se ampliarán en la lección El Lenguaje de la Máquina.

QA, mandatorio para el Software

La Cruda Realidad: ¿Por Qué Necesitamos un Control Riguroso?Cuando el software se volvió tan crucial y eficiente, para resolver problemas de la vida real, se fue complejizando su desarrollo, porque a una demanda de satisfaccion mayor= solucion mas compleja y los problemas se hicieron más evidentes. Ademas del crecimiento exponencial de la internet y la fabricacion de dispositivos electrónicos para acceder a esta, en especial lo moviles
Sin un control de calidad estricto, los equipos de desarrollo se enfrentaban a un caos:

  • Estimaciones imprecisas:"Creíamos que tardaríamos 3 meses, pero ya vamos por el sexto".
  • Entregas tardías: Incumplimiento de fechas límite con los clientes.
  • Requisitos mal entendidos: "Construimos algo que el cliente no quería ni necesitaba".
  • Dificultad para adaptarse: El mercado cambiaba, pero el software era demasiado rígido para evolucionar.

En resumen:la calidad del producto final dependía directamente de la calidad del proceso usado para crearlo.
Aquí es donde todas las piezas del rompecabezas encajan. Las empresas de software vieron en la Norma ISO 9001:Sistema de Gestión de la Calidad, que era el marco perfecto que necesitaban. Aunque nació en la manufactura, su flexibilidad permitió adaptarla al ciclo de vida del software (definición, diseño, programación, pruebas, etc.). Implementar un sistema basado en ISO 9001 se convirtió en una declaración de principios: "Nos tomamos la calidad en serio". Es la forma de demostrar a los clientes y al mercado que existe un compromiso real con la eficiencia, la fiabilidad y la mejora continua, asegurando que el producto de software no solo funcione, sino que aporte un valor real y duradero.
A partir de la ISO 9001 se adaptó una norma específica donde se reconoce el Software como un producto objecto de la calidad, me refiero a la Norma ISO 25000: Sistema de Gestión de Aseguramiento de Requerimientos y Evaluación de la Calidad de Software , también conocida como SQuaRE (System and Software Quality Requirements and Evaluation), es un estándar crucial que proporciona un marco robusto para evaluar y mejorar la calidad del software y los servicios de tecnologías de la información (TI), asegurando que los productos cumplan con los requisitos y expectativas de los usuarios y clientes. Esta norma, que organiza y unifica diversas series de estándares, se aplica en una amplia variedad de sectores como el desarrollo de software, servicios de TI, la industria financiera, la salud y la educación. Su implementación conlleva beneficios significativos, como garantizar la fiabilidad de los productos, minimizar errores, ahorrar tiempo en los procesos de entrega, unificar objetivos, realizar evaluaciones periódicas y aumentar la satisfacción del cliente, fomentando una mejora continua en la calidad del software.

qa-mandatorio

QA de Software: Responsabilidad Humana

Cuando empezamos en la carrera de QA, se nos empieza a formar el sentido de Responsabilidadcomo aseguradores la calidad de un funcionamiento correcto y eficiente de un software, pero a veces desconocemos impactos severos incluso mortales en la vida real, del QA ineficiente , existen evidencias catastroficas de fallas en los Software que no se previnieron con el QA ni con practicas de Testing en general.
Estos no son solo fallos teóricos; son eventos que costaron fortunas, proyectos e incluso vidas, demostrando por qué el control de calidad no es una opción, sino una necesidad absoluta.
Therac-25 (Años 80):Una máquina de radioterapia, diseñada para tratar pacientes con cáncer, se convirtió en una trampa mortal por un error en el software. Un fallo de programación conocido como "condición de carrera", esto significa que varias partes del programa intentaban acceder al mismo recurso de memoria al mismo tiempo, dicho recurso se llamaba "mutex" o "seáaforo" en inglés asociado al concepto de exclusión mutua en el lenguaje de programación C, aunque no es un error de programación propiamente, si insidía en el diseño del software. Esta condición provocaba un desorden en la memoria, ya que el sistema ejecutaba instrucciones en paralelo, en orden arbitrario y no las instrucciones específicas según cada proceso o tratamiento en particular que se estaba ejecutando, esto conllevó a que la máquina administrara sobredosis masivas de radiación, ya que no se controlaba el flujo de radiación exacto que se entregaba, en lugar de administrar las dosis adecuada por paciente. Al menos seis pacientes recibieron dosis letales. La causa fue una mala reutilización de código de modelos anteriores y la eliminación de los seguros físicos, confiando ciegamente en un software que no fue probado rigurosamente.

therac-25

Explosión del Cohete Ariane 5 (1996) Tan solo 37 segundos después de su primer despegue, el cohete Ariane 5 de la Agencia Espacial Europea se desvió de su trayectoria y se desintegró en pleno vuelo. El fallo no fue mecánico, sino de software. Un módulo de código, reutilizado del antiguo cohete Ariane 4, intentó convertir un número de 64 bits (la velocidad horizontal del cohete) a un entero de 16 bits (los bits son la representacion en codigo binario de 1 y 0 que entienede la computadora). El número era demasiado grande, provocando un desbordamiento que colapsó el sistema de guiado. El costo: más de 370 millones de dólares en satélites de comunicación, convertidos en chatarra espacial.
Pérdida del Mars Climate Orbiter (1999): La NASA perdió su sonda de 125 millones de dólares, que debía estudiar el clima de Marte, por un error increíblemente básico. Un equipo de ingenieros (de Lockheed Martin) usaba el sistema imperial de medidas (libras-fuerza) para calcular el empuje, mientras que el equipo de la NASA usaba el sistema métrico decimal (newtons). El software no realizó la conversión, lo que provocó errores de navegación que hicieron que la sonda se acercara demasiado a Marte y se desintegrara en su atmósfera.

sonda-cohete

Estos casos, junto a muchos otros, dejaron una cicatriz en la industria y una lección imborrable sobre la responsabilidad humana en el desarrollo de software y en el aseguramiento de la calidad de los productos.
Si como tester empiezas a concientizar esto,tu motivación por el aprendizaje tendrá más sentido de pertenencia como una resposabilidad intrinseca para la supervivencia desde aquí ya empiezas a ser responsable de tu propio aprendizaje y entiendes el valor y el importante rol que debes jugar en el desarrollo de software, no solo previendo lo que puede suceder sino también conociendo lo que ya pasó.

QA de Software: Ganancias

Tan importante es hablar de la responsabilidad y las pérdidas ante un QA ineficiente, cómo hablar de las ganancias y el alcance de un QA óptimo, ya que la calidad del software es fundamental para el desarrollo diario de la vida misma, como sabemos casi todo está mediado por sistemas. Un desempeño de QA con eficiencia promueve una cultura organizacional, hace que todos los implicados en el desarrollo del software se sientan comprometidos, ya que las personas terminan asimilando las prácticas de cañlidad como parte de su trabajo diario y no una exigencia externa.
Esto favorece la mejora continua en la calidad del software, lo que resulta en productos más eficientes y efectivos, su connotación implica minimizar el número de errores y optimizar los procesos de entrega. EL QA aporta beneficios y cuantificables en varias industrias, por ejemplo:

  • Medicina: El QA se implica en el desarrollo de Software para Dispositivos Médicos de Diagnóstico y Tratamiento (MDT), como el Diagnóstico In Vitro (IVD). En las ciencias médicas el QA es crucioal, garantiza la seguridad y el desempeño. Los dispositivos deben ser diseñados para ser seguros y eficaces, fabricados para mantener las características de diseño, y usados de manera que se mantengan esas características. Se requiere un proceso de cumplimiento continuo a través de un sistema de gestión de calidad y un proceso de gestión de riesgos robustos. El desarrollo de estos software abaraca una amplia gama de aspectos, esto implica prestar atención a propiedades químicas, físicas y biológicas (toxicidad, biocompatibilidad, inflamabilidad), esterilización y control de contaminación microbiana, consideraciones ambientales y de uso (interoperabilidad, ergonomía, compatibilidad electromagnética, protección contra riesgos mecánicos, eléctricos y térmicos), e integrar la ciberseguridad, por todo esto asegurar la calidad es muy valioso para la mejora de la salud de los pacientes. En resumen:para los dispositivos médicos, esto se traduce en alcanzar el desempeño previsto por el fabricante y en que las evaluaciones clínicas se basen en principios éticos que protejan los derechos, la seguridad y el bienestar de los seres humanos. Las empresas que cuentan con la certificación de personas en ISO 25000, por ejemplo, aumentan la confianza del cliente en la calidad del software
  • Finanzas y Banca: En esta industria el QA se implica en el desarrollo de software para la gestión de datos financieros y bancarios, como el manejo de datos de clientes y transacciones, el control de riesgos y la toma de decisiones financieras, de elevado valor para las inverciones y la bolsa de valores en general.
    La calidad de los datos financieros es crucial debido a la complejidad y sensibilidad de los datos, por lo que el Data Quality Assurance (DQA) garantiza que los datos sean precisos, confiables, coherentes y adecuados para su propósito, permitiendo la toma de decisiones informadas, mitigando riesgos y aumentando la eficiencia operativa. Incluye pruebas de integridad de datos para asegurar la precisión y coherencia de informes financieros y transacciones, así como pruebas de rendimiento y escalabilidad para manejar grandes volúmenes de datos eficientemente
  • Consultorías: Por supuesto que además de ganar una remuneración en el desempeño de un rol de QA de Software, ya se ha escalado el valor de estas prácticas a punto que hay empresas que ofrecen servicios solo de QA de Software. Incluyen pruebas funcionales, no funcionales (rendimiento, accesibilidad, usabilidad) y especializadas (API, microservicios, nube), además de consultoría de procesos de calidad y gestión de datos. Estas prácticas se integran en la rutina de trabajo de los clientes, guiando la implementación de herramientas y mejorando los protocolos con una combinación de conocimiento técnico y experiencia

Existen múltiples ejemplos de las ganancias del QA de Software, acá las expuse de manera global, pero queda claro que es inherente a contribui a avances cienctíficos y la mejora de la calidad de vida en general, por lo que el compromiso es bastante grande en el desarrollo de software y las ganancias pueden ser muchas y mucho más que solo un salario, además que siempre uso el ejemplo de que si comprendes y practicas el QA de Software bien eres capaz de usar mejor a tu favor los productos de software en tu entorno.

QA de Software: Alcance

Todos los que trabajamos vinculados al desarrollo de Software ademas de tener una responsabilidad humana, tambien tenemos elevadas implicaciones profesionales, se trata de desempeñar un rol decesivo y de impacto social. El alcance de estos trabajos es muy grande, en particular mencionaré algunos que están directamente relacionados con quienes practicamos el QA, ya que concientizarlos favorece la perpectiva de "pensar en el usuario final", por ejemplo para hacer testing :

Actuar en interés social: Actuar en interés de la sociedad: Los ingenieros de software deben aceptar la responsabilidad total de su trabajo y aprobar software solo si cumple un bien social, exponiendo cualquier daño real o potencial asociado con el software. Esto se alinea con el principio de contribuir al bienestar humano y evitar daños a otros.
Asegurar la integridad del producto:asegurar que los productos y sus modificaciones cumplen los estándares profesionales más altos posibles. Esto implica garantizar que las pruebas, depuración y revisión del software sean adecuadas, y que el software respete la privacidad de los usuarios.
Ciberseguridad y protección de datos: el software debe diseñarse y fabricarse para reducir adecuadamente el riesgo de acceso no autorizado que podría impedir su funcionamiento o plantear un problema de seguridad, concebir esto es valioso para el QA, ya que es un análisis preventivo que se puede incluir desde la fase de diseño y conformación de los requerimientos.
Es crucial proteger la confidencialidad, integridad y disponibilidad de los datos. La seguridad desde el diseño ("Security by Design") es una tendencia clave, anticipando riesgos y testeando con enfoque desde las etapas iniciales del desarrollo. Se debe asegurar el uso solo de datos derivados por medios éticos y legales, y mantener su integridad. Estas consideraciones también aterrizan una perspectiva estratégica para la cobertura de Bases de datos y las API en las estrategias de QA.
Uso de la información: es crucial asegurar la precisión de la información almacenada y cuestionar si puede usarse para un propósito diferente al original, especialmente en datos sensibles.
Juicio profesional independiente: es vital en nuestro trabajo desarrollar una perspectiva de juicio profesional independiente, que se basa en la responsabilidad de mantener la integridad y la independencia en el juicio profesional, moderando los juicios técnicos por la necesidad de apoyar y mantener los valores humanos. Como QA debemos extender nuestros conocimientos de la ingeniería de software y apoyar a otros colegas, aprender del trabajo de otros y crecer como comunidad.
En resumen: el alcance profesional de los QA de Software es enorme, y es fundamental para el desarrollo y el bienestar humano en general, no solo se enfoca en la funcionalidad y el rendimiento de los sistemas, sino que es un pilar esencial para la seguridad, la fiabilidad y la protección de la privacidad y los derechos de los usuarios, actuando como un componente ético fundamental en el desarrollo tecnológico