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