Существует ли история успеха MDSD/MDA для реальных приложений?

В настоящее время я сталкиваюсь с ситуацией, когда мне, как стороннику разработки, управляемой тестами, приходится конкурировать с защитником разработки программного обеспечения на основе моделей (MDSD) / архитектуры на основе моделей (MDA).

На мой взгляд, генерация кода является ценным инструментом в моем наборе инструментов, и я интенсивно использую шаблоны и автоматизацию, когда это необходимо. Я также создаю диаграммы в UML, когда думаю, что это помогает понять внутреннюю работу или обсудить архитектуру на белой доске. Однако я сильно сомневаюсь, что создание программного обеспечения через UML (создание диаграмм состояний и диаграмм последовательности для создания рабочего кода, а не только скелетов кода) более эффективно для многоуровневых приложений (уровня базы данных, уровня бизнеса / домена и графического интерфейса, возможно, даже распределенного). Мне кажется, что когда дело доходит до MDSD, инструменты CASE неожиданно перестают быть просто инструментом, но их нужно удовлетворить: как я понимаю, с одной стороны, MDSDevelopers извлекает выгоду из более высокой абстракции, которую дает им UML, но при в то же время они борются с модификацией codegenerator/template/engine, чтобы полностью удовлетворить свои потребности, которые могут быть легко реализованы (и протестированы), если использовать другой инструмент из своего набора инструментов (VisualStudio, Eclipse,...).

Все это заставляет меня задуматься о том, была ли история успеха (если, конечно, продукт был развернут вовремя, в рамках бюджета, и лишь немногие ошибки и части программного обеспечения были повторно использованы позднее) для реального приложения, которое полностью заполняет этот creteria и был разработан с использованием строгого модельно-ориентированного подхода:

  • это не имеет ничего общего с Группой управления объектами (OMG) или с консультантами, связанными с MDSD/MDA/SOA/
  • приложение не относится к моделированию бизнес-процессов и не является инструментом CASE.
  • приложение активно используется конечным пользователем
  • он имеет как минимум три уровня, включая пользовательский интерфейс, который выходит за рамки отображения необработанных табличных значений и не является одним из распространенных примеров MDA/MDSD ("как моделировать кофемашину, светофор, посудомоечную машину").

5 ответов

Я использовал MDA и генерацию кода в проекте встроенной системы, используя 4 процессора, подключенных через CAN. У нас было более 20 осей движения и много, много датчиков. Система была очень надежной и ремонтопригодной, так как механические компоненты были оценены и модифицированы.

Мы работали над моделями и генерировали код, поэтому модели всегда были современными. Мы провели тщательный анализ предметной области, чтобы добиться изоляции предмета. Управление двигателем требовало очень высокой производительности и поэтому не было смоделировано или сгенерировано. Наши сетевые драйверы также были закодированы вручную, и мы написали интерфейсы, которые позволяли сервисам-мостам отправлять события любому сервису в любом месте системы по мере необходимости (хотя это строго контролировалось, чтобы минимизировать межпроцессорные зависимости).

Использование метода потребовало некоторой дисциплины, но иметь рабочие модели было замечательно, потому что они могут быть рассмотрены не типами программного обеспечения.

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

Хорошие люди в Pathfinder Solutions (наш поставщик инструментов) могут помочь вам наставником в этом проекте.

Небольшое, но, тем не менее, полезное свидетельство об использовании MDSD было размещено в сети управляемых моделями программ:

http://www.modeldrivensoftware.net/profiles/blogs/viva-mdd-follow-up-building-a?xg_source=activity

Это сравнительно небольшое приложение, которое разрабатывается, но все же является хорошим примером MDSD в действии.

Другие истории успеха перечислены на сайте Metacase ( http://www.metacase.com/cases/index.html). Metacase продает MetaEdit+, который реализует DSM (предметно-ориентированное моделирование). DSM - это просто форма MDSD.

Я также разрабатываю ABSE (Atom-Based Software Engineering), еще одну форму MDSD, очень близкую к DSM. ABSE обрисован в общих чертах в http://www.abse.info/.

Вы также можете посмотреть слайды с предыдущих конференций Code Generation. Некоторые из этих докладов были из успешных тематических исследований, например, http://www.codegeneration.net/cg2009/slides.php

Я работаю над одним из проектов по модернизации устаревших версий, использующим инструмент MDA под названием Bluage. Это для большой организации здравоохранения и в производстве, так что я могу сказать, что это успешно. MDA лучше в случае устаревшей модернизации, поскольку она может генерировать модель KDM из некоторых технологий, таких как pacbase, которые не будут поддерживаться.

Я работал над системой MDSD, которая генерировала веб-приложения в стиле администратора в Google Closure. Я считаю, что ваш вопрос неотразим. Слишком много сложности, и ваша система MDSD слишком сложна в использовании. Слишком просто, и вы не будете создавать приложения, которые полезны в реальном мире. Где MDSD действительно сияет, так это экономия времени разработчика, набирающего много кода стиля сантехники, но как MDSD может оставаться эффективным в нескольких выпусках? Требования могут идти во многих направлениях. Это настоящий вызов. Недавно я написал в блоге о моих уроках MDSD, извлеченных из этого проекта.

Другие вопросы по тегам