Специалисты исследовательской группы SOM Research Lab Университета Оберта де Каталония в Испании разработали инструмент проверки моделей программного обеспечения. Он находит ошибки непосредственно в процессе создания модели, а не после ее завершения. Инструмент ускорит разработку ПО и поможет улучшить его качество.
От модели до программы
Разработка ПО начинается с моделирования. Модель описывает систему определенным образом: как она будет работать с данными, какие последовательности шагов для этого нужны, в каких состояниях она сможет находиться, из чего состоит, как части взаимодействуют между собой и т.д.
Модели – это абстракции, которые описывают внутреннее устройство, функционирование и жизненный цикл ПО. Они являются основой, которая затем обрастает деталями реализации.
Один из авторов исследования Роберт Кларисо отметил, что чаще всего модели для создания промышленного ПО строятся на UML (универсальном языке моделирования). Ограничения для частей диаграммы описываются на OCL (языке объектных ограничений).
Пример модели: вверху – UML-диаграмма классов, внизу – дополнительные ограничения, описанные на OCL.
Инструменты, встроенные, например, в StarUML и другие редакторы, проверяют такие модели только в конце процесса. Часто это влечет за собой серьезное изменение архитектуры.
Чем раньше, тем лучше
Для оперативного поиска и устранения ошибок исследователи разработали дополнительные средства. Они используются при проверке модели в процессе внесения изменений.
Если в модели есть проблема, то исправить ее на этапе написания кода будет очень затратно. Если же оставить все, как есть, это отразится на финальной реализации системы. Качество такого ПО будет невысоким.
Именно поэтому ученые считают, что не стоит приступать к коду, не убедившись, что модель верна. Описание модели хорошо структурировано и лаконично, поэтому проверка не займет много времени.
Почему стоит анализировать все изменения?
Когда вы добавляете или удаляете что-то из модели или же меняете информацию в определенном компоненте, это может затронуть и другие части системы. Поэтому нужно рассматривать модель в комплексе – это предупредит регрессию.
Сертификация моделей
Исследователи считают, что новые инструменты можно будет использовать для сертификации моделей. Если по итогам проверки система не нашла проблем, она может сгенерировать сертификат – образец, который отражает корректную работу модели. После модификации снова проводится проверка, и генерируется новый сертификат. Такой подход исключает необходимость в сторонних проверках.
Адаптировать существующий сертификат к новым изменениям проще, чем проводить полную проверку с нуля. Это занимает меньше времени и в перспективе может ускорить разработку промышленного ПО.
Проблема пока только одна: интегрировать сертификацию в существующие среды и инструменты разработки достаточно сложно. Но технически это вполне реализуемо.