At the core of an information retrieval agent is the ability to analyze, index, and retrieve documents in a useful way. Calvin's architecture provides the infrastructure for manipulating documents. This frees the researcher from thinking about how to integrate the resources with Calvin to focus on the more interesting research question of how the data in the given task domain should be analyzed. Calvin provides ``Plug-and-Play'' data analysis modularity so researcher can experiment with different data analysis techniques with minimum effort.
An abstract Java class has been defined which performs most of the background work in storing and retrieving documents. This class also tells the rest of Calvin how to interact with any future data analysis component. When this abstract class is extended, different data analysis techniques can be implemented to control the behavior of the data analysis component. Because the extended classes obey the predefined interface, Calvin can use any such data analysis component without modification. Taking advantage of Java's dynamic class loading, the end user GUI and the Task Generator take the data analysis component as a parameter on the command line when the program is executed. This flexibility lets a developer experiment with different kinds of data analysis component without having to continually change the rest of the code. This frees the experimenter to deal with the research issues of information retrieval and not the technical details of dealing with a database back end for the user interface.