%  purpose.tex from ObjectProDSP 0.2
%  Copyright (C) 1994 1995, Mountain Math Software, All rights reserved.
%  Licensed for free use and distribution under version 2 of the Gnu General
%  Public License. Please see file COPYING for details and restrictions.
%  
%  ObjectProDSP is a trademark of Mountain Math Software.
%  
\clearpage
\SectionIndex{Purpose}
\markright{\headtitle}

\DppTM{} provides a high level environment for design and implementation
of complex Digital Signal Processing (DSP) systems. You can interactively
define a DSP network, create test data and display output in graphical
or numeric form. You may change processing parameters or edit the
network topology interactively.
Network consistency checks and
analysis of sample rates and sample times are performed
on data streams.
The arithmetic of supported targets is simulated.
Stand alone code is generated at the touch of
a button for real time execution.

Any target processor with an Ansi
C compiler can be supported.
All the standard DSP objects can be ported.
It may be desirable to code portions
of some in assembly language for optimum performance.
The kernel of
a DSP object can be coded in
\Cpp{}, \C{} or assembly language.

Choosing software development tools involves
involves tradeoffs such as:
\begin{itemize}
\item{Efficiency versus ease of programming (for example assembly language
versus a high level language).}
\item{General purpose low level tools versus application specific high level
tools.}
\item{Interactive tools for rapid development versus
compiler based tools for efficient code.}
\end{itemize}

\begin{figure}
\centerline{\psfig{figure=../psfig/dsp_case_ps}}
\caption{\Index{CASE tool} for DSP analysis design and implementation}
\label{fig:dsp_case}
\end{figure}

\Dpp{} minimizes these tradeoffs. You can
take on complex DSP development applications with  confidence.
This is achieved by applying the techniques of object oriented
programming to DSP in an integrated package.
The \Index{X-windows}/\Index{InterViews}
graphical user interface makes it easy to
understand and manipulate these objects.

\Cpp{} provides the framework for this structure.
A DSP language, \dpp{}
\index{DPP{}}
is defined within \Cpp{} by defining DSP classes.
Objects are saved as statements in this language. Programs in
this language can
be written directly or can be generated automatically
by graphically defining and editing DSP networks.

\Cpp{} has been extended to define
interactive objects and their documentation in the
\IntPp{} language and translator.
This allows a single object definition (possibly augmented with
optimized assembly language code) to provide the source
for interactive execution, printed and interactive user
documentation and optimized target code. Figure~\ref{fig:dsp_case}
shows how target and source code and documentation is derived
from a single user created source.
This facility provides a powerful object oriented
DSP \Index{CASE tool}.

