Glossary of Terms used in FLX
Anchor Feature
Combination Function
Complex Domain Data Type
Composite Feature Package
Condition
Domain Data Type
Domain Statement
Domain Variable
Entanglement
Event
Feature
Feature Interaction
Feature Package
Local Domain
Local Event
Precedence List
Program Unit
Program Entanglement
Resource
SAT Solver
Simple Domain Data Type
Anchor Feature is a Feature but of special nature. An Anchor Feature is usually designed to include a set of basic functionalities that are central to the working of the system. For example, the basic functions of a telephony system such as MakeCall, ReceiveCall, TerminateCall among others could be included in an Anchor Feature. Anchor Features could be used as an executable FLX entity, just as a Feature Package. Using Anchor Features could enhance the modularity of the design. See also: Feature, Feature Package
Back to top
Combination Function is a method that is expected to be defined for a Domain Data Type. The FLX programmer defines this method. A Combination Function is expected to detect the true condition for the predicates or terms of Condition expressions that it receives in its argument list, for Data Types that it lists in the combines List. This method is invoked internally by the compiler during the process of Interaction Detection. See also: Domain Data Type, Feature Interaction, Condition
These are the Domain Data Types whose Combination Functions deal with multiple Domain Data Type. This is currently not available for Download but will be made available soon. See also: Combination Function, Simple Domain Data Type
Some special Feature Packages belong to multiple Domains; they are called Composite Feature Packages. These Feature Packages can combine Features and Feature Packages from all the Domains that are listed in its Domains List. Furthermore, interaction resolution happens in the same way as in normal Feature Packages. This is currently not available for Download but will be made available soon. See also: Feature Package
Condition is the part of a Program Unit that has an expression which when becomes true, triggers the execution of the Program Unit, upon occurrence of the Event mentioned in the Program Unit. Condition expression evaluates to a boolean value. The terms or predicates of a Condition expression typically contain Domain Variables. See also: Feature, Feature Package, Domain
Domain Data types are special data types that are used for declaring Domain Variables. These data types are special in the sense that they have to necessarily define a particular method called CombinationFunction. There are certain other methods that are usually defined for a Domain Data Type. For the structure of Combination Function and a comprehensive list of other methods that could be defined, please see DInteger.ddt in the example code package provided in the Downloads section. Domain Data Types are mostly extensions of already available library data types. But the FLX programmer can come up with his/her own types. See also: Combination Function, Domain, Domain Variable
Domain Statement in FLX defines the model that will be followed in designing the system. The Anchor Feature, Features and Feature Packages built thereafter will follow this model. Domain Statement typically includes: Domain Variables, Events and Resources. While Resources are optional, Domain Variables and Events are needed to define the model. See also: Domain Variable, Anchor Feature, Feature, Feature Package, Events, Resources
Domain Variables can be thought of as global variables; they are typically of some Domain Data Type. They can be set in various parts of the design and are mostly used in the Condition part of Program Units. See also: Program Unit, Domain Data Type, Condition
Entanglement can be defined as the condition when programs of two or more features are present in the same Program Unit. More specifically, programs entangle if (1) the features interact, (2) they are executed in the same sequential process, and (3) they are implemented by a programming language that requires the programmer to specify execution flow. Program entanglement is a main reason why software development is difficult. See also: Program Unit, Feature, Feature Interaction
Events, which are defined as a type, are the entities that cause the execution flow in the model. Events can originate from within the model in execution as well as from an external source. Events, along with the Domain Variables in a Condition part, trigger the execution of a Program Unit. For example, Ringing event is sent from one phone to another when a call is made; this event may cause the callee's ReceiveCall Program Unit to execute. An Event can be Global (Domain Event) or Local Event (used in Local Domains). See also: Program Unit, Domain Variable, Condition
Feature is the term used to represent a set of related testable functionalities, called Program Units. Structure of a Feature in FLX is composed of three parts: Domain which the Feature belongs to, Anchor feature(s) used and Program Units. See also: Program Unit, Domain, Anchor Feature
If two Features change the behavior of one another when they are integrated or when their implementations are put together, then those two Features are said to interact. More specifically in FLX, if the Condition parts of two Program Units belonging to different Features become true at the same time, we say there is Feature Interaction. Feature Interaction is resolved in FLX in the Feature Packages, where implementations of Features and/or Feature Packages are put together. Feature Interaction detection is achieved using SAT Solver and Interaction Resolution is attained using Precedence List(s). See also: SAT Solver, Condition
Feature Package is the executable entity of FLX which can be seen as a collection of Features and/or Feature Packages. Feature Packages may or may not contain Program Units. But the essential components of a Feature Package include Domain(s) which it belongs to, list of Features and/or Feature Packages included and Precedence List(s). Interaction between Features is resolved in Feature Packages. See also: Precedence List, Feature Interaction
Local Domains essentially have the same properties as a Domain but the difference is that they are defined in and have their scope is only inside a Feature or a Feature Package in which it is defined. See also: Domain
Local Events are similar to Domain Events but the difference is that their scope is only inside a Feature or a Feature Package in which it is defined. Local Events are useful when certain Feature requires events to be generated within itself and not from an external Feature. For example, a timer Event, which could be generated and consumed within the scope of the Feature. See also: Event
Precedence List is used for resolving Feature Interaction. Precedence List contains the list of Features (included in the Feature Package that defines the List) in the order of precedence of execution, should there be an Interaction between the included Features. There are two types of Precedence Lists: Priority Precedence & Straight Precedence. If Priority Precedence List is used, only the Feature with the highest precedence gets executed upon interaction, whereas Straight Precedence List makes sure all the Features in the List are executed in the order of their precedence. See also: Feature Interaction
Program Unit is the basic functional entity in FLX. It is composed of three parts: Condition, Event and Program Statements block. When the Condition (which evaluates to a boolean value) and Event (Domain Event or Local Event) combination for a Program Unit is satisfied, the Program Unit is triggered for execution and the Program Statements block is executed. See also: Condition, Event
Resources can be thought of as data members in Domain. Resources typically are of user defined types. They are passed to the Domain through Feature Packages and their instances are available in all Features, Anchor Features and Feature Packages included in the Domain. Resources are usually used when only one instance of a data member is required to exist in the execution context. For example, in the Prototype that we have developed, we use only one instance each of Phone and Router; so we use them as Domain Resources. See also: Domain, Feature, Anchor Feature, Feature PackageBack to top
SAT Solver or Satisfiability Solver is the tool that we have developed to detect Feature Interactions. This is integrated into the FLX Compiler that is available in the Downloads section. A stand-alone version of SAT Solver will also be made available soon. See also: Feature Interaction
These are the Domain Data Types whose Combination Functions deal only with a single Domain Data Type. For example, DInteger's combination function deals with only DInteger data type. See also: Complex Domain Data Type