1. Tool Version 

Tool Name: Understand

Tool Version and ID: Version 6.3.1136

  1. Tool Description 

Understand is a static code analysis tool that assists with editing, refactoring, and analyzing code. This tool can be used to assist with the development of safety critical automotive systems as defined in ISO 26262:2018. 

  1. Certified Pre-Qualification 

Understand is in the process of qualifying for ISO 26262 certification. A list of use cases that will be certified can be found in section 7. Understand will be certified for safe use with the following languages:

C
C++

Understand will be certified for safe use with the following Operating Systems:

Windows 10 and 11
Linux 64bit (CentOS & RHEL 8.4, Ubuntu 20.04, and later)

NOTE: Update your OS to the latest version for the safest experience

  1. Other applicable User Documentation

The Understand User Guide can be found within the Understand Software by selecting Help > Help Content from the main Toolbar.

Additional user resources including videos, build notes, known issues, and the installation guide can be found at support.scitools.com.

For use in a safety context make sure to follow the section of the Help Content titled “Configure your Project”. Proper project configuration is essential for accurate analysis. 

  1. Tool usage and flow in typical design environments 

6.1 Operating Configuration

A valid license must first be obtained before importing source code into Understand. Please contact [email protected] for more information.

Refer to the “Configuring Your Project” section of our help guide to see detailed setup instructions for the programming language you plan on analyzing. The help guide can be found within Understand or accessed on our support site here.

Your local development environment needs to be configured appropriately before running Understand. An improper setup will result in inaccurate information. The Analysis Log will display errors or warnings when importing your code base in the case of misconfiguration. Resolve all errors or warnings to receive the most accurate information about your code.

6.1.1 Optional Understands Settings

Tools > Options > Analyze > Automatically analyze changed files on save
By default Understand will only analyze a file when the command is given. Turn this option on to have an analysis run automatically every time a file is changed and saved.

Analysis, metrics, and graphs will not reflect user updates until a new analysis has been performed. An analysis can be run manually at any time by going to Project > Analyze Changed Files.

CodeCheck will ask the user to perform an analysis when changes are detected.

6.2 Operating Constraints

The machine that is running the Understand application should have 1Gb RAM for every 1 million lines of source code that is being statically analyzed. The source code can be on a network, however the database that the Understand application generates, should be on the local machine for optimal performance. This database is generated when a project is created in Understand and an analysis has been run.


The general licensing of Understand does require an internet connection. The Understand app communicates with our license server, Helios (licensing.scitools.com) on a regular basis. This information is secured using SSL and this information is not shared and is only used for licensing purposes. In some cases, networks/firewalls may need to be configured to allow access on TCP port 443 using secure HTTPS. Firewalls with application level security may need to enable HTTPS permission for the Understand and Uperl executables installed in SciTools/bin/directory.


For licensing that requires zero internet connection, there is a closed lab proprietary license server that can be used, Icarus, which requires setup by a user with admin privileges and opening ports 80 and 443 to incoming connections. Icarus only supports 64 bit operating systems. 


6.3 Operating Environment


Disk Space: At least 700MB free


CPU: Any modern CPU


RAM: 1GB of Ram Per Million lines of source code

OS: Understand will run on Windows (Windows 10 and later), Linux 64bit (CentOS & RHEL 8.4, Ubuntu 20.04, and later) and Mac OSX (Mohave 10.14 and later).


  1. Use Cases

Tool

Use Case

Specification

References to user documentation

New Project Wizard

Manual Code Import

Create a new Understand project by selecting the top-level directory where your source code resides.

Help Guide > Configuring Your Project > Creating a New Project

New Project Wizard

Cmake code import

Create a new Understand Project by allowing Understand to access your compile commands document generated by Cmake.

Help Guide > Configuring Your Project > Creating a New Project > Creating Projects from Cmake Projects

New Project Wizard

Buildspy code import

Create a new Understand Project by selecting the buildspy option, selecting your local source code directory, and rebuilding your source code while Buildspy watches.

Help Guide > Configuring Your Project > Creating a New Project > Using Buildspy to Create Projects

Architecture Designer

Create custom architecture

Design your own tree graph showing the interactions of your code. This is done by creating nodes and sub nodes that relate to each other.

Help Guide > Architecting Your Codebase > Creating and Editing Custom Architectures

CodeCheck

Analyze Code

Select a variety of checks to run against your source code. These checks can look for a combination of formatting, syntax, and best practice errors. A list of the errors is displayed to the user and can be exported and shared.

Help Guide > Using CodeCheck for Standards Verification > Running a Code Check

Project Analysis

Error Reporting

Analyze the user's source code looking for syntax errors.

Help Guide > Configuring Your Project > Analyzing the Code

