42718

ОЦЕНКА ХАРАКТЕРИСТИК ПРОГРАММ НА ОСНОВЕ ЛЕКСИЧЕСКОГО АНАЛИЗА

Лабораторная работа

Информатика, кибернетика и программирование

Определить значения метрик Холстеда на основе которых дать оценку качества разработанного исходного текста программы.1 Реализация программы Текст программы для реализации возможного решения поставленной задачи разработанной с использованием языка программирования С приведен в таблице 1: Таблица 1 Текст программы для вычисления значения функции F Номер строки Строки программы 1 using System; 2 nmespce holsted 3 { 4 clss Progrm 5 { 6 sttic void Minstring[] rgs 7 { 8 double x y F; 9 chr check; 10 do 11 { 12 Console.2 Словарь программы В...

Русский

2013-10-30

199.5 KB

37 чел.

Задание: Для любого приложения из лабораторной работы № 1 (часть 1) выполните оценку:

  1.  характеристик программы с помощью метрик Холстеда
  2.  функциональное тестирование

1 ОЦЕНКА ХАРАКТЕРИСТИК ПРОГРАММ НА ОСНОВЕ ЛЕКСИЧЕСКОГО АНАЛИЗА

1.1  Метрики Холстеда. Теоретическое введение

   См. книгу  Б.В. Черникова  и Б.Е. Поклонова «Оценка качества Программного обеспечения».

1.2 Задача «Расчет значений функции»

Разработать программу для вычисления значений функции F:

Значения аргументов функции ввести с клавиатуры. На экран монитора вывести значение функции.

Определить значения метрик Холстеда, на основе которых дать оценку качества разработанного исходного текста программы.

1.2.1 Реализация программы

Текст программы для реализации возможного решения поставленной задачи, разработанной с использованием языка программирования С#, приведен в таблице 1:


Таблица 1 Текст программы для вычисления значения функции
F

Номер строки

Строки программы

1

using System;

2

namespace holsted

3

{

4

class Program

5

{

6

static void Main(string[] args)

7

{

8

double x, y, F;

9

char check;

10

do

11

{

12

Console.WriteLine("Введите значение переменной x");

13

Console.Write("x=");

14

x = double.Parse(Console.ReadLine());

15

Console.WriteLine("Введите значение переменной y");

16

     Console.Write("y=");

17

      y = double.Parse(Console.ReadLine());

18

       if (x < y)

19

            F = Math.Sin(x) + Math.Cos(y) * Math.Cos(y);

20

       Else

21

            if (x == y)

22

                    F = Math.Log(x);

23

            else

24

                    F = Math.Sin(x) * Math.Sin(x) + Math.Cos(y);

25

       Console.WriteLine("F=" + F);

26

       Console.WriteLine("Хотите запустить программу вновь?Y/N");

27

         check = char.Parse(Console.ReadLine());

28

} while (check == 'Y' || check == 'y');

29

    }

30

 }

31

}

1.2.2 Словарь программы

В таблице  2 приведены операторы и операции, используемые в программе (столбец 2). Номера строк исходной программы, где встречается каждый оператор или операция, указаны в третьем столбце. В четвертом столбце указано число повторений каждого оператора или операции в исходном тексте программы.

Таблица 2. Словарь операторов и операций программы

№ пп

Операторы, операции

Номера строк

Количество повторений

1

using...;

1

1

2

namespace ...

2

1

3

class ...

4

1

4

static void...

6

1

5

double...

8

1

6

char...

9

1

7

do...while()

10-28

1

8

Console. WriteLine()

12, 15, 25, 26

4

9

Console.Write()

13, 16

2

10

....Parse()

14, 17,27

3

11

Console. ReadLineQ

14, 17, 27

3

12

if ()...else...

18,21

2

13

Math.Sin()

19, 24, 24

3

14

Math.Cos()

19, 19, 24

3

15

Math.LogO

22

1

16

;

1, 8, 9, 12, 13, 14, 15, 16, 17, 19, 22, 24, 25, 26, 27, 28

16

17

,

8, 8

2

18

*

19, 24

2

19

=

14, 17, 19, 22,24,27

6

20

+

19, 24, 25

3

21

<

18

1

22

= =

21,28, 28

3

23

{}

3(31), 5(30), 7(29), 11(28)

4

24

()

6, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 19, 19,21, 22, 24, 24,24,25, 26, 27, 27, 28

23

25

||

28

1

26

“ “

12,13,15,16,25,26

6

27

‘ ‘

28,28

2

28

.

12,13,14,14,15,16,17,17,19,19,19, 22,24,24,24,25,26,27,27

19

                                                                        Всего

116

Таким образом, количество строк этой таблицы есть число уникальных операторов и операций, появляющихся в данном тексте. Если вычислить сумму значений из четвертого столбца, то получим общее число всех операторов и операций, используемых в исходном тексте программы.

Для фигурных скобок, определяющих блок, приведены два номера строки. Первый определяет левую фигурную скобку, открывающую блок, а второй - закрывающую. Такая пара в словаре учитывается только один раз.

Словарь всех операторов в исходном тексте этой реализации программы сведен в столбце 2. В третьем столбце этой таблицы приведены номера строк исходной программы, где встречаются операторы. В последнем столбце приводится количество повторений (число вхождений) операторов в тексте программы.

Таким образом, количество строк этой таблицы есть число уникальных операторов программы. Сложив значения четвертого столбца, получим общее число вхождений всех операторов.

Проведем подробный анализ исходного текста программы в соответствии с полученной таблицей, начиная с первой позиции (первая строка программы - using System;).

Ключевое слово using представляет собой команду (инструкцию), обеспечивающую доступ к именам пространства имен System. Следовательно, команду using можно отнести к выполняемым операторам (см. таблицу 2, позиция 1). Оператор using встречается в программе всего один раз. Слово System  представляет собой имя, над которым осуществляется операция using.. Таким образом, имя System заносится в таблицу словаря операндов (см. табл. 3, позиция 1). Имя System встречается в программе один раз.

Следующая строка программы namespace holsted (см. таблицу 1, строка 2) состоит из оператора namespace и операнда holsted, которые также присутствуют в тексте программы в единственном экземпляре. Оператор занесен в таблицу операторов (см. таблицу 2, позиция 2), а операнд holsted - в таблицу операндов (см. таблицу 3, позиция 2).

Строки

class Program;

static void MainQ;

double x, y, F;

char check;

также представляют собой сочетание операторов и операндов, которые встречаются в тексте один раз (см. таблицу 1, строки 4, 6 и 8), где ключевые слова class, static void, double u char представляют соответственно операции, a Program, Main, x, y, F и check - имена (операнды). Все операции попадают в словарь операторов (см. таблицу 2), а имена - в словарь операндов (см. таблицу 3).

Следующий оператор do ... while() (см. таблицу 2, строки 10-28) представляет собой инструкцию реализации циклического алгоритма, которая используется в тексте программы один раз.

Рассмотрим тело цикла (блок операторов, заключенных между ключевыми словами do ... while). Первой строкой цикла является операция вызова функции вывода строк на экран монитора Console. WriteLine().

Данная операция повторяется в тексте программы 4 раза (см. таблицу. 1, строки 12, 15,25,26). В каждом из этих случаев применения оператора вызова функции (метода) Console.WriteLine() входным параметром функции является строка (строковая константа). Значение строковой константы в каждом случае применения оператора разное:

  •  "Введите значение переменной х ";
  •  "Введите значение переменной у";
  •  "F = ";
  •  "Хотите запустить программу вновь? Y/N".

Все перечисленные константы являются операндами и заносятся в таблицу 3. Каждый из перечисленных операндов используется один раз.

Следующим по ходу выполнения программы выполняется оператор Console.Write(); вызова функции вывода символов на экран (см. таблицу 1, строки 13, 16).

Оператор используется 2 раза с разными операндами:

  •  "х=";
  •  " у=".

каждый из которых используется в программе однократно.  Оператор включается в таблицу операторов, операнды - в таблицу операндов.

Следующая операция

х = double. Parse(Console.ReadLine());

включает три оператора:

  •  = - оператор присваивания (см. таблицу 1, строки 14, 17, 19, 22, 24, 27) используется в программе 6 раз;
  •  ... Parse() - оператор вызова функции преобразования строки в заданный тип (см. таблицу. 1, строки 14, 17, 27) используется в программе 3 раза;

Console.ReadLine() - оператор вызова функции считывания строки с клавиатуры (см. таблицу. 1, строки 14, 17, 27) используется в программе 3 раза.

Следующий оператор if ()...else... (см. таблицу  1, строки 18, 21) используется дважды в тексте программы для ветвления алгоритма.

Операции (см. таблицу 1, строки 19,22,24)

F = Math.Sin(x) + Math.Cos(у) * Math.Cos(y);

F = Math.Log(x);

F= Math.Sin(x) *Math.Sin(x) + Math.Cos(y)

включают следующие операторы:

  •  Math.Sin()- оператор вызова функции вычисления синуса, используется 3 раза;
  •  Math.Cos(y)- оператор вызова функции вычисления косинуса, применяется 3 раза;
  •  Math.Log(x) - оператор вызова функции вычисления логарифма, используется один раз.

Имена F, х и у являются операндами: F используется 5 раз, x - 8 раз, y - 7 раз.

Символы «;», «,», «*» и «+», используемые в программе, обозначают следующие операции:

  •  ; - операция определения завершения оператора, используется 16 раз;
  •  , - операция отделения элементов списка, используется 2 раза;
  •  - операция умножения, используется 2 раза;
  •  + - операция сложения (сцепления строк), используется 3 раза.

 Символы «<» и «= =» используются для определения логических  операций сравнения:

  •  < - операция сравнения «меньше», используется один раз;
  •  = = - операция сравнения «равно», используется 3 раза.

В позициях 23 и 24 таблицы 2. представлены символы, определяющие следующие операции:

  •  {} - операция начала и завершения блока инструкций, используется 4 раза;
  •  () - операция начала и завершения списка параметров или условия, используется 22 раза.

Оставшиеся четыре позиции таблицы 2 содержат символы:

  •  || - операция логического сложения (дизъюнкция), используется один раз;
  •  " " - операция определения строковых констант, используется 6 раз;
  •  ‘ ‘  - операция определения символьных констант, используется 2 раза;
  •  . - операция связывания имен, используется 19 раз.

В таблице 3 приведены операнды рассматриваемой программы.

Таблица 3. Словарь операндов программы

№ п/п

Операнды

Номера строк

Количество повторений

1

System

1

1

2

holsted

2

1

3

Program

4

1

4

Main

6

1

5

x

8, 14, 18, 19,21,22, 24, 24

8

6

y

8, 17, 18, 19, 19,21,24

7

7

check

9, 27, 28, 28

4

8

"Введите значение переменной х"

12

1

9

"х="

13

1

10

"Введите значение переменной у"

15

1

11

"у="

16

1

12

F

8,19, 22, 24,25

5

13

"Хотите запустить программу вновь? Y/N"

26

1


Продолжение таблицы 3

Операнды

Номера строк

Колич. повт.

14

'Y'

28

1

15

y

28

1

16

"F = "

25

1

                                                                         Всего

36

Проанализируем содержание таблицы 3. Позиции 1, 2, 3 и 4 содержат имена операндов System, holsted, Program, Main(), которые используются в программе по одному разу.

Строковые константы (позиции 8, 9, 10, 11, 13 и 16 таблицы 3):

"Введите значение переменной х";

"х=";

"Введите значение переменной у ";

"у=";

"Хотите запустить программу вновь? Y/N";

"F = "

используются в тексте программы однократно (см. таблицу 1).

Символьные константы ’У’ и у’ применяются также по одному разу (см. таблицу 1). Имена переменных х, у, check и F повторяются в программе соответственно 8, 7, 4 и 5 раз.

Для рассматриваемой программы список входных и выходных параметров приведен в таблице 4. Входными параметрами являются значения переменных:

  •  х = double.Parse(Console.ReadLine());
  •  у = double.Parse(Console.ReadLine());
  •  check=char. Parse(Console. ReadLine()).

Таблица 4. Входные и выходные переменные программы

Входные переменные

Выходные переменные

x

"Введите значение переменной х"

y

"х="

check

"Введите значение переменной у"

"y="

"F = "

"Хотите запустить программу вновь? Y/N"

F

Выходными значениями являются шесть констант, для которых имена совпадают со значениями, и одна переменная F:

  •  Console.WriteLine("Введите значение переменной х");
  •  Console. Write("x=");
  •  Console WriteLine ("Введите значение переменной у");
  •  Console. Write("y=");  •
  •  Console.WriteLine("F = "+F) - в этом случае два выходных параметра: строковая константа "F = " и переменная F;

Console.WriteLine("Хотите запустить программу вновь? Y/N").

1.3 Оценка характеристик программы

Используя сформированные таблицы с необходимыми параметрами для расчета и применяя соотношения Холстеда, вычислим характеристики рассматриваемой программы:

  •  словарь программы:   n = n1 + n2 = 28 + 16 = 44;  
  •  длина реализации:      N = N1 + N2 = 116 + 36 = 152;
  •  длина программы:      N ~ = n1* log2 n1+ n2* log2n2 = 28* log228+16* log216=28*4,81+16*4=134,68+64=198,68;
  •  объем программы в битах:  V = (N2+ N1) * log2 (n1 + n2) =(116 + 36) * log2(28 + 16) = 152 * log244 = 152*5,46 = 829,92;
  •  потенциальный объем программы:  V* = (n2*+ 2) *log2(n2 + 2) = (10 + 2) * log2(10 + 2) = 12 *3,58 = 42,96;
  •  уровень программы: L = V*/ V= 42,96 / 829,92 = 0,052;
  •  уровень языка:              = L* V* = 0,052 * 42,96 = 2,23;
  •  интеллектуальное содержание программы: I= L *V =0,052 * 829,92 = 43,16;

работа по программированию:   E=V / L = 829,92 / 0,052 = 15960.

Сведем все результаты расчетов метрик Холстеда в таблицу 5.


Таблица 5 - результаты расчетов метрик Холстеда

Наименование характеристики

Обозначение и формулы для вычислений

Значение

Число простых операторов и операций

n1

28

Число простых (уникальных) операндов

n2

16

Общее число всех операторов и операций

N1

116

Общее число всех операндов

N2

36

Число входных и выходных переменных (параметров)

n2*

10

Словарь программы

n = n1 + n2

44

Длина реализации программы

N = N1 + N2

152

Объем программы (в битах)

V = (N2+ N1) * log2 (n1 + n2)

830

Потенциальный объем программы

V* = (n2*+ 2) *log2(n2 + 2)

43

Уровень реализации программы

= L* V*

2,23

Работа по программированию

E=V / L

15960

ВЫВОД: Уровень исследуемой программы весьма низкий, так как потенциальный объем программы в значительной степени меньше ее реального объема.


 

А также другие работы, которые могут Вас заинтересовать

43055. Разработка предложений по созданию логистической системы 353.5 KB
  Считается, что анализируемые грузопотоки характеризуются стабильностью на проектную перспективу. Основной показатель, на который мы будем ориентироваться в ходе выполнения курсовой работы – это суммарные расходы на перевозку груза, которые зависят от количества перевозимого груза, расстояния перевозки и грузоподъемности подвижного состава, а также тарифа на перевозку.
43057. Разработка предложений по созданию логистической системы 319.93 KB
  Выбор и обоснование типа автотранспортного средства.1 Поставщики № поставщика Поставщик 51 Полтава 54 Карловка полтавса 61 Донецк 67 Красноармейск донец 83 ВолодарскВолынский житомир 85 Черняхов житомир 87 Городница житомио 114 Городище луганс 200 Монастыриска тернопол 350 Курджиново краснодар Порты отправления: Ейск Херсон Керчь. т Стоимость транспортировки 1т за 1км: С1км = 05 ден. Общая характеристика проектной ситуации Транспортная характеристика груза Стекло в ящиках витринное: Твердый прозрачный хрупкий материал получаемый...
43058. Разработка информационной системы по учёту продукции сети аптек 1001.5 KB
  Результаты дипломной работы – программное средство, с помощью которого можно вести учет продукции, оно является Windows – приложением и имеет удобный интерфейс. Программное средство даёт возможность просматривать данные, добавлять новые данные, изменять и удалять существующие данные, а также осуществлять поиск по таблицам.
43059. Проект электродинамического громкоговорителя 601 KB
  Для этого по графику зависимости (xm) (рис.2) находим минимальное допустимое, при заданной амплитуде смещения xm, значение ширины свободного воздушного зазора bз, от размера которого зависит скорость теплообмена и допустимая удельная мощность, которая рассеивается единицей поверхности. Величину Руд находим по графику зависимости Руд() (рис.3).
43060. МЕНЕДЖМЕНТ ПРОФЕСІЙНОЇ ДІЯЛЬНОСТІ 197.5 KB
  5 Методичні вказівки з виконання курсової роботи в межах курсу Менеджмент професійної діяльності для студентів спеціальностей напрямку підготовки 8. В процесі виконання курсової роботи керівником проектування здійснюються індивідуальні і групові консультації. Методичні вказівки З виконаннЯ курсової роботи 4.
43061. Основи менеджменту. Методичні вказівки 263 KB
  У роботі передбачається що студент уважно розгляне зовнішні і внутрішні чинники що впливають на діяльність організації і з урахуванням особливостей моменту буде використовувати розглянуті теоретичні положення. Загальний аналіз діяльності конкретної організації. Опис організації і її продукту. Бачення майбутнього організації.
43062. Модернизация привода главного движения универсального токарно-винторезного станка модели 1М63 2.8 MB
  Станок универсальный токарно-винторезный модели 1М63 предназначен для выполнения самых разнообразных токарных работ, в том числе точения конусов и нарезания резьб метрической, дюймовой, модульной и питчевой.
43063. Расчет аппарата гашения извести в производстве известкового молока на ОАО «АВИСМА» 319 KB
  Гашение извести протекает по реакции: CO H2O = COH2 1593 ккал. Вместе с тем следует избегать и переохлаждения гасящейся извести так как оно может значительно замедлить процесс гашения извести. С ростом температуры выделившийся гидрат окиси кальция выпадает в осадок и обволакивает поверхность кусков негашеной извести.