The procedure below explains how to configure a Universal Language in the CAST Engineering Dashboard. This procedure will be illustrated with the PHP language.

Category for the technology and the module

This section describes changes that must be made to the xxxMetaModel.xml file.

First of all, you must select a category for an existing APM technology or create a new one. This category achieves two goals:

To create a new category, please insert it before the GrepTag called "GrepTag:APM_next_language". For example, for PHP, a new category "PHP" technology has been created:

<category name="APM PHP Module" rid="16">
<inheritedCategory name="APM Client Modules"/>

Next you need to associate the category to the type of project for the language:

<type name="phpProject" rid="6">
<description>PHP Project</description>
<inheritedCategory name="UAProject"/>
<inheritedCategory name="PHP"/>
<inheritedCategory name="APM PHP Module"/>

Please note that the category description (here PHP) must be the same as the language name.

Categories for the objects

This section describes changes that must be made to the xxxMetaModel.xml file.

The relevant objects of the language must now be associated to the APM primitive categories. These categories are of two main types:

To make the metamodel file more readable, it may be useful to create an applicative category. For example in PHP:

<category name="APM PHP Artifacts" rid="7">
<description>PHP Artifacts</description>
<inheritedCategory name="APM Client Language Artifacts"/>

Below is an overview of the APM categories described in the document above. Moreover, inventory categories determine the types of objects that must appear in "inventory" metrics.

Process categories

APM Client Language Artifacts

Basic programming element (contains source code)

APM Sources

Highest level objects containing source code (used for line counting)

APM Forms


APM Events

Form event

APM Controls

Form control

APM Interfaces

Interface (object oriented languages)

APM Classes

Classes (object oriented languages)

APM Methods

Methods of a class / interface (object oriented languages)

APM Data Members

Members of a class (object oriented languages)

Inventory categories

APM Inventory Files

For number of files

APM Inventory Methods


APM Inventory Functions


APM Inventory Functions and Procedures

SQL functions and Procedures

APM Inventory Triggers


APM Inventory Events


APM Inventory Macros


APM Inventory ProgramsPrograms


This section describes changes that must be made to the xxxMetaModel.xml file.

You also need to define a subset type for your language – this is obligatory. The subset type allows you to create "User-defined modules" for your language type in the CAST Management Studio.
For example, for PHP, the subset has already been defined:

<type name="PHP_SUBSET" rid="9">
<description>PHP Subset</description>
<inheritedCategory name="PROJECT_SUBSET" />
<inheritedCategory name="PHP" />
<inheritedCategory name="APM PHP Module" />

The <inheritedCategory name="PROJECT_SUBSET"/> element is obligatory, the <inheritedCategory name="PHP"/> identifies the language category and the <inheritedCategory name="APM PHP Module"/> is identical to the category defined in the "project" type. Make sure you define a unique "rid" for the subset.

Assessment Model

After this, you must modify the parameter values for some Quality Rules, Distributions, Measures, and Sizing Indicators. CAST recommends modifying the following:

Metric Name




+General Summary
+Functional Weight
+Backfired OMG-compliant Automated Function Points

BackFired OMG-compliant Automated Function Points

BackFired FP ratio


+Technical Criteria
+Volume - Number of LOC
+Size Distribution

Distribution of artifacts regarding their size (Lines Of Code)

  • Small Size Threshold
  • Average Size Threshold
  • Large Size Threshold
  • Very Large Size Threshold


+Technical Criteria
+Architecture - Object-level Dependencies
+Coupling Distribution

Distribution of artifacts regarding their coupling

  • Low Coupling Artfifacts
  • Average Coupling Artifacts Threshold
  • High Coupling Artifacts Threshold
  • Very High Coupling Artifacts Threshold


+Technical Criteria
+Complexity - Technical Complexity
+Cyclomatic Complexity Distribution

Distribution of artifacts regarding their cyclomatic complexity

  • Low Complexity Artifacts
  • Average Complexity Artifacts Threshold
  • High Complexity Artifacts Threshold
  • Very High Complexity Artifacts Threshold


+Technical Criteria
+Complexity - Algorithmic and Control Structure Complexity
+Complexity Volume (% of LoC)

The rate of high and very high complexity is evaluated as a % of the number of code lines of the application details

Complexity Volume (% of LoC)


+Technical Criteria
+Architecture - Reuse
+Reuse by Call Distribution

Distribution of artifacts regarding their reuse

  • Low Reuse Threshold
  • Average Reuse Threshold
  • High Reuse Threshold
  • Very High Reuse Threshold


+Technical Criteria
+Complexity - Algorithmic and Control Structure Complexity
+ Class Complexity Distribution (WMC)

Class Complexity Distribution (WMC)

  • Low Complexity classes
  • Moderate Complexity classes
  • High Complexity classes
  • Very High Complexity classes


+Technical Criteria
+Architecture - Object-level Dependencies
+ Class Fan-Out Distribution

Class Fan-Out Distribution

  • Low Fan-Out classes
  • Moderate Fan-Out classes
  • High Fan-Out classes
  • Very High Fan-Out classes


+Technical Criteria
+ Architecture - Object-level Dependencies
+ Class Fan-In Distribution

Class Fan-In Distribution

  • Low Fan-In classes
  • Moderate Fan-Int classes
  • High Fan-In classes
  • Very High Fan-In classes


To do this, you must use the CAST Management Studio and the Assessment Model editor  - import the Assessment Model from the CAST Dashboard Service. For example, for the Quality Distribution "Class Fan-Out Distribution" you need to drill down as follows:

CAST Engineering Dashboard Cost Control

To use the CAST Engineering Dashboard Cost Control functionality, you must enter a value for:

This can be done in two ways:


TECHNO_ID: ID of the technology created in the metamodel file. See section 9.2.
PROFILE_NAME: only 1 configuration profile for now. Must be set to 'Default'.
COST_VALUE_INDEX: Indicate the domain and the type of artifact:

COST_NUM_VALUE: Value for the cost

In all, you must add 9 nodes (1 for Cost per man-day, 4 for new development effort rates and 4 for Change effort rates). Finally, you need to reinstall the CAST Dashboard Service using CAST Server Manager in order that this configuration file is taken into account.

CAST Enlighten Cost Estimation

In same way as described above, you must configure the cost of object modifications per technology. The Cost Estimation feature is based on APM Cost handling, thus it is mandatory to support these technologies in the CAST Engineering Dashboard.

To setup Cost, please launch CAST Enlighten and select Tools > Cost Estimation > Cost Setup:

Quality status thresholds

When adding a new diagnostic-based Metric, default status thresholds will be applied.

The default values are:

The thresholds that drive these statuses can be updated. This can be done in two ways:


Where the following is true:

Note: Thresholds must be strictly ascending yet they can be outside of the 0-100 % interval if one status must never be reached.