Intelligent Assistance for Software Development and Maintenance

Kaiser, Gail E.; Feiler, Peter H.; Popovich, Steven S.

This article presents an architecture for controlled automation in software development environments.
Controlled automation enables environments to behave as intelligent assistants by
answering questions about the software project and automatically invoking tools to further the
users’ goal of producing a working software system. The discussion of the architecture focuses
primarily on the programming stages of development and maintenance. An environment assists
programmers by understanding the technical aspects of the evolving software system and by actively
participating in the programming process. The architecture supports these capabilities by
providing two kinds of knowledge representation: (1) the knowledge specific to a particular
software project is represented as entities in a database and (2) the knowledge that models programming
activities in general is represented as rules amenable to forward and backward chaining.
These rules enable an environment to automatically carry out each activity sometime between
when its conditions are satisfied and its results are required. The rules are grouped into
collections called strategies. One or more specific strategies are employed according to each
user’s current context and goals, and determine when forward or backward chaining should be
applied and which rules are considered during chaining. This architecture has been validated
through a prototype implementation that models the capabilities of an existing environment that
supports automation.



More About This Work

Academic Units
Computer Science
Department of Computer Science, Columbia University
Columbia University Computer Science Technical Reports, CUCS-401-88
Published Here
April 20, 2011