Project

General

Profile

Metrics » History » Version 26

Никита Артемов, 05/29/2012 05:22 PM

1 1 Никита Давыдовский
h1. Метрики проекта Geo-Events
2
3 2 Никита Давыдовский
h2. Метрики кода
4
5 21 Никита Давыдовский
Метрики кода представляют собой набор числовых характеристик, позволяющих оценить качество исходного кода программы.
6 18 Никита Давыдовский
7
Метрики сложности программ принято разделять на три основные группы:
8
* метрики размера программ;
9
* метрики сложности потока управления программ;
10
* метрики сложности потока данных программ.
11
12
Метрики первой группы базируются на определении количественных характеристик, связанных с размером программы, и отличаются относительной простотой. К наиболее известным метрикам данной группы относятся число операторов программы, количество строк исходного текста. Метрики этой группы ориентированы на анализ исходного текста программ. Поэтому они могут использоваться для оценки сложности промежуточных продуктов разработки.
13
14 19 Никита Давыдовский
Метрики второй группы базируются на анализе управляющего графа программы. Управляющий граф программы (_*УГП*_) отображает поток управления программы. Это граф _*G(V, A)*_, где _*V(V1,… Vm)*_ – множеств вершин (операторов), _*A(A1,… An)*_ – множество дуг (управлений), соединяющих вершины.
15 18 Никита Давыдовский
16
Метрики третьей группы базируются на оценке использования, конфигурации и размещения данных в программе. В первую очередь это касается глобальных переменных.
17
18 21 Никита Давыдовский
h3. Основные размерно - ориентированные метрики (показатели оценки объема)
19 18 Никита Давыдовский
20 19 Никита Давыдовский
_*LOC-оценка (Lines Of Code)*_
21 18 Никита Давыдовский
22 19 Никита Давыдовский
Размерно-ориентированные метрики прямо измеряют программный продукт и процесс его разработки. Основываются такие метрики на _*LOC*_-оценках.
23 18 Никита Давыдовский
24 19 Никита Давыдовский
Этот вид метрик косвенно измеряет программный продукт и процесс его разработки. Вместо подсчета _*LOC*_-оценок при этом рассматривается не размер, а функциональность или полезность продукта.
25 18 Никита Давыдовский
26
Наибольшее распространение в практике создания программного обеспечения получили размерно-ориентированные метрики. В организациях, занятых разработкой программной продукции для каждого проекта принято регистрировать следующие показатели:
27
28
* общие трудозатраты (в человеко-месяцах, человеко-часах);
29 19 Никита Давыдовский
* объем программы (в тысячах строках исходного кода - _*LOC*_);
30 18 Никита Давыдовский
* стоимость разработки;
31
* объем документации;
32
* ошибки, обнаруженные в течение года эксплуатации;
33 1 Никита Давыдовский
* количество людей, работавших над изделием;
34
* срок разработки.
35
36 19 Никита Давыдовский
На основе этих данных обычно подсчитываются простые метрики для оценки производительности труда (_*KLOC*_/человеко-месяц) и качества изделия.
37 1 Никита Давыдовский
38 19 Никита Давыдовский
Эти метрики не универсальны и спорны, особенно это относится к такому показателю как _*LOC*_, который существенно зависит от используемого языка программирования.
39 18 Никита Давыдовский
40 19 Никита Давыдовский
Количество строк исходного кода (_*Lines of Code – LOC, Source Lines of Code – SLOC*_) является наиболее простым и распространенным способом оценки объема работ по проекту.
41
42
_*Прочие количественные метрики (число функций, классов, файлов).*_
43
44 20 Никита Давыдовский
Нужны для выявления отношения новых функций к измененным. Влияют на количество добавленных, удаленных и измененных строк по отношению к предыдущей версии. 
45 1 Никита Давыдовский
46 20 Никита Давыдовский
Анализ данных метрик помогает следить за изменениями по релизам (версиям, сборкам) дает понять: Количество изменений (на что угодно) – сколько раз один и тот же блок кода корректировался. Возможно выявить узкое место в программе: интенсивно меняющийся блок кода может влиять на общее качество программы (потенциальное место возникновения ошибок). Возможно, необходимо изменить архитектуру блока.
47
48
_*Процент комментариев.*_
49
50
Код должен быть документирован. Если соотношение кода к комментарию не 1:4 (25%), то разработчик обязан доработать.
51 18 Никита Давыдовский
52 8 Никита Давыдовский
Метрики Qt/C++ кода получены с помощью инструмента "SourceMonitor":http://www.campwoodsw.com/sourcemonitor.html
53
Базовые метрики кода для QtQuick приложений получены с помощью утилиты "CLOK":http://cloc.sourceforge.net/
54 4 Никита Давыдовский
55 24 Никита Давыдовский
Так как данный проект является учебным, то будем использовать только размерно-ориентированные метрики.
56
57 16 Никита Давыдовский
h3. Модуль *core* 23.04.2012 (общие)
58 1 Никита Давыдовский
59 8 Никита Давыдовский
|_.Дата|_.Файлы|_.Строки кода (LOC)|_.Операторы (Statements)|_.% Комментариев (% Comments)|_.Классы (Class Defs)|_.% Методы/Класс (% Methods/Class)|_.% Операторы/Метод (% Statements/Methods)|
60
|=.23.04.12|=.80|=.19744|=.9773|=.18,3|=.68|=.15,21|=.7,7|
61 13 Никита Давыдовский
|=.07.05.12|=.81|=.19337|=.9587|=.18,1|=.70|=.14,58|=.7,5|
62 14 Никита Давыдовский
|=.21.05.12|=.81|=.19352|=.9596|=.18,1|=.70|=.14,56|=.7,5|
63 8 Никита Давыдовский
64 17 Никита Давыдовский
*Подробный отчёт (по файлам)*:
65 16 Никита Давыдовский
* "Метрики модуля *core* (ядро) 23.04.2012":/attachments/download/179
66
* "Метрики модуля *core* (ядро) 07.05.2012":/attachments/download/198
67
* "Метрики модуля *core* (ядро) 21.05.2012":/attachments/download/199
68
69 17 Никита Давыдовский
*Отчёты по временным промежуткам*:
70 16 Никита Давыдовский
* [[core-metric-results-27.05.2012| Отчёт по модулю *core* 23.04.2012-21.05.2012]]
71 1 Никита Давыдовский
72 9 Никита Давыдовский
h3. Приложение Events
73 5 Никита Давыдовский
74 9 Никита Давыдовский
|_.Дата|\4=.*05.05.12*|
75
|_.Язык|_.Файлы|_.Строки кода (Code)|_.Комментарии (comment)|_.Пустые строки (blank)|
76
|=.QML|=.27|=.3237|=.358|=.530|
77
|=.JavaScript|=.3|=.194|=.62|=.37|
78
|=.C++|=.2|=.175|=.29|=.29|
79
|=.C/C++ Headers|=.1|=.24|=.10|=.12|
80
|\5=.|
81
|=.*Всего*|=.33|=.3630|=.459|=.608|
82 2 Никита Давыдовский
83 12 Никита Артемов
h3. Приложение Places
84
85
|_.Дата|\4=.*15.05.12*|
86
|_.Язык|_.Файлы|_.Строки кода (Code)|_.Комментарии (comment)|_.Пустые строки (blank)|
87
|=.QML|=.23|=.2854|=.45|=.490|
88
|=.JavaScript|=.3|=.185|=.10|=.32|
89
|=.C++|=.2|=.196|=.12|=.44|
90
|=.C/C++ Headers|=.1|=.21|=.3|=.10|
91
|\5=.|
92
|=.*Всего*|=.29|=.3054|=.80|=.576|
93
94 10 Никита Артемов
h2. Временные метрики
95
96 15 Никита Артемов
|_.Участник|_.8|_.9|_.10|_.11|_.12|_.13|_.14|_.15|_.16|_.17|_.18|_.19|_.20|_.21|_.Всего|_.Среднее|
97
|=.Никита Артемов|=.|=.|=.9|=.11|=.8|=.12|=.5|=.10|=.9|=.|=.1|=.1,5|=.4|=.3|=.73,5|=.5,250|
98
|=.Никита Давыдовский|=.2|=.10|=.|=.17|=.24|=.|=.7,5|=.12|=.6,5|=.11,5|=.8,5|=.7,5|=.|=.5|=.111,5|=.7,964|
99
|=.Александр Дремин|=.|=.|=.|=.4|=.|=.|=.|=.|=.|=.|=.|=.|=.|=.|=.4|=.0,286|
100
|=.Александр Шитнев|=.|=.|=.18|=.19|=.9|=.4,5|=.6,5|=.2|=.2|=.5,5|=.6|=.7,5|=.4,5|=.|=.84,5|=.6,036|
101
|=.Алексей Филиппов|=.|=.|=.38|=.16|=.|=.6,5|=.7|=.4|=.|=.12,5|=.5,5|=.5,5|=.3|=.|=.98|=.7,000|
102
|=.Всего|=.2|=.10|=.65|=.67|=.17|=.47|=.26|=.28|=.18,5|=.29,5|=.21|=.22|=.11,5|=.8|=.372,5|=.26,607|	
103
104 26 Никита Артемов
|_.Участник|_.Feature|_.Support|_.Research|_.Design|_.Quality Assurance|_.Management|_.Other|
105 22 Никита Артемов
|=.Никита Артемов|=.65|=.|=.1|=.9|=.|=.1|=.|	
106
|=.Никита Давыдовский|=.78,5|=.|=.9,5|=.4,5|=.4|=.6|=.2|
107
|=.Александр Шитнев|=.3|=.4|=.41|=.|=.13|=.17,5|=.|	
108
|=.Алексей Филиппов|=.48|=.|=.35|=.|=.4,5|=.4|=.|	
109 1 Никита Давыдовский
110
* "Общее время затраченное на проект(10.05.2012)":/attachments/180/timelog.pdf
111
* "График затраченного времени(29.05.2012)":/attachments/205/timelog2.pdf
112 26 Никита Артемов
113
*Выводы:*
114
* у всех из участников проекта кол-во часов меньше нормы (15 часов)
115
* непонятно с чем связано меньшее кол-во часов у некоторых разработчиков, хотя выполнялись схожие задачи
116 10 Никита Артемов
117 1 Никита Давыдовский
h2. Ссылки
118
119
* http://www.ibm.com/developerworks/ru/edu/0108novich/section2.html