UNIX to Linux Porting: Project Considerations
In this chapter
- 1.1 Software Application Business Process
- 1.2 The Porting Process
- 1.3 Defining Project Scope and Objectives
- 1.4 Estimating
- 1.5 Creating a Porting Project Schedule
- 1.6 Porting Process from a Business Perspective
- 1.7 Annotated Sample Technical Questionnaire
- 1.8 Summary
Application porting refers to the process of taking a software application that runs on one operating system and hardware architecture, recompiling (making changes as necessary), and enabling it to run on another operating system and hardware architecture. In some cases, porting software from one platform to another may be as straightforward as recompiling and running verification tests on the ported application. In other cases, however, it is not as straightforward. Some large applications that were written for older versions of operating systems and compiled with native compilers may not adhere to present language standards and will be more difficult to port, requiring the full attention of project management.
This chapter supplements currently available project management materials and books about application porting projects. Topics such as how to use formalized requirements processes, how to better communicate between software developers, and how to practice extreme project management are topics that modern-day project managers are already well informed of. However, because software development is not exactly the same as porting and migrating software, a gap exists in current publications—a gap that this chapter addresses.
The focus here is on software porting and migration process details and technical risks. All information in this chapter has been collected and gathered through countless porting engagements. This chapter presents best practices and methodologies to achieve high-quality ported applications. This chapter specifically appeals to those involved in software porting and migration projects, especially project managers and application architects.
1.1 Software Application Business Process
Before embarking on a porting project, it is important to note which business processes within the application life cycle will be affected. Business processes currently in place must be modified to accommodate the ported application in terms of having a new platform to support, new test environment, new tools, new documents, and (most important) new customers to support and establish relations with.
The three main areas of the application life cycle to consider that may affect the business process are development and testing, customer support, and software application distribution:
- Development and testing. Within the development and testing organization, personnel must be trained to develop and test on Linux in terms of application programming interface (API) differences, development tools, debugging tools, performance tools, third-party applications needed by the application to be ported, and performance tools.
- Customer support. Within the customer support organization, support personnel must be trained on Linux system administration, third-party applications needed by the ported application, installation and administration procedures, package maintenance options in the Linux environment, debugging tools and procedures, and anything else that needs to be learned to provide customer support for the ported application.
- Software application distribution. Within the software application distribution organization, sales and consultants must be trained in overall Linux features and capabilities.1 Personnel in the software distribution channels must be trained as trainers of the software application in a Linux environment. From a customer’s perspective, they will also look for integration skills to integrate Linux within their IT infrastructure.
Porting an application to Linux means modifying business organization processes that can be affected by a newly ported application. The three main areas should be considered and included in the overall project plan before starting the porting process.