# Garantía de software

La garantía de software (SwA, por sus siglas en inglés) se define como “el nivel de certeza en que el software está libre de vulnerabilidades, ya sea que hayan sido diseñadas intencionalmente en el software o insertada accidentalmente en cualquier fase de su ciclo de vida, además de que el software funcione como se tiene previsto.”
El principal objetivo de la garantía de software es asegurarse de que los procesos, procedimientos y productos utilizados para producir y mantener el software cumplen con los requerimientos y estándares especificados para manejar los procesos, procedimientos y productos. Otro objetivo de la garantía de software es asegurar que los sistemas de software intensivos producidos sean más seguros. Para estos sistemas de software intensivos, se requiere de un análisis preventivo dinámico y estático de las posibles vulnerabilidades y se recomienda la holística, así como la comprensión a nivel sistema. Según Gary McGraw "los defectos de diseño representan el 50% de los problemas de seguridad. Uno no puede encontrar defectos de diseño con sólo mirar el código. Se requiere una comprensión de alto nivel. Por eso el análisis de riesgo de arquitectura juega un papel importante en cualquier programa de seguridad de software.”

## Otras definiciones
### Departamento de Seguridad Nacional de los Estados Unidos

De acuerdo con el Departamento de Seguridad Nacional de los Estados Unidos, las características de la garantía de software son:
* Confiabilidad: No existen vulnerabilidades explotables, maliciosas o insertadas no intencionalmente;
* Ejecución predecible: Confianza de que el software, cuando se ejecute, funcione como debe de hacerlo;
* Conformidad: Conjunto planeado y sistemático de actividades multidisciplinarias que garanticen los procesos de software y que los productos cumplan con los requisitos, normas y procedimientos.
Disciplinas que contribuyen a la garantía de software, divididos en áreas de conocimiento y competencia: Ingeniería de software, Ingeniería en sistemas, Ingeniería en sistemas de seguridad de la información, Garantía de información, Prueba y Evaluación, Seguridad, Gestión de Proyectos y Adquisición de Proyectos.
La garantía de software es una iniciativa estratégica del Departamento de Seguridad Nacional de los Estados Unidos para promover la integridad, seguridad y fiabilidad del software. El programa de garantía de software se basa en la Estrategia Nacional para Asegurar el Espacio Cibernético – Acción/Recomendación 2.14:
“El Departamento de Seguridad Nacional de los Estados Unidos brindará un esfuerzo nacional público–privado para promulgar las mejores prácticas y metodologías que promuevan la integridad, seguridad y confiabilidad en el desarrollo de código de software, incluyendo procesos y procedimientos que disminuyan las posibilidades de código erróneo, código malicioso o puertas trampa que puedan ser introducidas durante el desarrollo.” Existen programas de código abierto para la garantía de software, que ayudan a identificar potenciales vulnerabilidades de seguridad.

### Departamento de Defensa de los Estados Unidos

Según el Departamento de Defensa de los Estados Unidos, se refiera a “el nivel de confianza de que el software funciona como debe y que se encuentra libre de vulnerabilidades, ya sean diseñadas intencional o no intencionalmente o insertadas como parte del mismo.”

### Proyecto de Métricas y Herramientas de Evaluación de Garantía de Software (SAMATE)

De acuerdo con el proyecto SAMATE del Instituto Nacional de Estándares y Tecnología, garantía de software es “el conjunto planeado y sistemático de actividades que aseguran que los procesos y productos del software cumplan con los requisitos, normas y procedimientos para alcanzar:
* Confiabilidad: No existen vulnerabilidades explotables, ya sean de origen malicioso o no intencional, y
* Ejecución Predecible: Confianza de que el software, cuando se ejecute, funcione como debe de hacerlo."

### Administración Nacional de la Aeronáutica y del Espacio (NASA)

Según la NASA, la garantía de software es un “conjunto planeado y sistemático de actividades que aseguran que los procesos y productos del software cumplan con los requisitos, normas y procedimientos. Incluidas las disciplinas de Garantía de Calidad, Ingeniería de Calidad, Verificación y Validación, Reportes de No Conformidad y Acción Correctiva y Garantía de Seguridad, así como su aplicación durante el ciclo de vida del software.” La norma de garantía de software de la NASA afirma que: “La aplicación estas disciplinas durante el ciclo de desarrollo de un software es llamado garantía de software.”

### Object Management Group (OMG)

De acuerdo al OMG, garantía de software es “confiabilidad justificada en conocer objetivos empresariales y de seguridad ya establecidos.”
El Grupo Especial de Interés (SIG, por sus siglas en inglés) de garantía de software del OMG, trabaja con Plataforma y Grupos de Acción de Dominio y otras compañías de software, así como con grupos externos al OMG, para coordinar el establecimiento de un marco común para el análisis y el intercambio de información relacionada con la confiabilidad de software, facilitando el desarrollo de una especificación para un marco de garantía de software que deberá:
* Establecer un marco en común de las propiedades del software que pueden ser utilizadas para representar cualquier o todos los tipos de software, para que los proveedores de software y adquisidores puedan presentar sus alegaciones y argumentos (respectivamente), junto con la evidencia correspondiente, utilizando herramientas automatizadas (para tratar la escala)
* Verificar que los productos tengan lo suficientemente cubiertas estas características con antelación a la adquisición del producto, para que los ingenieros en sistemas puedan usar estos productos y así puedan construir sistemas más grandes con garantía
* Que la industria permita mayor visibilidad durante el estado de garantía de software en el proceso de desarrollo del mismo
* Que la industria desarrolle herramientas automatizadas que apoyen el marco común.

### Foro de Garantía de Software para la Excelencia en el Código (SAFECode)

De acuerdo a SAFECode, la garantía de software es “la confianza de que el software, hardware y servicios están libres de vulnerabilidades intencionales y no intencionales y de que es software funcione como debe.”

### Webopedia

De acuerdo a Webopedia, garantía de calidad de software, también llamada garantía de software es “un nivel de certeza de que el software está libre de vulnerabilidades, ya sean diseñadas intencionalmente en el software o insertadas en cualquier momento durante su ciclo de vida y que el software funcione de la manera que debe.”
Como observa en la definición de Webopedia, el término “garantía de software” ha sido utilizado como una forma de abreviar Garantía de Calidad de Software (SQA, por sus siglas en inglés) al no considerar la seguridad o confiabilidad. SQA está definida en elManual de garantía de software como: “el conjunto de actividades sistemáticas que brindan evidencia de la capacidad del proceso de software para generar un producto que esté en condiciones ser utilizado.”

## Iniciativas

Una iniciativa financiada por el gobierno estadounidense llamada Garantía de software , que es financiada conjuntamente por el Departamento de Seguridad Nacional de los Estados Unidos, el Departamento de Defensa de Estados Unidos y el Instituto Nacional de Normas y Tecnología y controlan el sitio web Build Security In (BSI).

## ¿Por qué la garantía de software es importante?

Muchas de las actividades empresariales y funciones críticas—- desde la defensa nacional a la banca, el cuidado de la salud, las telecomunicaciones, la aviación, el control de materiales peligrosos—dependen del correcto y predecible funcionamiento del software. Estas actividades se verían seriamente afectadas si los sistemas de software intensivos de los que dependen, fallaran.