Введение

Концепция разработки программного обеспечения. Взаимодействие функций — это концепция разработки программного обеспечения, возникающая при интеграции двух функций, которая изменяет поведение одной или обеих из них. Термин "функция" используется для обозначения единицы функциональности программного приложения. Как и многие концепции в информатике, этот термин может применяться на различных уровнях абстракции. Например, обычная телефонная связь (POTS) является функцией телефонного приложения на одном уровне, но сама состоит из функций инициации и функций завершения вызова. Функции инициации, в свою очередь, могут включать в себя функцию предоставления сигнала набора номера, функцию сбора цифр и так далее. Данное определение взаимодействия функций позволяет сосредоточиться на конкретном поведении взаимодействующих функций, например, на том, как может измениться их время отклика при интеграции. Многие исследователи в этой области рассматривают проблемы, возникающие из-за изменения поведения взаимодействующих функций. В этом контексте поведение функции определяется ее потоком выполнения и выходными данными для заданного ввода. Иными словами, взаимодействие изменяет поток выполнения и выходные данные взаимодействующих функций для заданного ввода.

Пример

В контексте телефонии телефонная линия (система) обычно предоставляет набор функций, включающий переадресацию вызовов и ожидание вызовов. Ожидание вызова позволяет приостановить текущий вызов, когда поступает второй, а переадресация вызовов дает клиенту возможность указать дополнительный номер телефона, на который будут перенаправляться входящие вызовы, если клиент уже разговаривает. Для иллюстрации рассмотрим телефонную линию, предоставленную клиенту, при условии, что на ней включены и переадресация вызовов, и ожидание вызовов. Когда поступает первый вызов, телефон звонит, и ему отвечают. Поскольку первый вызов не активирует ни одну из этих функций, проблем не возникает. Если второй вызов поступает до завершения первого, телефонная система должна принять решение: перенаправить ли второй вызов на дополнительный номер (переадресация вызовов) или уведомить человека, отвечающего на первый вызов, о поступлении нового вызова (ожидание вызовов). Поскольку однозначно правильного решения нет, оптимальный выбор зависит от потребностей клиента. Данное взаимодействие функций – конкретный пример общей и распространенной проблемы, ставшей актуальной из-за растущей сложности систем. В такой ситуации решение системы может приниматься недетерминированным образом из-за гонок данных и других конструктивных особенностей. Последствия взаимодействия функций могут варьироваться от незначительных неудобств до критических программных сбоев, поэтому продолжаются исследования, направленные на обнаружение и устранение подобных взаимодействий.

Бумаги

FAQ по взаимодействию функций, Памела Заве. Агенты и их сервисы: онтологический подход к взаимодействию функций, Б. Коэн, Сити Университет. Эталон для оценки взаимодействия функций для IN и за его пределами, Э. Джейн Кэмерон, Нэнси Д. Гриффит, Йоу Цзянь Лин, Маргарет Э. Нильсон, Уильям К. Шнур, Bellcore и Х. Велтуйзен, PTT Research, Нидерланды. Материалы конференций FIW и ICFI, опубликованные в IOS Press. Взаимодействие функций: критический обзор и обоснованный прогноз, М. Кальдер, М. Колберг, Э. Х. Магилл и С. Рейфф Марганиец. Компьютерные сети, №41, стр. 115–141 (2002). Взаимодействие функций как задача обмена контекстом, Армстронг Нхлабатси, Робин Лэни и Башар Нусейбе. Международная конференция по взаимодействию функций, 11–12 июня, Лиссабонский университет, Португалия, стр. 133–148 (2009).