AI research on conceptual design of physical devices has revealed the central role that teleological knowledge and reasoning play in adaptive design. A declarative teleological model of a physical device that explicitly captures the teleological relationships among the structure, behaviors and functions of its design enables localization of the modifications to the structure to achieve new functions. The ontology of teleological models provides a vocabulary for classifying, representing, indexing and accessing specific design cases, generic adaptation plans, primitive design components, and abstract design patterns. In analogy to physical devices, the PI views software artifacts as abstract devices, i.e., as abstract teleological artifacts with structures and behaviors that result in the accomplishment of desired functions. A further analogy to adaptive physical design leads to the hypothesis that teleology is a fundamental organizational principle of adaptive software design. Of course, software artifacts are also quite different from physical devices because the notions of structure, behavior, function, and teleology in the two domains are different. Thus, this project will address the following six questions: What are productive notions of structure, behavior, function, and teleology in software design? How might a declarative teleological model of a software artifact specify its functional architecture? How might teleological analysis enable localization of the modifications needed to the architecture of a software artifact to achieve new functions? How might the ontology of the teleological models of software artifacts support classification, representation, indexing and retrieval of generic adaptation plans, primitive software components, and abstract design patterns? What might be a teleology-driven process of adaptive software design? And how might these building blocks be used to support interactive software design more easily, efficiently and effectively than at present? To answer these questions, the PI will develop building blocks of teleological reasoning in adaptive software design in the form of knowledge representations, taxonomies, libraries, methods, and processes. To these ends, the PI has adopted a three-pronged approach. He will conduct detailed empirical case studies of the evolutionary histories of designs of game-playing software agents for interactive strategy games such as Freeciv and C-evo. He will develop an interactive software design environment and, for a small class of changes in the functional requirements of game-playing agents, automate the design adaptations, which will help insure that all the building blocks work well together. And he will use the interactive environment in undergraduate software engineering courses to support design adaptations for a large class of changes in the functional requirements of game-playing agents, and conduct formal experiments using control groups to evaluate the efficacy of teleological reasoning in support of adaptive software design.
Broader Impacts: Computational artifacts, including software artifacts, are increasingly pervasive and ubiquitous. A major factor in the cost of software development is maintaining the software artifact as its design requirements evolve; even a small reduction in this cost may have a significant impact on software practice. Since this research will address the issue of software design adaptations in response to changes in functional design requirements, its potential applications are wide-ranging and open-ended, the design and development of game-playing software agents being just one example. Because the new tools developed in this project for interactive software design weill be introduced into the classroom, they will have a direct impact on the educational technology used in the computing sciences. Knowledge acquired from the project will be disseminated in conferences and journals in software engineering, design cognition and computing, AI, and game playing.