Диссертация (1145120), страница 7
Текст из файла (страница 7)
Разумеется, речь не идёт о тех начинаниях, которые двигают всё сообщество индустриального программирования вперёд,уменьшая эту меру хаоса, — иначе она никогда не изменялась бы. Однако визуальное моделирование не стало такой прорывной технологией, по-прежнему есть много скептиков, кто по тем или иным причинамего не использует в своей работе. Визуальное моделирование принадлежит, скорее, классу технологий, которые вместе с другими средствами разработки ПО в совокупности позволяют индустриальному программированию эволюционировать небольшими шагами.34Если касательно последней причины трудно предложить соответствующеерешение, то относительно первых двух трудностей существует выход —предметно-ориентированное визуальное моделирование — DSM [301]13.
Этотподход стал активно развиваться в 2000-х годах. Помимо трудностей UMLразвитию DSM-подхода способствует также зрелость платформ для автоматизированной разработки новых визуальных языков и средств их инструментальной поддержки (обзор таких средств см., например, в [115]). В этой области существуют несколько успешных исследовательских групп, тесно сотрудничающих с индустрией [346], [233], [268].1.2 Предметно-ориентированное моделирование1.2.1 Основные идеи и история вопросаПредметно-ориентированные языки (Domain-Specific Languages, DSL) известны в программировании под разными названиями с конца 60-х годов(application-oriented, special purpose, specialized, task specific) [345].
Главнаяидея предметно-ориентированных языков заключалась в том, чтобы для небольшой предметной области предложить максимально эффективные абстракции, дающие выигрыш в реализации программного обеспечения. Приэтом встаёт вопрос о реализации средств программной поддержки для такихязыков (разработка компиляторов, сред разработки и пр.) — обзор соответствующих технологий можно найти в работе [35]. Таким образом, предметно-ориентированные языки программирования активно развиваются в последние десятилетия и являются отдельным предметом изучения.13Для преодоления ограничений UML его авторы создали так называемый extensionмеханизм — средство расширения языка, которое позволяет получать варианты UML наоснове стандартной базовой версии.
Многие UML-средства поддерживают этот механизм.Однако он является тяжеловесным — часто оказывается, что трудно выразить таким образом абстракции новой предметной области, а также провести надлежащую конфигурациюсоответствующего UML-средства. Информацию об использовании extension-механизмаUML для реализации предметно-ориентированных языков, а также дискуссию по этомувопросу можно найти в [253], [370].35В данной работе мы будем рассматривать предметно-ориентированное моделирование и, соответственно, визуальные предметно-ориентированныеязыки, называя их DSM-языками. Несмотря на идейную близость DSL иDSM-подхода (см., например, [204]), а также то, что некоторые исследователи и практики объединяют эти области — см., например, обзор [237], посвящённый средам разработки средств поддержки предметно-ориентированныхязыков (тестовых и графических), — в действительности оба подхода сильноразличаются.
В первом случае речь идёт именно о языках программированияи, соответственно, говоря об инструментарии, мы имеем ввиду средства создания компиляторов и сред разработки [35] или средства анализа программ[43], [138], [320], созданных для таких языков. Во втором случае мы говоримо визуальных абстракциях, о средствах быстрой разработки графических редакторов и генераторов кода, то есть имеем совершенно другой класс приложений по сравнению с компиляторами и средами разработки. Соответственно, предметно-ориентированные языки программирования развивались с 60-хгодов, в том числе проектно-ориентированные языки, основывающиеся намакросах (создавались и использовались при разработке крупных приложений на языке PL/1 и некоторых других языках программирования14). DSMязыки появились в 90-х годах как результат успешных экспериментов с линейками программных продуктов [112], [210], [373], [405] в больших компаниях, таких как Nokia, Toshiba, NASA и др.
[375].Именно тогда возник вопрос о создании визуальных языков и соответствующих решений не только для отдельных больших областей, например,телекоммуникаций, но также для инфраструктур разработки, создаваемых иподдерживаемых в компаниях при разработке и сопровождении большихмноговерсионных систем или линеек программных продуктов. Дело в том,14В 2002 году автор данной диссертационной работы предложил концепцию проектноориентированных языков программирования, основанных на использовании механизмамакрорасширений при разработке информационных систем и подход к их распознаваниюв контексте реинжиниринга таких систем [320].36что компании, долго занимаясь определёнными проектами или областями,как правило, склонны создавать какие-то свои наработки. Идеология линеекпрограммных продуктов создала для этого стихийного подхода концептуально-методологическую основу.Метод разработки ПО посредством создания линеек программных продуктов является эффективным способом сконцентрировать ресурсы компании наопределённых бизнес-приоритетах, то есть на некоторой нише рынка, ипредложить не единичный продукт, а набор продуктов.
При этом оказалисьвостребованными идеи о повторном использовании программных компонент,предлагавшиеся ещё с конца 60-х годов такими исследователями какD. McIlroy, D. Panas, в России — А. Л. Фуксманом и др. (более детальный обзор вопроса см. в [73]). Оказалось, что организовать повторное использование в широком масштабе не удаётся, но если уменьшить масштаб до семейства программных продуктов, то повторное использование можно успешноприменять. Первая промышленная разработка семейства программных продуктов, описанная в литературе, состоялась в 1977 году в Японии, в компании Toshiba. В результате был создан метод под названием «Toshiba SoftwareFactory» [343], который использовался для разработки линейки программныхсистем для генераторов электроэнергии. В дальнейшем подход к разработкеПО с помощью организации семейств продуктов активно исследовался (90-егоды были пиком публикаций на эту тему).
Было создано большое число методов, техник и продуктов (см., например, обзор продуктов по управлениювариативностью [73]), а сам подход стал применяться во многих средних икрупных компаниях — при разработке мобильных операционных систем,авиационного, медицинского ПО и т.д. В России линейки ПО получилиназвание сборочного ПО и исследовались в работах Е. М. Лаврищевой [265],[331], [332], [333] и М. М.
Горбунова-Посадова [23].Итак, в начале 2000-х годов появилась идея использовать при разработкеинфраструктур семейств программных продуктов визуальное моделирование37в предметно-ориентированном стиле. [375] является одной из первых работ,где эта идея была ясно сформулирована. Стоит отметить монографию [263],изданную в 2004 году и посвящённую применению технологий компанииMicrosoft и DSM-подхода для создания фабрик программного обеспечения(software factories).
В 2003–2004 годах автором данной диссертационной работы было предложено понятие визуального языка проекта, ориентирующееся на многоверсионные продукты, разрабатывающиеся по многу лет [70],[86]15. Более детально связь метода разработки семейства программных продуктов с предметно-ориентированным визуальным моделированием обсуждается в работе [49].Значительной вехой в истории развития предметно-ориентированного визуального моделирования явилось издание в 2008 году монографии [301], вкоторой был обобщён опыт группы MetaEdit по разработке и использованиюсредств поддержки DSM-подхода.Однако на настоящий момент DSM-подход в программной инженерии неоказал решающего влияния на разработку ПО, как это ожидалось DSMсообществом [295], [306]. В связи с этим внимание исследователей к даннойтематике в контексте программной инженерии снизилось, а интенсивностьразработки промышленных средств, предназначенных для создания DSMрешений, уменьшилась.
Однако это говорит лишь о том, что необходимо изменить угол зрения на данный вопрос, поскольку в целом потребность в разработке эффективных визуальных абстракций при обработке информациивелика [11], [13]. По мнению автора, требуется отойти от узкого пониманиявизуального моделирования лишь как средства создания эффективных абстракций с возможностью генерации по ним программного кода и расширитьсферу применения подхода. Тем более, что в определении предметной об15Использование предметно-ориентированного моделирования в разработке многоверсионных продуктов также целесообразно и не попадает под юрисдикцию семейств ПО: вомногих исследованиях, например, в [210], подчёркивалось, что семейства программныхпродуктов включают в себя разные продукты, а не последовательные версии одного и того же продукта.38ласти DSM подхода, данного в [301], указывалось, что в качестве такой области может выступать некоторая (априори — любая) сфера интереса конкретной разработки программного обеспечения — отдельного бизнес-проекта,процесса разработки линейки продуктов, процесса создания платформы илицелевой среды.