Создание крупных программных систем вынуждает использовать программные компоненты не только собственной разработки, но и готовые программные компоненты, представленные сторонними разработчиками и поставщиками на рынке программных продуктов.

Особенно актуально их использование для программных систем, к которым особые требования по надежности вынуждают прибегать к введению программной избыточности как средству повышения уровня надежности. Применение готовых программных компонентов, именуемых на международном рынке commercial off – the – shelf или COTS – компонентами, в составе программной системы требует учета совместимости компонентов. Программная система реализуется согласно схеме блоков восстановления с согласованием, что позволяет обеспечить высокий уровень надежности.

В связи с развитием информационных технологий и применением вычислительной техники в промышленной и финансовой сфере крайне важным становится обеспечение высокого уровня надежности, поскольку невыполнение данных требований может привести к существенным убыткам.  Повышенные требования по надежности предъявляются и к программному обеспечению вычислительных машин и систем.

Одним из актуальных на сегодняшний день подходов к созданию надежного программного обеспечения является применение блоков восстановления. Программное обеспечение, разрабатываемое согласно данному подходу, отличается применением избыточных программных компонент, предназначенных для решения одной и той же задачи. В контексте программного обеспечения схемы блоков восстановления данные программные компоненты называются альтернативами. Фактически блоки восстановления комбинируют основные идеи контрольных точек и рестарта для компонент программного обеспечения таким образом, что различные альтернативы используются только после того, как обнаруживается ошибка.

Контрольные точки определяются во время проектирования и тестирования программного обеспечения и служат для того, чтобы восстановить состояние ПО, если в альтернативе произойдет сбой или она вернет неверный результат. Оценка результата производится посредством приемочного теста. В том случае, если результат работы альтернативы оказался неверным, происходит откат и выполнение другой альтернативы.

Следует отметить, что приемочный тест должен обладать некоторой априорной информацией о предполагаемых результатах, которая позволила бы оценить полученные результаты работы альтернатив. Естественным развитием подхода с применением блоков восстановления стало его объединение с альтернативным подходом, где функционально эквивалентные программные компоненты исполняются параллельно и результаты их работы оцениваются посредством алгоритмов голосования. Последний получил название мультиверсионного программирования, а программные компоненты – мультиверсии или просто версии.

Синтез этих двух подходов привел к появлению блоков восстановления с согласованием, где каждая альтернатива представлена набором версий, т. е. каждая альтернатива является мультиверсионной. Концепция программной избыточности предполагает формирование структуры программного обеспечения, используя набор программных компонент. Это справедливо как для мультиверсионного программного обеспечения, как и программного обеспечения с блоком восстановления, в том числе, с блоком восстановления с согласованием.

Возможность модульной декомпозиции каждого из этих классов программного обеспечения позволяет использовать программные компоненты не только собственной разработки, но и созданные сторонними разработчиками и соответствующие требуемой спецификации.

На международном рынке программных продуктов это программные компоненты получили название COTS – компонентов (от англ.  Commercial off – the – shelf – « коробочный программный продукт»).  Реализация в программных компонентах различных методов и алгоритмов, предназначенных для решения одной и той же задачи, позволяет избежать возникновения идентичных ошибок в этих компонентах и тем самым обеспечить отказоустойчивое исполнение всего программного обеспечения.

Компоненты могут быть представлены в виде библиотек, часть из них может быть разработана самостоятельно, а часть – различными поставщиками. Однако в некоторых случаях программные компоненты могут быть несовместимы из-за проблем интерфейса, спецификации или реализации. В связи с этим возникает необходимость учета совместимости различных программных компонент. Применение блока восстановления с согласованием позволяет достичь высокой надежности программной системы. Использование программной избыточности согласно данному подходу гарантирует высокий уровень надежности, то требует дополнительных ресурсов.

Это проводит к необходимости решения задачи оптимизации, позволяющей обеспечить высокую надежность при заданных ограничениях. При создании избыточной программной системы целесообразно введение в ее состав программных компонент не только собственной разработки, но приобретенных программных компонент – COTS – компонент.  Однако при их интеграции в состав программной системы необходимо учитывать совместимость программных компонент.