Glossary

  • Benchmark: the top 20% of all comparable codebases, defined as those which are between half and twice the size of the scanned codebase.

  • CMRI: the CodeMRI executable.

  • CodeMRI Scanner: an application available for Windows that can generate metadata for a given codebase. Unlike Platform, scanner cannot generate analytics.

  • CodeMRI Platform: the full CMRI toolset.

  • Component: a group of files defined as having some kind of related purpose. Components allow the user to manually express the defined architecture of their system. This allows CMRI to compare and analyze the similarities and differences of the actual codebase architecture with the theoretical architecture.

  • Core: a cyclical group of files. Theoretically, a Core is any number of files n ≥ 2 in which the relationship of the system could be mapped as a self-contained loop. Emerging Cores are defined as Cores containing 30-150 files and have been proven to cause some financial and developmental impact. Severe Cores are defined as Cores with 150+ files and have been proven to impose significant negative impacts on the codebase.

  • Design Structure Matrix (DSM): a visual representation of the hierarchical relationships of a codebase. Every file of the codebase is listed in order on both the x and y axes. The dots represent a direct relationship from the file on the y axis to the file on the x axis. A boxed group of dots indicates where a Core is hierarchically within the codebase. In a codebase with perfectly hierarchical architecture, all the dots would be below the diagonal; any dots above the diagonal are in violation of the optimal architecture. For further reading, go here.

  • McCabe Complexity: a measure of the cyclomatic complexity of the code itself. Cyclomatic complexity typically refers to branches within the code in that code with excessive branching conditions will have higher complexity. Complex code is harder to understand and harder to test, making it confusing and fragile. Files with a McCabe complexity of 20-50 are defined as problematic and have been proven to cause some financial and developmental impact. Files with values of 50+ are said to have high complexity and have been proven to impose significant negative impacts on the codebase.

  • Metadata: the file produced by scanning a codebase with the CodeMRI Scanner. This file can then be scanned through the CodeMRI Platform to produce diagnostic analysis of the codebase.

  • Portfolio: an Excel file that contains a brief summary of the top-level health of a codebase.

  • Project: a codebase or group of codebases that work together. Projects serve as a workspace to gather all the related systems/codebases you would like to scan and/or compare.

  • Reports: the files and analytics produced by CMRI. They contain the diagnostic information regarding the health of the codebase including financial and timeframe metrics related to the impact of the codebase’s existing architectural design.

  • System/Codebase: a snapshot of a project at a single point in time. 

  • Technical Health Improvement Plan (THIP): an Excel document that details a series of steps determined by CMRI that provides the most efficient path to eliminate a Core from the scanned codebase. This includes metrics including the impact of each broken relationship, which files to locate the erroneous relationships, and more.

  • Understand: a program provided by SciTools that generates static analysis of codebases required for CMRI to determine the codebase diagnostics.

  • Vault: a collection of one or more projects, containing a duplicate copy of scanned code, generated reports, and any other files produced by CMRI. The first step to starting CMRI in any directory is creating a Vault.

Terms

Description

Lines of Code

The number of textual lines of code (LOC) measured in this application.

Number of Files

The number of textual source files measured in this application.

Software Quality Index

The overall ranking of a software system on a 1-100 scale. This index is inclusive of code quality, cyclicality, and modularity.

Code Quality

A quality metric measuring the health of individual files in a codebase using traditional means such as McCabe cyclomatic complexity on a 1 to 100 scale.

# of high complexity files

The number of files in the application that have McCabe Cyclomatic Complexity of greater than 20.

# Medium complexity files

The number of files in the application that have McCabe Cyclomatic Complexity of greater than 10 and less than 20.

% files with high complexity

The number of files in the application that have McCabe Cyclomatic Complexity of greater than 20 compared to the total number of files in the application.

Cyclicality

An architecture quality metric measuring the relationships between individual files in a codebase on a 1 to 100 scale. This metric measures the extent to which file relationships have become tangled into tight groups called "Cores."

Size of the largest core

The number of files in the application that are contained in the largest Core.

Critical core

Cores that include more than 150 files.

Emerging core

Cores that include between 30 and 150 files.

% LOC inside core

The number of lines of code (LOC) that are contained within the files belonging to a Core compared to the total lines of code.

Modularity

An architecture quality metric measuring the degree to which changes in this codebase may cause unexpected side-effects on a 1 to 100 scale. Codebases with healthy architecture have naturally lower likelihood of side-effects.

Maintainability

A software economic metric estimating the ratio of good lines of code to buggy lines of code during new software development on a 1 to 100 scale.

Agility

A software economic metric estimating the length of time necessary to add bug-free new features to this codebase on a 1 to 100 scale.

Risk

A software economic metric estimating the liklihood bugs escape the test cycle and reach customers because they exist in naturally difficult-to-test regions of a codebase on a 1 to 100 scale.

% Percentage Duplication

The percentage of lines of code (LOC) that occur in copy/paste blocks compared to the total lines of code in the application.

% of removal duplication

The percentage of lines of duplicated code that could be consolidated compared to the total lines of code in the application.

 


Customer Support

Phone: 800-674-9366 (9am - 5pm Eastern Time)

Email: support@silverthreadinc.com