Developing Portable Software57
Environment. This term refers to the complete collection of external elements with which a software unit interacts. These may include other software, operating systems,
hardware, remote systems, documents, and people. The term
is more general than platform, which usually refers only to the operating system and computer hardware.
Class of Environments.We use this term to emphasize that we seek portability not only to a set of specific environments, which are known a priori, but to all environments
meeting some criteria, even those not yet developed.
Degree of Portability. Portability is not a binary attribute. We consider that each software unit has a quantifiable degree of portability to a particular environment or class of environments, based on the cost of porting. Note that the degree of portability is not an absolute it has meaning only with respect to a specific environment or class.
Costs and Benefits. There are both costs and benefits associated with developing software in a portable manner. These costs and benefits take a variety of forms.
Phases of Porting. We distinguish two major phases of the porting process:
transportation and
adaptation. Adaptation includes most of the modifications that need to be
made to the original software, including automated retranslation. Transportation refers to the physical movement of the software and associated artifacts, but also includes some low level issues of data representation.
Porting vs. Redevelopment. The alternative to porting software to anew environment is redeveloping it based on the original specifications. We need to compare these two approaches to determine which is more desirable. Porting is not always a good idea!
Note that while we concentrate on the porting of software, there maybe other elements for which portability should be considered. These include related software
such as libraries and tools, as well as data, documentation,
and human experience.
Share with your friends: