4 янв. 2008 г.

MDE

Ну ооочень интересная статья http://citforum.ncstu.ru/computer/2006-02/.
Автор уже и так цитирует кого-то, так что ниче страшного, что я процитирую его:
...
В последние двадцать лет достижения в области языков программирования и платформ привели к повышению уровня абстракций, доступных для разработчиков, смягчив один из недостатков подхода CASE. Например, сегодня разработчики обычно используют более выразительные объектно-ориентированные языки (в частности, C++, Java и C#), а не Fortran или C. Повторно используемые библиотеки классов и платформы поддержки приложений минимизируют потребность в изобретении общих и прикладных сервисов - транзакций, отказоустойчивости, оповещения о событиях, безопасности, распределенного управления ресурсами и т.д. Все это позволяет разработчикам лучше защититься от сложности, связанной с созданием приложений на основе традиционных технологий.

Несмотря на эти достижения, остается несколько неприятных проблем. В центре этих проблем лежит сложность платформ, которая растет быстрее способности языков общего назначения маскировать ее. Например, популярные платформы промежуточного программного обеспечения J2EE, .NET и CORBA содержат тысячи классов и методов со многими сложными зависимостями и тонкими побочными эффектами, что требует значительных усилий при программировании и тщательной настройки. Более того, поскольку эти платформы быстро развиваются (а также регулярно возникают новые платформы), разработчики тратят много сил на портирование кода приложений на различные платформы или обновленные версии существующих платформ.

Родственная проблема состоит в том, что код большинства приложений и платформ по-прежнему пишется на языках третьего поколения, для чего требуется много времени и усилий, в особенности для выполнения интеграционных действий - развертывание, конфигурирование и поддержка качества системы. Например, на Java или C# трудно написать код, корректно и оптимально развертывающий крупномасштабные распределенные системы с сотнями тысяч взаимосвязанных компонентов.

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

В то же время платформенные технологии нового поколения, например, Web-сервисы и архитектуры продуктовых линий (product-line architecture) становятся настолько сложными, что годами овладевают платформенными API и паттернами использования и при этом часто оказываются знакомыми только с частью возможностей регулярно используемой ими платформы. Более того, при использовании языков третьего поколения разработчики вынуждаются уделять настолько большое внимание тактическим деталям императивного программирования, что они часто не могут концентрироваться на стратегических архитектурных проблемах, таких как корректность системы в целом и ее производительность. Такие фрагментированные представления проекта в целом затрудняют разработчикам понимание того, какие части их приложений являются чувствительными к побочным эффектам, возникающим при изменении требований заказчиков и/или среды разработки. Часто это вынуждает разработчиков производить неоптимальные решения, в которых дублируются части кода, нарушаются ключевые архитектурные принципы, усложняется развитие системы и обеспечение требуемого качества.

Многообещающим подходом, направленным на решение этих проблем, является разработка технологий инженерии, управляемой моделями, (Model-Driven Engineering, MDE). При использовании MDE разработка ведется на предметно-ориентированных языках моделирования (Domain-Specific Modeling Language, DSML), в системах типов которых формализуется структура, поведения и требования приложения внутри соответствующей предметной области. DSML описываются с использованием метамоделей, в которых определяются связи между понятиями предметной области и точно специфицируется основная семантика и ограничения, ассоциируемые с этими понятиями. Разработчики применяют DSML для построения приложений, используя элементы системы типов, зафиксированной в метамодели, и выражают проектный замысел в декларативном, а не императивном стиле.

Важнейшими компонентами MDE являются трансформационные процессоры и генераторы, которые анализируют определенные аспекты моделей и синтезируют разные вида артефактов: исходный код, входные данные для имитационного моделирования, XML-описания развертывания или альтернативные представления моделей. Возможность синтеза артефактов на основе моделей помогает поддерживать согласованность между реализациями приложения и аналитической информацией о требованиях к функциональных возможностям системы и ее качества, зафиксированных в модели. Этот автоматический трансформационный процесс часто называют "правильным по построению" ("correct-by-construction") в отличие от утомительного и чреватого ошибками традиционного процесса разработки программного обеспечения вручную в стиле "построения путем коррекции" ("construct-by-correction").
...

Комментариев нет: