Некоторые основные принципы N-version programming (NVP):
- Независимая разработка версий. 12 Разные команды разработчиков создают функционально эквивалентные программы на основе одних и тех же начальных спецификаций. 12
- Использование различных алгоритмов и языков программирования. 2 Это позволяет создавать версии, которые содержат разные ошибки. 2
- Изоляция команд разработчиков. 2 Во время разработки команды не делятся своими проектами и не обсуждают смысл спецификаций друг с другом. 2
- Применение избыточности на всех уровнях — от проектирования и разработки до выполнения. 2
- Возможность параллельного выполнения вычислительных блоков. 2
- Использование механизма принятия решений. 13 Этот механизм собирает доступные результаты из разных версий, формирует вектор решений и определяет результат, который будет доставлен пользователю. 3
Цель NVP — улучшить надёжность работы программного обеспечения за счёт построения устойчивости к ошибкам или избыточности. 1