Найти тему
Современный мир

Обучение разработке программного обеспечения на основе прагматических моделей

http://www.inln.ru/soft/?yclid=6536923522475007682
http://www.inln.ru/soft/?yclid=6536923522475007682

Модельно-ориентированный подход к разработке программного обеспечения (MDSD) обещает повышение скорости разработки и качества программного обеспечения за счет использования формальной модели в качестве основы для внедрения системы.

Особое внимание уделяется итеративному инкрементальному процессу MDSD и использованию общих промышленных инструментов и методов, интегрированных вместе, вместо полноценных рабочих столов MDSD.

В контексте теории MDSD концентрируется на двух темах: специфические для домена языки (DSL) и генерация кода. DSL работают с обработкой входных данных модели для представления в памяти. Генерация кода использует модель "в памяти" для генерации целевого кода.

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

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

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

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

Что еще важно, использование таких инструментов создает риск блокировки поставщика. Хотя интегрированные инструменты могут быть полезны во многих ситуациях, они не обязательно требуются в рамках подхода, основанного на моделировании.

Можно использовать набор независимых инструментов для отдельных частей инфраструктуры разработки на основе модели. Такой подход обеспечивает свободное сцепление и гибкость при выборе инструментов.

MDSD требует специального процесса разработки программного обеспечения.

Считается, что подход, основанный на моделировании, требует использования специального процесса разработки программного обеспечения, в котором мета-модель и язык моделирования должны быть полностью определены и реализованы, прежде чем модель системы может быть разработана. Это мнение делает MDSD настолько же негибким и несовместимым с динамичными процессами разработки, которым отдается предпочтение в настоящее время.

http://www.inln.ru/soft/?yclid=6537049319376199460
http://www.inln.ru/soft/?yclid=6537049319376199460

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

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

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

● Генераторы схем баз данных (например, DOMMLite или инструменты рефакторинга баз данных) и код объектно-реляционного картирования (ORM) из описания структуры данных (используется в различных инструментах ORM).

● Генераторы кода для доступа к веб-сервисам на основе описания WSDL.

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

● IDE плагины для конкретных технологий, способных генерировать скелеты повторяющихся артефактов (например, GWT плагин для IntelliJ Idea, генерирующий стандартные сервисные артефакты GWT RPC).

● Генеративная структура Spring Roo, позволяющая реализовать пользовательские генераторы кода для различных повторяющихся артефактов кода (в настоящее время публикуемые генераторы ориентированы на область применения CRUD на основе веб-технологий).

Более того, приложение MDSD часто скрывается от программиста библиотеками и фреймворками, что позволяет задавать поведение с помощью модели, не зная деталей обработки модели.

В случае динамических языков, таких как Ruby, для описания моделей могут быть использованы внутренние специфические для домена языки, а генерация кода может быть заменена на модификацию программы во время выполнения с использованием отражения. Такой подход делает использование MDSD еще менее очевидным.

Поколение приложений CRUD было разделено на следующие четыре части, которые соответствуют вышеупомянутым итерациям:

1. Простая генерация уровня данных. Генерируемые артефакты - это классы для объектов данных (например, класс Patient в случае применения CRUD в домене), простые интерфейсы DAO, реализации DAO и сценарий создания таблицы базы данных SQL. Решение этой итерации не может создать целую систему, но может создать загрузочный уровень данных для приложения CRUD.

2. Поддержка в преодолении организационных ограничений. Объекты-субъекты, которые обрабатываются приложениями CRUD, должны быть проверены на соответствие правилам домена. Эта итерация обогащает реализацию DAO для проверки объектов объектов перед их сохранением в базе данных.

3. Ссылки между субъектами. Третья итерация снова добавляет сгенерированный код на уровень данных и бизнес-уровня. Первые две итерации поддерживали простые сущности. Это позволяет наладить отношения между ними, вводя ссылки.

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