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

40 чел.

Задание: Для любого приложения из лабораторной работы № 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

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


 

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

40711. Инвестиции - источники формирования и объекты вложений (инвестирования) 32 KB
  Инвестиции источники формирования и объекты вложений инвестирования. Инвестиции от лат. Выделяют также производственные инвестиции направляемые на новое строительство реконструкцию расширение и техническое перевооружение действующих предприятий и интеллектуальные вкладываемые в создание интеллектуального духовного продукта; контролирующие прямые инвестиции обеспечивающие владение более чем 50 голосующих акций другой компании и неконтролирующие обеспечивающие владение менее чем 50 голосующих акций другой компании. В зависимости...
40712. Финансовый рынок: структура и механизм функционирования 31 KB
  Финансовый рынок это сфера проявления экономических отношений между продавцами и покупателями финансовых денежных ресурсов и инвестиционных ценностей то есть инструментов образования финансовых ресурсов между их стоимостью и потребительной стоимости. Как и любой рынок финансовый рынок предназначен для установления непосредственных контактов между покупателями и продавцами финансовых ресурсов. Финансовая система Российской Федерации включает следующие звенья финансовых отношений: государственную бюджетную систему; внебюджетные...
40713. Рентабельность. Виды и методика расчета ее уровня 31.5 KB
  Рентабельность. РЕНТАБЕЛЬНОСТЬ от нем. Количественно рентабельность исчисляется как частное от деления прибыли на затраты расход ресурсов обеспечивающих получение прибыли. Рентабельность продукции определяется как отношение прибыли от ее реализации к себестоимости.
40714. Бизнес-планирование 37 KB
  Бизнеспланирование. В рыночной экономике бизнесплан является рабочим инструментом используемым во всех сферах предпринимательства. Основной целью разработки бизнесплана является планирование хозяйственной деятельности фирмы на ближайший и отдаленные периоды в соответствии с потребностями рынка и возможностями получения необходимых ресурсов. Другие цели разработки плана бизнеса могут быть различными например: уяснить степень реальности достижения намеченных результатов; доказать определенному кругу лиц целесообразность...
40715. Корпоративное управление как важнейший фактор экономического роста 39 KB
  Надлежащий режим корпоративного управления способствует эффективному использованию корпорацией своего капитала подотчетности органов ее управления как самой компании так и ее акционерам. В результате формирования такой структуры акционерного капитала утвердилась ориентация крупных акционеров не на повышение доходов по акциям компании не на рост ее капитализации а на сохранение существующих взаимоотношений с предприятием. В самом общем виде общепризнанные международные принципы корпоративного управления сводятся к следующему: ...
40716. Анализ кадрового потенциала организации 29 KB
  Анализ кадрового потенциала организации. Для комплексной оценки кадрового потенциала используются три группы взаимодополняющих оценок: стоимостные; количественные; качественные. Стоимостные оценки базируются на возникшей в 60е годы нашего столетия теории кадрового капитала одним из ярких представителей которой является американский ученый Р. Для всесторонней оценки кадрового потенциала на кризисном предприятии проводится так называемый кадровый аудит.
40717. Тенденции и перспективы развития венчурного бизнеса в России и за рубежом 62.5 KB
  Тенденции и перспективы развития венчурного бизнеса в России и за рубежом. Сущность венчурного финансирования заключается в финансировании предложений по развитию производственной коммерческой или иной деятельности необходимой региону и ориентированной на получение прибыли на основе существующих или вновь для этого создаваемых малых предприятий путем вложения определенной части финансовых или иных ресурсов их деятельности без гарантии возвратности с учетом возможности потери вложенных средств если финансируемый проект не принесет после...
40718. Научно-технический и инновационный потенциал организации :сущность, структура и основные показатели оценки 41.5 KB
  Научнотехнический потенциалстрана регион организация общественная форма совокупности живого и общественного труда обеспечивающая производство новых знаний создание освоение нововведений в т. Межотраслевые технологические прогнозы кривые появления и развития новых технологий формирование компетенций поддерживающих прогрессивные технологии на уровне фирмы. Принципы финансирования незапланированных инициатив выявление новых идей сотрудников поощрение их нововведенческого поведения. Оценивать важность новых инициатив и их...
40719. Основные направления инновационной политики государства 53.5 KB
  Одним из важнейших показателей состояния и развития научной деятельности является численность исследователей техников и вспомогательного персонала занятых в инновационной сфере. Россия направляющая в научнотехническую сферу менее 1 ВВП все больше отстает от группы промышленно развитых и некоторых развивающихся стран. Недостаток капитала выступает сегодня в России в качестве одного из основных ограничителей научнотехнического развития. Устойчивой гарантией динамичного развития научнотехнической сферы в условиях рынка является только...