Функциональная модель
При разработке программного обеспечения функциональная модель — это компактное представление всех продуктов линейки программных продуктов (SPL) с точки зрения «функций». Модели функций визуально представлены с помощью диаграмм функций. Модели функций широко используются на протяжении всего процесса разработки линейки продуктов и обычно используются в качестве входных данных для создания других ресурсов, таких как документы, определения архитектуры или фрагменты кода. [ нужна ссылка ]
SPL — это семейство связанных программ. Когда единицами построения программы являются функции — приращения функциональности или развития программы — каждая программа в SPL идентифицируется уникальной и допустимой комбинацией функций, и наоборот.
в методе функционально-ориентированного анализа доменов (FODA) в 1990 году. Модели признаков были впервые представлены Кангом [ 1 ] С тех пор функциональное моделирование получило широкое распространение в сообществе разработчиков программных продуктов, и был предложен ряд расширений.
Фон
[ редактировать ]«Функция» определяется как «заметный или отличительный, видимый пользователю аспект, качество или характеристика программной системы или системы». [ 1 ] Основное внимание при разработке SPL уделяется систематическому и эффективному созданию подобных программ. FODA — это анализ, посвященный выявлению особенностей предметной области, на которые распространяется конкретный SPL. [ 1 ]
Модель
[ редактировать ]Модель объектов — это модель, которая определяет функции и их зависимости, обычно в форме диаграммы функций + оставшихся (так называемых междеревьевых) ограничений. Но также это может быть таблица возможных комбинаций. [ нужна ссылка ]
Диаграмма
[ редактировать ]Диаграмма объектов — это визуальное обозначение модели объектов, которая по сути представляет собой дерево «и-или». Существуют и другие расширения: мощности , клонирование объектов, атрибуты объектов, обсуждаемые ниже.
Конфигурация
[ редактировать ]Конфигурация функции — это набор функций, описывающий члена SPL: элемент содержит функцию тогда и только тогда, когда эта функция присутствует в его конфигурации. Конфигурация объекта разрешена моделью объекта тогда и только тогда, когда она не нарушает ограничений, налагаемых моделью...
Дерево функций
[ редактировать ]Дерево функций (иногда также известное как модель функций или диаграмма функций) — это иерархическая диаграмма, которая визуально изображает функции решения в группах с возрастающим уровнем детализации. Деревья функций — это отличный способ в простой визуальной форме обобщить функции, которые будут включены в решение, и их взаимосвязь. [ 2 ]
Обозначения моделирования функций
[ редактировать ]Текущие обозначения моделирования функций можно разделить на три основные группы, а именно:
- Базовые функциональные модели
- Модели признаков на основе кардинальности
- Модели с расширенными функциями
Базовые функциональные модели
[ редактировать ]Отношения между родительским объектом и его дочерними объектами (или подобъектами) подразделяются на следующие категории:
- Обязательно – необходимо выбрать дочернюю функцию.
- Необязательно – дочерний объект можно выбрать или не выбрать.
- Или – необходимо выбрать хотя бы один из подфункций.
- Альтернатива (xor) – необходимо выбрать ровно один из подфункций.
В дополнение к родительским отношениям между объектами допускаются ограничения между деревьями. Наиболее распространенными являются:
- А требует Б. Выбор А в продукте подразумевает выбор Б.
- A исключает B – A и B не могут быть частью одного и того же продукта.
В качестве примера на рисунке справа показано, как модели функций могут использоваться для определения и создания настраиваемых систем онлайн-покупок. Программное обеспечение каждого приложения определяется функциями, которые оно предоставляет. Корневой объект (т. е. интернет-магазин) идентифицирует SPL. Каждая торговая система реализует каталог, платежные модули, политику безопасности и, опционально, инструмент поиска. Интернет-магазины должны реализовать политику безопасности высокого или стандартного уровня (выберите одну) и могут предоставлять различные модули оплаты: банковский перевод, кредитную карту или оба из них. Кроме того, междеревьевое ограничение вынуждает торговые системы, включая модуль оплаты кредитными картами, реализовывать политику высокой безопасности.
Модели признаков на основе кардинальности
[ редактировать ]Некоторые авторы предлагают расширять базовые модели признаков с помощью UML -подобных кратностей формы [n,m], где n является нижней границей, а m — верхней границей. Они используются для ограничения количества дополнительных функций, которые могут быть частью продукта при выборе родительского элемента. [ 3 ]
Если верхняя граница равна *, объект можно клонировать столько раз, сколько мы хотим (при условии соблюдения других ограничений). Это обозначение полезно для продуктов, расширяемых произвольным количеством компонентов.
Модели с расширенными функциями
[ редактировать ]Другие предлагают добавлять к функциям дополнительную функциональную информацию с помощью «атрибутов». В основном они состоят из имени, домена и значения. [ 4 ]
Семантика
[ редактировать ]Семантика модели объектов — это набор конфигураций функций, которые допускает модель объектов. Самый распространенный подход — использовать математическую логику для определения семантики диаграммы объектов. [ 5 ] Каждый признак соответствует логической переменной , а семантика фиксируется в виде пропозициональной формулы . Удовлетворительные оценки этой формулы соответствуют конфигурациям объектов, разрешенным диаграммой объектов. Например, если является обязательной дополнительной функцией , формула будет содержать ограничение . [ 6 ]
В следующей таблице представлен перевод основных примитивов. Будем считать, что диаграмма представляет собой корневое дерево с корнем . Семантика всей диаграммы представляет собой совокупность переводов элементов, содержащихся в диаграмме. Следовательно, если все элементы записаны в конъюнктивной нормальной форме (КНФ), то термины можно легко объединить логическим И и все логическое выражение останется в КНФ.
Диаграмма функций Примитив | Семантика | Семантика в конъюнктивной нормальной форме |
---|---|---|
это корневая функция | ||
обязательная дополнительная функция | ||
дополнительная дополнительная функция | ||
или подфункции | ||
альтернативные (xor) подфункции | ||
требует | ||
исключает |
Настройка продуктов
[ редактировать ]Продукт SPL определяется декларативно путем выбора или отмены выбора функций в соответствии с предпочтениями пользователя. Такие решения должны учитывать ограничения, налагаемые моделью объектов. «Конфигуратор» — это инструмент, который помогает пользователю в процессе настройки. Например, путем автоматического выбора или отмены выбора функций, которые должны или не должны быть выбраны соответственно для успешного завершения конфигурации. Текущие подходы используют единичное распространение [ 7 ] и решатели CSP . [ 4 ]
Свойства и анализ
[ редактировать ]Анализ функциональной модели нацелен на определенные свойства модели, которые важны для маркетинговых стратегий или технических решений. В литературе встречается ряд анализов. [ 8 ] [ 9 ] Типичный анализ определяет, является ли модель функций недействительной (не представляет собой продуктов), содержит ли она мертвые функции (функции, которые не могут быть частью какого-либо продукта) или количество продуктов линейки программных продуктов, представленных моделью. Другие анализы сосредоточены на сравнении нескольких моделей функций (например, чтобы проверить, является ли модель специализацией , рефакторингом или обобщением другой ). [ 10 ]
См. также
[ редактировать ]- Анализ домена
- Разработка предметной области
- Функционально-ориентированное программирование - парадигма синтеза линейки программных продуктов
- Семейство продуктов Инжиниринг
- Линии программных продуктов
Ссылки
[ редактировать ]- ^ Jump up to: а б с Канг, К.К., Коэн, С.Г., Хесс, Дж.А., Новак, В.Е. и Петерсон, А.С., «Технико-экономическое обоснование функционально-ориентированного анализа предметной области (FODA), Технический отчет CMU/SEI-90-TR-021, SEI, Университет Карнеги-Меллон, ноябрь 1990 г. скачать
- ^ «Дерево функций | BAwiki» .
- ^ Чарнецкий К., Хелсен С. и Эйзенекер У., «Поэтапная конфигурация с использованием функциональных моделей», Труды Третьей международной конференции по линейкам программных продуктов (SPLC '04), том 3154 конспектов лекций по информатике. Springer Berlin/Heidelberg, август 2004 г. скачать .
- ^ Шоббенс, П.-Ю.; Хейманс, П.; Триго, Ж.-К., « Диаграммы признаков: обзор и формальная семантика». [ мертвая ссылка ] , «Разработка требований», 14-я Международная конференция IEEE, том, №, стр. 139–148, 11–15 сентября 2006 г., скачать
- ^ Амадор Дуран, Дэвид Бенавидес, Серхио Сегура, Пабло Тринидад и Антонио Руис-Кортес «FLAME: формальная основа для автоматизированного анализа линеек программных продуктов, подтвержденная автоматизированным тестированием спецификаций». Программное обеспечение и системное моделирование. 2015. скачать
- ^ Баторий, Д., «Функциональные модели, грамматики и пропозициональные формулы», Материалы 9-й Международной конференции по линейке программных продуктов (SPLC '05), скачать
- ^ Т. Туэм, Д. Баторий и К. Кестнер. " Рассуждения об редактировании моделей функций [ постоянная мертвая ссылка ] ". Международная конференция по программной инженерии (ICSE), май 2009 г.