Разработка и описание программы на заданную тематику
Автор работы: Пользователь скрыл имя, 31 Марта 2014 в 02:51, задача
Краткое описание
•Разработать программу по заданной тематике в среде Microsoft Visual;
•Составить описание разработанной программы, использую метрику Холстеда, три критерия, метрику Маккейба, функциональные указатели, модели Джелински – Моранды и Миллса.
Содержание
1. Формулировка задания 3
2. Описание программы 4
2.1 Постановка задачи 4
2.2 Алгоритм задачи 5
2.3 Исходный текст программы 6
2.4 Виды основных окон программы 13
3. Оценка характеристик программы на основе метрик Холстеда 16
4. Оценка структурной сложности программы на основе трех критериев и метрики Маккейба. 34
5. Оценка характеристик программы на основе функциональных указателей 39
6. Оценка надежности программы 42
6.1 Оценка надежности программы на основе модели Джелински – Моранды 42
6.2 Оценка надежности программы на основе модели Миллса 44
7. Выводы 46
8. Литература 47
Вложенные файлы: 1 файл
Документация_Новикова_372_КДЗ.docx
— 258.06 Кб (Скачать файл)
Таблица 1. Словарь операндов программы
№ п/п |
Операнды |
Количество повторений |
1 |
System |
10 |
2 |
Program |
1 |
3 |
Main() |
3 |
4 |
Main |
9 |
5 |
Values() |
2 |
6 |
Values |
6 |
7 |
TaskForm() |
2 |
8 |
TaskForm |
4 |
9 |
vs |
17 |
10 |
mf |
2 |
11 |
tf |
2 |
12 |
StateID |
4 |
13 |
Form |
3 |
14 |
InitializeComponent() |
2 |
15 |
TaskForm_Load() |
1 |
16 |
sender |
8 |
17 |
EventArgs |
8 |
18 |
e |
8 |
19 |
SecondPage |
2 |
20 |
FirstPage |
2 |
21 |
OperationID |
4 |
22 |
TaskForm_FormClosed() |
1 |
23 |
StreamWriter |
2 |
24 |
StreamReader |
2 |
25 |
Stream |
1 |
26 |
Car |
5 |
27 |
Name |
9 |
28 |
Price |
12 |
29 |
Power |
10 |
30 |
CarList |
12 |
31 |
List<Car> |
1 |
32 |
CreateButton_Click |
1 |
33 |
FindButton_Click |
1 |
34 |
CheckValue |
6 |
35 |
str |
7 |
36 |
sw |
4 |
37 |
sr |
3 |
38 |
paramID |
5 |
39 |
st |
3 |
40 |
i |
26 |
41 |
ValueList |
5 |
42 |
ProcessButton_Click |
1 |
43 |
MinValue |
4 |
44 |
MaxValue |
4 |
45 |
b |
6 |
46 |
OpID |
4 |
47 |
StID |
4 |
48 |
FirstTaskButton_Click |
1 |
49 |
Main_FormClosed |
1 |
50 |
FormClosedEventArgs |
2 |
Всего |
243 | |
Таблица 2. Входные и выходные переменные программы
Входные переменные |
Выходные переменные |
"Вы хотите
продолжить тестирование | |
"Ошибка в параметре поиска!" | |
"Марка автомобиля: " + "Мощность: " + "Цена:" | |
"Марка автомобиля: " + "Мощность: " + "Цена:" | |
"Ничего не найдено!" | |
"Близнецы: " | |
"Ничего не найдено!" | |
"Ошибка при вводе параметров!" | |
Всего 8 | |
Таблица 3. Значения метрик Холстеда для программы
Наименование характеристики |
Обозначение и формула для вычисления |
Значение |
Число простых (уникальных) операторов и операций |
n1 |
80 |
Число простых (уникальных) операндов |
n2 |
50 |
Общее число всех операторов и операций |
N1 |
807 |
Общее число всех операндов |
N 2 |
243 |
Число входных и выходных переменных (параметров) |
n 2* |
8 |
Словарь программы |
n = n 1 + + n 2 |
130 |
Длина реализации программы |
N = N1 + N2 |
1050 |
Объем программы (в битах) |
V = (N1 + N2) × log2(n 1 + n 2) |
7371 |
Потенциальный объем программы |
V* = (n2* + 2) · log2(n2* + 2) |
33,2 |
Уровень реализации программы |
L = V*/V |
0,005 |
Уровень реализации языка |
l = L × V* |
0,166 |
Работа программирования |
E = V / L |
1474200 |
Потенциальный объем программы (V*) меньше объема программы (V). В связи с этим уровень реализации программы очень низкий (L=0,005).
4. Оценка структурной сложности
программы на основе трех критериев
и метрики Маккейба.
Граф сложности программы
Граф сложности программы имеет 23 вершины, 8 из которых разветвлены, и 29 ребер.
Первый критерий
Проведем оценку алгоритмической сложности графа по первому критерию. Определим минимальный набор маршрутов, проходящих через каждый оператор ветвления и по каждой дуге.
Вершины с разветвлениями (выделены цветом): 1, 2, 3, 5, 8, 9, 15, 20
М: 1-2-4-6-7-2-5-8-10-2-5-8-11-18-20-22-1-2-5-9-12-18-20-22-1-2-5-9-13-2-5-8-11-18-20-22-1-3-14-15-17-19-20-22-1-3-14-15-16-3-14-15-17-19-20-21-23
Данный маршрут проходит по всем вершинам ветвления, причем хотя бы один раз по каждой дуге графа сложности, что соответствует требованиям первого критерия.
S1 = p1 = 32
Второй критерий
Проведем оценку алгоритмической сложности графа по второму критерию. Необходимо определить число проверок каждого линейно независимого цикла и линейно независимого ациклического маршрута. Количество проверок определяется цикломатическим числом графа, которое определяется следующим соотношением:
Z = nв +1, где nв – количество вершин ветвления.
В нашем случае количества вершин ветвления равно 8, следовательно
Z = 8+1 = 9
Выделим эти маршруты.
1) Ациклические маршруты
М1: 1-2-5-8-11-18-20-21-23 р1 = 5
М2: 1-2-5-9-12-18-20-21-23 р2 = 5
М3: 1-3-14-15-17-19-20-21-23 р3 = 4
2) Циклические маршруты
М4: 2-4-6-7 р4 = 1
М5: 2-5-8-10 р5 = 3
М6: 2-5-9-13 р6 = 3
М7: 3-14-15-16 р7 = 2
М8: 1-2-5-9-12-18-20-22 р8 = 5
М9: 1-3-14-15-17-19-20-22 р9 = 4
Тестирование программы по указанным маршрутам позволит проверить все операторы ветвления программы. Метрика структурной сложности определяется по следующему соотношению:
S2 = = 32
Матрица смежности
Матрица имеет размер 23х23, что соответствует количеству вершин в графе. Номер столбца соответствует номеру вершины, из которой выходит дуга, а номер строки соответствует номеру вершины, в которую входит дуга.
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | |
1 |
1 |
||||||||||||||||||||||
2 |
1 |
1 |
1 |
1 |
|||||||||||||||||||
3 |
1 |
1 |
|||||||||||||||||||||
4 |
1 |
||||||||||||||||||||||
5 |
1 |
||||||||||||||||||||||
6 |
1 |
||||||||||||||||||||||
7 |
1 |
||||||||||||||||||||||
8 |
1 |
||||||||||||||||||||||
9 |
1 |
||||||||||||||||||||||
10 |
1 |
||||||||||||||||||||||
11 |
1 |
||||||||||||||||||||||
12 |
1 |
||||||||||||||||||||||
13 |
1 |
||||||||||||||||||||||
14 |
1 |
||||||||||||||||||||||
15 |
1 |
||||||||||||||||||||||
16 |
1 |
||||||||||||||||||||||
17 |
1 |
||||||||||||||||||||||
18 |
1 |
1 |
|||||||||||||||||||||
19 |
1 |
||||||||||||||||||||||
20 |
1 |
1 |
|||||||||||||||||||||
21 |
1 |
||||||||||||||||||||||
22 |
1 |
||||||||||||||||||||||
23 |
1 |
Матрица достижимости
Матрица достижимости, как и матрица смежности, имеет размер 23х23. Номер столбца матрицы определяет номер вершины, из которой можно достичь другие вершины графа, используя циклические и ациклические маршруты. Номера строк определяют номера достижимых вершин графа.
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
2 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
3 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
4 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
5 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
6 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
7 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
8 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
9 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
10 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
11 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
12 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
13 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
14 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
15 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
16 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
17 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
18 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
19 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
20 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
21 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
22 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||
23 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Третий критерий
Проведем оценку алгоритмической сложности по третьему критерию. Согласно данному критерию, необходимо выделить все возможные маршруты управления.
М1: 1-2-4-6-7-2-5-8-11-18-20-21-23 p1 = 6
М2: 1-2-5-8-10-2-5-8-11-18-20-21-23 p2 = 8
М3: 1-2-5-8-11-18-20-21-23 p3 = 5
М4: 1-2-5-9-13-2-5-9-12-18-20-21-23 p4 = 8
М5: 1-2-5-9-12-18-20-21-23 p5 = 5
М6: 1-3-14-15-16-3-14-15-17-19-20-21-23 p6 = 6
М7: 1-3-14-15-17-19-20-21-23 p7 = 4
М8: 1-2-5-9-12-18-20-22-1-3-14-15-17-19-20-21-23 p8 = 9
Оценку структурной сложности программы рассчитаем по следующему соотношению:
S3 = = 51
Выводы
Исходя из полученных результатов расчета метрик структурной сложности по первому (S1 = 32), второму (S2 = 32) и третьему (S3 = 51) критериям выделения маршрутов можно сделать вывод, что программа, имеющая такой граф управления, имеет невысокую алгоритмическую сложность, так как количество используемых в тексте операторов условий равно 9, для проверки которых необходимо проверить от 9 до 51 тестовых вариантов исходных данных.
Метрика Маккейба
Оценим алгоритмическую сложность программы на основе метрики Маккейба. В соответствии с теорией Маккейба сложность алгоритма оценивается величиной цикломатического числа, которая определяется по следующему соотношению:
Z = m – n + 2 , где
m – количество дуг графа, построенного на основе алгоритма программы;
n – количество вершин графа.
В соответствии с полученным графом:
m = 29
n = 23
Следовательно,
Z = 29 – 23 + 2 = 8
Выводы
Таким образом, в соответствии со значением цикломатического числа в полученном графе управления можно выделить 8 независимых контуров, которые определяют 8 независимых маршрутов, ведущих из начальной вершины в конечную. Значение полученного цикломатического числа не превышает 10, что говорит о незначительной сложности алгоритма решения задачи.
5. Оценка характеристик программы
на основе функциональных указателей
Для расчета FP – метрик, будем использовать следующую формулу:
Рассчитаем функциональные указатели программы.
f1 – количество внешний вводов (вводов данных пользователем) – 4 (Power/Price (см. строки 111 и 115) для первой задачи и MinValue/MaxValue (см. строку 161) для второй задачи);
f2 – количество внешних выводов (отчеты, сообщения, распечатки, экраны) – 8 (см. строки 53, 127, 139, 146, 152, 184, 189, 196);
f3 – количество внешних запросов – 2 (выбор файла/создание файла);
f4 – количество локальных внутренних логических файлов – 0;
f5 – количество внешних интерфейсных файлов – 0.
Сведем полученные данные в Таблицу.
Таблица 1 – исходные данные для расчета FP - метрик
Имя характеристики |
Количество с учетом сложности | |||
Низкий |
Средний |
Высокий |
Итого | |
Внешние вводы |
4*3=12 |
m*4=0 |
m*6=0 |
12 |
Внешние выводы |
0*4=0 |
8*5=40 |
0*7=0 |
40 |
Внешние запросы |
2*3=6 |
0*4=0 |
0*6=0 |
6 |
Внутренние логические файлы |
0*7=0 |
0*10=0 |
0*15=0 |
0 |
Внешние интерфейсные файлы |
0*5=0 |
0*7=0 |
0*10=0 |
0 |
Общее количество |
F = 58 | |||