Evolving Software with an Application-Specific Language
Eddie Kohler, Massimiliano Poletto, David R. Montgomery · 1999
Software systems can be developed through evolution (gradual change) or revolution (reimplementation from scratch). Both approaches have advantages and disadvantages. An evolutionary approach keeps the system working throughout, allowing early problem detection, but tends to retain ingrained design flaws and can result in complex, ad hoc systems. A revolutionary approach is required to change the basic architecture of a system, but many more resources must be invested before the system can be evaluated. In this paper, we describe how we used a little application-specific language to combine these approaches' advantages. The context of our work is CTAS [2], the nextgeneration air traffic control automation system developed originally by NASA. The overall goal was to redesign and reimplement one of the CTAS processes in Java, while retaining its ability to communicatewith unmodified processes---a project complicated by CTAS's ad hoc message formats. To address this, we designed a languag...