Frameworks are one of several approaches to exploiting the commonalities of a family of software systems. They have been used successfully in user interfaces, network management, and operating systems. Applying framework operations, such as instantiating a framework to a specific application, can be error-prone. This is, in part, because any errors in the operation are not found until the application itself is executed. When carefully applied, implicit invocation can be used to structure software systems that are more easily integrated and that are more easy to evolve.
Reverse engineers depend on the automatic extraction of information from source code.
Predicting every kind of source model that a reverse engineer may need is impossible. We have developed a lightweight approach for generating flexible and tolerant source model extractors from lexical specifications. We have also performed an empirical study of a set of C call graph extractors. These extractors return different, often significantly different, call graphs when applied to the same programs. Our research has been concerned with models, techniques, and tools for specifying, analyzing, and generating software for real-time applications.