Bottom-up adoption of software product lines: a generic and extensible approach

Jabier Martinez, Tewfik Ziadi, Tegawendé F. Bissyandé, Jacques Klein, and Yves Le Traon. 2015. Bottom-up adoption of software product lines: a generic and extensible approach. In Proceedings of the 19th International Conference on Software Product Line (SPLC '15). ACM, New York, NY, USA, 101-110. DOI=http://dx.doi.org/10.1145/2791060.2791086

Переиспользование программного обеспечения - процесс создания нового ПО, используя куски уже существующего кода. Обычно это делается для удобства, к примеру, в подходе copy-paste-modify, или же в более обдуманных решения, таких как Software Product Line Engineering (Проектирование линейки продуктов ПО, далее SPLE). В более чем 50% случаев, реализацию SPL откладывают до создания уже нескольких похожих продуктов. Этот подход называется bottom-up(снизу-вверх). Его главными целями являются:

  • Идентификация фичей и их анализ – выделение особых фичей для каждого варианта продукта.
  • Локализация фичей – соответствие фичей к готовым реализациям продукта.
  • Перепроектирование – рефакторинг имеющихся артефактов для формирования SPLE подхода.

В этой статье, описываются принципы построения общего и расширяемого фреймворка для адаптации к SPL.

Основными принципами фреймворка являются:

  1. Декомпозиция артефактов на отдельные элементы, которые мы назовём Элементами.
  2. Для каждой пары определённого типа артефактов определена метрика, которая используется для сравнения.
  3. Создание набора Элементов, созданных из существующих артефактов, одного артефакта или его части.

Для поддержки разных типов артефактов мы будем полагаться на Адаптеры, для разных типов артефактов. Они разбивают каждый артефакт на Элементы. На примере 1 можно увидеть примеры работы этих артефактов:

Создание Адаптера включает в себя следующие действия:

  1. Идентификация элементов, составляющих Артефакт.
  2. Определение метрики между парами Элементов.
  3. Определение условий для Элементов, которые определяют возможность нахождения Элементов в одном артефакте.
  4. Создание переиспользуемых шаблонов(assets).

Описание подхода bottom-up:

Архитектура фреймворка представляет из себя несколько слоёв:

  1. Слой адаптеров, переводящий артефакты в AdaptedArtefacts.
  2. Идентификация блоков. Блок – это набор Элементов, которые могут быть объединены и рассматриваемы как одно целое.
  3. Идентификация и локализация фичей.
  4. Определение ограничений на блоки.
  5. Синтез модели фичей.
  6. Создание шаблонов.
  7. Визуализация процесса.

BUT4Reuse является реализацией представленного выше фреймворка. В нём присутствует 10 адаптеров, для приёма различных вариантов артефакта и выделения из них Элементов. Разберём идеи реализации вышестоящих пунктов:

1. Идентификация блоков.

  Пусть A – это множество артефактов. Два элемента e, f объединяются в один блок тогда и только тогда, когда:
  ∃a∈A e∈a ∧ f∈a
  ∀a∈A e∈a ⇔ f∈a

2. Идентификация и локализация фичей.

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

3. Определение ограничений.

  В BUT4Reuse имеется два вида ограничений на блоки:
  1) A requires B – наличие блока А требует наличия блока В.
  2) Mutual exclusion – когда два блока не могут находиться вместе.

4. Cинтез модели фичей.

  В BUT4Reuse имеется два вида ограничений на блоки:
  1) Диаграмма всех ограничений, представленная в виде дерева
  2) Построение альтернатив, основываясь на mutual exclusion, а затем построение иерархии на основе requires.

5. Визуализация

  Используются различные виды реализации, такие как Bars visualization, Heat Maps, Graph visualization.

В статье было представлено общий и расширяемый фреймворк для подхода bottom-up для SPLE. Этот фреймворк может быть легко адаптирован для различных типов артефактов. Также была представлена реализация этого фреймворка – BUT4Reuse. Используя различные расширения и парадигмы, реализация может быть легко усовершенствована и адаптирована под конкретное решение.