Challenges in Application Porting and Abstraction
Presented by: Raj Johnson, President & CEO www.mapusoft.com 1-877-MAPUSOFT
Challenges in Application Porting and Abstraction Presented by: Raj - - PowerPoint PPT Presentation
Challenges in Application Porting and Abstraction Presented by: Raj Johnson, President & CEO www.mapusoft.com 1-877-MAPUSOFT What is Porting? Porting is the ability to reuse software from one environment to another by making minimal
Presented by: Raj Johnson, President & CEO www.mapusoft.com 1-877-MAPUSOFT
Porting is usually quicker and cheaper than performing a
full code rewrite.
However, manual porting can turn into a major code-rewrite
if the underlying OS platforms are very different
Ideally, If you can re-use your existing code without having
to do any “porting” at all, then it’s all the more better
Existing code works and has been perfected in the field.
Throwing it away and starting from scratch because of a change in environments is not sensible
Porting is more effective and efficient if there is a lot of
code
Technical advantages
Products can be supported for a longer life cycle Requires less engineering resources Scalability on all platforms Versatility to run on different platform environments
Business advantages
Reduces project time Saves money, and other valuable resources Fewer risk Factors
Technical issues
Need to hire skilled and experienced professionals
Resources with a good grasp of portability issues Tools required or third party support Third party dependencies
Business issues
Structure to support on new platforms
Development & support cost
Business issues
Structure to support on new platforms
Development & support cost
Project management issues
Resources Management Schedule Review Plan for any unforeseen circumstances
Differences in OS versions
Process support in VxWorks 6.x but not in 5.x OS differences between 32 and 64 bit CPU
Missing OS functionalities Discontinue use of obsolete APIs Change code to adapt to new OS versions Manage multiple code bases across different versions Forced to upgrade OS due to vendor not supporting a
Application Programming Interfaces (APIs)
Proprietary APIs
Code gets locked to a specific vendor’s OS platform
POSIX – Industry Standard API
POSIX complaint versus conformance – variations in
API behavior
Levels of POSIX API support & what is actually
supported by OS vendors
Vendor specific POSIX implementations (mmu/non-
mmu, priority differences, hard real-time, etc.).
POSIX is not the answer to your porting problem
Code may compile on one compiler but not another Code developed in a specific language may become
Tools not available for new hardware platform Development on host may not be possible Delay in start of development until the new target
Need to deal with target issues while porting
Longer-term porting solution:
Develop common OS interface APIs that your code
Check out the commercial OS abstraction solutions Engage a porting consultant
Make it easy to support a wide variety of OSs Provide tools that can run in simulation and debugging
Deliver tested and proven architecture Provide postmortem analysis of the code with tools You may have to provide the source code to a third-
Complete porting in less time
Shorten your time to market
Advantages
Internal resources are not diverted from the primary
Disadvantages
Sharing of source codes and risk on the IP
Training the customer on the functionality and
Additional project management and lack of control
Abstraction Provides the ability for software to be re-
Without an OS abstraction, it would be difficult to move
Abstraction:
Avoids porting issues and protects the code Ensures the fundamental OS resources behave the
same across all platforms
Protects the core functionality of the application/system Ensures there will be no impact on system performance Avoids shifting focus from the organization’s core
competencies
Reduces potential learning curve and makes the
concept of code reuse easier to adopt
Leverages on existing software and knowledge base Makes porting an easy, simple, and less time-
Abstracts all the APIs in the OS Ensures all applications run on different OSs Allows for new OS support quickly and seamlessly Some Abstraction tools can:
Abstract data types, header files, and symbolic
Develop proof-of-concept demo software quickly
OS Abstraction Should support a variety of OS now and
new versions in the future
OS Abstractions should not impact the application’s
performance
Why waste valuable CPU resources Should use compile time translations Should utilize low level/high performance APIs Needs to eliminate dynamic allocation of resources (pre-
allocate)
Should be fully scaleable and have a small footprint
OS Abstractions should not fully rely on the underlying OS
OS Abstractions should add missing API features
Host / Target OS Platforms
Standard OS Interface Architecture Device Driver Interface
POSIX Support ITRON Support
Embedded Applications
New Embedded Applications Legacy OS Applications PSoS, VxWorks, Nucleus, MQX, ThreadX, QNX, RT Linux Open Source Applications
DOS APPS Flexible Abstractor Module
Legacy OS Support
A critical strategy for all software development groups Vital to systematically reuse code Important to fully implement the concept of code reuse Reuse code and leverage on the existing software
Provide maximum benefits to an organization
Changes in the system’s architecture and upgrades to
Integrates multiple systems into one that can run on
Migrates best selling software solutions to other
Supports the OS when OS vendors fail to do so Enhances and migrates software components to
Increases software productivity and interoperability Develops software with fewer resources Reduces software development time and maintenance
Produces more standardized software Produces better quality software and a powerful
Host Development
Testing and simulation Begin developing applications before target
Cross-OS driver development
Profilers
Test and debug the code Run code performance analyses
Code conversion tools
Ada to C/C++ (this can be especially helpful in keeping