Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
Оценка характеристик на основе метрик Холстеда
Составим таблицы, необходимые для вычисления характеристик программы по методике Холстеда:
Заполним каждую из таблиц для каждого файла:
Таблица 2 Словарь операторов и операций для файла MainWindow.xaml.cs
№ п/п
| Операторы,
операции
| Номера строк
| Количество повторений
|
| using
|
|
|
| namespace
|
|
|
| public
| 8, 10
|
|
| partial
|
|
|
| class
|
|
|
| :
|
|
|
| void
| 15, 21
|
|
| object
| 15, 21
|
|
| RoutedEventArgs
| 15, 21
|
|
| new
| 17, 23
|
|
| Task1_Window.Show();
|
|
|
| Task2_Window.Show();
|
|
|
| FirstTask
|
|
|
| FirstTask()
|
|
|
| SecondTask
|
|
|
| SecondTask()
|
|
|
| {.. }
| 4..27, 9..26, 11..13, 16..19, 22..25
|
|
| (..)
| 10, 12, 15, 17, 18, 21, 23, 24
|
|
| =
| 17, 23
|
|
| ;
| 12, 17, 18, 23, 24
|
|
| .
| 18, 24
|
|
| System
|
|
|
| InitializeComponent()
|
|
| Всего
| 23 оператора/операции
| 27 строк
| 45 повторений
|
Таблица 3 Словарь операндов для файла MainWindow.xaml.cs
№ п/п
| Операнды
| Номера строк
| Количество повторений
|
| System.Windows
|
|
|
| MainWindow
|
|
|
| Window
|
|
|
| MainWindow()
|
|
|
| FirstTaskButton_Click()
|
|
|
| SecondTaskButton_Click()
|
|
|
| sender
| 15, 21
|
|
| e
| 15, 21
|
|
| Task1_Window
| 17, 18
|
|
| Task2_Window
| 23, 24
|
|
| KDZ_Ternovoy
|
|
| Всего
| 11 операндов
| 27 строк
| 15 повторений
|
Таблица 4 Словарь операторов и операций для файла FirstTask.xaml.cs
№ п/п
| Операторы,
операции
| Номера строк
| Количество повторений
|
| using
| 1,2,3
|
|
| namespace
|
|
|
| public
| 10,12
|
|
| partial
|
|
|
| class
|
|
|
| :
|
|
|
| void
| 19,26,37,52
|
|
| object
| 19,26,52
|
|
| RoutedEventArgs
| 26,52
|
|
| TextChangedEventArgs
|
|
|
| .
| 2,3,8,16,22,29,31,32,41,42,46,47,54
|
|
| GeneralMethods.validateInputTextAsInteger()
| 22,29
|
|
| Convert.ToInt64()
| 22,29,31
|
|
| changeFormElementStates()
| 22,37
|
|
| =
| 16,31,32,41,42,46,47
|
|
| ;
| 1,2,3,14,16,22,31,32,41,42,46,47,54
|
|
| this
|
|
|
| bool
|
|
|
| if
| 29..33,39..44
|
|
| else
| 44..49
|
|
| private
| 19,26,37,52
|
|
| nearest.ToString()
|
|
|
| >
| 22,29
|
|
| &&
| 22,29
|
|
| InitializeComponent()
|
|
|
| Task1MethodContainer.searchForNearestPerfect()
|
|
| Всего
| 26 оператора/операции
| 57 строк
| 88 повторений
|
Таблица 5 Словарь операндов для файла FirstTask.xaml.cs
№ п/п
| Операнды
| Номера строк
| Количество повторений
|
| System
|
|
|
| System.Windows
|
|
|
| SystemWindows.Controls
|
|
|
| KDZ_Ternovoy
|
|
|
| FirstTask
|
|
|
| Window
|
|
|
| FirstTask()
|
|
|
| searchForNearestPerfectButton.IsEnabled
| 16,42,47
|
|
| false
| 16,42
|
|
| inputNumberTextBox_TextChanged()
|
|
|
| searchForNearestPerfectButton_Click()
|
|
|
| changeFormElementStates()
|
|
|
| closeFirstTaskButton_Click()
|
|
|
| inputNumberTextBox.Text
| 22,29,31
|
|
| sender
| 19,26,52
|
|
| e
| 19,26,52
|
|
|
| 22,29
|
|
| nearest
| 31,32
|
|
| outputTextBox.Content()
|
|
|
| validateState
| 37,39
|
|
| wrongInputNumberLabel.Visibility
| 41,46
|
|
| Visibility.Visible
|
|
|
| Visibility.Hidden
|
|
|
| searchForNearestPerfectButton.IsEnabled
| 42,47
|
|
| true
|
|
| Всего
| 25 операндов
| 57 строк
| 40 повторений
|
Таблица 6 Словарь операторов и операций для файла Task1MethodContainer.cs
№ п/п
| Операторы,
операции
| Номера строк
| Количество повторений
|
| using
|
|
|
| namespace
|
|
|
| public
| 8, 28
|
|
| class
|
|
|
| static
| 12, 28
|
|
| private
|
|
|
| Int64
| 12,28,14,31
|
|
| bool
|
|
|
| if
| 15,20,37,41
|
|
| else
|
|
|
| return
| 16,23,39,43,51
|
|
| int
|
|
|
| while
| 35..46
|
|
| try
| 33..47
|
|
| catch
| 48..50
|
|
| =
| 14,17,31,21
|
|
| ==
| 20,23
|
|
| ;
| 1,14,15,16,21,23,31,35,43,45,51
|
|
| <=
|
|
|
| <
|
|
|
| ++
| 4,17
|
|
| %
|
|
|
| +
| 21,41,43
|
|
| -
| 37,39
|
|
| ?..:..
|
|
|
| {..}
| 4..54, 9..53, 13..24, 18..22, 25..52, 34..47, 37..46, 38..40, 24..44, 49..50
|
|
| (..)
| 12,15,17,20,23,28,35,37,40
|
|
| isPerfect
| 37,41
|
| Всего
| 28 оператора/операции
| 54 строчки
| 77 повторений
|
Таблица 7 Словарь операндов для файла Task1MethodContainer.cs
№ п/п
| Операнды
| Номера строк
| Количество повторений
|
| System
|
|
|
| Task1MethodContainer
|
|
|
| isPerfect
|
|
|
| number
| 12,15,17,20, 23
|
|
| sum
| 14,21,23
|
|
|
| 14,20,31,51,15
|
|
| false
| 16,23
|
|
| i
| 17,20,23
|
|
|
|
|
|
| true
|
|
|
| searchForNearestPerfect
|
|
|
| basicNumber
| 28,37,41,39,43
|
|
| delta
| 31,37,39,41,43,45
|
| Всего
| 13 операндов
| 54 строчки
| 35 повторений
| Таблица 8 Словарь операторов и операций для файла Task2MethodContainer.cs
№ п/п
| Операторы,
операции
| Номера строк
| Количество повторений
|
| using
| 1,2,3,4
|
|
| namespace
|
|
|
| public
| 20,58,72,99,103,109,115
|
|
| class
| 11,94
|
|
| static
| 14,20,58,72
|
|
| private
| 14,96,97
|
|
| int
| 14,16,20,26,34,40,48,50,58,72,96,97,103,109,115
|
|
| return
| 16,54,68,86
|
|
| List<List<Point>>
| 20,22
|
|
| List<Point>
| 23,36,,47,72
|
|
| double
| 27,28,31
|
|
| new
| 22,36,47,50,60,62,74,76,78
|
|
| List<List<Point>>()
|
|
|
| List<Point>()
| 36,47
|
|
| =
| 22,26,27,28,31,34,36,38,43,37,38,60,61,62,63,64,65,66,74,75,76,78,85,105,106,112,118
|
|
| getNumberOfPolyLines()
|
|
|
| /
| 27,31
|
|
| *
| 31,40,50
|
|
| for
| 34..44,38..41,48..51
|
|
| foreach.. in
| 80..83
|
|
| <
| 38,48
|
|
| +
| 16,27,38,48,82,84
|
|
| ++
| 34,38,48
|
|
| Add
| 40,42,50,52,82,84
|
|
| Math.Cos()
| 40,50
|
|
| Math.Sin()
| 40,50
|
|
| +=
|
|
|
| {..}
| 7..121,12..89,15..17,21..55,35..44,39..41,49..51,59..69,73..88,81..83.95..120,100..12,104..107,110..113,116..119
|
|
| (..)
| 14,16,20,22,26,27,34,36,38,40,42,46,47,48,50,52,58,60,62,72,74,76,78,80,82,84,99,103
|
|
| ,
| 20,33,40,50,58,72,82,84,103
|
|
| .
| 2,3,4,31,40,42,50,52,61,62,63,64,65,66,75,76,82,84,85,105,106
|
|
| ;
| 1,2,3,4,16,22,23,26,27,28,31,34,36,38,40,42,43,47,48,50,52,54,60,61,62,63,64,65,66,68,74,75,76,78,82,84,86,96,96,105,106,111,112,117,118
|
| Всего
| 28 оператора/операции
| строк
| 304 повторения
|
Таблица 9 Словарь операндов для файла Task2MethodContainer.cs
№ п/п
| Операнды
| Номера строк
| Количество повторений
|
| System
| 1,2,3,4,82,84
|
|
| KDZ_Ternovoy
|
|
|
| Task2MethodContainer
|
|
|
| getNumberOfPolyLines()
|
|
|
| K
| 6,14,16,20,26,31,38,48
|
|
|
|
|
|
|
| 16,31,61
|
|
| getPolylineList()
|
|
|
|
| 34,84
|
|
|
| 27,38
|
|
| Math.PI
|
|
|
| length
| 20,27,50
|
|
| numberOfPolylines
| 26,27,34
|
|
| deltaLength
| 27,28,43
|
|
| tempDeltalength
| 28,40,40,43
|
|
| polylineList
| 22,42,52,54
|
|
| pointList
| 23,26,30,42,47,50,52,72,80,84
|
|
| degree
|
|
|
| i
| 38,40,48,50
|
|
| cornerDelta
| 31,40,50
|
|
| getLine()
|
|
|
| X
| 58,63,72,82,84,103,105,109
|
|
| Y
| 58,65,72,82,84,103,106,115
|
|
| X1
| 58,63,64
|
|
| Y1
| 58,65,66
|
|
| line
| 60,61,62,63,64,65,66,68
|
|
| line.StrokeThickness
|
|
|
| line.Stroke
|
|
|
| Colors.Black
| 62,76
|
|
| getPolyline
|
|
|
| polyline
| 74,75,76,85,86
|
|
| polyline.StrokeThickness
|
|
|
| points
| 78,82,84,85
|
|
| polyline.Stroke
|
|
|
| Point
| 20,22,23,26,40,47,50,72,80,82,84,94,99,103
|
|
| m_X
| 96,111,112
|
|
| m_Y
| 97,118,119
|
| Всего
| 37 операндов
| 122 строки
| 182 повторения
|
Таблица 10 Словарь операторов и операций для файла GeneralMethods.cs
№ п/п
| Операторы,
операции
| Номера строк
| Количество повторений
|
| using
|
|
|
| namespace
|
|
|
| class
|
|
|
| static
|
|
|
| public
|
|
|
| bool
|
|
|
| string
|
|
|
| Int64
|
|
|
| try
|
|
|
| catch
|
|
|
| return
| 20,22
|
|
| Convert.ToInt64()
|
|
|
| {..}
| 4..26,9..25,12..23,15..17,19..21
|
|
| (..)
| 11,16,18
|
|
| ;
| 1,13,16,20,22
|
|
| .
|
|
|
| =
|
|
| Всего
| 17 операторов/операций
| 26 строк
| 28 повторений
|
Таблица 11 Словарь операндов для файла GeneralMethods.cs
№ п/п
| Операнды
| Номера строк
| Количество повторений
|
| System
|
|
|
| KDZ_Ternovoy
|
|
|
| validateInputTextAsInteger
|
|
|
| inputText
| 11,16
|
|
| GeneralMethods
|
|
|
| number
| 13,16
|
|
| FormatException
|
|
|
| false
|
|
|
| true
|
|
| Всего
| 9 операндов
| 26 строки
| 11 повторений
|
Таблица 12 Словарь операторов и операций для файла Task2MethodContainer.cs
№ п/п
| Операторы,
операции
| Номера строк
| Количество повторений
|
| using
| 1,2,3,4,5
|
|
| namespace
|
|
|
| public
| 12,14
|
|
| partial
|
|
|
| class
|
|
|
| :
|
|
|
| InitializeComponent()
|
|
|
| drawPicture.RaiseEvent()
|
|
|
| private
| 25,39,44,49,54,82
|
|
| void
| 25,39,44,49,54,82
|
|
| new
|
|
|
| bool
|
|
|
| Button
|
|
|
| RoutedEventArgs
| 20,54,82
|
|
| Label
|
|
|
| object
| 20,54,82,39,44,49
|
|
| TextChangedEventArgs
| 39,44,49
|
|
| changeFormElementStates()
| 41,46,51
|
|
| GeneralMethods.
validateInputTextAsInteger()
| 41,46,51,56
|
|
| Task2MethodContainer
.getPolylineList()
|
|
|
| List<List<Point>>
|
|
|
| Convert.ToInt32()
| 60,61,64
|
|
| &&
| 51,56
|
|
| >
|
|
|
| <
|
|
|
| MyCanvas.Children.Add
| 70,76
|
|
| Task2MethodContainer.getLine()
|
|
|
| Task2MethodContainer.getPolyline()
|
|
|
| this
|
|
|
| this.Close()
|
|
|
| .
| 2,3,4,5,10,17,18,19,20,29,30,34,35,41,46,51,56,59,60,61,64,65,70,76,84
|
|
| ;
| 1,2,3,4,29,30,34,35,65,74,74
|
|
| {..}
| 8..88,13..87, …
|
|
| (..)
| 20,25,39,41,46,49,51,54,56,60,61,64,68,70,74,76,82
|
|
| if
| 27,56
|
|
| else
|
|
|
| for
| 74..79
|
|
| foreach in
|
|
|
| int
| 60,61,65,74
|
|
| !
|
|
| Всего
| 40 операторов/операций
| 88 строк
| 188 повторений
|
Таблица 13 Словарь операндов для файла Task2MethodContainer.cs
№ п/п
| Операнды
| Номера строк
| Количество повторений
|
| System;
|
|
|
| System.Windows
|
|
|
| System.Windows.Controls
|
|
|
| System.Windows.Documents
|
|
|
| System.Collections.Generic
|
|
|
| KDZ_Ternovoy
|
|
|
| SecondTask
|
|
|
| Window
|
|
|
| SecondTask()
|
|
|
| XTextBox.Text
| 17,41,56,60
|
|
| YTextBox.Text
| 18,46,56,61
|
|
| KTextBox.Text
| 19,51,56,64
|
|
| "0"
| 17,18
|
|
| "5"
|
|
|
| Button.ClickEvent
|
|
|
| validateState
| 25,27
|
|
| button
| 25,30,35
|
|
| label
| 25,29,34
|
|
| label.Visibility
| 29,34
|
|
| Visibility.Visible
|
|
|
| Visibility.Hidden
|
|
|
| button.IsEnabled
| 30,35
|
|
| true
|
|
|
| false
|
|
|
| sender
| 39,44,49,54,82
|
|
| e
| 39,44,49,54,82
|
|
| XTextBox_TextChanged
|
|
|
| YTextBox_TextChanged
|
|
|
| KTextBox_TextChanged
|
|
|
| drawPicture_Click
|
|
|
| wrongXLabel
|
|
|
| wrongYLabel
|
|
|
| wrongKLabel
|
|
|
| X
| 60,70,76
|
|
| Y
| 61,70,76
|
|
| numberOfFigures
| 65,68,74
|
|
| polyLineList.Count
|
|
|
| polyLineList
| 64,65,68,76
|
|
| numberOfFigures
| 65,68,74
|
|
| closeSecondTaskButton_Click
|
|
|
| pointList.X
|
|
|
| pointList.Y
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Всего
| 36 операндов
| 88 строк
| 89 повторений
|
Таблица 14 Входные и выходные переменные программы
Входные переменные
| Выходные переменные
| inputNumberTextBox.Text
| outputTextBox.Content
| XTextBox.Text
|
| YTextBox.Text
|
| KTextBox.Text
|
|
Расчет характеристик программы:
Таблица 15 Значения метрик Холстеда для программы
Наименование
характеристики
| Обозначение
и формула для вычисления
| Значение
| Число простых (уникальных) операторов и операций
| n 1
|
| Число простых (уникальных) операндов
| n 2
|
| Общее число всех операторов и операций
| N 1
|
| Общее число всех операндов
| N 2
|
| Число входных и выходных переменных (параметров)
| n 2*
|
| Словарь программы
| n = n 1 + n 2
|
| Длина реализации программы
| N = N 1 + N 2
|
| Объем программы (в битах)
| V = (N 1 + N 2) × log2(n 1 + n 2)
| 8211,15
| Потенциальный объем программы
| V * = (n 2* + 2) · log2(n 2* + 2)
| 19,65
| Уровень реализации программы
| L = V */ V
| 0,002
| Уровень реализации языка
| l = L × V *
| 0,0393
| Работа программирования
| E = V / L
|
|
Вывод
Уровень реализации исследуемой программы весьма низкий, так как потенциальный объем программы в значительной степени меньше ее реального объема (V* = 19,65; V = 8211,15).
|