Management Dashboard tiles

The tile types available in the Management Dashboard and the parameters each takes

Overview

The Management Dashboard is a grid of tiles, and every tile is an entry in the panels array of one of its four configuration files. Which file a tile belongs in decides where it appears:

File Tiles shown
config/hd/cmp.json The portfolio view, where the Measurement schema holds more than one application
config/hd/app.json A single application’s view
config/hd/cmp-ISO.json The portfolio view when the reader switches to the ISO-5055 View
config/hd/app-ISO.json A single application’s view in the ISO-5055 View

This page is the reference for what those entries can contain. See Tile customization for locating and editing the files, and Configuration options for the settings that affect the whole interface rather than one tile. The Engineering and Security dashboards use an entirely different set of tiles - see Engineering tiles.

For what each tile shows an end user, see the Management Dashboard guide.

Areas

Each file holds an areas array, and each area is one section of the dashboard. An area takes an id, a title used as the section heading, and its panels:

Area Present in
Overview cmp.json and app.json
Trends cmp.json and app.json
Automated Enhancement Point app.json only

Every tile takes these

Property Purpose
plugin Which tile this is. The values are listed in Plugin types and are case-sensitive
id A technical identifier. It must be unique within the file
parameters The plugin-specific settings
color An optional colour theme. Light grey is used if none is given
size large for a wide tile, small for a standard one. small is the default and is omitted throughout the shipped files
autoFit Optional, true by default, shrinking the title’s font so it fits the tile. Set false to keep the font size and let long titles be truncated instead

The colour themes are blue, black, grey-dark, orange, green, purple, grey-light and yellow. Some tile examples also use light-red and red.

Position

Tiles are laid out left to right and top to bottom within their area, in the order they appear in the panels array. To move a tile, cut and paste its block higher or lower in the array: the earlier it appears, the earlier it is displayed.

Portfolio and application plugin names

Most plugins have two names, and using the wrong one gives you a tile that does not render:

  • In cmp.json, the plural form - QualityIndicatorResults.
  • In app.json, the singular form - QualityIndicatorResult.

A few plugins keep one name in both files, and a few work in only one of the two. The table in Plugin types gives the name to use for each.

Common plugin parameters

These appear across most plugins:

Parameter Purpose
title The label shown on the tile. A \r in the string forces a line break, which is how the ISO tiles print Reliability \r(ISO-5055) on two lines
description Free text. Most plugins do not display it
format How the value is printed, using the numeral.jsexternal link formats - 0.00 for a grade, 0,000 for a count, 0.0% for a percentage, $0,000.0a for an abbreviated currency
mode How much detail the tile carries, terse or verbose. Not every plugin supports it
order descending or ascending, for the plugins that rank their contents
count How many rows a ranking tile lists. 5 fits the tile height
zoom true by default, letting a user select part of a drill-down chart to zoom into. Useful where a chart carries one column per application
scope Restricts the tile to the applications carrying one tag - see below

The scope parameter

scope filters a tile, and everything you reach by clicking it, down to the applications carrying one tag. Both sub-parameters are required:

"scope": { "category": "Vendors", "tag": "Vendor 1" }

Scoped tiles are how one dashboard serves several audiences: a Number of applications tile scoped to a vendor counts only that vendor’s applications. See Tags and categories for defining the categories and tags themselves.

scope is accepted by PortfolioListing, QualityIndicatorResults, QualityIndicatorEvolution, SizingMeasureResults, SizingMeasureEvolution, BackgroundFactsResults, BackgroundFactsEvolution, CustomExpressions and CustomExpressionsEvolution.

Indicator ids

Wherever a plugin takes a qualityIndicator, sizingMeasure, functionalWeightMeasure or backgroundFact, the object takes an id, a format and an optional description. The id may be one of the named constants below, or the numerical id of any CAST Imaging Core metric - 10151 for Lines of Code, 66031 for Programming Practices, and so on.

