[Log in] / [Sign up] | Contact us | Support | Follow us on:
Search
 
C/C++ Quality Solution
Compliance Solution
Aerospace
Automotive
Medical
Security
Telecom
Other

DO-178B

C++test can be used as a software verification tool for DO-178B standard compliance

DO-178B, Software Considerations in Airborne Systems and Equipment Certification is a guidance for software development published by RTCA, Incorporated. The standard was developed by RTCA and EUROCAE. The FAA accepts use of DO-178B as a means of certifying software in avionics. The standard specifies what tool can be qualified as verification tool in DO-178B process.

According to the DO-178B standard, tools can be divided into two categories. Below you can find direct quotation from the section 12, 'Tool Qualification' of the standard.

"Software tools can be classified as one of two types:

Software development tools: Tools whose output is part of airborne software and thus can introduce errors. For example, a tool which generates Source Code directly from low-level requirements would have to be qualified if the generated Source Code is not verified as specified in section 6.

Software verification tools: Tools that cannot introduce errors, but may fail to detect them. For example, a static analyzer, that automates a software verification process activity, should be qualified if the function that it performs is not verified by another activity. Type checkers, analysis tools and test tools are other examples."

Based on the above it is clear that C++test belongs to 'Software verification tools' category since its output cannot introduce any errors into the software to be certified. If so, the standard provides following guidelines to consider the tool qualified. Direct quotation from the standard says:

12.2.2 Qualification Criteria for Software Verification Tools The qualification criteria for software verification tools should be achieved by demonstration that the tool complies with its Tool Operational Requirements under normal operational conditions.

and further:

12.2.3.2 Tool Operational Requirements Tool Operational Requirements describe the tool's operational functionality. This data should include:

  1. A description of the tool's functions and technical features. For software development tools, it includes the software development process activities performed by the tool.
  2. User information, such as installation guides and user manuals.
  3. A description of the tool's operational environment.
  4. For software development tools, the expected responses of the tool under abnormal operating conditions.

Parasoft team is always of help to assist our customers with the tool qualification process for C++test and to provide required documentation. Please contact us at info@parasoft-embedded.com.

Parasoft C++test is an integrated solution for automating a broad range of best practices proven to improve software development team productivity and software quality. Parasoft C++test supports teams to produce better code, test it more efficiently, and consistently monitor progress towards their quality goals. With C++test, critical time-proven best practices–such as static analysis, comprehensive code review, and unit and component testing with integrated coverage analysis–are automated on the developer's desktop, early in the development cycle. A command line interface supports fully automated execution within regression and continuous integration environments, providing data for monitoring and analyzing quality trends.

From the DO-178B/ED-12B standard perspective following tool's functions are important:

  1. Coding Standards
    C++test coding standards code analysis monitors whether code follows industry-standard or customized rules for ensuring that code meets uniform expectations around security, reliability, performance, maintainability and others. C++test coding standards analysis facilitates Parasoft's patented pattern-based analysis engine. As a part of it C++test supports following recognized standards: JSF, MISRA C, MISRA C 2004, MISRA C++ 2008.
  2. Advanced data flow execution paths tests
    BugDetective, interprocedural static analysis module of C++test, simulates feasible application execution paths–which may cross multiple functions and files–and determines whether these paths could trigger specific categories of runtime bugs. Defects detected include using uninitialized or invalid memory, null pointer dereferencing, array and buffer overflows, division by zero, memory and resource leaks, and various flavors of dead code. The ability to expose bugs without executing code is especially valuable for embedded code, where detailed runtime analysis for such errors is often not effective or possible. C++test provides a complete path trace for each potential defect in the developer's IDE.
  3. Controlled process of code review
    The C++test Code Review module automates preparation, notification, and tracking of peer code reviews, enabling a very efficient team-oriented process. Status of all code reviews, including all comments by reviewers, is maintained and automatically distributed by the C++test infrastructure. The effectiveness of team code reviews is further enhanced through C++test's static analysis capability. The need for line-by-line inspections is virtually eliminated because the team's coding policy is monitored automatically. By the time code is submitted for review, violations have already been identified and cleaned. Reviews can then focus on examining algorithms, reviewing design, and searching for subtle errors that automatic tools cannot detect.
  4. Automated generation and execution of unit and component-level tests
    Requirement based test cases can be created in C++test purely in C or C++ code. C++test's automation greatly increases the efficiency of testing the correctness and reliability of code under. C++test automatically generates complete tests, including test drivers and test cases for individual functions. These tests, with or without modifications, are used for initial validation of the functional behavior of the code. By using corner case conditions, these automatically-generated test cases also check function responses to unexpected inputs, exposing potential reliability problems. This functionality is applicable for creating tests which detect errors, which could lead to unacceptable failure conditions, as determined by the system safety assessment process. Test execution and analysis are centralized in the Test Case Explorer, which consolidates all existing project tests and provides a clear pass/fail status.
  5. Structural coverage analysis
    A multi-metric test coverage analyzer, including statement, branch, path, and MC/DC coverage, helps users gauge the efficacy and completeness of the tests. Test coverage is presented via code highlighting for all supported coverage metrics–in the GUI or color-coded code listing reports. Summary coverage reports including file and function data can be produced in a variety of formats.

For more information on C++test, click here, or contact us at info@parasoft-embedded.com.

JSF

Parasoft provides out-of-the box checking for the Joint Strike Fighter, Air Vehicle, C++ Coding standards.

To promote fast remediation, each JSF violation detected is prioritized, assigned to the developer who wrote the related code, and distributed to his or her IDE with direct links to the problematic code and a rule description. Every rule description provides a description of the rule rationale and benefits, a sample violation, an explanation of how to correct the violation, and a demonstration of how to correct the sample violation.

 

Learn More

Visit our C/C++ Quality Solution page.

Company | Products | Solutions | Partners | News Copyright © 2010 Parasoft Embedded | info@parasoft-embedded.com