The method we have developed selects a restricted set of properties whose enforcement requires lower complexity of analysis. Initially, each application component is described as an independent finite state machine (FSM) and the receptive safety properties are defined as unsafe states in the global machine. Analysis detects potential safety violations and the preconditions of these violation are used to derive synchronization conditions for the individual components. The decomposition of complex systems into single component subsets for safety analysis and enforcement contributes to a dramatic reduction in the complexity of the integration. Additional complexity reduction is achieved using static component analysis instead of reachability analysis; actions that may cause violation of the specified safety property are detected regardless of whether they can actually be reached during execution. Once unsafe actions are detected, the FSMs associated with the individual components are augmented with delay transitions that preserve system safety. A problem with this approach is that it assumes that no failures can occur in the application components. We have done some initial work to extend the techniques for a restricted form of dynamic reconfiguration - fault tolerance in systems with parallel components.
My early work looked at ways that control specifications could be used in conjunction with module interconnection languages (MILs) for the purposes of integration. Recent architecture description languages (ADL) allows programmers to describe control as a first class component of configuration and so my focus has moved into this area.
I have had a long-term interest in other integration problems as well, particularly those that relate to packaging. Packaging is the process of taking the various parts of a software system and determining, via analysis, the appropriate integration mechanisms given environmental assumptions and priorities. I have looked at packaging techniques for both dynamic reconfiguration environments and application-level multicast software. I have also looked at more general problems in integration and packaging, including how the overall structure of components can be extracted and used in the integration process. All of these efforts involved significant tool development.