Object Named ids
qualityIndicator TQI, ROBUSTNESS, EFFICIENCY, SECURITY, CHANGEABILITY, TRANSFERABILITY, ARCHITECTURAL_DESIGN, DOCUMENTATION, PERFORMANCE, PROGRAMMING_PRACTICE, SEI_MAINTAINABILITY, and the ISO-5055 family - ISO-5055, ISO-5055-RELIABILITY, ISO-5055-SECURITY, ISO-5055-PERFORMANCE-EFFICIENCY, ISO-5055-MAINTAINABILITY
sizingMeasure LINES_OF_CODE, NUMBER_OF_ARTIFACTS, NUMBER_OF_COMMENT_LINES, NUMBER_OF_DECISION_POINTS, NUMBER_OF_FILES, NUMBER_OF_FUNCTION_POINTS, NUMBER_OF_BACKFIRED_FUNCTION_POINTS, CRITICAL_VIOLATIONS, TOTAL_VIOLATIONS, TECHNICAL_DEBT, OMG_TECHNICAL_DEBT, OMG_TECHNICAL_DEBT_ISO, OMG_TECHNICAL_DEBT_CISQ
backgroundFact BUSINESS_VALUE, COST, DELIVERY_FEATURE_REQUESTS, EFFORT, ENHANCEMENT_FUNCTION_POINTS, PENDING_FEATURE_REQUESTS, PENDING_FIXES

A qualityIndicator may also carry two parameters of its own:

Parameter Purpose
mode grade for a value from 1 to 4, violations for a count, or compliance for a percentage. The ISO-5055 tiles use compliance
indexID The parent Business Criterion index, needed for drill-down. The ISO-5055 characteristics all sit under 1061000

At portfolio level only, sizingMeasure also accepts the function point measures: AUTOMATED_IFPUG_FUNCTION_POINTS_ESTIMATION, UNADJUSTED_DATA_FUNCTION_POINTS, UNADJUSTED_TRANSACTIONAL_FUNCTION_POINTS, and the ADDED_, MODIFIED_, DELETED_ and UNCHANGED_ variants of FUNCTION_POINTS, DATA_FUNCTION_POINTS and TRANSACTIONAL_FUNCTION_POINTS.

Grade colouring and labels

A QualityIndicatorResults block at the top level of the file sets the defaults for every grade-based tile. Configuration options covers ranges; the rest of the block is:

Parameter Purpose
groupBy How the drill-down groups applications, for example technology
colors from and to hex codes for grade 1 and grade 4, and useGradient to interpolate between them rather than use plain bands
gradeLabels A word per range boundary, so a grade reads as a term rather than a number
riskGauge thresholds and colors for tiles using the riskGauge widget. One more colour is always needed than there are thresholds

gradeLabels keys must match the ranges values:

"ranges": [1.6, 2.4, 3.0, 3.4],
"gradeLabels": { "1.6": "Poor", "2.4": "Average", "3.0": "Good", "3.4": "Excellent" }

An individual tile can override any of this in its own details block.

The ISO-5055 views

The two ISO files are complete layouts, not a four-tile overlay on the default view, and they are narrower than the files they replace. Both drop the Notification Quick Facts tile, app-ISO.json has no Automated Enhancement Point area and no Top Critical Rules tile, and cmp-ISO.json carries no defaultView key.

What they do configure:

Tile Plugin In
Number of applications PortfolioListing cmp-ISO.json
Technical Size SizingMeasureResults / SizingMeasureResult on 10151 Both
Reliability, Security, Performance-Efficiency, Maintainability IndustryStandards / IndustryStandard, type: "ISO-5055" Both
Technical Debt (OMG) by ISO-5055 SizingMeasureResults / SizingMeasureResult on OMG_TECHNICAL_DEBT_ISO Both
Top 5 riskiest Applications CriticalViolationsPerHealthFactor on ISO-5055-SECURITY cmp-ISO.json
Technologies Overview, Top riskiest Modules CriticalViolationsPerHealthFactor on ISO-5055 app-ISO.json
The four characteristics over time, and OMG debt over time QualityIndicatorEvolution, SizingMeasureEvolution Both, in Trends

The four characteristic ids are 1061003 Reliability, 1061004 Security, 1061002 Performance-Efficiency and 1061001 Maintainability, each with indexID 1061000. The ranking tiles count TOTAL_VIOLATIONS rather than CRITICAL_VIOLATIONS.

Plugin types

