Модель агрегирования метрических данных

Можно лучше изучить размер, сложность и читабельность модели и ее компонентов путем анализа агрегированных метрических данных модели. Агрегированные метрические данные доступны в AggregatedValue и AggregatedMeasures свойства slmetric.metric.Result объект. The AggregatedValue свойство агрегирует метрические скалярные значения. The AggregatedMeasures свойство агрегирует метрические измерения (то есть подробную информацию о значениях метрики).

Как работает агрегация метрики модели

Реализация метрики модели определяет, как метрика агрегирует данные по иерархии компонентов. Для метрик модели MathWorks slmetric.metric.Metric класс задает агрегацию метрики модели. Этот класс включает в себя AggregationMode свойство, которое имеет следующие опции:

  • Sum: Возвращает сумму Value свойство и Value свойства дочерних компонентов по всей иерархии компонентов. Возвращает сумму Meaures свойство и Measures свойства дочерних компонентов по всей иерархии компонентов.

  • Max: Возвращает максимальное значение Value свойство и Value свойства дочерних компонентов по всей иерархии компонентов. Возвращает максимальное значение Measures свойство и Measures свойства дочерних компонентов по всей иерархии компонентов.

  • None: Отсутствие агрегирования значений метрики.

Вы можете найти описания метрик модели MathWorks и их AggregationMode настройка свойства в метриках модели. Для пользовательских метрик, как часть algorithm метод, можно задать, как метрика агрегирует данные. Для получения дополнительной информации смотрите Создание Пользовательской Метрики Модели для Подсчета Невиртуальных Блоков.

Эта схема показывает, как программное обеспечение агрегирует метрические данные по компонентам иерархии модели. Родительская модель находится в верхней части иерархии. Компоненты могут быть следующими:

  • Модель

  • Блок Subsystem

  • График

  • Блок MATLAB function

  • Защищенная модель

Доступ к агрегированным метрическим данным

В этом примере показано, как выполнить программный сбор метрических данных в механизме метрики, а затем получить доступ к агрегированным метрическим данным.

  1. Загрузите sldemo_applyVarStruct модель.

    model = 'sldemo_applyVarStruct';
    open(model);
    load_system(model);
  2. Создайте slmetric.Engine Объекту и установите корень анализа.

    metric_engine = slmetric.Engine();
    setAnalysisRoot(metric_engine,'Root',model,'RootType','Model');

  3. Соберите данные для метрики выходной модели Input.

    execute(metric_engine,'mathworks.metrics.IOCount');
  4. Получите метрические данные модели, которая возвращает массив slmetric.metric.ResultCollection объекты, res_col. Задайте входной параметр для AggregationDepth.

    res_col = getMetrics(metric_engine,'mathworks.metrics.IOCount',...
    'AggregationDepth','All');

    The AggregationDepth входной параметр имеет две опции: All и None. Если вы не хотите getMetrics метод для агрегирования измерений и значений, задайте None.

  5. Отображение результатов.

    metricData ={'MetricID','ComponentPath','Value',...
       'AggregatedValue','Measures','AggregatedMeasures'};
    cnt = 1;
    for n=1:length(res_col)
        if res_col(n).Status == 0
            results = res_col(n).Results;
    
            for m=1:length(results)
                disp(['MetricID: ',results(m).MetricID]);
                disp(['  ComponentPath: ',results(m).ComponentPath]);
                disp(['  Value: ',num2str(results(m).Value)]);
                disp(['  Aggregated Value: ',num2str(results(m).AggregatedValue)]);
                disp(['  Measures: ',num2str(results(m).Measures)]);
                disp(['  Aggregated Measures: ',...
                    num2str(results(m).AggregatedMeasures)]);
                metricData{cnt+1,1} = results(m).MetricID;
                metricData{cnt+1,2} = results(m).ComponentPath;
                metricData{cnt+1,3} = results(m).Value;
                tdmetricData{cnt+1,4} = results(m).Measures;
                metricData{cnt+1,5} = results(m).AggregatedMeasures;
                cnt = cnt + 1;
            end
        else
            disp(['No results for:',res_col(n).MetricID]);
        end
        disp(' ');
    end

Вот результаты:

MetricID: mathworks.metrics.IOCount
  ComponentPath: sldemo_applyVarStruct
  Value: 3
  Aggregated Value: 5
  Measures: 1  2  0  0
  Aggregated Measures: 3  2  0  0
MetricID: mathworks.metrics.IOCount
  ComponentPath: sldemo_applyVarStruct/Controller
  Value: 4
  Aggregated Value: 4
  Measures: 3  1  0  0
  Aggregated Measures: 3  1  0  0
MetricID: mathworks.metrics.IOCount
  ComponentPath: sldemo_applyVarStruct/Aircraft
Dynamics
Model
  Value: 5
  Aggregated Value: 5
  Measures: 3  2  0  0
  Aggregated Measures: 3  2  0  0
MetricID: mathworks.metrics.IOCount
  ComponentPath: sldemo_applyVarStruct/Dryden Wind
Gust Models
  Value: 2
  Aggregated Value: 2
  Measures: 0  2  0  0
  Aggregated Measures: 0  2  0  0
MetricID: mathworks.metrics.IOCount
  ComponentPath: sldemo_applyVarStruct/Nz pilot
calculation
  Value: 3
  Aggregated Value: 3
  Measures: 2  1  0  0
  Aggregated Measures: 2  1  0  0
MetricID: mathworks.metrics.IOCount
  ComponentPath: sldemo_applyVarStruct/More Info2
  Value: 0
  Aggregated Value: 0
  Measures: 0  0  0  0
  Aggregated Measures: 0  0  0  0

Для выходной метрики вход, AggregationMode является Max. Для каждого компонента, AggregatedValue и AggregatedMeasures свойствами являются максимальное количество входов и выходов самого себя и его дочерних компонентов. Для примера, для sldemo_applyVarStruct, а AggregatedValue свойство 5, который является sldemo_applyVarStruct/Aircraft Dynamics Model значение компонента.

См. также

| | |

Похожие темы