FRET (программное обеспечение)

FRET (Formal Requirements Elicitation Tool, что можно перевести как «Инструмент формализации требований») — программное средство для инженерии требований. Разработано Исследовательским центром Эймса (ARC) для спецификации комплексных критически важных систем, отказ которых может привести к человеческим жертвам, значительному ущербу имуществу или окружающей среде[1]. FRET распространяется как программное обеспечение с открытым исходным кодом под лицензией NASA Open Source Agreement[2].

Общие сведения
FRET
Тип средство формализации требований
Авторы Andreas Katis, Anastasia Mavridou, Tom Pressburger, Johann Schumann, Khanh Trinh
Разработчики Andreas Katis, Anastasia Mavridou, Tom Pressburger, Johann Schumann, Khanh Trinh
Написана на JavaScript
Операционные системы Windows, Linux, macOS
Последняя версия 3.1 (15 декабря 2023)
Лицензия NASA Open Source Agreement версия 1.3
Сайт github.com/NASA-SW-VnV/f…

Контекст

Поведение и характеристики системы определяются её требованиями. Большинство требований пишутся на естественных языках, таких как английский, что удобно для аналитиков и заинтересованных сторон, но не позволяет выявлять ошибки и пропуски с помощью формальных методов. Формальные же нотации, такие как VDM и Z, хотя и обладают точностью и однозначностью, как правило, затруднительны для понимания теми же пользователями[2].[3]

В качестве компромисса в FRET используются требования, создаваемые на контролируемом языке под названием FRETish, которые автоматически преобразуются во временную логику[2].[3]

Использование

Требования, оформленные на языке FRETish, могут быть сопоставлены с переменными во внешнем коде или моделях. Для каждой спецификации FRET генерирует и проверяет формальные эквиваленты, поддерживая импорт и экспорт требований в различные форматы, включая JSON[2].[4]

В FRET процессы моделируются и анализируются путём взаимодействия с внешними моделями и анализаторами. К поддерживаемым внешним инструментам относятся COCO simulator, Simulink, Design, Verifier, NuSMV и Copilot[2][4].

Примечания