Developing Portable Software63
A software interface standard will aid in the development of portable software if it:
provides a clear, complete and unambiguous specification fora significant interface or subset, in a form suitable for
the software to be developed;
Has implementations that are widely available or maybe easily developed for likely target environments.
1.
2.
Unfortunately, many standards fall short of these requirements. They maybe expressed in an obscure notation that is hard to understand, or in natural language that is inherently imprecise. There are often many contradictions and omissions. A standard will only become widely implemented if there is already a high demand for it often a major barrier is the cost of the standard itself.
Standards come into being in three principal ways, each with their own advantages and disadvantages.
Formal standards are developed over an extended time by widely recognized standards organizations such as ISO. They represent abroad and clear consensus, but they may take many years to develop, and are often obsolete by the time they are approved. Some very successful formal standards include the ASCII
standard for character codes, the
IEEE binary floating point standard, the POSIX standard for the UNIX
API, and the C language standard.
Defacto standards are specifications developed by a single organization and followed by others because of that organization’s dominance. These are popular by definition but subject
to unpredictable change, often for limited commercial interests. Examples include the IBM-PC
architecture, the VT terminal model, and the Java language.
Consortium standards area more recent compromise. They are developed in an open but accelerated process by a
reasonably broad- based group, often formed for the specific purpose of maintaining certain types of standards. Example standards in this class include Unicode,
OpenGL, and the Single Unix Specification.
Standards will play a critical role in the strategies to be discussed, but they are only a starting point.