Table of Contents

Систематическое управление изменчивостью* в линейках программных продуктов, основанных на UML (Smarty)

Оригинал: Edson A. Oliveira Junior, Itana M. S. Gimenes, Jos´e C. Maldonado

Введение

В сфере программного обеспечения в последнее время все большую популярность приобретает подход разработки целой линейки программных продуктов (Product Line, PL). Экономические соображения IT-компаний по поводу стоимости и времени выхода одного продукта идейно привели индустрию к выше упомянутой методике, по которой продукты разрабатываются в форме много повторного использования перспективы. PL подход основывается на модели двух жизненного цикла: управляемая инженерия (domain engineering), где основной актив PL разрабатывается с целью повторного использования, и прикладная инженерия (application engineering), где основной актив используется для создания уже конкретных продуктов. Успех данного подхода зависит от нескольких принципов, в частности, от гибкого управления.

SMarty: управляемая изменчивость в линейках программных продуктов, основанных на UML

Однако, сейчас нет ни одного главного общепринятого виденья, которое бы объясняло, как быть с изменчивостью в PL артефактах, основанных на UML. Данная статья описывает подход SMarty (Stereotype-based Management of Variability), который способен решить эту проблему. Он состоит из 2х методов: UML профиль, SMartyProfile, и систематическое гибкое управление процессом, SMartyProcess.

SMartyProfile содержит набор шаблонов и отмеченных значений, отображающих изменчивость в моделях PL. В основном, SMartyProfile использует стандартное объектно-ориентированное обозначение и его механизмы, расширяет UML, дает графическое представление понятий изменчивости. Таким образом, нет необходимости менять структуру проектирования системы, чтобы соответствовать подходу PL. SMartyProcess представляет собой систематический процесс, который ведет пользователя через идентификации, разграничения, представления и отслеживания вариабельности в моделях PL. Данный метод поддерживается набором руководящих принципов применения, а также с помощью SMartyProfile для представления изменчивости.

SMartyProfile

Рис.1 SMartyProfile отображает взаимосвязь основных понятий PL в смысле управления изменчивостью. Здесь существует 4 основных понятия: вариабельность, точка вариации, вариант, и вариант ограничения. Основываясь на этих концепциях, рисунок 1 представляет SMartyProfile, который состоит из следующих шаблонов и соответствующих указанных значений:

  1. «variability» (вариабельность) - представляет понятие изменчивости PL и является расширением метакласса Comment. Данный шаблон имеет следующие переменные:
    • name – указываемое имя, через которое мы можем ссылаться на шаблон;
    • minSelection – минимальное кол-во вариантов, которые будут выбраны с целью нахождения точки вариабельности или самой вариабельности;
    • maxSelection – максимальное кол-во вариантов, которые будут выбраны с целью нахождения точки вариабельности или самой вариабельности;
    • bindingTime – момент времени, в который вариабельность должна быть разрешена, представлена классом BindingTime;
    • allowsAddingVar – указывает на то, возможно ли включать новые варианты развития PL;
    • variants – коллекция возможных вариантов вариабельности;
    • realizes – коллекция моделей вариабельности, которые реализуют вариабельность.
  2. «variationPoint» (точка вариации) - представляет собой в PL концепцию точки вариации и является расширением метаклассов Actor, UseCase, Interface и Class. Данный шаблон включает в себя следующие переменные:
    • numberOfVariants – инициализирует число связанных вариантов, которые могут быть выбраны с целью нахождения точки вариации;
    • bindingTime - момент времени, в который точка вариации должна быть разрешена, представлена классом BindingTime;
    • variants – коллекция возможных экземпляров, связанных с этой точкой вариации;
    • variabilities – коллекциях связанных изменчивостей.
  3. «variant» (вариант) - представляет собой концепцию варианта в PL и является расширением метаклассов Actor, UseCase, Interface, Class. Данный шаблон специализируется на 4х других неабстрактных шаблонах: «mandatory», «optional», «alternative OR», «alternative XOR». Содержит следующие переменные:
    • rootVP – точка вариации, с которой связан вариант;
    • variabilities – коллекция связанных изменчивостей.
  4. «mandatory» - представляет собой обязательный вариант, который является частью каждого из продуктов в PL.
  5. «optional» - необязательный вариант, который может быть выбран с целью разрешения точки вариации или изменчивости.
  6. «alternative OR» - представляет собой вариант, который является частью группы альтернативных включаемых вариантов. Различного комбинации таких вариантов могут по-разному разрешить точку вариации или вариабельности.
  7. «alternative XOR» - вариант, который является частью группы альтернативных особых вариантов. Это значит, что только один вариант этой группы может быть выбран для разрешения точки вариации или изменчивости.
  8. «mutex» - представляет собой концепцию PL варианта скованного и взаимоисключающего отношения между двумя вариантами. Это означает, что если выбран один вариант, другой выбран быть уже не может.
  9. «requires» - концепция PL варианта и связующее звено между двумя вариантами, в которых выбранный вариант диктует необходимость выбора другого конкретного варианта.
  10. «variable» - расширение метакласса Component. Указывает на то, имеет ли компонент набор классов с явной вариабельностью. Этот шаблон имеет единственную переменную classSet – коллекция экземпляров класса, которые формируют составляющую.

SMartyProcess

