Patent ID: 7401331

Claim:
A method of adding new software features to an application without modifying existing code of the application, the method comprising: receiving a model of the application, the model comprising domain variables and interface events, where: each interface event defines a set of event types, each event type comprising a unique name and a data structure, the data structure having qualifying fields used for qualification, and the domain variables are of a Boolean type or a domain data type that includes predicate functions, Boolean variables, and a combination function, receiving features chosen for a feature package, the features of the feature package comprising an anchor feature and a supplementary feature, where each of the anchor and supplementary features refers to the model and comprises program units defined by a nonprocedural language programming language construct, and where each program unit refers to the model and comprises: a condition part, the condition part comprising a condition statement and event statement; and a body part executed when the condition part is true; identifying interactions between the program units of the anchor feature; identifying interactions between the program units of the supplementary feature; where identifying interactions between program units comprises identifying an interaction condition between a first program unit and a second program unit; outputting the interactions between the program units of the anchor feature and the interactions between the program units of the supplementary feature; enabling resolution of the interactions between the program units of the anchor feature and the interactions between the program units of the supplementary feature without modifying existing code of the program units; identifying interactions between the features of the feature package; outputting the identified interactions between the features of the feature package; and enabling resolution of the interactions between the features of the feature package without modifying existing code of the features.