Automated Software Engineering


14th IEEE International Conference

October 12-15, 1999

Cocoa Beach Hilton
Cocoa Beach, Florida, USA

Tutorial Program

 Schema-guided Generation of Correctly Reusable Programs

        Pierre Flener, Uppsala University, Sweden
Kung-Kiu Lau, University of Manchester, UK
Mario Ornaghi, University of Milan, Italy
Julian Richardson, University of Edinburgh, UK

Schemas encode (human) programming methodologies, such as divide-and-conquer or constrain-and-generate, and are thus useful for guiding program development, as demonstrated by powerful, highly automated programming environments, such as KIDS, DesignWare, and PlanWare.

In this tutorial, we first briefly survey current research on program generation, so as to argue why schema-guided programming can overcome the drawbacks of the more traditional approaches, such as proofs-as-programs or transformation. Then we introduce the notion of specification framework, as a possibly parametric formalisation of a problem domain, which serves as background during all development steps. This allows us to give a semantic definition of schemas, while covering their representation, correctness, and reusability. Finally, we show how all this can be put to useful practice, by actively guiding the generation of correct and reusable programs through the (re)use of schemas. We address automation issues, compare with related work, and outline future work.
Pierre Flener is an associate professor in the Computer Science Division of the Department of Information Science at Uppsala University in Sweden. His main research interests lie in automating various tasks of software engineering, using the concept of schema.

Kung-Kiu Lau is a senior lecturer in the Department of Computer Science at the University of Manchester in the UK.  His current research is mainly about component-based software development (in computational logic).

Mario Ornaghi is an associate professor in the Department of Information Science at the University of Milan in Italy.  He is currently interested in the theoretical foundations of component-based software development.
Julian Richardson is a research fellow in the Mathematical Reasoning Group of the Institute for Representation and Reasoning in the Division of Informatics at the University of Edinburgh in the UK.  He carries out research in various aspects of automated theorem proving, including proof planning.

Automated Reverse Engineering and Design Recovery

Dr. Gerald Gannod
Arizona State University, USA

Software reverse engineering is the process of analyzing system components and component interrelationships in order to describe that system at a level of abstraction that is higher than the original source code. Given the size and volume of existing source code, the need for automated support for reverse engineering, design recovery, and program understanding is well motivated. In response, several approaches and tools have been suggested for the reverse engineering activity. In this tutorial, we will start with a brief overview of the current state of the art and practice of software reverse engineering. Next, we will discuss the theoretical underpinnings, benefits, and limitations of each class of reverse engineering technique. Finally, we will describe and compare a number of techniques that have been applied to the problem of reverse engineering and design recovery. Included in this tutorial will be a demonstration of the capabilities of some representative tools as well as a discussion of current research in the area. Some of the topics to be covered include:
Gerald Gannod is currently an Assistant Professor at Arizona State University in Tempe, Arizona. Dr. Gannod's research interests include software engineering, formal methods for software development, reverse engineering, software reuse, and aerospace-based software systems.

Software Patterns, AntiPatterns, and Engineering Automation

Prof. Bernd Kraemer
FernUniversitaet, Germany

Software patterns are a way of capturing analysis and design expertise of experienced software developers and document best practices for other software engineers to reuse to similar cases. AntiPatterns, in contrast, describe common software mistakes and propose solutions that help developers to resolve development problems. This tutorial will present the essential concepts behind these complementary engineering techniques and illustrate their benefits and interdependencies with examples spanning a range of development activities including software analysis, architecture, and design. We shall relate patterns, which describe abstract solutions to recurring development problems, to software components, which provide design abstractions together with operational code, and conclude with a description of current work on applications of the pattern idea to software engineering automation.

Bernd Kraemer is a professor at FernUniversitaet and head of the distributed software engineering chair. He is an author and co-author of two books, over 100 journal articles and conference publications and an area editor of the Journal of Integrated Design & Process Science. His long term research interests focus on engineering and management problems of open distributed applications.


Introduction to Automated Software Engineering

Dr. John Penix
NASA Ames Research Center, USA

The ASE conference has a long history that dates back to the mid 1980s, when it  began as a funding effort of the US Air Force's Rome Air Development Center (now Rome Laboratory) known as the Knowledge Based Software Assistant.  This tutorial will review the history of Knowledge Based Software Engineering, surveying the major accomplishments in the field that have led up to this 13th conference.  It is meant as an introduction for newcomers to the conference, in order to provide a baseline and a context for understanding the research presentations during the conference proper.


I. Before the beginning
    A. Automatic Programming
    B. Software Engineering
II. In the Beginning
    A. The KBSA paper
    B. KBSA facets
III. Expading KBSA to KBSE
    A. Other efforts
    B. Continued development
IV. What worked, what didn't
V. Expanding KBSE to ASE
    A. New problems, new solutions
    B. What happened to the "K"
VI. The Horizon

John Penix is a Research Scientist in the Automated Software Engineering Group at NASA Ames Research Center.  His research interests are in automated software design based on reusable components and formal analysis of software systems.