W. Lewis Johnson
USC/Information Sciences Institute
This tutorial is intended to give attendees an understanding of the key concepts in knowledge-based software engineering. It will identify software engineering tasks that are amenable to knowledge-based solutions, and categorize the various types of knowledge-based systems that may be developed. The current state of the art in KBSE research and development will then be examined, in each area of software engineering. The key technologies currently being used in these solutions will then be examined in detail. The tutorial will also place Rome Laboratory's Knowledge-Based Software Assistant program in the overall context of knowledge-based software engineering.
Dr. Johnson is Project Leader and Research Assistant Professor at the University of Southern California's Information Sciences Institute. He has been active in KBSE research for a number of years. He was chair of the KBSE'92 conference, and is a member of the KBSE steering committee. He is currently co-editor-in-chief of the journal Automated Software Engineering: The International Journal for Artificial Intelligence and Automated Reasoning in Software Engineering. He conducts research in applications of artificial intelligence to software engineering as well as education and training.
David F. Redmiles
University of California, Irvine
This tutorial examines software development from the perspective of human, cognitive needs. In this regard, two themes are explored. First, usability methods for developing interactive software are discussed. The goal of these methods is to yield software systems that closely match the tasks and sophistication of the intended end users. Example techniques include protocol analysis, the cognitive walkthrough, and heuristic evaluation. Second, an architecture for software design environments is discussed. Some examples of design environments will be presented but the emphasis will be on the knowledge-based techniques which best meet the cognitive needs of software designers. Example techniques include feedback from critics, explanation through examples, and support for evolutionary design.
Dr. Redmiles is an assistant professor in software engineering at the University of California, Irvine. He has contributed to previous KBSE conferences through technical paper presentations and demonstrations. His research interests combine human-computer interaction with software engineering, including research into the cognitive needs of human software designers. He is also a member of the Irvine Research Unit in Software, a university-industry partnership for improving software quality.
Yellamraju V. Srinivas and Richard Jullig
This tutorial is an introduction to Specware, a system for software construction that is under development at Kestrel Institute. Specware supports the systematic construction of executable programs from axiomatic specifications via stepwise refinement. Specware is the result of the integration on a common conceptual basis of the capabilities of several earlier systems developed at Kestrel Institute.
The most important new aspect of the framework developed is the ability to represent explicitly the structure of specifications, refinements, and program modules. We believe that the explicit representation and manipulation of structure is crucial to scaling program construction techniques to system development.
The basis of Specware is a category of axiomatic specifications and specification morphisms. Specification structure is expressed via specification diagrams, directed multi-graphs whose nodes are labeled with specifications and arcs with specification morphisms. Specification diagrams are useful both for composing specifications from pieces and for inducing on a given specification a structure suitable for the design task at hand.
In Specware, the design process proceeds by stepwise refinement of an initial specification into executable code. The unit of refinement is an interpretation, a theorem-preserving translation of the vocabulary of a source specification into the terms of a target specification. Each interpretation reduces the problem of finding a realization for the source specification to finding a realization for the target specification. The overall result of the design process is to refine an initial specification into a program module.
It is desirable to structure the overall refinement. Progression through multiple stages requires sequential composability of refinements. Similarly, parallel composition lets us exploit the structure of specifications by putting refinements together from refinements between sub-specifications of the source and target specifications. It is for this purpose that we introduce the notion of diagram refinements: just as specification diagrams impose a component structure on specifications, so do diagram refinements make explicit the component structure of a specification refinement. Sequential and parallel composition of refinements satisfy a distributive law which is a generalization of similar compatibility laws in the literature.