Формальные методы — это комплекс тесно взаимосвязанных друг с другом разделов математики и информатики, нацеленных на разработку математических методов описания, анализа и преобразования программ и систем в целом, которые ориентированы на повышение их надежности и ресурсных характеристик. Важнейшим отличием исследований по формальным методам от чисто теоретических изысканий является их нацеленность на практическое применение: результатом математических исследований является программная реализация и внедрение в практику ИТ-индустрии.
Целью данного профиля является устойчивое воспроизводство специалистов в области формальных методов, способных вести такого рода исследования, а также уверенно применять их и способствовать их широкому внедрению на практике. Основными направлениями формальных методов, рассматриваемых в данном профиле, являются:
- Спецификация, формализация требований, онтологическое моделирование программного обеспечения и систем, что ускоряет этап их проектирования и снижает риски неопределенности и недопонимания между заказчиками и исполнителями, а также приоткрывает путь к автоматическому и/или автоматизированному доказуемо корректному синтезу программ и систем.
- Формальная семантика программ, а также методы ее аппроксимации, которые являются базой статического семантического анализа программ, результаты которого используются для их оптимизации, поиска ошибок, верификации свойств и т.д. В частности, наблюдается разрыв между прогрессом в архитектурах вычислительных систем и способностью трансляторов производить код (например, для параллельных вычислений), в полной мере использующий все возможности для высокопроизводительных вычислений. Причина этого – сложные семантические проблемы, которые приходится решать при программировании такого рода систем.
- Верификация программ и систем, т.е. доказательное подтверждение соответствия полученной реализации исходной спецификации. Это свойство ожидаемо для любого программного обеспечения, однако оно оказывается критически важным для управляющих систем реального времени, высоконадежных и устойчивых к отказам систем, разнообразных систем, связанных с обеспечением безопасности. Для решения этих задач используются сложные логические и комбинаторные методы, ведущие при реализации к нетривиальной алгоритмике.