cmp.json app.json Tile Provided by default
PortfolioListing - Number of applications Yes
QualityIndicatorResults QualityIndicatorResult A Health Measure grade Yes
SizingMeasureResults SizingMeasureResult A size or violation count Yes
FunctionalWeightMeasureResults FunctionalWeightMeasureResult Functional and enhancement size Yes, in app.json
QualityIndicatorBySizingMeasureResults QualityIndicatorBySizingMeasureResult Applications Map, Modules Mapping Yes
CriticalViolationsPerHealthFactor CriticalViolationsPerHealthFactor Top riskiest, Technologies Overview Yes
CriticalQualityRulesRatios CriticalQualityRuleRatio Top critical rules Yes, in cmp.json
- DetailView Top Critical Rules Yes, in app.json
QualityIndicatorEvolution QualityIndicatorEvolution A grade over time Yes
SizingMeasureEvolution SizingMeasureEvolution A size or count over time Yes
Notification - Quick Facts Yes
IndustryStandards IndustryStandard An industry standard’s grade or violations Yes, in the ISO views
QualityStandards QualityStandards Top Priority, or a custom tag’s violations Configure manually
BackgroundFactsResults BackgroundFactsResult One Background Fact metric Configure manually
BackgroundFactsEvolution BackgroundFactsEvolution One Background Fact over time Configure manually
BackgroundFactAndQualityIndicatoryBySizingMeasureResults - A three-measure bubble chart Configure manually
CustomExpressions CustomExpression A calculated value Configure manually
CustomExpressionsEvolution CustomExpressionsEvolution A calculated value over time Configure manually
ExternalLink ExternalLink A link out of the dashboard Configure manually
ExternalLinkWithImage ExternalLinkWithImage The same, over a background image Configure manually

PortfolioListing

Counts the applications in the portfolio. Portfolio level only. Takes title, and scope to count only one tag’s applications.

{ "id": 20150818, "plugin": "PortfolioListing", "color": "grey-dark",
  "parameters": { "title": "Number of applications" } }

QualityIndicatorResults

A single Health Measure grade. Takes a qualityIndicator and a widget:

widget Renders as
gauge A dial. The default choice in the shipped files
donut A ring
riskGauge A dial coloured by the riskGauge thresholds rather than by grade. The tile theme is restricted to grey-light or grey-dark

technicalId names a parent technical criterion, which the tile then displays alongside the measure. details overrides the global ranges, colors and riskGauge for this tile alone, and icon: true puts an icon beside the title.

{ "id": 5, "plugin": "QualityIndicatorResults", "color": "yellow",
  "parameters": { "title": "Robustness", "widget": "gauge",
                  "qualityIndicator": { "id": "ROBUSTNESS", "format": "0.00" } } }

SizingMeasureResults

A size or violation count. Takes a sizingMeasure, and mode to decide how much the tile carries.

{ "id": 12, "plugin": "SizingMeasureResults", "color": "orange",
  "parameters": { "title": "Critical violations", "mode": "terse",
                  "sizingMeasure": { "id": "CRITICAL_VIOLATIONS", "format": "0,000" } } }

FunctionalWeightMeasureResults

Functional and enhancement size. Takes a functionalWeightMeasure in place of a sizingMeasure.

{ "id": 1999, "plugin": "FunctionalWeightMeasureResult", "color": "blue",
  "parameters": { "title": "Functional & Enhancement Size",
                  "functionalWeightMeasure": { "id": "AUTOMATED_IFPUG_FUNCTION_POINTS_ESTIMATION",
                                               "format": "0,000",
                                               "description": "OMG-Compliant Automated FPs" } } }

The Automated Enhancement Point area uses the same plugin with an AEP id. Drilling down lists the applications excluded from the measure, which is to say those without an EFP license.

QualityIndicatorBySizingMeasureResults

Plots a grade against a size. Takes both a qualityIndicator and a sizingMeasure, and a type:

type Renders as
treemap A block per application or module, sized by the sizing measure and coloured by the grade
topRiskiest A table of the worst count entries

treemapColors sets the palette, as a ranges array and a matching colors array of the same length. Either measure object may also carry a tooltipFormat for the figure shown on hover.

{ "id": 3, "plugin": "QualityIndicatorBySizingMeasureResults", "size": "large", "color": "purple",
  "parameters": { "type": "treemap", "title": "Applications Map", "order": "descending",
    "qualityIndicator": { "id": "TQI", "format": "0.00", "description": "Total Quality Index" },
    "sizingMeasure": { "id": "LINES_OF_CODE", "format": "0,000.0a", "description": "Lines of Code" },
    "treemapColors": { "ranges": [1, 2, 3, 4],
                       "colors": ["#ff3600", "#ff0242", "#fbbb6e", "#3dc680"] } } }

CriticalViolationsPerHealthFactor

Ranks applications, modules or technologies by critical violations against one Health Measure. Takes type: "topRiskiest", a qualityIndicator, usually a sizingMeasure, and count.

mode decides what the figure is: grade for 1 to 4, violations for a count, or compliance for a percentage. In app.json, scattering: "technologies" ranks technologies instead of modules, which is how the Technologies Overview tile is built.

