- What is your current development platform for the application?
- What platform does the application currently run on?
- Has this application been deployed on any other platform than the development one? If so, which version of the platform is it running on?
- Describe any hardware (that is, graphics adapters or cards) used by your application and whether the required drivers are available on the Linux platform.
- Please describe your application and its architecture in detail.
- What are the different components of your software? Please provide
- Which of these pieces needs to be ported or not ported? Please provide
- What percentage of the application(s) to be ported is/are written in the following programming languages?
- Java
- C#
- C
- C++
- Assembler
- VB
- Shells (ksh,csh,perl,awk or others)
- Please provide a rough estimate of the number of lines of code in the software, listed by language types.
- For Java apps: Does the application use the JNI9 to link native libraries? Please describe.
- Does the application use kernel modules? If so, please describe.
- Is this a 2D/3D graphics application? Please describe.
- Does the application use UNIX pipes, message queues, shared memory, signals, or semaphores? Please describe.
- Is the application, or any of its components, multithreaded? If so, which threads library is currently being used? Does the application rely on any proprietary threading priorities on your development platform?
- Does the application perform operations that assume specific byte storage order? Is this likely to be an issue during the port?
This question relates to the “endian-ess” of the application. Most Linux ports will target the Intel platform, which is small-endian, whereas most source platforms will be big-endian. Nonportable code that assumes endian-specific characteristics will break when not ported correctly. Worse yet, the ported code will not exhibit errors during the porting phase. The problem usually crops up during system testing, where it is harder to find.
- Which compiler(s) and version are used in the development platform?
- In addition to the development environment, are there any dependencies on debugging tools such as memory leak debuggers, performance analysis tools, exception handling, and so forth?
- Is this a socket-based application? If so, does it use RPC? Please describe.
Although Linux supports standards-based socket and RPC semantics, the intent is to ascertain portability. Asking this question may bring to light nonportable architecture the customer may have implemented in the application. This question can also lead to questions on what setup is needed at the testing phase.
- Does the application use any third-party software components (database tools, application server, or other middleware)? If so,which ones?
- How is the application delivered and installed? Does it use standard packaging? Will the installation scripts need to be ported, too?
- Is the application or any of its components currently in 64-bit? Will any component need to be migrated to 64-bit?
- What databases are currently supported? Please include version numbers.
- What database is the ported application expected to run with?In addition to Question 1 in this section, what database do you expect the ported application to run with on the Linux platform?
- Does the application use any nonrelational or proprietary databases?
- How does the application communicate with the database?
- Programming language(s) (for example, Java, C/C++, other)
- Database interface(s) (for example, ODBC, OCI, JDBC)
- Does the application require the use of extended data types (XML, audio, binary, video, and so on)?
- What is the desired General Availability date for the application on the target platform?
- Has the porting of the application already started on the target platform?
- What is the estimated port complexity level (low, medium, or high)?
- What factors were considered in this complexity ranking?
- If the application has been ported to another platform, how long did that port take? How many resources were dedicated to it? What problems were encountered?
- What is your rough estimate of the project porting time and resources required?
- Please describe the acceptance testing setup.
- What kind of networking and database setup will be required for unit testing?
- How much testing will be required after porting (number of days, number of resources)?
- Do you have established test scripts and application performance measurements?
- Will benchmarks need to be run for comparison testing?
- Is performance data available on current platforms?
- When were the performance tests last executed?