Language Support for Exploiting Software Structure Specifications
Abstract
Precise specification of the architecture and design of software is a good practice. Such
specifications contain a lot of information about the software that can potentially be exploited by
tools, to reduce redundancy in software writing by automating routine tasks, as well as giving
valuable feedback on the software. We first broadly classify such tools based on their application,
and look at some of the issues involved in writing them. Most of these tools are built using
conventional programming languages that do not provide primitives that are routinely required by
such tools. We identify some patterns that are seen while writing such tools and abstract them out
into a language specially designed for the purpose. Our effort is a language called LEADS, where
we attempt to make writing such tools a lot easier, modular, organized and portable. LEADS is
based on the Pattern-Action approach, where one specifies the pattern of information of interest
and the actions to be taken when it is found. The patterns are specified using a custom declarative
language that is enriched with special primitives for routinely occurring constructs. LEADS also
decouples itself from the specification environments and formats thereby ensuring wide
applicability. This enables LEADS scripts to be ported across design environments with minimal
effort.