A computer-aided method (FIG. 12) for developing software by which
programmers may implement different features of an application as
independent reusable components, even though these features affect the
control flows of one another. A programmer may add new features to an
application without the labor intensive tasks of examining and modifying
existing code. The programmer uses a set of programming language
constructs to specify nonprocedural program units, organize the program
units into reusable features and integrate several features together into
a feature package. An interaction detection algorithm analyzes program
units and determines whether there is interaction among program units in
a feature and among features in a feature package. The programmer must
resolve the interaction, if detected, before the programs can be
executed. A run time system specification supports the semantics of the
programming language constructs and preserves the conditions that enable
interaction detection.