mdd:bottom_up

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
mdd:bottom_up [2016/12/25 14:57] kirivasilemdd:bottom_up [2026/08/29 07:59] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== 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 можно увидеть примеры работы этих артефактов:
 +
 +{{ :mdd:bottomup.png?400 |}}
 +
 +Создание Адаптера включает в себя следующие действия:
 +  - Идентификация элементов, составляющих Артефакт.
 +  - Определение метрики между парами Элементов.
 +  - Определение условий для Элементов, которые определяют возможность нахождения Элементов в одном артефакте.
 +  - Создание переиспользуемых шаблонов(assets).
 +
 +Описание подхода bottom-up:
 +
 +{{ :mdd:bottomup2.png?400 |}}
 +
 +Архитектура фреймворка представляет из себя несколько слоёв:
 +  - Слой адаптеров, переводящий артефакты в AdaptedArtefacts.
 +  - Идентификация блоков. Блок – это набор Элементов, которые могут быть объединены и рассматриваемы как одно целое.
 +  - Идентификация и локализация фичей.
 +  - Определение ограничений на блоки.
 +  - Синтез модели фичей.
 +  - Создание шаблонов.
 +  - Визуализация процесса.
 +
 +===== BUT4Reuse =====
 +
 +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. Используя различные расширения и парадигмы, реализация может быть легко усовершенствована и адаптирована под конкретное решение.
 +