Home > Articles > Operating Systems, Server > Linux/UNIX/Open Source

This chapter is from the book

1.7 Annotated Sample Technical Questionnaire

This questionnaire, based on which other scoping questions can be formed, serves as a guide to the porting technical leader. The customer in this case is an internal or external organization that needs to port its application(s) to the Linux platform.

1.7.1 Platform-Specific Information

  1. What is your current development platform for the application?

  2. This question is about the development platform used to develop the application. It does not assume that the development platform is the same platform the application is deployed on. This is asked in the next question.

  3. What platform does the application currently run on?

  4. Porting engineers need to know which source or reference platform the application to be ported is using.

  5. Has this application been deployed on any other platform than the development one? If so, which version of the platform is it running on?

  6. Asking this question gives you a sense of the portability of the application if it has been ported to other platforms. A word of caution: Although an application may have been ported to other platforms, it may have been done on older versions of the platform.

  7. Describe any hardware (that is, graphics adapters or cards) used by your application and whether the required drivers are available on the Linux platform.

  8. Make sure any platform dependencies are available on Linux.

1.7.2 Application-Specific Information

  1. Please describe your application and its architecture in detail.

  2. This is where the customer describes the application architecture. Have them include an architectural diagram if possible. All components in the application need to be described. This should also tell you what type of application framework, if any, the application runs on. Most Java applications run on product-specific frameworks such as WebSphere or Weblogic. If they are written in C++, they may run on a CORBA framework, which means you may have to deal with a specific CORBA framework that may or may not exist on Linux.

  3. What are the different components of your software? Please provide a name and version number for each component.

  4. This gives you a sense of the breakdown of their applications. Being able to break the application into different discrete components can mean that the porting work can be broken into smaller independent tasks.

  5. Which of these pieces needs to be ported or not ported? Please include the version number.

  6. The customer needs to tell you what is in scope and what is not in scope.

  7. What percentage of the application(s) to be ported is/are written in the following programming languages?

    1. Java
    2. C#

    3. C
    4. C++

    5. Assembler
    6. Visual Basic (Microsoft)

    7. Shells (ksh, csh, perl, awk, others)

    Ascertains the complexity of the application by asking what languages they are using and what percentage of those are in use.

  8. Please provide a rough estimate of the number of lines of code in the software, listed by language types.

  9. This is another way of asking Question 4. Asking questions in different ways often brings up data points that contradict each other. This opens the door for open discussions that can result in better project scoping.

  10. For Java apps: Does the application use the JNI9 to link native libraries? Please describe.

  11. Ascertains the complexity of the application to be ported. Most of the time, Java applications9 that are not 100 percent pure Java need platform-dependent routines that can only be handled in native language such as C. Be aware of such platform-dependent code, because it takes more time to port.

  12. Does the application use kernel modules? If so, please describe.

  13. Ascertains the complexity of the application to be ported. Kernel modules and routines used by the application are nonportable. These will take more time to convert to equivalent routines in Linux.

  14. Is this a 2D/3D graphics application? Please describe.

  15. Ascertains the complexity of the application to be ported. Make sure compatible graphics toolkits and development tools are available in Linux, whether they are supplied in Linux by default or by other third-party vendors.

  16. Does the application use UNIX pipes, message queues, shared memory, signals, or semaphores? Please describe.

  17. Most of these have standard UNIX interfaces that can be easily ported to Linux. Although the interfaces may be standard, implementation underneath the covers will differ. The catch is to make sure that the intended behavior remains the same when ported to Linux.

  18. 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?

  19. Depending on the source platform, multithreading interfaces can vary from standard to nonstandard. Linux supports several threading libraries, but the one that is standard in present and future Linux distributions is the Native Posix Threads Library (NPTL) implementation. NPTL is discussed in other sections of this book. The point is that the closer the source implementation is to NPTL, the easier it is to port.

  20. Does the application perform operations that assume specific byte storage order? Is this likely to be an issue during the port?

  21. 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.

  22. Which compiler(s) and version are used in the development platform?

    1. GNU
    2. Java (what version?)
    3. Platform (HP, AIX, Sun, Microsoft, NCR, AS/400, S390, True64) compiler? Which platform?

    4. Others (please specify)

    Ascertains the complexity of the application to be ported. If the source application uses the GNU gcc or g++ compiler, it becomes easier to port to Linux because the native compiler for Linux is GNU gcc or g++. Applications that are developed on other platforms and are compiled in their native compilers tend to use native compiler semantics, which must be converted to GNU compiler semantics. C++ applications become harder to port than C applications when the application starts to use C++ features such as templates. Because some C++ standards are implemented differently by different compiler vendors, porting this type of code takes more time than simpler C or C++ code.

  23. 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?

  24. This goes back to scoping and dependencies. Third-party tools that may or may not exist in Linux need to be assessed. Who needs to provide for the license? Who is responsible for obtaining the tools? What will be the support structure if third-party support is needed?

  25. Is this a socket-based application? If so, does it use RPC? Please describe.

  26. 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.

  27. Does the application use any third-party software components (database tools, application server, or other middleware)? If so, which ones?

  28. Every third-party software component adds complexity to the port. If any third-party software components are used, ask what version of the component is used and whether it is available on Linux. Third-party components may require extra time to learn and even to configure or build if necessary.

  29. How is the application delivered and installed? Does it use standard packaging? Will the installation scripts need to be ported, too?

  30. A Linux standard packaging mechanism is RPM. RPM is discussed in other parts of the book. Ascertain whether the customer will need the packaging part of the application ported, too.

  31. Is the application or any of its components currently in 64-bit? Will any component need to be migrated to 64-bit?

  32. With the advent of 64-bit platforms and operating systems, this question pertains to the level at which the application needs to run or be ported. Most 32-bit applications will port to a 64-bit environment without problems through the use of modern compilers. Today's compilers have become efficient at flagging syntax and semantic errors in the application at compile time, allowing the porting engineer to make necessary changes. The one consideration here is that it will require additional time for porting and debugging.

