On this page: Target audience: CAST AI Administrators |
Summary: This page explains how to configure the CAST Application Analytics Dashboard tile interface |
The CAST Application Analytics Dashboard has a "tile" or "panel" based interface that provides access to the data:
These tiles have default presentation settings, but this can be modified and tailored to your requirements. For example:
The default tile presentation is defined in the following files:
File name | Usage |
---|---|
%CATALINA_HOME%\webapps\CAST-AAD\portal\resources\cmp.json | This file governs the display of tiles when your Measurement Service contains multiple Applications - i.e the Multi-application landing page. |
%CATALINA_HOME%\webapps\CAST-AAD\portal\resources\app.json | This file governs the display of tiles for a single Application - i.e the Application landing page. This page is displayed in two situations:
|
For more information about the Multi-application and Application landing pages, see CAST Application Analytics Dashboard - CAST AAD. |
To modify the presentation, edit the .json file with a text editor (Notepad or other similar application). CAST recommends:
Note that CAST provides "library" files containing examples of all the tiles that can be created and used in the CAST Application Analytics Dashboard. You can use these files as well as the examples in this documentation page to build your own tiles. These library tiles can be found along side the live cmp.json and app.json files:
|
There is no need to restart the application server or application itself if you edit and save the cmp.json or app.json files: changes are immediate on saving the file. However, you may find that the changes are not immediately visible in the CAST Application Analytics Dashboard. This is because the .json files are loaded into the browser's cache, therefore CAST recommends that you empty your browser cache to force the changes to become visible.
If you are using Google Chrome the following tip can be used to automatically empty the browser cache:
Tiles are displayed in the CAST Application Analytics Dashboard in a left to right and top to bottom format within each "Area" (see below). In the .json file, Tiles are listed one after the other, therefore to move a Tile, you need to change its position in the .json file using copy/paste: the higher up the list within the "Area" you place the tile code, the higher up it will be displayed in the dashboard itself.
The .json file is divided into various different sections, each corresponding to an item, area or tile in the Application Analytics Dashboard:
There are three areas, each corresponding to the Overview, Evolution and Software Enhancement Function Points (since Previous Version) (app.json only) sections you can see by default:
These are represented in the .json file as follows:
"id": 1, "title": "Overview", |
and:
"id": 3, "title": "Evolution", |
and:
"id": 2, "title": "Software Enhancement Function Points (since Previous Version)", |
Within each Area, various Tiles (or Panels) are defined, for example:
{ "id": 5, "plugin": "QualityIndicatorResults", "color": "yellow", "parameters": { "title": "Robustness", "qualityIndicator": {"id": "ROBUSTNESS", "format": "0.00"}, "details":{ "ranges":[1.6,2.8,3.0,3.4] }, "widget": "gauge" } }, |
Please see CAST-AAD - Dashboard wide configuration options in json for more information about the following parameters that can be defined in the cmp.json (and in the app.json) to provide dashboard wide parameterization (i.e, they are valid regardless of whether your dashboard contains one or multiple Applications):
"title": "Application Analytics Dashboard", "language": "dev", "horizontalScroll": false, "confirmLogout": true, "persistNavigationFilters":true, "filtering":{ "filterTags":false }, "period": { "shift": true, "periods": [ { "diff": 30, "units": "days" }, { "diff": 3, "units": "months" }, { "diff": 6, "units": "months" }, { "diff": 12, "units": "months", "selected": true }, { "diff": 2, "units": "years" }, { "diff": 0, "units": "alltime" } ] } |
A tile or panel represents the equivalent of a "plugin". Each tile is composed of the following properties:
Parameter | Description |
---|---|
id | Represents the tile's unique id. This is a technical id used to identify the panels and MUST be unique throughout the .json file. |
plugin | Represents the type of indicators to be displayed in the tile. The plugins that are available are listed below under Plugin parameters. |
color | Optional parameter that describes the tile color theme to be used. A light grey color is used if none is defined. Colors are currently limited to:
|
size | Optional parameter provides the ability to expand tiles in size (large and small): |
autoFit | Optional parameter that (when set to true - the default position) will truncate a plugin's title text if it is longer than the size of the tile (whether a large or small tile). Using this parameter may lead to visually less consistent dashboards. The default value is true, where the font size used for a plugin's title text will be reduced so that the title text fits the tile size. To deactivate the autoFit option, you need to specifically add the parameter to your plugin and set it to false. |
parameters | This section contains plugin specific parameters. Please refer to each of the following plugin definitions under Plugin parameters for more information about this. |
Only available in app.json. |
Technical Size Measures govern the configurable display of Technical Size indicators (Number of Critical Violations, Number of Code Lines, Number of Files etc.) for the drill down page available at Application level for the Technical Size tile (click to enlarge):
Each of these indicators can be configured via the app.json file under the TechnicalSizeMeasures section:
Parameter | Description |
---|---|
id | Represents the ID of the Technical Size indicator as defined in the CAST Assessment Model. |
label | A text field used to display the name of the Technical Size indicator in the drill down page (click to enlarge): |
for example:
"TechnicalSizeMeasures": { "values": [ { "id": 67011, "label": "Number of Critical Violations" }, { "id": 10151, "label": "Number of Lines of Code" }, { "id": 10154, "label": "Number of Files" }, { "id": 10155, "label": "Number of Classes" }, { "id": 10156, "label": "Number of Programs" }, ..... |
A plugin also has various different parameters as follows:
Note that:
|
Parameter | Description |
---|---|
title | A title used to identify the tile. |
mode | Determines how much detail will be presented in a tile. Not all tiles support the attribute.
|
qualityIndicator or sizingMeasure | Represent the measurement data properties (typically the indicator identifier, some high level description and the value formatting).
|
scope | Enables a specific filter to be added to a tile (and related detail) to focus on Applications assigned to a defined tag and related category. Both sub-parameters are mandatory:
The parameter is global to tile configuration but only applies to the following plugins:
See Note about tags and categories as tile scopes in CAST Application Analytics Dashboard - CAST AAD. |
This tile is only available for use in the cmp.json file - in other words at multi-app/portfolio level. |
Without scope:
{ "id":20150818, "plugin": "PortfolioListing", "color": "grey-dark", "parameters":{ "title":"Number of applications" } }, |
With scope on Tag and Category:
{ "id":20160405, "plugin": "PortfolioListing", "color": "grey-dark", "parameters":{ "title":"Number of applications", "scope":{ "category":"Vendors", "tag":"Vendor 1" } } }, |
An array whose first five items are shown in the area. Each item describes a notification:
Note that:
|
Example (for cmp.json)
{ "id": 1000, "plugin": "Notification", "color": "orange", "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"}}, {"type":"sizingMeasureEvolution", "threshold":0.05, "trend":"increase", "sizingMeasure":{"id": "LINES_OF_CODE", "format": "0", "description":"lines of code"}}, {"type":"qualityIndicatorEvolution", "threshold":0.02, "trend":"degradation", "qualityIndicator":{"id": "PERFORMANCE", "format": "0", "description":"performance"}} ] } } |
Note that:
|
A tile that enables you to display Background Facts that you have manually configured and uploaded during the snapshot generation. The tile can display information about one metric that you have defined in the uploaded Background Facts file.
Example (for cmp.json)
{ "id": 66002, "plugin": "BackgroundFactsResults", "color": "green", "parameters": { "url":"http://www.castsoftware.com", "aggregation":"sum", "title": "Cost", "backgroundFact": { "id": "66002", "format": "0.0", "description": "Total cost value" } } }, |
Example (for app.json)
{ "id": 39, "plugin": "BackgroundFactsResult", "color": "black", "parameters": { "title": "Number of incidents", "url":"http://www.castsoftware.com", "aggregation":"sum", "backgroundFact": { "id": "66061", "format": "0,000a", "description":"" } } } |
Example Background Facts configuration
In this example, there are two Applications present in the CAST Application Analytics Dashboard. Background Facts have been configured and uploaded (see Background Facts and Business Value Metric upload for more information) for one of the Applications as shown below. The tile has been designed to show information about the Cost (66002) metric (see example plugin for cmp.json).
<?xml version="1.0" encoding="iso-8859-1" ?> <DATA model="Central Model" version="1.0.0.17" scope="Productivity"> <!-- Module Definition --> <DSS_IN_OBJECTS> <OBJECT_NAME>SEVRES full content</OBJECT_NAME> <OBJECT_TYPE_ID>20000</OBJECT_TYPE_ID> <OBJECT_ID>10</OBJECT_ID> </DSS_IN_OBJECTS> <!-- RESULTS : 66061 : Business Value for Module --> <DSS_IN_METRIC_RESULTS> <METRIC_ID>66061</METRIC_ID> <METRIC_NUM_VALUE>4</METRIC_NUM_VALUE> <OBJECT_ID>10</OBJECT_ID> </DSS_IN_METRIC_RESULTS> <!-- RESULTS : 66001 : Effort for Module --> <DSS_IN_METRIC_RESULTS> <METRIC_ID>66001</METRIC_ID> <METRIC_NUM_VALUE>10.5</METRIC_NUM_VALUE> <OBJECT_ID>10</OBJECT_ID> </DSS_IN_METRIC_RESULTS> <!-- RESULTS : 66002 : Cost for Module --> <DSS_IN_METRIC_RESULTS> <METRIC_ID>66002</METRIC_ID> <METRIC_NUM_VALUE>400</METRIC_NUM_VALUE> <OBJECT_ID>10</OBJECT_ID> </DSS_IN_METRIC_RESULTS> </DATA> |
Note that this tile can be used at multi (cmp.json) and single (app.json) Application level. |
A tile that enables you to display the evolution of Background Facts that you have manually configured and uploaded during the snapshot generation. The tile can display information about one metric that you have defined in the uploaded Background Facts file.
Clicking the tile
When defined at multi-application level (cmp.json), clicking a tile will display the following Background Fact detail for the Applications in scope:
When defined at single application level (app.json), clicking a tile will by default display the evolution of TQI. If you need to view the details of the evolution of your Background Facts at single application level, you need to make some further configuration changes as follows:
%CATALINA_HOME%\webapps\CAST-AAD\portal\resources\internal\app-navigation.json |
Search for the "id": "evolution", section in the file and then add a new "group" containing the Background Facts you want to display in the drill down detail page at application level. For example, the following group contains all possible Background Facts:
{ "id": "backgroundFacts", "description":"Background Facts", "indicators": [ { "description": "Effort", "id": "66001", "format":"0,000", "selected": true }, { "description": "Cost", "id": "66002", "format":"0,000", "selected": false }, { "description": "Enhancement Function Points", "id": "66003", "format":"0,000", "selected": false }, { "description": "Delivery Feature Requests", "id": "66004", "format":"0,000", "selected": false }, { "description": "Pending Feature Requests", "id": "66005", "format":"0,000", "selected": false }, { "description": "Pending Fixes", "id": "66007", "format":"$0,000", "selected": false }, { "description": "Business Value", "id": "66061", "format":"$0,000", "selected": false } ] } |
Example (for cmp.json or app.json):
{ "id": 660011, "plugin": "BackgroundFactsEvolution", "color": "purple", "parameters": { "widget":"number", "aggregation":"average", "title": "Effort", "backgroundFact": {"id": "EFFORT","format": "0,000"} } }, { "id": 660012, "plugin": "BackgroundFactsEvolution", "color": "purple", "parameters": { "widget":"spline", "aggregation":"sum", "title": "Effort", "backgroundFact": {"id": 66001,"format": "0,000"} } } |
Please note that by default this plugin (tile) does not appear in any default .json files. If you need to use it, it will only function at Multi-application level (cmp.json). An example of the tile is given below. |
Example:
{ "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", "description": "Lines of Code"}, "backgroundFact": {"id": "EFFORT", "format": "0.00", "description": "Effort"}, "chartSettings": { "xAxis": { "plotLines": [ { "value": 3, "label":{"text":"TQI=3"} } ] }, "yAxis": { "plotLines": [ { "value": 3.0, "label":{"text":"Risk=3"} } ] } } } } |
Note that:
|
This tile shows the top 5 critical rules at Application or multi-Application level, together with:
Configuration:
mode: two options are possible:
Example (for cmp.json):
{ "id": 14, "plugin": "CriticalQualityRulesRatios", "size":"large", "color": "grey-dark", "parameters": { "loadLimit": 60, "title": "Top 5 critical rules", "count": 5, "order": "descending", "format": "0,000", "mode": "ratio" } } |
Example (for app.json):
{ "id": 107, "plugin": "CriticalQualityRuleRatio", "color": "grey-dark", "size":"large", "parameters": { "type":"topRules", "title": "Top Critical Rules", "count": 5, "format":"0,000", "order": "descending", "mode": "ratio" } } |
The critical violations per health factor module provides a critical violations count for a given business criterion:
Example (for cmp.json)
{ "id": 10, "plugin": "CriticalViolationsPerHealthFactor", "color": "green", "size":"large", "parameters": { "type":"topRiskiest", "title": "Top 5 riskiest Applications", "count": 5, "order": "descending", "qualityIndicator": {"id": "PERFORMANCE", "format": "0.00", "description": "Performance"}, "sizingMeasure": {"id": "CRITICAL_VIOLATIONS", "format": "0,000a", "description": "Critical Violations"} } }, |
Example (for app.json)
{ "id": 106, "plugin": "CriticalViolationsPerHealthFactor", "color": "green", "size":"large", "parameters": { "type":"topRiskiest", "title": "Top riskiest modules", "count": 5, "order": "descending", "qualityIndicator": {"id": "PERFORMANCE", "format": "0.00", "description": "Performance"} } } |
Note that:
|
This tile displays the sum of the number of Automated Function Points for all Applications in the scope. The only configurable items for this tile are the title, the format of the figure and description, and the colors for the detail treemap (when drilling down).
Example (for cmp.json):
{ "id": 10201, "plugin": "FunctionalWeightMeasureResults", "color": "blue", "parameters": { "title": "Functional Size", "functionalWeightMeasure": {"format": "0,000", "description":"OMG-Compliant Automated FPs"}, "treemapColors": { "colors":["#3dc680","#fbbb6e","#FF5B2B","#ff0242"] } } }, |
Note that when drilling down, a table is displayed listing the applications
Example (for app.json):
{ "id": 1999, "plugin": "FunctionalWeightMeasureResult", "parameters": { "title": "Automated Function points", "functionalWeightMeasure": { "id": "AUTOMATED_IFPUG_FUNCTION_POINTS_ESTIMATION", "format": "0,000", "description": "OMG-Compliant Automated FPs" } } }, |
Note that when drilling down, a table lists all those Applications that are not included in the AFP measure (essentially all those Applications not using a CAST EFP license:
Note that:
|
sizingMeasure Note that at multi Application level (i.e. configuration in the cmp.json file), the following are also available for use with the sizingMeasure item: AUTOMATED_IFPUG_FUNCTION_POINTS_ESTIMATION, UNADJUSTED_DATA_FUNCTION_POINTS, UNADJUSTED_TRANSACTIONAL_FUNCTION_POINTS, ADDED_FUNCTION_POINTS, ADDED_DATA_FUNCTION_POINTS, ADDED_TRANSACTIONAL_FUNCTION_POINTS, MODIFIED_FUNCTION_POINTS, MODIFIED_DATA_FUNCTION_POINTS, MODIFIED_TRANSACTIONAL_FUNCTION_POINTS, DELETED_FUNCTION_POINTS, DELETED_DATA_FUNCTION_POINTS, DELETED_TRANSACTIONAL_FUNCTION_POINTS, UNCHANGED_FUNCTION_POINTS, UNCHANGED_DATA_FUNCTION_POINTS, UNCHANGED_TRANSACTIONAL_FUNCTION_POINTS Be extra careful with these metrics as they have values only if you have the EFP license key, and if all Applications do not have function points, the tile can exhibit display issues (squares can be very small in an empty space). The tile will only display Applications that have results for configured indicators. |
Example (for cmp.json)
{ "id": 3, "plugin": "QualityIndicatorBySizingMeasureResults", "size":"large", "color": "purple", "parameters": { "type":"treemap", "title": "Applications Map", "order": "descending", "qualityIndicator": {"id": "TQI", "format": "0.00", "tooltipFormat":"0.00", "description": "Total Quality Index"}, "sizingMeasure": {"id": "LINES_OF_CODE", "format": "0,000.0a", "tooltipFormat":"'0,000", "description": "Lines of Code"}, "treemapColors": { "ranges":[1,2,3,4], "colors":["#ff3600","#ff0242","#fbbb6e","#3dc680"] } } }, |
Example (for app.json)
{ "id": 101, "plugin": "QualityIndicatorBySizingMeasureResult", "size":"large", "color": "purple", "parameters": { "type":"treemap", "title": "Security Mapping", "order": "descending", "qualityIndicator": {"id": "SECURITY", "format": "0.00", "tooltipFormat":"0.00", "description": "Security"}, "sizingMeasure": {"id": "LINES_OF_CODE", "format": "0,000.0a", "tooltipFormat":"'0,000", "description": "Lines of Code"}, "treemapColors": { "ranges":[1,2,3,4], "colors":["#ff0242","#FF5B2B","#fbbb6e","#3dc680"] } } }, |
Note that:
|
Parameters are available panel per panel. Some general parameters can be set on the top most level of the json structure through the "QualityIndicatorResults" field. The parameters set there involve the details fields such as ranges, color or riskGauge. |
Example (for cmp.json)
{ "id": 211, "plugin": "QualityIndicatorResults", "color": "grey-dark", "parameters": { "title": "Programming Practices - OO Inheritance and Polymorphism", "widget": "gauge", "qualityIndicator": { "id": "ROBUSTNESS", "technicalId": "61003", "format": "0.00", "description": "" } } }, |
Example (for app.json)
{ "id": 104, "plugin": "QualityIndicatorResult", "color": "yellow", "parameters": { "title": "Robustness", "widget": "gauge", "qualityIndicator": { "id": "ROBUSTNESS", "format": "0.00" } } }, |
Example (for cmp.json)
{ "id": 103, "plugin": "QualityIndicatorEvolution", "color": "green", "parameters": { "widget":"spline", "title": "Security", "qualityIndicator": { "id": "SECURITY", "format": "0.00" } } }, |
Example (for app.json)
{ "id": 201, "plugin": "QualityIndicatorEvolution", "color": "blue", "parameters": { "widget":"number", "title": "TQI", "qualityIndicator": { "id": "TQI", "format": "0.00" } } }, |
Example (for cmp.json)
{ "id": 100, "plugin": "SizingMeasureEvolution", "color": "grey-dark", "parameters": { "title": "Technical Debt", "sizingMeasure": {"id": "TECHNICAL_DEBT", "format": "$0,000.0a"} } }, |
Example (for app.json)
{ "id": 202, "plugin": "SizingMeasureEvolution", "color": "orange", "parameters": { "widget":"number", "title": "Technical Debt", "sizingMeasure": {"id": "TECHNICAL_DEBT", "format": "$0,000.0a"} } }, |
Note that:
|
Example (for cmp.json)
{ "id": 12, "plugin": "SizingMeasureResults", "color": "orange", "parameters": { "title": "Critical violations", "mode":"terse", "sizingMeasure": {"id": "CRITICAL_VIOLATIONS", "format": "0,000"} } }, |
Example (for app.json)
{ "id": 102, "plugin": "SizingMeasureResult", "color": "green", "parameters": { "title": "Size", "sizingMeasure": { "id": "LINES_OF_CODE", "format": "0,000", "description": "Lines of Code" } } }, |
This tile (not available by default) provides the ability to define external URLs (e.g. to other data dashboards) in a tile:
Example (for cmp.json and app.json)
{ "id": 100, "plugin": "ExternalLink", "color": "red", "parameters": { "title": "Tackle your Technical Debt", "url":"http://www.castsoftware.com" } }, |
At portfolio (cmp.json) and application level (app.json), it is possible to define tiles with custom expressions. A custom expression is defined through a mathematical subset representation involving operations on criteria values (e.g. the ratio of number of lines of codes per critical violations or the count of applications with more than n files).
The tile can represent averaged values (excluding the application not having one of the values such as a background fact or some sizing measure, or those whose function calculation result is infinite) or a total value. For comparison, business criteria scores are average while sizing is usually a total on the portfolio.
Custom expression tiles can be defined for the current snapshot state (most recent snapshot for all applications at portfolio level or selected snapshots at application level), or via evolutions.
The mathematical formula available involve the following expression patterns:
Operator | Name | Syntax | Associativity | Example | Result |
(, ) | Parentheses | (x) | None | 2 * (3 + 4) | 14 |
, | Parameter separator | x, y | Left to right | max(2, 1, 5) | 5 |
+ | Add | x + y | Left to right | 4 + 5 | 9 |
- | Subtract | x - y | Left to right | 7 - 3 | 4 |
* | Multiply | x * y | Left to right | 2 * 3 | 6 |
/ | Divide | x / y | Left to right | 6 / 2 | 3 |
%, mod | Modulus | x % y | Left to right | 8 % 3 | 2 |
^ | Power | x ^ y | Right to left | 2 ^ 3 | 8 |
! | Factorial | y! | Left to right | 5! | 120 |
? : | Conditional expression | x ? y : z | Right to left | 15 > 100 ? 1 : -1 | -1 |
Function | Name | Syntax | Associativity | Example | Result |
abs | Absolute | abs(x) | None | abs(-2) | 2 |
round | Round | round(x,n) | None | round(3.142265,3) | 3.142 |
sqrt | Square root | sqrt(x) | None | sqrt(4) | 2 |
log | Logarithmic | log(x,base) | None | log(1024,2) log(1024) | 10 3.01 |
Other classic patterns are available but may not be supported by the CAST Application Analytics Dashboard in terms of rendering (i.e. those returning non numerical values such as booleans). |
The custom expression tile enables operations on various multiple indicators in a single tile through snapshots. Lots of different operations can be performed on the tile, from scaling to combinations using mathematical formula (as listed above). As it could involve multiple results and extra operations to get the results, the CustomExpressionsEvolution tiles could hinder the performances of the dashboard at some point (depending on number of tiles, number of variables, number of snapshots).
variables each variable defined in the mathematical operation has to be defined for results to be caclulated. The variable name is defined through its key and have a type and an id. (some examples: "variables":{"tqi":{"type":"qualityIndicator", "id":"TQI"},"loc":{"type":"sizingMeasure", "id":"LINES_OF_CODE"},"effort":{"type":"backgroundFact", "id":"EFFORT"}}
The custom expression tile enables operations on various multiple indicators in a single tile. Lots of different operations can be performed on the tile, from scaling to combinations using mathematical formula (as listed above).
variables each variable defined in the mathematical operation has to be defined for results to be caclulated. The variable name is defined through its key and have a type and an id. (some examples: "variables":{"tqi":{"type":"qualityIndicator", "id":"TQI"},"loc":{"type":"sizingMeasure", "id":"LINES_OF_CODE"},"effort":{"type":"backgroundFact", "id":"EFFORT"}}
Notes about the aggregator type "AvgSum" When using this aggregator type, a new property "aggregator" can also be provided for each key under "variables" to specify the aggregation type as "sum" or "average" for each variable respectively. The default is set to "sum" when "AvgSum" is defined under "aggregator". For example the following lines under "variables" would take both factors produce a sum and then divide them. As such it is now possible to specify the addition of all the violations first, then add up all the function points, THEN do the division (the SUM(Violations) / SUM(Function points) ):
|
{ "id": 987654321529, "plugin": "CustomExpressions", "color": "blue", "parameters": { "title": "TQI - Critical violations ratio", "description":"", "format":"0.00", "expression":"crit / tqi", "variables":{ "tqi": {"type":"qualityIndicator", "id":"TQI"}, "crit":{"type":"sizingMeasure", "id":"CRITICAL_VIOLATIONS"} } } }, |
{ "id": 987654321529, "plugin": "CustomExpression", "color": "blue", "parameters": { "title": "TQI - Critical violations ratio", "description":"", "format":"0.00", "expression":"crit / tqi", "variables":{ "tqi": {"type":"qualityIndicator", "id":"TQI"}, "crit":{"type":"sizingMeasure", "id":"CRITICAL_VIOLATIONS"} } } }, |