- •Основные понятия мпо.
- •Основные цели:
- •Виды метрик и шкал, используемых при оценке:
- •Критерии оценки качества программ
- •Способ формирования зависит от этапа:
- •Классификация видов сложности пп
- •Метрики Холстеда.
- •Основные измеряемые параметры:
- •Дополнительные параметры:
- •6 Марта 2007 года
- •Методы и средства измерения характеристик программ
- •Необходимые условия применения измерительных методов:
- •Общая схема проведения измерений.
- •2 Основных способа регистрации параметров программы:
- •Измерительные мониторы (им)
- •Требования к им:
- •Классификации им.
- •Типы измеряемых характеристик программы.
- •Аппаратные измерительные мониторы (аим)
- •Достоинства аим:
- •Недостатки аим:
- •Гибридные измерительные мониторы (гим)
- •Программные измерительные мониторы (пим)
- •Автономные пим
- •Общие особенности программных мониторов.
- •Проблемы, возникающие при построении мониторов
- •Общая схема использования пим
- •Способы расстановки контрольных точек.
- •Основные способы мониторинга
- •Сопоставление возможностей аим и пим.
- •Структурный анализ качества программных продуктов
- •Маршруты делятся на:
- •Анализ сложности программных средств с модульной организацией
- •Свойства модульной организации
- •Понятие корректности программ
- •2 Метода проверки корректности:
- •Критерии корректности:
- •Корректность программ:
- •Эталоны и методы проверки корректности
- •Способы формирования эталонных тестов
- •Понятие верификации программы
- •Основные задачи анализа корректности при верификации
- •Тестирование программ
- •Особенности
- •Основные принципы тестирования
Способ формирования зависит от этапа:
1) Этап разработки (трудоемкость, корректность – проверяется по тексту и выполняется в виде верификации)
2) Этап внедрения и эксплуатации (функциональность или корректность, надежность, производительность или ресурсоемкость)
3) Этап сопровождения (понимаемость и модифицируемость, трудоемкость, надежность)
Основные составляющие, обеспечивающие качество программы.
Составляющие качества | |||
Процесс |
ПП на стадии разработки |
ПП на стадии использования | |
Метрики процесса
↓ |
Метрики разработки продукта
↓ ↓ |
Метрики выполнения программы ↓ | |
- трудоемкость (плановая и фактическая) - повторное использование - фактическая длительность недели - обзор продуктов - отслеживание - завершение ↓ |
Статические: - проверка корректности - проверка сложности - проверка понимаемости
↓ |
Динамические: - производительность - мобильность (прогноз) - надежность (прогноз)
↓ |
- производительность (временная и ресурсная) - надежность (отказоустойчивость и восстанавливаемость) - корректность
↓ |
Контроль и управление процессом |
Верификация. Удобство использования, моделирование, прогнозирование надежности |
|
Классификация видов сложности пп
1) Алгоритмическая – асимптотические функции временной и емкостной сложности
2) Трудоемкость разработки
2.1) Интегральные – оценивают сложность по принципу «черного ящика». Размерно-ориентированные, функционально-ориентированные, Холстеда, сцепления модулей
2.2) Структурные – оценивают сложность по методу «белого ящика», используются при организации тестирования. Сложности маршрутов выполнения, сложности потока данных, связности фрагментов программы, метрика признаков графов управления
3) Сложность ПП при исполнении
3.1) Временная
3.2) Программная
3.3) Информационная
Метрики Холстеда.
Позволяют оценить ПП в плане корректности, сложности, надежности.
В любой реализации на любом языке можно выделить измеримые параметры: операнды (переменные или константы) и операторы (символы или комбинации символов, влияющие на формирование значений и порядок использования операндов)
Основные измеряемые параметры:
1) Число уникальных операторов
2) Число уникальных операндов
3) Общее число операторов N1
4) Общее число операндов N2
Дополнительные параметры:
1) Частота вхождений i-го оператора f1i
2) Частота вхождений j-го операнда f2j
Словарь программы:
Опытная длина реализации:
Пример программы на Pascal
function GCD(a,b:integer):integer;
Label L1;
Var G,R:integer;
Begin
if (a=0) then begin
GCD:=b; return;
end;
if (b=0) then begin
GCD:=a; return;
end;
L1:
G:=a/b;
R:=a-b*G;
if (R=0) then begin
GCD:=b; return;
end;
a:=b; b:=R; GOTO L1;
end;
Оператор |
Номер (i) |
f1i |
Операнд |
Номер (j) |
f2j |
:= |
1 |
7 |
GCD |
1 |
3 |
= |
2 |
3 |
G |
2 |
2 |
|
|
|
R |
3 |
3 |
if then |
3 |
3 |
a |
4 |
5 |
/ |
4 |
1 |
b |
5 |
7 |
* |
5 |
1 |
0 |
6 |
3 |
- |
6 |
1 |
|
|
|
() begin end |
7 |
8 |
|
|
|
goto |
8 |
1 |
|
|
|
function GCD |
9 |
1 |
|
|
|
return |
10 |
3 |
|
|
|
; |
11 |
14 |
|
|
|
Пример программы на языке С:
int GCD(int a, int b)
{
int G;
int R;
if (!a) return (b);
if (!b) return (a);
while(1)
{
G=a/b;
R=a-b*G;
if (R) { a=b; b=R;}
else return (b);
}
}
Оператор |
Номер (i) |
f1i |
Операнд |
Номер (j) |
f2j |
; |
1 |
9 |
GCD |
1 |
1 |
= |
2 |
4 |
G |
2 |
2 |
if else |
3 |
1 |
R |
3 |
3 |
if |
4 |
2 |
a |
4 |
5 |
while |
5 |
1 |
b |
5 |
7 |
/ |
6 |
1 |
1 |
6 |
1 |
* |
7 |
1 |
|
|
|
- |
8 |
1 |
|
|
|
! |
9 |
2 |
|
|
|
() {} |
10 |
11 |
|
|
|
int GCD |
11 |
1 |
|
|
|
return |
12 |
3 |
|
|
|
Программа на языке Assembler:
Оператор |
Номер (i) |
f1i |
Операнд |
Номер (j) |
f2j |
_gcd proc |
1 |
1 |
2 |
1 |
1 |
enter |
2 |
1 |
0 |
2 |
1 |
push |
3 |
1 |
si |
3 |
6 |
mov |
4 |
11 |
cx |
4 |
7 |
cmp |
5 |
1 |
word ptr [bp+6] |
5 |
1 |
ja short @1@86 |
6 |
1 |
bx |
6 |
8 |
call f_overflow |
7 |
1 |
word ptr [bp+8] |
7 |
1 |
far ptr |
8 |
1 |
sp |
8 |
1 |
or |
9 |
3 |
ax |
9 |
6 |
jne @1@70 |
10 |
1 |
word ptr [bp-2] |
10 |
1 |
jmp @1@338 |
11 |
1 |
dx |
11 |
3 |
jne @1@226 |
12 |
1 |
_gcd |
12 |
2 |
jmp @1@142 |
13 |
1 |
|
|
|
cwd |
14 |
1 |
|
|
|
idiv |
15 |
1 |
|
|
|
imul |
16 |
1 |
|
|
|
sub |
17 |
1 |
|
|
|
pop |
18 |
1 |
|
|
|
leave |
19 |
1 |
|
|
|
ret |
20 |
1 |
|
|
|
retp |
21 |
1 |
|
|
|
, |
22 |
18 |
|
|
|
Расчетная длина программы.
- теоретическая оценка длины программы
Для стилистически корректных программ
Для Pascal:
Для С:
Объем программы
Холстед вводит метрику объема (размера) программы как
В качестве символов используются логические символы (не буквы, а слова целиком)
Потенциальный объем – предельно сжатое представление программы. Он предполагает, что есть язык, в котором в виде процедур реализован любой необходимый алгоритм.
Уровень программы.
- уровень программы
- сложность программы
- оценка уровня программы