SMC-S-012 Desarrollo de software
El objetivo de la norma “SMC-S-012 Software Development”, publicada por el Centro de Sistemas Espaciales y de Misiles (SMC) del Comando Espacial de la Fuerza Aérea de los Estados Unidos, es definir requisitos uniformes para las actividades de desarrollo de software en sistemas de misión crítica. Esta norma se basa en la norma “MIL-STD-498 Military Standard: Software Development and Documentation”, desarrollada por el Departamento de Defensa de los Estados Unidos.

Esta norma se aplica al desarrollo de sistemas de misión crítica que incluyen software (como sistemas de hardware y software), sistemas de solo software y productos de software independientes. Esta norma se puede aplicar a contratistas que realizan desarrollo de software o a agencias internas que compran. Esta norma se puede adaptar para cada categoría de software a la que se aplica.
Esta norma es independiente de cualquier método o herramienta de desarrollo de software específico. Ningún requisito de esta norma exige el uso de ningún método o herramienta en particular.
El marco utilizado para organizar las principales actividades de software en el proceso de desarrollo de software se denomina modelo del ciclo de vida del desarrollo de software.
- El desarrollador debe elegir el modelo o los modelos de ciclo de vida de desarrollo de software apropiados para el software que se está desarrollando. Un proyecto de software puede tener múltiples modelos de ciclo de vida de desarrollo de software para diferentes categorías de software desarrollado.
- El desarrollador deberá registrar el modelo o modelos de ciclo de vida de desarrollo de software seleccionados en la plantilla adjunta “Plan de desarrollo de software”.
- El desarrollador debe proporcionar una descripción de cada modelo de ciclo de vida de desarrollo de software que se utilizará en el proyecto en el plan de desarrollo de software.
- Para cada modelo de ciclo de vida de desarrollo de software a utilizar, el desarrollador debe definir en el plan de desarrollo de software:
- ¿En qué punto del ciclo de vida del desarrollo del sistema se utilizará?
- ¿En qué condiciones se utilizará?
- ¿Qué elementos de software utilizar para?
- El desarrollador debe establecer un proceso de desarrollo de software que sea consistente con los requisitos del contrato.
- El proceso de desarrollo de software debe incluir las siguientes actividades principales y procesos integrados:
- Planificación y control de proyectos
- Creación de un entorno de desarrollo de software
- Análisis de requisitos del sistema
- Diseño de la arquitectura del sistema
- Análisis de requisitos de software
- Arquitectura y diseño de software
- Implementación de software y pruebas unitarias
- Integración y pruebas de unidades
- Pruebas de calificación de elementos de software
- Integración y prueba de elementos software-hardware
- Pruebas de calificación del sistema
- Preparación del software para la transición a las operaciones
- Preparación del software para la transición al mantenimiento
- Procesos integrados:
- Gestión de configuración de software
- Reseñas de software por pares y calificaciones de productos
- Garantía de calidad del software
- Acción correctiva
- Revisiones técnicas y de gestión conjuntas
- Gestión de riesgos de software
- Medición de software
- Guvenlik ve Gizlilik
- Gestión de miembros del equipo de software
- Interfaz con agentes de software IV&V
- Coordinación con desarrolladores asociados
- Mejorar los procesos del proyecto
Estas actividades importantes pueden superponerse, implementarse de forma iterativa o implementarse de manera diferente. Se refiere a varios elementos del software y no necesariamente se realiza en el orden indicado anteriormente.
- Los procesos de desarrollo de software del desarrollador deben describirse en el plan de desarrollo de software.
Los requisitos generales para el desarrollo de software incluyen requisitos generales para los desarrolladores para cumplir con los requisitos detallados definidos en esta norma. Se incluyen requisitos más detallados en el anexo de la norma (Anexo H.1).
- Métodos de desarrollo de software: El desarrollador debe utilizar métodos sistemáticos y documentados para todas las actividades de desarrollo de software. Estos métodos sistemáticos de desarrollo de software deben especificarse en el plan de desarrollo de software.
- Estándares para productos de software: el desarrollador desarrolla estándares para representar requisitos, arquitectura, diseño, código, casos de prueba, procedimientos de prueba y resultados de pruebas. Estos estándares de representación del producto se especifican en el plan de desarrollo del software. El desarrollador aplica los estándares especificados en el plan de desarrollo de software para representar requisitos, arquitectura, diseño, código, casos de prueba, procedimientos de prueba y resultados de pruebas.
- Trazabilidad: La trazabilidad proporciona una relación entre el contenido de dos productos relacionados, por ejemplo, la relación de cada requisito de software con los componentes de diseño de software que satisfacen el requisito. La trazabilidad bidireccional garantiza una relación bidireccional entre el contenido de dos productos relacionados. Un ejemplo de dicha relación bidireccional es la trazabilidad desde cada requisito de software hasta los componentes de diseño de software que satisfacen el requisito, y la trazabilidad desde cada componente de diseño hasta los requisitos de software satisfechos por el componente de diseño. El propósito de los requisitos de trazabilidad bidireccional de esta sección es rastrear tanto hacia arriba como hacia abajo para garantizar que:
- Demostrar que todos los requisitos se han asignado a los componentes, implementado y probado
- Demostrar que no se aplican requisitos adicionales
- Proporcionar información sobre el impacto de los cambios propuestos
- Proporcionar información sobre el impacto de los problemas descubiertos
- Proporcionar información para el mantenimiento del software.
- Productos de software reutilizables: El desarrollador debe identificar productos de software reutilizables que se utilizarán para cumplir con los requisitos del contrato. El alcance de la búsqueda de un producto de software reutilizable debe especificarse en el plan de desarrollo de software. El desarrollador debe evaluar los productos de software reutilizables que se utilizarán para cumplir con los requisitos del contrato. Los criterios que se utilizarán para evaluar el producto de software reutilizable deberán ser los especificados en el plan de desarrollo de software. El desarrollador debe utilizar al menos los criterios de evaluación del anexo de la norma para seleccionar productos de software reutilizables (Anexo B). Los criterios de evaluación pueden tener diferente ponderación para distintas categorías de software y distintos requisitos críticos. Los productos de software reutilizables seleccionados deben cumplir con los requisitos de derechos de datos del contrato. El producto de software reutilizable se puede utilizar tal cual o se puede modificar y utilizar para satisfacer todo el requisito o parte del mismo.
Nuestra organización, que lleva años intentando apoyar a empresas de todos los sectores con una amplia gama de estudios de pruebas, mediciones, análisis y evaluación que ha llevado a cabo, cuenta con un personal sólido que sigue de cerca los desarrollos en el mundo en el campo de la ciencia y la tecnología y se mejora constantemente. En este contexto, también se prestan servicios de pruebas a las empresas de acuerdo con el estándar “SMC-S-012 Desarrollo de Software”.