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(снизу-вверх). Его главными целями являются:
В этой статье, описываются принципы построения общего и расширяемого фреймворка для адаптации к SPL.
Основными принципами фреймворка являются:
Для поддержки разных типов артефактов мы будем полагаться на Адаптеры, для разных типов артефактов. Они разбивают каждый артефакт на Элементы. На примере 1 можно увидеть примеры работы этих артефактов:
Создание Адаптера включает в себя следующие действия:
Описание подхода bottom-up:
Архитектура фреймворка представляет из себя несколько слоёв:
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. Используя различные расширения и парадигмы, реализация может быть легко усовершенствована и адаптирована под конкретное решение.