Cпециализированный язык для программирования сторожевого механизма

 Стерхов Александр Сергеевич. Магистр группы P4202

 Разработка специализированного языка и его компилятора для задачи программирования сторожевого механизма

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

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

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

Процедура получения программы для сторожевого механизма может включать в себя несколько этапов. На первом этапе с помощью средств разрабатываемого языка описывается модель функционирования системы и на выходе получается текст формализованного представления этой модели. На втором этапе этот текст подается на вход компилятора (также требующего разработки), транслирующего его в промежуточный код (например, С/С++). Далее полученный промежуточный код транслируется в исполнимый код для целевой среды, ресурсы которой использованы для реализации сторожевого механизма. Это, например, может быть программа для микроконтроллера или операционной системы.

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

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