Деятельность SMartyProcess напрямую связана с общим процессом развития разработки линейки программных продуктов. На рисунке 2 показано встраивание новой технологии (справа) в привычную старую (слева) на протяжении всего процесса разработки ПО, что приводит к увеличению вариабельности, как факт. Как видно из диаграммы, SMartyProcess является многократным и постепенным процессом, который работает параллельно с развитием PL и использует выходные данные из основного актива развития PL в качестве входных (на ровне с предоставляемой информацией). Например, диаграмма вариантов использования и диаграмма классов подаются на вход SMartyProcess, но продолжают использоваться в основном активе разработки PL. Тем не менее, некоторые модели, такие, как отслеживания и реализации изменчивости, возникают сами по себе.

Рис.2 ‘Variability Tracing Definition’ принимает на вход варианты использования и характеристическую модель, построенных в процессе разработки PL. Модель трассировки изменчивости строится в соответствие со следующими правилами: (i) отмеченные особенности PL перечислены; (ii) отмеченные варианты использования перечислены; (iiI) взаимосвязи между особенностями и вариантами использования повторно проанализированы; (iv) пересечения между использованными случаями и особенностями отмечены. Данная модель представляется в табличной форме и поддерживает трассирование от функций для всех UML моделей PL.

В каждую итерацию между PL разработкой и SMartyProcess, ‘Variability Identification’ постепенно принимает в качестве входных данных варианты использования, функции, класс и модель компонентов. Цель данной деятельности – выявление изменчивости, связанной с моделями. SMartyProfile основательно поддерживает развитие этой деятельности, применяя своими шаблоны к моделям PL. ‘Variability Identification’ напрямую зависит от управляемой инженерии, что требует внимания PL менеджеров и аналитиков. Далее, предлагаются рекомендации для поддержания данной деятельности:

  1. Элементы моделей вариантов использования связаны с расширением и точками расширения механизма.
  2. В моделях класса точки вариации и их варианты определены в следующих обозначениях: обобщение - наиболее общие классификаторы являются точками вариации; реализация интерфейса – поставщики (спецификации) являются точками вариации и реализации (клиенты) – это варианты; агрегация ассоциации – набранные экземпляры с пустыми инстансами – это точки вариации, а связанные с ними набранные экземпляры являются классами; композитная агрегация – печатаемые экземпляры с заполненными инстансами – точки вариации и связанные с ними набранные экземпляры – варианты.
  3. Элементы моделей вариантов использования ссылаются на включение (зависимость) или ассоциацию с актерами отношений. Предполагаются либо обязательные, либо необязательные варианты.
  4. Элементы моделей классов связаны отношением, в котором атрибут aggregationKind имеет нулевое значением, т.е. ни агрегация, на композиция не предполагают необязательные варианты.
  5. Компоненты, в моделях компонент, с точкой вариации или классами вариации указаны шаблонами как «variable».

‘Variability Delimitation’ направлена на определение следующих атрибутов изменчивости: (i) multiplicity (кратность); (ii) binding time (время разрешения); (iii) возможность (possibility) добавления новых элементов к соответствующему множеству вариантов. Кратность изменчивости определяет минимальное (поле minSelection) и максимальное (поле maxSelection) количество элементов данного варианта, которые должны быть выбраны для решения варианта. Применяются следующие правила: (i) вариабельности с дополнительными вариантами имеют кратность: minSelection = 0, maxSelection = 1; (ii) вариабельности с особыми альтернативными вариантами имеют кратность: minSelection = maxSelection = 1; (iii) вариабельности с включающимися альтернативными вариантами имеют кратность: minSelection = 1, maxSelection = кол-во вариантов.

Определение Binding Time имеет важное значение для определения выбора механизмов осуществления, описанных в следующей деятельности.

‘Identification of Mechanisms for Variability Implementation’ направлен на выбор механизмов, которые будут использоваться для реализации изменчивости. На входе – модели классов и компонент с их соответствующими вариабельностями, представленными и разграниченными в результате предыдущей деятельности. На выходе данной деятельности – модель реализации, представленная в виде таблице. Каждая строка таблицы содержит имя изменчивости, элемент, в котором она происходит, время разрешения, механизм реализации, а также стратегия осуществления. Среди этих техник – обобщение, расширение, параметризация.

‘Variability Tracing and Control’ использует изменяемую метамодель для описания взаимосвязей между различными артефактами PL и их точками вариации, вариантов, времени разрешения и механизмов реализации. Вместе с моделью отслеживания изменчивости эта метамодель позволяет ассоциацию функции с соответствующими прецедентами и, следовательно, с элементами моделей классов и компонентов. Выполнение этой деятельности состоит из экземпляра метамодели для PL.

'Configuration Analysis of Specific Products’ направлена на изучение влияния выбора возможных особенностей PL артефактов с целью анализа целесообразности производства конкретных PL продуктов. Выбор особенности может означать выбор конфигурации продукта в соответствии с описанными точками вариации. Кроме того, зависит от того, требуется продукту дополнительной особенности или нет, введение этой функции должно быть обязательно проанализировано в PL артефактах.

Пример

Ниже приведена построение SMarty модели при разработке аркадной PL игры.

Рис.3 Рис.4 Рис.5 Рис.6

Список использованной литературы


*изменчивость (вариабельность) - понятие, обозначающее наличие нескольких направлений в разработке конкретного ПО