Jump to content

N -версия программирования

N Программирование -версий (NVP), также известное как многоверсионное программирование или разнородное программное обеспечение с несколькими версиями , представляет собой метод или процесс в разработке программного обеспечения , при котором несколько функционально эквивалентных программ независимо генерируются из одних и тех же исходных спецификаций. [1] Концепция программирования N -версий была введена в 1977 году Лимингом Ченом и Альгирдасом Авизенисом с центральной гипотезой о том, что «независимость усилий по программированию значительно уменьшит вероятность возникновения идентичных ошибок программного обеспечения в двух или более версиях программы». [1] [2] Целью NVP является повышение надежности работы программного обеспечения за счет обеспечения отказоустойчивости или избыточности . [1]

подход NVP

[ редактировать ]

Общие этапы программирования N -версии:

  1. Разрабатывается первоначальная спецификация предполагаемой функциональности программного обеспечения. В спецификации должны быть однозначно определены: функции, форматы данных (к которым относятся векторы сравнения, c-векторы и индикаторы состояния сравнения, cs-индикаторы), точки перекрестной проверки (cc-points), алгоритм сравнения и ответы на алгоритм сравнения. [1] [2]
  2. На основе спецификаций независимо разрабатываются две или более версии программы, каждая группой, не взаимодействующей с другими. [1] Реализации этих функционально эквивалентных программ используют разные алгоритмы и языки программирования. [1] В различных точках программы в программное обеспечение встроены специальные механизмы, позволяющие управлять программой со стороны среды выполнения N -версии (NVX). [2] К этим специальным механизмам относятся: векторы сравнения (c-векторы, структура данных, представляющая состояние программы), индикаторы состояния сравнения (cs-индикаторы) и механизмы синхронизации. [1] Полученные программы называются N -версией программного обеспечения (NVS). [2]
  3. некоторая среда выполнения N Разработана -версии (NVX), которая запускает программное обеспечение N -версии и принимает окончательные решения по программам N -версии в целом, учитывая выходные данные каждой отдельной программы N -версии. [2] Реализация алгоритмов принятия решений может варьироваться от простого принятия наиболее часто встречающегося вывода (например, если большинство версий согласны с каким-то выводом, то он, скорее всего, будет правильным) до более сложного алгоритма. [3]
  • Исследователи утверждают, что разные команды программистов могут совершать схожие ошибки. [4] В 1986 году Найт и Левесон провели эксперимент по оценке предположения о независимости NVP. Они обнаружили, что предположение о независимости сбоев в N -версии статистически не удалось. программах [4] [5] [6]
  • Слабость программы NVP заключается в алгоритме принятия решений. Вопрос корректности программы NVP частично зависит от алгоритма, который NVX использует для определения того, какой вывод является «правильным», учитывая множество выходных данных каждой отдельной программы N -версии. [3] Теоретически вывод из нескольких независимых версий с большей вероятностью будет правильным, чем вывод из одной версии. [3] Однако ведутся споры о том, достаточны ли улучшения разработки N -версии, чтобы оправдать время, дополнительные требования и затраты на использование метода NVP. [3] В частности, при определенных моделях надежности и проектных усилиях было показано, что улучшения за счет использования НВП меньше, чем если бы все усилия были сосредоточены на повышении надежности одной версии. [7]
  • «Были серьезные споры относительно реализации всего потенциала программирования n-версий, поскольку предполагается, что независимость приведет к статистически независимым ошибкам. Факты показали, что эта предпосылка может быть ошибочной [12]». [1]

Приложения

[ редактировать ]

Программирование N -версии применялось к программному обеспечению при переключении поездов, выполнении расчетов управления полетом на современных авиалайнерах, электронном голосовании (система SAVE) и обнаружении эксплойтов нулевого дня , среди прочего. [2] [3] [4]

См. также

[ редактировать ]
  1. ^ Jump up to: а б с д и ж г Программирование N-версии: отказоустойчивый подход к надежности работы программного обеспечения , Лиминг Чен; Авизиенис, А., Отказоустойчивые вычисления, 1995, «Основные события двадцати пяти лет», Двадцать пятый международный симпозиум, том, выпуск, 27-30 июня 1995 г., страниц: 113-
  2. ^ Jump up to: а б с д и ж А. А. Авизиенис, « Методология программирования N-версий ». Архивировано 3 ноября 2005 г. в Wayback Machine , «Отказоустойчивость программного обеспечения», под редакцией М. Лю, John Wiley & Sons, 1995.
  3. ^ Jump up to: а б с д и Либурд, Сойини. Система электронного голосования N- версии (Диссертация) . Массачусетский технологический институт. Кафедра электротехники и информатики, 2004 г.
  4. ^ Jump up to: а б с Лайош Надь, Ричард Форд и Уильям Аллен. Программирование N-версии для обнаружения эксплойтов нулевого дня . Тематическая конференция IEEE по кибербезопасности 2006 г., Дейтона-Бич, Флорида, апрель 2006 г.
  5. ^ Найт, Дж. К. и Левесон, Н. Г. 1986. Экспериментальная оценка предположения о независимости в многоверсионном программировании . IEEE Транс. Программное обеспечение англ. 12, 1 (январь 1986 г.), 96–109.
  6. ^ Найт, Дж. К. и Левесон, Н. Г. 1990. Ответ на критику эксперимента Найта и Левесона . Программное обеспечение SIGSOFT. англ. Примечания 15, 1 (январь 1990 г.), 24–35.
  7. ^ Ша, Л. (июль 2001 г.). «Используя простоту, чтобы контролировать сложность». Программное обеспечение IEEE . 18 (4): 20–28. дои : 10.1109/MS.2001.936213 . ISSN   1937-4194 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 07b4e53731662493b2bb1ce90778ad7d__1722389580
URL1:https://arc.ask3.ru/arc/aa/07/7d/07b4e53731662493b2bb1ce90778ad7d.html
Заголовок, (Title) документа по адресу, URL1:
N-version programming - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)