Software analysis solutions...

In many real time and embedded systems the execution of code can be time critical where certain threads or loops have to execute within a pre-defined time budget. Equally, after development and debugging of code certain execution paths may take longer than anticipated.

The RapiTime software analysis tool from Rapita Systems available through SDC Systems can give accurate information from execution runs on the target about which functions take the most time to execute and predict the worst case execution time to see if the timing constraints are being achieved.

During the code development process where project timescales are always short the code review process can be a cause for slipped deadlines as it proves difficult to get the right people in the right place at the right time

The static analysis and collaborative code review tools can help reduce these project pressures byt providing dynamic analysis of the code for errors such as null pointer dereferencing, buffer overrun errors, etc. whilst the code review tools allow peers to review the project code from their own desktop at a time convenient to them.

Static analysis

Klocwork static analysis runs on both the developer desktop and during the integration build. Uniquely, Klocwork Insight provides continuous source code analysis that integrates seamlessly with a developer's edit cycle. This ensures that critical quality and security vulnerability issues are found at the earliest point possible while boosting developers' productivity with in-line error identification.

Continuous analysis provides ongoing updates in the error bar that enables developers to see - as they code - any errors as soon as these are introduced into the code. This capability is fully integrated with Visual Studio 2005, 2008, Eclipse CDT 3.4, 3.5 and a stand-alone GUI, Klocwork Desktop.

The Klocwork Truepath analysis engine is able to detect the following, comprehensive, range of quality, reliability, security and maintainability issues in your code:

Quality/Reliability
Security Vulnerability
Maintainability

Memory and resources leaks
Using de-allocated memory
Incorrect memory de-allocation
Dereferencing NULL pointers
Usage of uninitialized data
Resource management
Concurrency violations

Buffer overflow
Un-validated user input
SQL injection
Path injection
Cross-site scripting
Information leakage
Weak encryption
Vulnerable coding practices


Architectural violations
Header file structure
Dead code
Unreachable code
Calculated values that are never used
Unused function parameters
Unused local variables

Performance profiling

Performance profiling allows the examination of how different functions contribute to the average, longest and shortest execution times. This analysis is perfomed over a large number of invocations of the software to help locate the performance bottlenecks at the root cause of throughput problems.

RapiTime from Rapita Systems shoes the high and low watermarks for every function and drills down into data for individual function call contexts, loops and blocks of code. More details...

Worst Case Execution Time

WCET diamond path
The most common method of worst case execution time estimation is through measurement where profiling code is inserted into the software under test to measure the end to end execution time of functions, sub-systems or threads.

Static analysis is an alternative method of estimating the worst case execution time through the creation of a model of the microprocessor and its execution characteristics and using this to predict the worst case path without executing any code on the target.

RapiTime from Rapita Systems is the only commercially available worst case execution timing analysis tool that uses a hybrid approach of on-target execution and static analysis. This hybrid approach uses static analysis to determine the overall structure of the code and uses on-target execution to give accurate measurement of paths through the code. More details...

In-target Code coverage

Code coverage is one consideration required in the certification of avionics equipment and in many other safety critical systems. It describes the the degree to which the source code of a program has been tested and verfied. This defines a number of criteria, including:

  • Function coverage - has each function of the program been tested?
  • Branch coverage - has each possible branch in the program been tested?
  • Decision coverage - has each IF statement been evaluated to TRUE and FALSE
  • Condition coverage - has each boolean sub-expression been evaluated to TRUE and FALSE

RapiTime from Rapita Systems identifies code coverage omissions using colour coded source code, assess the coverage needed for worst case execution timing analysis and can check if the worst case path has been followed during testing. More details...

Professional services

Man at computer
At SDC Systems we have access to some of the world's leading experts in timing analysis who are able to provide you with the advice necessary to ensure that your next generation of real-time products have a key competitive edge and that your development programmes stay on track.

This can all be backed up with an individually tailored SDC Systems support contract giving the assurance of access to our highly talented team of engineers at the time when you need it most. More details...