Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
Оценка характеристик на основе метрик Холстеда
Составим таблицы, необходимые для вычисления характеристик программы по методике Холстеда:
Заполним каждую из таблиц для каждого файла:
Таблица 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).
|