Оригинал: Edson A. Oliveira Junior, Itana M. S. Gimenes, Jos´e C. Maldonado
В сфере программного обеспечения в последнее время все большую популярность приобретает подход разработки целой линейки программных продуктов (Product Line, PL). Экономические соображения IT-компаний по поводу стоимости и времени выхода одного продукта идейно привели индустрию к выше упомянутой методике, по которой продукты разрабатываются в форме много повторного использования перспективы. PL подход основывается на модели двух жизненного цикла: управляемая инженерия (domain engineering), где основной актив PL разрабатывается с целью повторного использования, и прикладная инженерия (application engineering), где основной актив используется для создания уже конкретных продуктов. Успех данного подхода зависит от нескольких принципов, в частности, от гибкого управления.
Однако, сейчас нет ни одного главного общепринятого виденья, которое бы объясняло, как быть с изменчивостью в PL артефактах, основанных на UML. Данная статья описывает подход SMarty (Stereotype-based Management of Variability), который способен решить эту проблему. Он состоит из 2х методов: UML профиль, SMartyProfile, и систематическое гибкое управление процессом, SMartyProcess.
SMartyProfile содержит набор шаблонов и отмеченных значений, отображающих изменчивость в моделях PL. В основном, SMartyProfile использует стандартное объектно-ориентированное обозначение и его механизмы, расширяет UML, дает графическое представление понятий изменчивости. Таким образом, нет необходимости менять структуру проектирования системы, чтобы соответствовать подходу PL. SMartyProcess представляет собой систематический процесс, который ведет пользователя через идентификации, разграничения, представления и отслеживания вариабельности в моделях PL. Данный метод поддерживается набором руководящих принципов применения, а также с помощью SMartyProfile для представления изменчивости.
Рис.1 SMartyProfile отображает взаимосвязь основных понятий PL в смысле управления изменчивостью. Здесь существует 4 основных понятия: вариабельность, точка вариации, вариант, и вариант ограничения. Основываясь на этих концепциях, рисунок 1 представляет SMartyProfile, который состоит из следующих шаблонов и соответствующих указанных значений:
Деятельность 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 менеджеров и аналитиков. Далее, предлагаются рекомендации для поддержания данной деятельности:
‘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 артефактах.
*изменчивость (вариабельность) - понятие, обозначающее наличие нескольких направлений в разработке конкретного ПО