CHAPTER 1
First of all, the SIS ontology of variables, functions, and files must be extended to include more specific information like assignment statements, if statements, and procedure calls; in fact, the ontology should essentially specify a programming language. An ontology which models the Smalltalk language is presented. It satisfies the need for a code-level representation to be both executable and understandable.
Second, the ontology should support the representation of domain knowledge that, while part of the code model, can also be reasoned about and queried directly to support understanding the domain. Attempts at developing such an ontology have been made before [Devanbu, 1994], but the singular epistemological nature of this kind of knowledge was not realized: the instances of the concepts like "procedure" and "data type" are themselves used to represent models of other domains. The code-level ontology is second-order with respect to the ontologies of application domains. It is a representation of a representation language, and is fundamentally at a different "level" than traditional ontologies.
A special enhancement to a first-order representation system has been developed which allows the domain knowledge to be specified in the code model as part of the data-type or class structure. This enhancement does not allow second-order reasoning, which can be undecidable, but a completed code-level representation could automatically generate a domain ontology, which could then be reasoned about separately.
The success of the representation implies a new paradigm for software development that succeeds object orientation. This new paradigm, which is demonstrated in this thesis through the development of the sample application called KBEDS, requires that for any software system to be understandable, its development must begin with a formal model of the domain, and this model must be used explicity by the software. In order for a maintainer to understand the software, the domain knowledge in the software must be accessible directly, as domain knowledge. In addition, this domain knowledge must be augmented with an explicit model of the software implementation itself. The resulting model will make the entire software system more understandable. Improving understandability turns out to have benefits at all stages of the software lifecycle.
With this new code ontology in place, a powerful user interface was implemented. The interface is capable of understanding the ontology, so that entry of code-level objects (a.k.a. programming) is demonstrably easier. The comparative burden of creating all the inter-related objects rather than typing lines of code has been alleviated, since the user interface knows the order in which things should be entered. The interface is fairly general as well; it expects very little information from the ontology that wouldn't be there otherwise, and it can be used with any ontology.
In order to show that the CSIS can improve the discovery process beyond a linked code and domain model, a representation of side effects, vestigial code, and delocalized plans was created and added to the code-level ontology. Most misunderstandings of software arise from these sources, and no previous SIS has been capable of representing them. More significantly, some delocalized plans and all side effects can be detected automatically with very little computational expense.
Finally, the application domain chosen in which to build the demonstration CSIS is email distribution of electronic information. The domain model for the knowledge-based email distribution system turns out to be extremely useful for representing on-line information in general, such as is found on the World-Wide-Web. The fairly recent explosion of the WWW makes this a timely and tremendously applicable contribution.
Generated with Harlequin WebMaker