{ "id": 10, "plugin": "CriticalViolationsPerHealthFactor", "color": "green", "size": "large",
  "parameters": { "type": "topRiskiest", "title": "Top 5 riskiest Applications",
    "count": 5, "order": "descending",
    "qualityIndicator": { "id": "EFFICIENCY", "format": "0.00", "description": "Efficiency" },
    "sizingMeasure": { "id": "CRITICAL_VIOLATIONS", "format": "0,000a",
                       "description": "Critical Violations" } } }

CriticalQualityRulesRatios

The top critical rules, with a Checked column counting the objects the rule examined and a Failed column counting or scoring those that violate it.

Parameter Purpose
mode ratio for a Failed (%) column, number for Failed (#)
count How many rules to list
order Ranks on the number of failed checks
limit A ceiling on applications. Above it the tile does not load and says so. Earlier dashboard releases named this parameter loadLimit

{ "id": 14, "plugin": "CriticalQualityRulesRatios", "size": "large", "color": "grey-dark",
  "parameters": { "limit": 100, "title": "Top 5 critical rules", "count": 5,
                  "order": "descending", "format": "0,000", "mode": "ratio" } }

DetailView

The shipped app.json builds its Top Critical Rules tile with DetailView and type: "topRules", taking the same count, order, format and mode parameters as CriticalQualityRulesRatios.

{ "id": 107, "plugin": "DetailView", "color": "grey-dark", "size": "large",
  "parameters": { "type": "topRules", "title": "Top Critical Rules", "count": 5,
                  "format": "0,000", "order": "descending", "mode": "ratio" } }

A DetailView block at the top level of app.json separately sets the treemapColors used by drill-down treemaps.

QualityIndicatorEvolution

A Health Measure over the selected period. Takes a qualityIndicator, a widget of number, line or spline, and optionally mode as grade, violations or compliance.

number prints the variation as a figure; line joins snapshots with straight segments and spline smooths them.

SizingMeasureEvolution

The same, for a sizingMeasure. Takes the same widget values.

{ "id": 101, "plugin": "SizingMeasureEvolution", "color": "orange",
  "parameters": { "widget": "spline", "title": "Critical violations",
                  "sizingMeasure": { "id": "CRITICAL_VIOLATIONS", "format": "0,000" } } }

Notification

The Quick Facts tile. Portfolio level only. notifications is an array, each entry a type:

type Reports the number of applications
analysisSince Not analyzed within the selected period
addedCount Added within the selected period
sizingMeasureEvolution Whose named sizingMeasure moved by more than threshold, in the direction given by trend - increase or decrease
qualityIndicatorEvolution Whose named qualityIndicator moved by more than threshold, with trend as improvement or degradation
{ "id": 1000, "plugin": "Notification", "color": "blue", "size": "large",
  "parameters": { "title": "Applications Fast Facts",
    "notifications": [
      { "type": "analysisSince" },
      { "type": "addedCount" },
      { "type": "sizingMeasureEvolution", "threshold": 0.01, "trend": "increase",
        "sizingMeasure": { "id": "CRITICAL_VIOLATIONS", "format": "0",
                           "description": "critical violations" } } ] } }

IndustryStandards

A grade, violation count or compliance percentage for one industry standard. Takes a type of CISQ, MIPS, ISO-5055, OWASP-2013 or OWASP-2017, a widget where the mode is grade, and an industryStandard object:

Parameter Purpose
id The standard’s Business Criterion id, from the extension that provides it
indexID The parent Business Criterion index, which is what makes drill-down work. For CISQ-Performance-Efficiency (1062102) the parent is 1062100
mode grade, violations or compliance
format 0.00 for a grade, 0,000 for violations, 0.0% for compliance

Data comes from the CISQ Index, MIPS Reduction Index, ISO-5055 Index and OWASP Index extensions, which must be installed before the snapshot is generated.

{ "id": 1234, "plugin": "IndustryStandards", "color": "black",
  "parameters": { "type": "CISQ", "title": "CISQ-Security Index", "widget": "gauge",
    "industryStandard": { "id": "1062166", "indexID": "1062100", "mode": "grade",
                          "format": "0.00" } } }

QualityStandards

Counts violations of the rules carrying one tag. Takes a qualityStandards object of id, format and description. The same configuration works at both levels.

The Top Priority tile is this plugin pointed at the AIP-TOP-PRIORITY tag, and is no longer supplied out of the box:

{ "id": 213, "plugin": "QualityStandards", "color": "light-red",
  "parameters": { "title": "Top Priority",
    "qualityStandards": { "id": "AIP-TOP-PRIORITY", "format": "0,000",
                          "description": "Violations" } } }

Point id at any other quality standard tag, or at a custom tag of your own, to get a tile for it. Clicking through lists the rules carrying the tag.

BackgroundFactsResults

One Background Fact metric, uploaded during snapshot generation. Takes a backgroundFact object, plus:

Parameter Purpose
aggregation sum or average, deciding how per-application values are combined at portfolio level. sum by default
url An external page describing the metric. Without it the tile cannot be clicked through, since the data is not CAST’s

The aggregation choice matters more than it looks. With a cost of 400 recorded against one of two applications, sum reports 400 at portfolio level and 0 for the application with no value, while average reports 200 in both places.

{ "id": 66002, "plugin": "BackgroundFactsResults", "color": "green",
  "parameters": { "title": "Cost", "aggregation": "sum",
                  "url": "http://www.castsoftware.com",
                  "backgroundFact": { "id": "66002", "format": "0.0",
                                      "description": "Total cost value" } } }

BackgroundFactsEvolution

The same metric over time. Takes backgroundFact, aggregation, a widget of number, line or spline, and selectedApplicationCount for how many applications the drill-down plots by default at portfolio level.

BackgroundFactAndQualityIndicatoryBySizingMeasureResults

A bubble chart carrying three measures at once: a qualityIndicator on the x axis, a backgroundFact on the y axis, and a sizingMeasure as the bubble size. Portfolio level only, and not present in any shipped file.

chartSettings passes options through to the charting library. xAxis and yAxis each accept plotLines, marking a value with a labelled line, and plotBands, shading a from and to interval.

{ "id": 10203, "plugin": "BackgroundFactAndQualityIndicatoryBySizingMeasureResults",
  "color": "purple",
  "parameters": { "title": "Lines of Code - Effort", "order": "descending",
    "qualityIndicator": { "id": "TQI", "format": "0.00", "description": "TQI" },
    "sizingMeasure": { "id": "LINES_OF_CODE", "format": "0,000a" },
    "backgroundFact": { "id": "EFFORT", "format": "0.00", "description": "Effort" },
    "chartSettings": { "xAxis": { "plotLines": [ { "value": 3,
                                                   "label": { "text": "TQI=3" } } ] } } } }

A tile that leads somewhere outside the dashboard. Takes title and url.

{ "id": 100, "plugin": "ExternalLink", "color": "red",
  "parameters": { "title": "Tackle your Technical Debt",
                  "url": "http://www.castsoftware.com" } }

ExternalLinkWithImage

The same, with a background image in place of a plain colour. Adds imageUrl.

Custom expression tiles

CustomExpressions computes a value from other measures instead of reading one directly, which covers the indicators that are ratios: violations per thousand lines, cost per function point, and so on. CustomExpressionsEvolution does the same across snapshots.

Parameter Purpose
expression The formula, written over the variable keys - "crit / tqi"
variables One entry per key in the expression, each a type of qualityIndicator, sizingMeasure or backgroundFact, and an id
aggregator average (the default), sum, or AvgSum
documentation Explanatory text, which may include HTML, shown on the portfolio drill-down page
{ "id": 987654321529, "plugin": "CustomExpressions", "color": "blue",
  "parameters": { "title": "TQI - Critical violations ratio", "format": "0.00",
    "expression": "crit / tqi",
    "variables": { "tqi": { "type": "qualityIndicator", "id": "TQI" },
                   "crit": { "type": "sizingMeasure", "id": "CRITICAL_VIOLATIONS" } } } }

With aggregator set to AvgSum, each variable may carry its own aggregator of sum or average. That is what lets a portfolio ratio be totalled before it is divided, giving the sum of all violations over the sum of all function points rather than an average of per-application ratios.

Operators

Operator Meaning Example Result
( ) Parentheses 2 * (3 + 4) 14
, Parameter separator max(2, 1, 5) 5
+ - * / Arithmetic 6 / 2 3
% or mod Modulus 8 % 3 2
^ Power 2 ^ 3 8
! Factorial 5! 120
? : Conditional 15 > 100 ? 1 : -1 -1

Functions

Function Meaning Example Result
abs(x) Absolute value abs(-2) 2
round(x, n) Round to n places round(3.142265, 3) 3.142
sqrt(x) Square root sqrt(4) 2
log(x, base) Logarithm, base 10 if omitted log(1024, 2) 10

Expressions that return anything other than a number, a boolean for instance, are not rendered.