Working on robotic dialog and the robotic dialog environment raises a number of issues that are more or less specific to this particular use of computers, including, for example, the planning of discourse, the management of multiple initiatives and concurrent threads in the dialog, learning various aspects of dialog behavior, and the choice of ontology for spatiotemporal phenomena. These issues include both systems-design issues and knowledge representation issues.
In addition, however, we are led to address a number of issues that pertain to software technology over a broader range of applications, and for which the robotic dialog system provides one concrete example and application. These include questions such as the design of object-oriented and ontology-oriented database systems for real-time use, and techniques for persistent computation systems. There is no sharp borderline between 'robotic-dialog' issues and 'software-technology' issues, and there is in fact a spectrum from those software technology issues that are closely related to the robotic-dialog problem, to those issues that apply to computation almost in general.
We take particular interest in a software technology theme that may be called lifecycle computing systems, referring in general to software artifacts whose 'existence' is measured in months and years.
On-going work in this area includes Tobias Nurmiranta's licentiate thesis work on memory management and paging in persistent computation systems, as described under the menue item for 'Thesis Projects for Systems". It also includes Erik Sandewall's work on software individuals and on the Leonardo computation system which is described on the CAISOR website and the Leonardo website, respectively.
In general, the topic of lifecycle computing systems includes persistent computing, that is, systematic techniques whereby a computer can be turned off one day in the midst of computation and turned on the next day in such a way that the computation continues immediately without having been disturbed. It also includes implementation techniques for persistent objects in programming languages. Furthermore it includes the view of a programming system as an information system, that is, as an object-oriented database that contains both programs, documentation, and application data and that maintains this information e.g. with respect to updates, version management, and distribution as well as keeping it consistent. This is the view that underlies the software individuals approach and Leonardo.