Architecture Browser

Import Architecture

Import an architecture saved to the user's computer and display it for the user.

Help Guide > Architecting Your Codebase > Sharing Architectures

Architecture Browser

Export Architecture

Export an architecture by saving a file to the user's computer.

Help Guide > Architecting Your Codebase > Sharing Architectures

Architecture Browser

Navigate Architectures

Navigate a custom architecture by clicking through the nodes and sub nodes in a text-based tree hierarchy.

Help Guide > Architecting Your Codebase > Browsing Architectures

Graphing Tool

Architecture Dependency Graph

View the structure of an architecture in a tree graph format.

Help Guide > Architecting Your Codebase > Viewing Architecture Graphs > Dependency Graphs

Graphing Tool

Directory Dependency Graph

View relationships between directories of code in a tree graph structure.

Help Guide > Using Graphical Views > Opening Graphs

Graphing Tool

File Dependency Graph

View relationships between files in a tree graph structure.

Help Guide > Using Graphical Views > Opening Graphs

Graphing Tool

Metrics Graph

Displays files as blocks sized by line count and changes shades of blue based on selected metric.

Help Guide > Using Metrics > Metrics Tree map

Graphing Tool

Calls/Called By Tree Graph

Creates a tree graph showing the entities that are called by the selected item and the entities that call the selected item. This graph can be used for functions, files, or directories.

Help Guide > Using Graphical Views > Opening Graphs

Metrics Browser

View Metrics

Show relevant metrics for a selected entity. Metrics can be shown for functions, files, and directories and are displayed in a partitioned window call the Metrics Browser.

Help Guide > Using Metrics > Metrics Browser

Metrics Browser

Export Metrics

Export the currently shown metrics via a button in the Metrics Browser.

Help Guide > Using Metrics > Export Metrics


 


  1.  Tool Classification (summary)

The following use cases are classified as TI2, meaning they could potentially impact executable code. Refer to the table below for possible malfunctions and mitigations.

Tool

Use Case

Malfunction

Cause (opt)

Effect on item or element

TI

If TI2: Existing Protective / Detection measure

Resulting TCL

New Project Wizard

Manual Code Import

Empty Project is generated

Unsupported code files or file extensions

Project Analysis will be unable to provide meaningful output

TI2

Project Analysis Reports Errors/Warnings

TCL1

New Project Wizard

Manual Code Import

Project definition is not complete

Missing header files

Project Analysis will produce errors and warnings

TI2

Project Analysis Reports Errors/Warnings

TCL1

New Project Wizard

Cmake code import

Project definition is not complete

Build fails to complete

Analysis data will be missing for unanalyzed code

TI2

Project Analysis Reports Errors/Warnings

TCL1

New Project Wizard

Buildspy code import

Project definition is not complete

Build fails to complete

Analysis data will be missing for unanalyzed code

TI2

Project Analysis Reports Errors/Warnings

TCL1

CodeCheck

Analyze Code

Script Error

Perl/Python script crashed during execution

Indicated script failed to check indicated file

TI2

Scripting error reported to CodeCheck log

TCL1

Project Analysis

Error Reporting

Analysis errors while analyzing the project

Missing header files

Project database will have inaccurate/incomplete data

TI2

Find Missing Includes wizard

TCL1

Project Analysis

Error Reporting

Analysis errors while analyzing the project

Missing macro definitions

Project database will have inaccurate/incomplete data

TI2

Analysis errors reported to users

TCL1

Project Analysis

Error Reporting

Analysis errors while analyzing the project

Unfamiliar syntax

Project database will have inaccurate/incomplete data

TI2

Analysis errors reported to users

TCL1


  1. Assumptions of Use for ISO 26262 compliance 

Error Detection: Most Issues will be reported to the user via the “Analysis Log”. An analysis will be run automatically after importing code. You can also run an analysis manually with “Ctrl + Alt + R”.

Crash Detection and Handling: When an exception is encountered that cannot be resolved Understand will close the application and present the user with a crash notification. All currently running operations are canceled and the data is reverted to the last successful save. Make sure to check your data in the case it has been reverted to a previous version.

CodeCheck: Issues with the CodeCheck Scripts are reported within the CodeCheck window under “Script Errors”. If any script errors are detected the CodeCheck results may be invalid.

Sudden Interruptions: Anything that disrupts an operation in Understand will cause that operation to be aborted. You will need to restart the task. This includes power failures, operating system failures, Understand critical failure “crash”, etc.

User Suggestions (pop-ups): Understand will detect when a possibility of incorrect data arises. For example, if an analysis is requested, Understand will detect unsaved changes and suggest the user saves before running the analysis. It is recommended that all popups and notifications are read before proceeding with an action.