Instruments & Tools

 

home

bio

research

projects

writing

funding

teaching

other activity

personal

contact

 

 

 

 

This research will help define a science of design by developing a theory of explanation for software-intensive systems. Explanations are the foundation of science, of scientific understanding, and of scientific communication. Theories of explanation are at the heart of discourse about what makes the scientific method unique, and they define metrics for assessing the quality of scientific programs and the results they produce. Though theories of explanation have received considerable attention in the physical and natural sciences, in psychology, and in engineering, little work has been directed at explicating and articulating a theory of explanation to act as a foundation for a science of software-intensive systems design.

If science is about producing explanations, then a field of inquiry aspiring to the scientific label requires an understanding of what constitutes an explanation of the phenomena it takes as its subject. Design research is about understanding artifacts and the ways they are produced, as well as how and why they have the effects that they do when they are used (or misused, or not used) in different contexts. Understanding the fundamental reasons and causes behind successful and failed, good and less good software-intensive systems is the goal of a Science of Design. To develop this understanding, the field needs theoretical constructs to act as organizers and aggregators of the results from diverse research programs. These theories, in turn, need to be assessed in terms of the explanations they produce and their explanatory power. If successful, the research proposed here will provide the field of software-intensive systems design with a theoretical framework for carrying out these assessments.

We are working to develop and refine a theory of explanation to help us understand how design can be understood. Year one will involve a program of analysis and synthesis focused on explanation theories in the physical, natural, and social sciences. The objective of the first year is to explicate an ontology of explanation and to forge this into a theory of explanation for the science of software-intensive systems design. Then, in years two and three, the theory will be tested and evolved through a series of empirical studies of both systems design cases. Three ongoing development and evaluation projects will be leveraged for the empirical work: a decision support system for anti-terrorism planning; a simulation of a very large-scale supply chain system; and an intelligent user interface based on agent technology.

Development of a theory of explanation for software-intensive systems design is important because such a theory would provide benchmarks for science of design research. With such a theory, researchers could assess the value of design research results in terms of the relative completeness and power of the explanations generated through both theoretical development and empirical study. The theory will provide a taxonomy for organizing results from design research, allowing them to be compared and aggregated across disparate study domains. An explanation-centric program of research has not, as yet, been advanced in the field of software-intensive systems.

Explanations are central to communicating scientific understanding, both between experts, and between experts and society at-large. A theory of explanation for software-intensive systems will provide a language for communicating about software-intensive systems, and help highlight where scientific understanding is lacking in the field. As complex, software-intensive systems become more pervasive in society, it will become increasingly important for system users to understand their essential nature and the design constraints that impact their structure and behavior. Explanations are also the currency of education. A theory of explanation for software-intensive systems will provide a new foundation for teaching, training, and learning in the systems development field.