1.7.3 Database Information

  1. What databases are currently supported? Please include version numbers.

  2. Almost all enterprise applications today require a database back end. It's important to make sure that the database for the application is available on Linux. Differences in database products and versions can add substantial porting effort to the project.

  3. What database is the ported application expected to run with?

  4. In addition to Question 1 in this section, what database does the customer expect the ported application to run with on the Linux platform?

  5. Does the application use any nonrelational or proprietary databases?

  6. Any proprietary database needs to be ported to Linux. Make sure the code to run the database is available and is part of the scoped porting work.

  7. How does the application communicate with the database?

    1. Programming language(s) (for example, Java, C/C++, other)
    2. Database interface(s) (for example, ODBC, OCI, JDBC)

    Ascertains that programming languages and interfaces are available on Linux, whether or not they are supplied by third-party vendors.

  8. Does the application require the use of extended data types (XML, audio, binary, video, and so on)?

  9. This information can be used to assess the skills needed by the porting group for porting the application.

1.7.4 Porting Project Time Schedule Information

  1. What is the desired General Availability date for the application on the target platform?

  2. This question is asking whether any business objectives need to be considered when creating the porting schedule.

  3. Has the porting of the application already started on the target platform?

  4. This is helpful in assessing complexities and problems that are discovered prior to officially starting the porting project.

  5. What is the estimated port complexity level (low, medium, or high)?

  6. Take the answer to this question with a grain of salt. There may be other factors present today that may not have been fully realized in previous porting efforts.

  7. What factors were considered in this complexity ranking?

  8. Any information from previous porting efforts needs to be assessed and compared to future porting efforts on the Linux platform.

  9. 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?

  10. This question attempts to compare previous porting efforts to the Linux port. This is useful only if the porting engineer technical lead has previous porting experience on other platforms as well as Linux.

  11. What is your rough estimate of the project porting time and resources required?

  12. The application or parts of it may have already been ported to other platforms, and knowing the time it took to port to those other platforms may be of some use. Experience and lessons learned from previous ports may come in handy. Knowing some of the lessons learned may help you avoid problems when porting to Linux.

1.7.5 Testing-Specific Information

  1. Please describe the acceptance testing setup.

  2. What kind of networking and database setup will be required for unit testing?

  3. How much testing will be required after porting (number of days, number of resources)?

  4. Do you have established test scripts and application performance measurements?

  5. Will benchmarks need to be run for comparison testing?

  6. Is performance data available on current platforms?

  7. When were the performance tests last executed?

All "testing-specific" questions pertain to application software testing on the Linux platform. Asking these questions may bring out other issues related to porting test scripts and the software application test harness, which will add risks and time to the whole project. Pay close attention to the response to Question 1 in this section. Question 1 relates to the type of acceptance criteria that needs to be agreed on before porting starts. An example acceptance criterion is: Module A and B should pass test suites C and D, without failure. When the acceptance criteria are met, the port is considered complete, and formal QA tests can then be performed on the application.

1.7.6 Porting Project Execution Information

  1. Please select one or more options, according to how you would like to proceed with this project.

    1. Technical assistance will be provided to the porting engineers as necessary.

    2. Customer will be responsible for acquiring third-party licenses and technical support.

    3. Other (please describe).

    Add other items in this part of the questionnaire that you need the primary customer to consider. Some issues may relate to staff training or testing the application.

  2. What kind of hardware will be needed for the project?

  3. Consider asking this question to ascertain whether existing hardware may be used or whether extra hardware will be needed—for porting, testing, training, and support purposes if necessary.

Although this questionnaire is comprehensive, it should not be the only basis for scoping. Scoping should also include actual examination of application source code when pertinent. Software application documentation needs to be examined to learn more about the application from a customer usage point of view.

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information

To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.


Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.


If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information

Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.


This site is not directed to children under the age of 13.


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information

If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information

Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents

California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure

Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact

Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice

We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020