Образцовая метрическая агрегация данных

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

Как образцовые метрические работы агрегации

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

  • AggregationMode, который имеет эти опции:

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

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

    • 'none': Никакая агрегация метрических значений.

  • AggregateComponentDetails является булевым значением, которое имеет эти опции:

    • tRUE: Для метрик, которые возвращают прекрасно-гранулированные результаты (то есть, больше чем один результат на компонент), программное обеспечение агрегировало эти результаты к уровню компонента путем взятия суммы свойств мер и значений. Возвращает результат, который охватывает полный компонент.

    • ложь: Возвращает результаты компонента. Программное обеспечение не агрегировало прекрасно-гранулированные результаты.

    Метрики модели MathWorks, которые возвращают прекрасно-гранулированные результаты:

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

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

  • Модель

  • Блок Subsystem

  • График

  • Блок MATLAB function

  • Модель Protected

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

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

  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. Соберите данные для метрики модели Ввода-вывода.

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

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

    Входной параметр 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.

Смотрите также

| | |

Похожие темы