Foundations of Software Development.
Abstract
Algorithms and data structures are among the primary constituents of computer software and thus are among basic objects of study in Computer Science. This project is concerned with the structure and automated design of algorithms and data structures. Our scientific hypothesis is that there exist general algorithm, data structure, and design concepts that underlie and explain most of the detailed structure of conventional software systems. By abstracting and formalizing these concepts and showing how to mechanize their application, we can prepare the way for the coming generation of automated software design environments. Our approach involves identifying classes of algorithms that solve a broad range of useful problems. In particular we have emphasized formalizing abstract algorithms that make minimal assumptions about the structure of a problem. Once a class of algorithms has been identified we represent its essence as a theory, called an algorithm theory. Under ONR support we have developed algorithm theories and design tactics for divide and conquer, simple problem reduction, global search (binary search, backtrack, branch-and-bound), problem reduction generators (dynamic programming, generalized branch-and-bound, game tree search), local search, constraint propagation and others. These have all been at least partially implemented and tested in the KIDS system. KIDS has been used to derive over 70 algorithms. More recent work has focused on theories and operations on theories as the formal underpinings of algorithm design as well as data structure design and refinement and general software development.
Document Details
- Document Type
- Technical Report
- Publication Date
- Nov 01, 1995
- Accession Number
- ADA327574
Entities
People
- Douglas R. Smith
Organizations
- Kestrel Institute