Michael Godfrey -- Research Interests

My general research area is software engineering. In particular, I am interested in abstract representations of programs at different levels of detail. My research on this topic has drawn from several sub-areas of software engineering: software configuration management, module interconnection languages, software architecture, program understanding, and practical approaches to formal specification of program components.

One of the key problems in building and maintaining large programs is gaining an appropriate understanding of the system components and how they interact, as well as determining a suitable way of representing this information. Module interconnection languages (MILs), software configuration management systems, program understanding environments, and software architecture descriptions have all attempted to address these issues, with varying degrees of success. In particular, techniques for system modelling -- a sub-area of configuration management -- typically incorporate only a small amount of the information available about a system and its components. System modelling notations are usually oriented toward efficient building, rather than human understanding; consequently, they are often inherently textual, inscrutable, tied to particular languages or environments, inflexible, ad hoc, and without formal foundations.

The general goal of my research has been to improve existing system modelling techniques by incorporating ideas from MILs, program understanding, software architecture, and formal specification. My basic strategy has been to use a program understanding-like approach to derive useful information about programs, their components, and component interconnections. This information is then stored with the components in the system repository; it provides a means for distinguishing between different versions of system components and of tracing system and component evolution.

For my doctoral research, these ideas were implemented in a system called ConForm (Configuration Formalism), a framework for versioned system modelling that is visual and formally defined. The ConForm framework is innovative in several ways: architectural information, such as system structure and component interconnections, is explicitly modelled, as are relationships between versions of components based on this information; the core data model is independent of any implementation language or platform, but may be extended to handle languages such as C; user-defined architectural constraints on systems may be defined and enforced; system models may be represented and manipulated either textually or visually; and the data model and calculus of system construction have been formally defined using the Z specification language. A prototype of the ConForm framework has been constructed as a proof of concept, using the formal definition as a guide. This prototype, which implements both the textual and visual aspects of ConForm, provides automated support for the browsing of version families of systems and components, as well as the creation and verification of new systems from existing components.

My immediate post-dissertation research plan has two main goals: First, I intend to validate my ideas by applying them to industrial software systems; I have already made preliminary contacts in industry. Second, I intend to continue to investigate architectural aspects of software systems; in particular, I am interested in researching the visual and formal aspects of system configuration. My long-term goal is to study the software engineering version of the key problem of the information age: Given large amounts of information about a program and its components, how does one decide what information is useful, how should the useful information be organized, and what should be done with it.


Back to my home page.
Mike Godfrey -- migod@cs.cornell.edu

Last modification: Wed Apr 30 18:46:43 EDT 1997