В разработке программного обеспечения функциональная модель - это компактное представление всех продуктов линейки программных продуктов (SPL) в терминах «функций». Модели функций визуально представлены с помощью диаграмм функций. Модели функций широко используются в течение всего процесса разработки линейки продуктов и обычно используются в качестве входных данных для создания других активов, таких как документы, определение архитектуры или фрагменты кода. [ необходима цитата ]
SPL - это семейство связанных программ. Когда единицами построения программы являются функции - приращения функциональности программы или развития - каждая программа в SPL идентифицируется уникальной и допустимой комбинацией функций, и наоборот.
Модели признаков были впервые представлены в методе анализа предметно-ориентированной области (FODA) Кангом в 1990 году. [1] С тех пор моделирование признаков стало широко использоваться сообществом линейки программных продуктов, и был предложен ряд расширений.
«Характеристика» определяется как «заметный или отличительный видимый для пользователя аспект, качество или характеристика программной системы или системы». [1] Основное внимание при разработке SPL уделяется систематическому и эффективному созданию подобных программ. FODA - это анализ, посвященный идентификации функций в домене, которые должны быть охвачены определенным SPL. [1]
Модель функций - это модель, которая определяет функции и их зависимости, обычно в форме диаграммы функций + оставшиеся ограничения (также известные как перекрестное дерево). Но также это может быть таблица возможных комбинаций. [ необходима цитата ]
Диаграмма функций - это визуальное обозначение модели функций, которая в основном представляет собой дерево и / или. Существуют и другие расширения: мощности , клонирование объектов, атрибуты объектов, обсуждаемые ниже.
Конфигурация функции - это набор функций, который описывает член SPL: член содержит функцию тогда и только тогда, когда функция находится в его конфигурации. Конфигурация объекта разрешена моделью объекта тогда и только тогда, когда он не нарушает ограничений, налагаемых моделью.
Дерево функций (иногда также называемое моделью функций или диаграммой функций) - это иерархическая диаграмма, которая визуально отображает функции решения в группах с возрастающим уровнем детализации. Деревья функций - отличный способ резюмировать функции, которые будут включены в решение, и то, как они связаны, простым визуальным способом.[2]
Текущие нотации моделирования признаков можно разделить на три основные группы, а именно:
Отношения между родительским элементом и его дочерними функциями (или подкомпонентами) подразделяются на следующие категории:
В дополнение к родительским отношениям между объектами разрешены ограничения между деревьями. Наиболее распространены:
В качестве примера на рисунке ниже показано, как можно использовать модели функций для определения и создания настраиваемых систем онлайн-покупок. Программное обеспечение каждого приложения определяется функциями, которые оно предоставляет. Корневая функция (например, Интернет-магазин) определяет SPL. Каждая торговая система реализует каталог, модули оплаты, политики безопасности и, при необходимости, инструмент поиска. Интернет-магазины должны реализовывать политику безопасности высокого или стандартного уровня (выберите один из них) и могут предоставлять различные модули оплаты: банковский перевод, кредитная карта или и то, и другое. Кроме того, ограничение перекрестного дерева вынуждает торговые системы, включая модуль оплаты кредитной картой, реализовывать политику высокой безопасности.
Некоторые авторы предлагают расширить базовые модели функций с помощью UML- подобных множественности вида [n, m], где n является нижней границей, а m - верхней границей. Они используются для ограничения количества дополнительных функций, которые могут быть частью продукта при выборе родительского элемента. [3]
Если верхняя граница равна m, функцию можно клонировать столько раз, сколько мы захотим (при соблюдении других ограничений). Это обозначение полезно для продуктов, расширяемых с помощью произвольного числа компонентов.
Другие предлагают добавлять дополнительную функциональную информацию к функциям с помощью «атрибутов». В основном они состоят из имени, домена и значения. [4]
Семантика модели функций - это набор конфигураций функций, которые допускает модель функций. Наиболее распространенный подход - использовать математическую логику для фиксации семантики диаграммы функций. [5] Каждая функция соответствует логической переменной, а семантика фиксируется в виде пропозициональной формулы . Удовлетворительные оценки этой формулы соответствуют конфигурациям функций, разрешенным диаграммой функций. Например, если это обязательная подфункция , формула будет содержать ограничение . [6]
В следующей таблице представлен перевод основных примитивов. Семантика диаграммы - это совокупность переводов элементов, содержащихся в диаграмме. Мы предполагаем, что диаграмма является корневым деревом.
Примитивная диаграмма функций | Семантика |
---|---|
это основная функция | |
необязательная подфункция | |
обязательная подфункция | |
альтернативные подфункции | |
или подфункции | |
исключает | |
требует |
Продукт SPL декларативно определяется путем выбора или отмены выбора функций в соответствии с предпочтениями пользователя. Такие решения должны учитывать ограничения, налагаемые функциональной моделью. «Конфигуратор» - это инструмент, который помогает пользователю в процессе настройки. Например, путем автоматического выбора или отмены выбора функций, которые, соответственно, должны или не должны быть выбраны для успешного завершения конфигурации. Текущие подходы используют единичное распространение [7] и решатели CSP . [4]
Анализ модели характеристик нацелен на определенные свойства модели, которые важны для маркетинговых стратегий или технических решений. В литературе приводится ряд анализов. [8] [9] Типичный анализ определяет, является ли модель функций недействительной (не представляет продуктов), содержит ли она мертвые функции (функции, которые не могут быть частью какого-либо продукта) или количество продуктов в линейке программных продуктов, представленных модель. Другие анализы сосредоточиться на сравнении нескольких моделей пространственных объектов (например , для проверки модели , является ли специализация или рефакторинга или обобщение другого). [10]