My Research Work
Currently, my academic research is into the area of software quality and software reliability.
The material provided is purely for informational purposes. No guarantee of fitness is implied or provided. All trademarks are recognized to be held by the respective parties.
General Links
- Les Hatton Home Page - Dr. Les Hatton is interested in Embedded Software Quality, and in particular, the C language. His web site has numerous articles of interest to those in the software quality and reliability field.
- Software Engineering Realsearch Group at NC State University. This organization is performing sound empirical software engineering research.
- Embedded Systems Design Embedded Systems Design is the only publication dedicated to issues effecting embedded systems software developers.
- The Ganssle Group - Jack Ganssle is a former embedded tools developer turned educator about the issues related to embedded systems development.
- Carnegie Mellon Software Engineering Institute - The SEI is at the forefront of SOftware Engineering Study, and is responsible for the PSP, TSP, CMM, and CMMI processes used for the development of software. Many publications are available on this site.
- Motor
Industry Software Reliability Association The MISRA
Guidelines provide important advice to the automotive industry for the
creation and application of safe, reliable software within
vehicles. One of the farthest reaching documents is the MISRA C coding
standard for embedded systems development.
Static Analysis Tools
Commercial Tools
- SofCheck
SofCheck is an advanced Java static analysis tool designed to detect a
large array of programming errors including the misuse of pointers,
array indices which go out of bounds, buffer overruns, numeric
overflows, numeric wraparounds, dimensional unit mismatch, storage
leaks, and the improper use of Application Programming Interfaces.
SofCheck works by thoroughly characterizing each element of the program
in terms of its inputs, outputs, heap allocations, preconditions, and
postconditions.
- Lint
Lint was the first static analysis tool available on the
market. C-lint and FlexeLint will check your C/C++ source
code and find bugs, glitches, inconsistencies, non-portable constructs,
redundant code, and much more. PC Lint is available from HiTex
in the UK and supports MISRA compliance checking.
- SaferC Tool kit The Safer C tool set (SCT) was designed and built by Oakwood Computing Associates and provides static analysis of source code modules. It also supports static verification of MISRA compliance.
- Polyspace C Verifier. The Polyspace C verifier is targeted at detecting runtime errors in software. Customers include the airline industry and European Space Program. Does not support the full ANSI-C language.
- Coverity Leading edge tool based on Dawson Engler's methodology for source code analysis of large code bases. An extended version of the tool supports user-defined properties in the Metal language. Fast, thorough, few false positives, but can be very expensive.
- KlocWork Support for static error detection, with added project management and project visualization capabilities. Fast, almost as thorough as Coverity, and less expensive. A capability for user-defined checks is pending.
- LDRAThe LDRA tool is a static analyzer for the C language. The LDRA tool suite can be configured with additional analysis facilities to automate the checking of source code for conformance to the MISRA-C:2004 standard.
- QA C QA C, from Programming Research Ltd., focuses on automated enforcement of Coding Standards as an integrated step in the software development process for C, C++, Java and Fortran. The enforcement of coding standards is a key step for CMM Level 3 attainment. The tools also generate code metrics (e.g. Cyclomatic Complexity, Estimated Path Count, etc.) which can be used for CMM Level 4 process measurements, and form a basis for optimization in Level 5. The tools detect stylistic issues, dataflow problems, ISO C/C++ conformance, platform and compiler portability issues, metric threshold violations and enforce best practice issues in language implementation. The tool also supports MISRA C analysis.
- ASSENT C ASSENT is a global data flow static analysis tool that automatically ensures conformance of C/C++ and Java code to good programming practices and detects defects that can cause the program to crash.
- CMT++ (Complexity Measures Tool for C/C++) calculates the basic McCabe, Halstead and lines-of-code metrics for C and C++ code. Clear and compact report. Configurable alarm limits. Can measure non-preprocessed source code. Can produce Excel data file for customer specific analysis or for producing graphical representations. Processes 1000s of lines of code in a second and can manage huge code volumes. Does not require a C/C++ compiler, but if Visual C++ is available, CMT++ can be used via its GUI.
- Green Hills Software Green Hills software is a provider of embedded compilers and other development tools. Part of its compiler includes MISRA compliance checking.
- IAR Systems IAR Systems provides embedded software development toolkits, one of which includes MISRA C standards compliance testing.
- Metrowerks Metrowerks CodeWarrior Development Studio products provide Misra C compliance checking for C source code.
- TASKING Software Tools Tasking software tools includes MISRA C code checking compiler technology in several compiler tools.
- TCSTCS
Produces the ASSENT MISRA-C analyzer. Of the 127 rules specified by the
MISRA consortium, ASSENT MISRA-C claims to check for conformance to 120
rules automatically.
Research / Academic Projects
- AWARE AWARE aggregates compilation errors and warnings, manually-written test failures, and static analysis reports into a ranked listing of alerts.
- Airac Airac5 statically detects all buffer-overrun errors in C programs. False alarms are minimized through statistical processing of the tools output.
- Splint Splint is a tool for statically checking C programs for security vulnerabilities and coding mistakes. With minimal effort, Splint can be used as a better lint. If additional effort is invested adding annotations to programs, Splint can perform stronger checking than can be done by any standard lint.
- ASTRÉE ASTRÉE is a static program analyzer aiming at proving the absence of Run Time Errors (RTE) in programs written in the C programming language. On personal computers, such errors, commonly found in programs, usually result in unpleasant error messages and the termination of the application, and sometimes in a system crash. In embedded applications, such errors may have graver consequences.
- NASA CGS Project The goal of the CGS project is to demonstrate that it is possible to develop software verification tools that can analyze NASA programs using static analysis techniques to find a certain class of errors called runtime errors.
- Uno Lightweight tool for static analysis. The tool is targeted at a small set of common programming defects (Uninitialized data, Nil-pointer dereferencing, and Out-of-bound array indexing, with the three initial letters giving the tool its name). It also handles a range of simple, user-defined properties.
- Orion Work in progress on an extension of Uno for C++, based on gcc.