stringtranslate.com

Programación de versión N

La programación de N versiones (NVP), también conocida como programación multiversión o software diferente de múltiples versiones , es un método o proceso en ingeniería de software donde se generan múltiples programas funcionalmente equivalentes de forma independiente a partir de las mismas especificaciones iniciales. [1] El concepto de programación de N versiones fue introducido en 1977 por Liming Chen y Algirdas Avizienis con la conjetura central de que "la independencia de los esfuerzos de programación reducirá en gran medida la probabilidad de que ocurran fallas de software idénticas en dos o más versiones del programa". . [1] [2] El objetivo de NVP es mejorar la confiabilidad del funcionamiento del software mediante la incorporación de tolerancia a fallas o redundancia . [1]

Enfoque NVV

Los pasos generales de la programación de N versiones son:

  1. Se desarrolla una especificación inicial de la funcionalidad prevista del software. La especificación debe definir sin ambigüedades: funciones, formatos de datos (que incluyen vectores de comparación, vectores c e indicadores de estado de comparación, indicadores cs), puntos de verificación cruzada (puntos cc), algoritmo de comparación y respuestas al algoritmo de comparación. [1] [2]
  2. A partir de las especificaciones, se desarrollan de forma independiente dos o más versiones del programa, cada una por un grupo que no interactúa con los demás. [1] Las implementaciones de estos programas funcionalmente equivalentes utilizan diferentes algoritmos y lenguajes de programación. [1] En varios puntos del programa, se incorporan mecanismos especiales en el software que permiten que el programa sea gobernado por el entorno de ejecución de la versión N (NVX). [2] Estos mecanismos especiales incluyen: vectores de comparación (vectores c, una estructura de datos que representa el estado del programa), indicadores de estado de comparación (indicadores cs) y mecanismos de sincronización. [1] Los programas resultantes se denominan software de versión N (NVS). [2]
  3. Se desarrolla un entorno de ejecución de N versiones (NVX) que ejecuta el software de N versiones y toma decisiones finales de los programas de N versiones en su conjunto, dado el resultado de cada programa de N versiones individual. [2] La implementación de los algoritmos de decisión puede variar, desde lo simple como aceptar el resultado que ocurre con más frecuencia (por ejemplo, si la mayoría de las versiones están de acuerdo en algún resultado, entonces es probable que sea correcto) hasta algún algoritmo más complejo. [3]

Críticas

Aplicaciones

La programación de la versión N se ha aplicado al software para cambiar de tren, realizar cálculos de control de vuelo en aviones modernos, votación electrónica (el sistema SAVE) y la detección de vulnerabilidades de día cero , entre otros usos. [2] [3] [4]

Ver también

Referencias

  1. ^ Programación abcdefg N-Version: un enfoque de tolerancia a fallas para la confiabilidad del funcionamiento del software, Liming Chen; Avizienis, A., Computación tolerante a fallos, 1995, 'Lo más destacado de veinticinco años'., Vigésimo quinto simposio internacional, vol., edición, 27-30 de junio de 1995, páginas: 113-
  2. ^ abcdef AA Avizienis, “La metodología de la programación de la versión N” Archivado el 3 de noviembre de 2005 en Wayback Machine , Software Fault Tolerance, editado por M. Lyu, John Wiley & Sons, 1995.
  3. ^ abcde Liburd, Soyini. Un sistema de votación electrónica versión N (Tesis). Instituto de Tecnología de Massachusetts. Departamento de Ingeniería Eléctrica e Informática, 2004.
  4. ^ a b C Lajos Nagy, Richard Ford y William Allen. Programación en versión N para la detección de exploits de día cero. Conferencia temática del IEEE de 2006 sobre ciberseguridad, Daytona Beach, Florida, abril de 2006.
  5. ^ Knight, JC y Leveson, NG 1986. Una evaluación experimental del supuesto de independencia en la programación multiversión. Traducción IEEE. Software. Ing. 12, 1 (enero de 1986), 96-109.
  6. ^ Knight, JC y Leveson, NG 1990. Una respuesta a las críticas al experimento de Knight & Leveson. Software SIGSOFT. Ing. Notas 15, 1 (enero de 1990), 24-35.
  7. ^ Sha, L. (julio de 2001). "Usar la simplicidad para controlar la complejidad". Software IEEE . 18 (4): 20–28. doi :10.1109/MS.2001.936213. ISSN  1937-4194.

enlaces externos