\section{Grammar-based maintenance}

The grammar-based approach to software development is used
successfully in several software systems, e.g., in the Gandalf system
\cite{notkin:gandalf-85} and the Cornell Synthesizer system
\cite{reps-teitelbaum:84}.
The Demeter system integrates the grammar-based approach with
the class-based \oo\ paradigm (supporting encapsulation, late binding
of calls to code, inheritance and parameterized classes in a programming
language independent way).
In the Demeter approach to software development,
a first step is to
produce a list of \cms.
These describe the object classes
relevant to the program along with their signatures,
using an extension of EBNF \cite{wirth:ebnf}.
The relationship between complex objects
and their constituents parallels the linguistic relation between large phrases
and smaller phrases that compose them.
After producing the class modules which describe the structural aspects
of classes,
%When one designs an object-oriented
%program using the Demeter system, a first step is to produce a list of \cms.
one then writes the procedures, or methods, associated with
the various classes introduced in the \cms, using a programming
language which supports the \oo\ paradigm (e.g., C++). 
The methods describe the details
of processing
the objects defined by the \cms.


