Subversion Repositories tendra.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<!-- Crown Copyright (c) 1998 -->
<HTML>
<HEAD>
<TITLE>TDF and Portability: Conclusions</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#400080" ALINK="#FF0000">
<A NAME=S51>
<H1>TDF and Portability</H1>
<H3>January 1998</H3>
<IMG SRC="../images/no_next.gif" ALT="next section">
<A HREF="port4.html"><IMG SRC="../images/prev.gif" ALT="previous section"></A>
<A HREF="port1.html"><IMG SRC="../images/top.gif" ALT="current document"></A>
<A HREF="../index.html"><IMG SRC="../images/home.gif" ALT="TenDRA home page">
</A>
<IMG SRC="../images/no_index.gif" ALT="document index"><P>
<HR>

<H1>4.  Conclusions</H1>
The philosophy underlying the whole TDF approach to portability is
that of separation or isolation. This separation of the various components
of the compilation system means that to a large extent they can be
considered independently. The separation is only possible because
the definition of TDF has mechanisms which facilitate it - primarily
the token mechanism, but also the capsule linkage scheme.<P>
The most important separation is that of the abstract description
of the syntactic aspects of the API, in the form of the target independent
headers, from the API implementation. It is this which enables the
separation of target independent from target dependent code which
is necessary for any Architecture Neutral Distribution Format. It
also means that programs can be checked against the abstract API description,
instead of against a particular implementation, allowing for effective
API conformance testing of applications. Furthermore, it isolates
the actual program from the API implementation, thereby allowing the
programmer to work in the idealised world envisaged by the API description,
rather than the real world of API implementations and all their faults.<P>
This isolation also means that these API implementation problems are
seen to be genuinely separate from the main program development. They
are isolated into a single process, TDF library building, which needs
to be done only once per API implementation. Because of the separation
of the API description from the implementation, this library building
process also serves as a conformance check for the syntactic aspects
of the API implementation. However the approach is evolutionary in
that it can handle the current situation while pointing the way forward.
Absolute API conformance is not necessary; the TDF libraries can be
used as a medium for workarounds for minor implementation errors.<P>
The same mechanism which is used to separate the API description and
implementation can also be used within an application to separate
the target dependent code from the main body of target independent
code. This use of user-defined APIs also enables a separation of the
portability requirements of the program from the particular ways these
requirements are implemented on the various target machines. Again,
the approach is evolutionary, and not prescriptive. Programs can be
made more portable in incremental steps, with the degree of portability
to be used being made a conscious decision.<P>
In a sense the most important contribution TDF has to portability
is in enabling the various tasks of API description, API implementation
and program writing to be considered independently, while showing
up the relationships between them. It is often said that well specified
APIs are the solution to the world's portability and interoperability
problems; but by themselves they can never be. Without methods of
checking the conformance of programs which use the API and of API
implementations, the APIs themselves will remain toothless. TDF, by
providing syntactic API checking for both programs and implementations,
is a significant first step towards solving this problem.<P>
<!-- FM pgf ignored -->
[1] <I>tcc User's Guide</I>, DRA, 1993.<BR>
[2] <I>tspec - An API Specification Tool</I>, DRA, 1993.<BR>
[3] <I>The C to TDF Producer</I>, DRA, 1993.<BR>
[4] <I>A Guide to the TDF Specification</I>, DRA, 1993.<BR>
[5] <I>TDF Facts and Figures</I>, DRA, 1993.<BR>
[6] <I>TDF Specification</I>, DRA, 1993.<BR>
[7] <I>The 80386/80486 TDF Installer</I>, DRA, 1992.<BR>
[8] <I>A Guide to Porting using TDF</I>, DRA, 1993.<BR>
[9] <I>The TDF Notation Compiler</I>, DRA, 1993.<P>
<!-- FM pgf ignored -->
<HR>
<P><I>Part of the <A HREF="../index.html">TenDRA Web</A>.<BR>Crown
Copyright &copy; 1998.</I></P>
</BODY>
</HTML>