DEVELOPING PORTABLE SOFTWARE

Proposed Textbook Outline

Jim Mooney
Dept. of Computer Science and Electrical Engineering
West Virginia University

Copyright 1995 -1998 -- All Rights Reserved

 

PART I: FOUNDATIONS

 

1. INTRODUCTION

What is the Problem?

Why port software?

Example scenarios

Who should care?

Portability concerns for end users, vendors, developers and programmers, system designers, etc.

Costs and benefits

Development costs; maintenance cost savings; performance, reliability, functionality

Portability activities

Porting existing software; portable design and redesign; improving the infrastructure (platforms, standards, tools)

Historical notes

Portability Concepts

Definition
Characterizing the target
Transportation and adaptation
What can we Port?

Programs, data, documentation, tools, experience

Levels of Portability

Source, binary, intermediate, higher level

Related Concepts

Reusability, interoperability

Non-technical constraints

Legal, commercial, and political issues

Do we always want identical behavior?

Development Strategies

Thinking portable

Avoiding system-specific assumptions and methods

Isolating dependencies

Separating elements that require adaptation

Following programming disciplines

Avoiding system-dependent constructs

Controlling interfaces

Standardizing and bridging the gap

Overview of the text


2. PORTABILITY MODELS

The use of models
Interface models

Static interface model
evolution over time

Activity models

The porting process

Software models

The 4C model
Classification


3. THE ROLE OF STANDARDS

What is a Standard?
Formal Standards

The standards development process
Official standards organizations

ISO, IEC, UN/ITU; ANSI and national bodies; IEEE, ACM; NIST and DoD;

Consortia

OSF, TRON, etc.

Examples

Language standards; ASCII character set; IEEE floating point

De Facto Standards

What are they?
Examples

IBM-PC architecture; Digital VT-100; user interfaces

Usefulness and limitations


PART II: PROBLEMS AND STRATEGIES
4. TRANSPORTATION ISSUES

Movement and distribution

Network transmission; physical transfer; manual methods

Media compatibility

Physical and logical issues

Data translation

Character sets; the endian problem; floating point and string representation, etc.


5. STRATEGIES FOR ADAPTATION

Conquering the interfaces
Language-based strategies
Standard and portable libraries
Dealing with the operating system
Dealing with the architecture
"Open" Systems
Cultural adaptation


6. STANDARD LANGUAGES

The promise of Standard Languages
Contributions and limitations
The Ada Language
The C Language
The C++ Language
The Pascal Language
The FORTRAN Language
The COBOL Language
Other languages


7. OTHER LANGUAGE-BASED STRATEGIES

Preprocessors

Macro processors, C preprocessor, PFORT, etc

Source-to-source translation
Intermediate-level porting

Supporting multiple languages; working without source code

Porting the compiler


8. STANDARD AND PORTABLE LIBRARIES

Language-based libraries

C Library, Ada standard packages, etc.

Numerical libraries

The NAG library, etc.

System Libraries

Examples: UNIX, VMS

Other libraries


9. OPERATING SYSTEM STRATEGIES

What are the problems?
Portable operating systems
Standard APIs

UNIX, MS-DOS; POSIX, MOSI, the TRON series, IBM SAA, etc.

Bridging the gap

API translation layers

File System and naming issues


10. ARCHITECTURE STRATEGIES

Standard Architectures

SPARC, TRON, PowerPC; IEEE floating point

Generic Architectures

Interpretation and emulation


PART III: PORTABLE SOFTWARE ENGINEERING
11. THE SOFTWARE DEVELOPMENT PROCESS

Portability and the Software Process

Large vs. small projects; management issues

Specification

Setting portability goals; avoiding assumptions

Design

Choosing a methodology; modularizing; using standards

Implementation

Choosing a language; following portability disciplines

Testing and Debugging

Planning and recordkeeping; reuse of plans; recurrence of bugs

Documentation

Reusing documentation; isolating system dependencies

Maintenance

Maintaining multiple versions; learning from experience


12. PORTABILITY TOOLS

Exploiting general tools
Tools for porting
Tools for portable design
Analysis tools
Other tools


13. FORMAL METHODS

Formal specification

Nonfunctional specifications; RESOLVE, etc.

Description and Classification

Describing and Classifying programs and platforms

Measuring portability

Process metrics

Measuring and estimating costs

Product metrics

Degree of portability

Using the metrics

Verification

Preserving correctness when porting
Efficient reverification

Timing issues

Preserving timing properties


14. PORTABILITY AND REUSE

Portability as a type of reuse
Essential differences
Common issues and problems
Management issues


PART IV: SPECIAL TOPICS
15. NON-TECHNICAL PROBLEMS

Intellectual property protection
Commercial constraints
National and political barriers
Other problems


16. PORTING LEGACY SOFTWARE

Deciding whether to port

Estimating costs: porting vs. redevelopment; using the classification scheme

Selecting a Strategy

Assessing the options: how to get there from here

Reverse Engineering

Finding the interfaces; identifying dependencies; slicing techniques

Improving Portability

Making it more portable for the next time


17. USER INTERFACES AND CULTURAL ISSUES

The concept of cultural adaptation
Porting across user interfaces
Adapting for user experience
Internationalization
Serving economically disadvantaged users


18. DISTRIBUTED AND PARALLEL SOFTWARE

Portability in distributed environments
Portability for parallel software
Shared-memory approaches
Message passing approaches
Algorithm Adaptation


19. REAL-TIME SOFTWARE

The challenge of real-time portability
Types of real-time software
Some emerging approaches


20. THE PORTABILITY INFRASTRUCTURE

Portable platform design
Standards development
Tool development

21. CASE STUDIES

Some research examples
Some commercial applications
Large-scale projects


22. CONCLUSION

Summary of guidelines
The future of portability

APPENDICES

A. PORTABILITY PROJECTS

Implementation and porting projects for students

B. SOFTWARE INTERFACE STANDARDS

A comprehensive listing of formal standards for software interfaces

C. PORTABILITY RESOURCES

Annotated bibliography; sources for tools; on-line resources