# Feature interaction problem

Feature interaction is a software engineering concept. It occurs when the integration of two features would modify the behavior of one or both features.
The term feature is used to denote a unit of functionality of a software application. Similar to many concepts in computer science, the term can be used at different levels of abstraction. For example, the plain old telephone service (POTS) is a telephony application feature at one level, but itself is composed of originating features and terminating features. The originating features may in turn include the provide dial tone feature, digit collection feature and so on.
This definition of feature interaction allows one to focus on certain behavior of the interacting features such as how their response time may be changed given the integration. Many researchers in the field consider problems that arise due to change in the execution behavior of the interacting features. Under that context, the behavior of a feature is defined by its execution flow and output for a given input. In other words, the interaction changes the execution flow and output of the interacting features for a given input.

## Example

In the context of telephony, a telephone line (the system) typically offers a set of features that include call forwarding and call waiting. Call waiting allows one call to be suspended while a second call is answered, while call forwarding enables a customer to specify a secondary phone number to which additional calls will be forwarded in the event that the customer is already using the phone.
To illustrate the example, we consider a telephone line provided to a customer, and we assume that both call forwarding and call waiting are enabled on the line. When a first call arrives on the line, the phone rings and is answered. Since neither feature is activated by the first call, there is no noticeable problem. When a second call arrives before the first has terminated, the telephone system has a decision to make: whether the call should be forwarded to the secondary number (call forwarding) or the person who answered the first call should be notified that another call has arrived (call waiting). Since this decision has no obvious correct answer, the optimal answer depends on the needs of the customer. This feature interaction is a specific example of a general and common problem that has become prevalent due to increasing system complexity.
In this situation, it is possible that the system’s decision will be made in a non-deterministic fashion due to race conditions and other design factors. The consequences of feature interactions can range from minor irritations to life-threatening software failures, and therefore there is ongoing research that aims to find ways of detecting as well as resolving feature interactions.

## Workshops and conferences

* The series of Feature Interaction Workshops (FIW) and the International Conferences on Feature Interaction (ICFI) are the primary venues devoted to this problem:
| Event | Location | Co-chairs |
| FIW'92 | St. Petersburg, USA | N. Griffeth, Y.-J. Lin |
| FIW'94 | Amsterdam, the Netherlands | L.G. Bouma, H. Velthuijsen |
| FIW'95 | Kyoto, Japan | K.E. Cheng, T. Ohta |
| FIW'97 | Montreal, Canada | P. Dini, R. Boutaba, L. Logrippo |
| FIW'98 | Lund, Sweden | K. Kimbler, L.G. Bouma |
| FIW'00 | Glasgow, Scotland | M. Calder, E. Magill |
| FIW'03 | Ottawa, Canada | D. Amyot, L. Logrippo |
| ICFI'05 | Leicester, UK | S. Reiff-Marganiec, M. D. Ryan |
| ICFI'07 | Grenoble, France | F. Ouabdesselam, L. du Bousquet |
| ICFI'09 | Lisbon, Portugal | S. Reiff-Marganiec, M. Nakamura |