Portability
- Portability
- the development-oriented quality factor
representing the degree of the easiness of moving a
system,
application, or
component
from one hardware or software
environment to another
As illustrated in the preceding figure, Portability is part of the following inheritance hierarchy:
- Type: Abstract
- Superclass: Development-Oriented Quality Factor
- Subclasses:
The typical responsibilities of portability are to:
- Model the degree to which an executable work product can be moved from one environment to another.
- Support the analysis and specification of
portability requirements.
- Provide a foundation for evaluating the quality of an architecture.
Portability is typically decomposed into the following aggregation hierarchy of subfactors:
- Hardware Independence
- Client Independence
- Network Independence
- Server Independence
- Storage Independence
- Software Independence:
- Database Independence
- Middleware Independence
- Operating System Independence
Portability is typically measured in terms of the:
- Maximum amount of effort permitted for engineers with specified training or level of expertise
to port the system, application, or component to the specified environment.
Typical mechanisms for implementing portability include:
- Isolating operating system calls.
- Minimizing or avoiding the use of machine language.
- Maximizing the use of portable languages such as Java.
- Maximizing the use of open interface, distribution, and
communications standards (e.g., CORBA, Enterprise Java Beans).
- Localizing user interface software.
- Initially targeting common platforms.
The following guidelines have been found to be useful regarding portability:
- Because the amount of effort required porting a system, application, or component typically
depends on the environment to which it is being ported, portability depends on the
potential (probable) environments to which the application or component will be ported including:
- Hardware platform (i.e., vendor and model).
- Operating system (i.e., vendor, model, and version such as Microsoft Windows XP).
- Programming language virtual machines (i.e., vendor, model, and version such as Sun Java Version 2).
- Browser (i.e., vendor, model, and version such as Microsoft Internet Explorer Version 5.0 and greater).
- Porting typically involves:
- Updating software components.
- Updating data and hardware components (e.g., if going
porting client software from a workstation to a hand-held wireless device with limited screen space).
- Updating associated documentation.
- Quality engineering and testing.