Разработка проектов из сферы интернета вещей (IoT – Internet of Things) является сложной задачей, идёт ли речь об автомобиле с автопилотом, интерфейсе пользователя для мультимедийной системы автомобиля или о целом предприятии, подключенном к интернету. Программное обеспечение всех этих объектов содержит тысячи (если не миллионы) строк кода. При этом многие проекты касаются задач, критичных с точки зрения нормальной работы объекта или с точки зрения безопасности. Ввиду этого разработчики должны быть на 100% уверены, что программное обеспечение, управляющее этими объектами, будет работать как положено.
Возможно, вы уже знакомы с результатами различных исследований на тему того, что количество критичных к безопасности систем в интернете вещей постоянно растёт ввиду повышения уровня интеграции и взаимодействия между различными системами и их программным обеспечением. Эти тенденции наряду с увеличением функциональности, размеров и сложности программного обеспечения, критичного с точки зрения безопасности, определяют колоссальную сложность процесса разработки таких приложений. Многие разработчики не видят возможности разрешения возникающих проблем в рамках традиционных (текстовых) методов написания кода.
Большинство разработчиков программного обеспечения, критичного с точки зрения безопасности, с которыми я общался, решают возникающие сложности с помощью модельно-ориентированного метода разработки программного обеспечения (MBD – model-based design). Ключевым аспектом данного метода является взаимодействие разработчика с моделями встроенного приложения и всей системы, представленными в наглядной графической форме. Недавно я провёл вебинар на эту тему, материалы вебинара доступны по этой ссылке.
Использование модели при разработке приложения позволяет лучше понять особенности работы, решить задачи системного моделирования и повысить характеристики разрабатываемого объекта. Кроме того, работу объекта можно увязать со специфическими требованиями, выдвинутыми заказчиками. Наконец, использование модели позволяет автоматически сгенерировать код встраиваемого приложения без необходимости ручного написания кода.