Архитектура, управляемая моделями, заключается в том, что вы создаете модели, которые выражают проблему, которую необходимо решить, способом, свободным от каких-либо (или, по крайней мере, большинства) технологий реализации, а затем вы создаете реализацию для одной или нескольких конкретных платформ. Утверждают, что работа на более высоком уровне абстракции намного эффективнее и продуктивнее. Кроме того, ваши модели переживают технологии (так что, когда ваш первый язык / платформа устареет, у вас все еще есть что-то, что вы можете использовать для своего решения следующего поколения). Еще одно заявленное преимущество заключается в том, что можно сгенерировать большую часть шаблонной и «ворчливой работы». Как только компьютер поймет семантику вашей ситуации, он сможет больше вам помочь.
Некоторые утверждают, что такой подход в 10 раз более продуктивен и что это способ, который мы все будем создавать через 10 лет.
Однако это все лишь теория. Мне интересно, каковы будут результаты, когда резина встречается с дорогой. Кроме того, «официальная» версия MDA взята из OMG и кажется очень тяжелой. Он в значительной степени основан на UML, который может считаться хорошим или плохим в зависимости от того, кого вы спрашиваете (я склоняюсь к «плохому»).
Но, несмотря на эти опасения, трудно спорить с идеей работы на более высоком уровне абстракции и «обучения» компьютера пониманию семантики вашей проблемы и решения. Представьте себе серию моделей ER, которые просто выражают истину, а затем представьте, что вы используете их для создания значительной части вашего решения, сначала в одном наборе технологий, а затем снова в другом наборе технологий.
Итак, я хотел бы услышать мнение людей, которые действительно сейчас занимаются MDA ("официально" или нет). Какие инструменты вы используете? Как это работает? Какую часть теоретического обещания вы смогли уловить? Вы видите настоящее 10-кратное повышение эффективности?