Specification‐driven tools (SDTs) translate specifications to products such as programs, documentation, tables, and test scripts. SDTs represent a large class of techniques that have independently evolved under a variety of names including application generators, program generators, 4GLs (fourth generation languages), automatic programming, lower CASE tools, and application‐oriented languages. SDTs increase productivity and quality and are most successful in programming areas that are well understood and repetitive such as databases, user interfaces, and translators. SDTs are an effective way to reuse software code and design. Unlike code reuse libraries, SDTs generate customized software that is not modified by the user. A typical SDT for building parsers from grammar descriptions is shown.
The productivity and quality of SDTs is achieved by two major factors: narrow domains and understandable specification languages. A “domain” is the area of applicability. General‐purpose programming languages are useful for very large problem domains.
The second major factor for increased productivity and quality of SDTs is the specification language. It must be significantly easier to understand than the generated code. It should be much shorter, should not contain unnecessary implementation details, and it should be understandable to nonprogrammers—ideally, the customer. However, specification languages are not necessarily simple. Example problem domains and tools for building SDTs are described.