В Части 1 я коснулся достоинств и недостатков разработки на основе моделей (MDD) и ее различных реализаций - RAD, BPMS и платформы разработки low-code.

В этом посте я расскажу о дополнительных подводных камнях и рекомендациях.

Платформы разработки с низким уровнем кода, BPMS, RAD и другие формы MDD позволяют разработчикам выражать свое решение на более высоком уровне абстракции, а не вручную.

Ручное кодирование - особенность или ответственность?

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

Если ручное кодирование - это плохо, почему все инструменты MDD это позволяют? 😉

Хотя все платформы разработки MDD позволяют кодировать вместе с графическими моделями, слишком большое количество ручного кодирования сводит на нет предполагаемую производительность, полученную в лучшем случае, и очень часто препятствует доставке.

Это потому, что ни одно представление визуальной модели или кода не является абсолютно двунаправленным. Большинство платформ разработки являются однонаправленными - от модели к коду, - в то время как некоторые платформы разработки являются двунаправленными для определенных моделей.

Все нетривиальные абстракции в какой-то степени дырявые - Джоэл Спольски

За последние три года я узнал о четырех неудачных проектах. Все используют MDD.

Плохая тестируемость

Еще одна проблема использования MDD - плохая тестируемость. Поскольку мы разрабатываем визуальные модели в MDD вместо написания строк кода, регрессионные тесты в основном представляют собой функциональные тесты пользовательского интерфейса, а не модульные тесты.

К сожалению, функциональный тест пользовательского интерфейса на соответствие WYSIWYG-формам и виджетам, которые можно перетаскивать, - худший кошмар для инженеров по качеству.

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

Без надежного набора тестов этот подход не масштабируется для разработки больших сложных приложений.

Платформа становится белым слоном

Платформу разработки и IDE легко установить и настроить. Но без опытных разработчиков платформа разработки превратится в белого слона.

Сможете ли вы найти и нанять квалифицированных разработчиков для этой платформы разработки? Легко ли доступны учебные курсы для этой платформы разработки?

На заказ или MDD?

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

Для разработки больших сложных систем я бы разделил систему на два более мелких приложения - приложение для Интернета и приложение для внутренней сети. Интернет-приложение будет небольшим и разрабатываться как индивидуальное программное обеспечение, в то время как приложение для интрасети будет использовать платформу разработки с низким уровнем кода или BPMS. Затем эти два приложения будут взаимодействовать через REST API. Эта рекомендация основана на следующих предположениях:

  • Прирост производительности от использования инструмента MDD в значительной степени компенсирует невысокое удобство работы пользователя с приложениями, ориентированными на интрасеть.
  • Инструмент MDD поставляется с инструментом функционального тестирования, который может адаптироваться к сгенерированным компьютером идентификаторам элементов управления пользовательского интерфейса.

Надеюсь, эта статья окажется для вас полезной. Не забывайте помогать другим, рекомендуя ❤ и делясь этим.

Вместе давайте сделаем нашу индустрию программного обеспечения потрясающей!

Мы ищем отличных командных игроков с солидными техническими навыками. Станьте частью нашего путешествия и нашего будущего!

Ваше здоровье! :)