Версия 7
В действительности никогда нельзя полностью устранить из программ все логические ошибки, даже если и предпринять меры, перечисленные в предыдущем разделе. Поэтому в настоящее время исследуются методы проектирования таких программных средств, которые обеспечивают получение правильных результатов и при наличии логических ошибок.
Программирование с N версиями
В этом случае подготавливают N версий программ, реализующих одну и ту же обработку, при этом используют разные алгоритмы, языки программирования и компиляторы; окончательный результат определяют путем мажоритации результатов всех версий. Управление работой всех программ, синхронизация и мажоритация осуществляются специфичными супервизорами, называемыми драйверами. Как показали эксперименты, проведенные на системе UCLA, такой метод программирования оказался довольно эффективным. Так, при N=3 правильные итоговые результаты были получены в 90 % из 73 программ, одна из версий которых содержала логические ошибки. Однако это вовсе не означает, что при реализации технического обеспечения не возникает проблем. Например, при создании одного комплекта такого обеспечения накладные меной блоков в нормальном вается работой одного блока расходы оказываются чрезвычайно большими. При реализации метода программирования с N версиями возникает проблема синхронизации всех N комплектов технического обеспечения. Так как разные алгоритмы каждый «по-своему» реализуют одну и ту же обработку, то синхронизация на уровне генереаторов тактовых импульсов становится бессмысленной. Даже если и осуществить синхронизацию, при которой один генератор ждет другого, то довольно трудно оценить время обработки. Если же не задать предельную величину времени ожидания генераторов, то прекращение работы комплекта технического обеспечения из-за отказа приведет к прекращению работы всей системы в целом.
|