Automatic synthesis of abstract data type implementations from abstract specifications

Abstract data types provide some of the conceptual tools which are needed to manage the complexity of software development, and produce cost-effective and reliable software through successive levels of abstraction. To be fully effective, data abstraction must be supported by language constructs and automated tools. The objectives of the research presented in this dissertation were to construct an environment with the capabilities of specification and automatic implementation of abstract data types. A specification language to express abstract data types was designed, and an automatic synthesis system that generates implementations from abstract specifications was designed and implemented. The transformation of abstract data type specifications into executable code raises issues of efficiency of the synthesis system and the code generated by such a process. The complexity analysis of the synthesis system algorithms shows that the critical algorithms of the system are generally linear. The efficiency of the code generated by the synthesis system was addressed through data structure and algorithm selection. The selection process relies on cost measures to suggest an implementation that minimizes the total cost. Evaluation of the specification language, the synthesis system, and the automatically-generated implementations was undertaken to assess the benefits of this effort, and its role as a software tool for specification, prototyping, and validation.