Макет приложения. Модель Липова ( tabPage 4) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Макет приложения. Модель Липова ( tabPage 4)



 

 

 


2.2.4 Form

 

 


 


tabPage4–содержит группы объектов, label78-74, label84-97, label82, groupBox5, button4.

label74–принимает текстовое значение «Количество используемых тестов»

label76–принимает текстовое значение «Общее количество искусственно внесенных ошибок

label77–принимает текстовое значение «Количество собственных ошибок, до начала тестирования

label78– принимает текстовое значение «Количество внесенных ошибок к концу тестирования

label75–принимает текстовое значение «Количество собственных ошибок к концу тестирования»

label86–принимает текстовое значение «Результат»

label82– принимает текстовое значение «Исходные данные»

label90– принимает текстовое значение «Конечный результат»

label91–принимает текстовое значение «Вероятность обнаружения ошибки при использовании различного числа m тестов»

label92–получает и выводит результат вычислений по формуле Липова, начальное значение «null»

label85– принимает сокращенное значение «КИТ»

label84– принимает сокращенное значение «ОКИВО»

label87– принимает сокращенное значение «КСОДНТ»

label88– принимает сокращенное значение «КВОКТ»

label89– принимает сокращенное значение «КСОКТ»

textBox20––получает значение введенных пользовательских данных в графу «Количество используемых тестов»

textBox22––получает значение введенных пользовательских данных в графу «Общее количество искусственных внесенных ошибок»

textBox23––получает значение введенных пользовательских данных в графу «Количество собственных ошибок до начала тестирования»

textBox24––получает значение введенных пользовательских данных в графу «Количество внесенных ошибок к концу тестирования»

textBox21––получает значение введенных пользовательских данных в графу «Количество собственных ошибок к концу тестирования»

button4–принимает текстовое значение «Очистить», а также отчищает все поля в данном блоке.

 

Описание программы

 

TabPage 1

Иерархия классов

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

Используемые элементы:

Button;

textBox;

label;

statusStrip;

menuStrip;

groupBox;

Обработчики событий

private void button5_Click(object sender, EventArgs e)

Функции

В данной вкладке одна функция

Функция Suman производит расчет по формуле Шумана и передает результат в соответствующий объект вывода, как изображено на рисунке 1.1

public void Lipov(EventArgs e_Lipov)

 {

 try

 {

 if (textBox20.Text == "")

 {

MessageBox.Show("Введите количество используемых тестов!", "Модель Липова");

 }

 if (textBox22.Text == "")

 {

MessageBox.Show("Введите общее количество искусственно внесенных ошибок!", "Модель Липова");

 }

 if (textBox23.Text == "")

 {

MessageBox.Show("Введите количество собственных ошибок до начала тестирования!", "Модель Липова");

 }

 if (textBox21.Text == "")

 {

MessageBox.Show("Введите количество собственных ошибок к концу тестирования!", "Модель Липова");

 }

 if (textBox24.Text == "")

 {

MessageBox.Show("Введите количество внесенных ошибок к концу тестирования!", "Модель Липова");

 }

 // Проверка на введенные значения

 int t20;

 if (!int.TryParse(textBox20.Text, out t20))

MessageBox.Show("Введите числовое значение!");

 int t21;

 if (!int.TryParse(textBox21.Text, out t21))

MessageBox.Show("Введите числовое значение!");

 int t22;

 if (!int.TryParse(textBox22.Text, out t22))

MessageBox.Show("Введите числовое значение!");

 int t24;

 if (!int.TryParse(textBox24.Text, out t24))

MessageBox.Show("Введите числовое значение!");

 int t23;

 if (!int.TryParse(textBox23.Text, out t23))

MessageBox.Show("Введите числовое значение!");

 }

 catch (Exception ex)

 {

 MessageBox.Show("Ошибка:" + ex.Message);

 }

 double m, q, S, N, n, V;

 m = Double.Parse(textBox20.Text);

 S = Double.Parse(textBox22.Text);

 N = Double.Parse(textBox23.Text);

 n = Double.Parse(textBox21.Text);

 V = Double.Parse(textBox24.Text);

 q = (n + V) / n;

 

 double Q = (m / (n + V)) * Math.Pow(n + V, q) * Math.Pow(m - n - V, 1 - q) * ((N / n) * (S / V) / ((N + S) / (n + V)));

 label92.Text = Q.ToString();

 label93.Text = m.ToString();

 label94.Text = S.ToString();

 label95.Text = N.ToString();

 label96.Text = V.ToString();

 label97.Text = n.ToString();

 if (Q < 0)

 {

 MessageBox.Show("Введены значения, при которых результат отрицателен!", "Модель Липова");

 }

 }

Результат работы вы можете видеть на рисунке 1.2

 

Рисунок 5.2 Расчет по модели Шумана

TabPage 3

Иерархия классов

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

Используемые элементы:

Button;

textBox;

label;

statusStrip;

menuStrip;

groupBox;

Обработчики событий

private void button3_Click(object sender, EventArgs e)

Функции

В данной вкладке тоже одна функция

Функция Moranda производит расчет по формуле Джелински-Моранды и выводит результат

public void Moranda(EventArgs e_Moranda)

 {

 try // Проверка вводимых значений на число и пустоту

 {

 if (textBox11.Text == "")

 {

MessageBox.Show("Введите количество ошибок спустя время!", "Модель Джелински-Моранды");

 }

 if (textBox13.Text == "")

 {

MessageBox.Show("Введите время обнаружения i-ошибки!", "Модель Джелински-Моранды");

 }

 if (textBox12.Text == "")

 {

MessageBox.Show("Введите коэффициент пропорциональности!", "Модель Джелински-Моранды");

 }

 if (textBox10.Text == "")

 {

MessageBox.Show("Введите число ошибок первоначально находящихся в программе!", "Модель Джелински-Моранды");

 }

 

 int t10;

 if (!int.TryParse(textBox10.Text, out t10))

MessageBox.Show("Введите числовое значение!");

 int t12;

 if (!int.TryParse(textBox12.Text, out t12))

MessageBox.Show("Введите числовое значение!");

 int t13;

 if (!int.TryParse(textBox13.Text, out t13))

MessageBox.Show("Введите числовое значение!");

 int t11;

 if (!int.TryParse(textBox11.Text, out t11))

MessageBox.Show("Введите числовое значение!");

 }

 catch (Exception ex)

 {

 MessageBox.Show("Ошибка:" + ex.Message);

 }

 double lambda, C, N, i, P,t;

 N = Double.Parse(textBox10.Text);

 C = Double.Parse(textBox12.Text);

 i = Double.Parse(textBox11.Text);

 t = Double.Parse(textBox13.Text);

 lambda = C * (N - i + 1);

 P = lambda * Math.Exp(lambda * (-1) * t);

 textBox4.Text = " Функция плотности распределения времени обнаружения i-й ошибки, отсчитываемого от момента выявления:" + P.ToString();

 label16.Text = N.ToString();

 label19.Text = C.ToString();

 label18.Text = i.ToString();

 label17.Text = t.ToString();

 }

Результат работы виден на рисунке 1.3

Рисунок 5.3 Результат выполнения расчетов по модели Джелински-Моранды

 

TabPage5

 

Иерархия классов

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

Используемые элементы:

Button;

textBox;

label;

statusStrip;

menuStrip;

groupBox;

Обработчики событий

private void button1_Click(object sender, EventArgs e)

Функции

В данной вкладке одна функция

Функция Mills производит расчет по формуле Миллса и выводит результат

public void Mills(EventArgs e_Mills)

 {

 try

 {

 if (textBox1.Text == "")

 {

MessageBox.Show("Введите количество искусственно внесенных ошибок!", "Модель Миллса");

 }

 if (textBox2.Text == "")

 {

MessageBox.Show("Введите число собственных найденных ошибок!", "Модель Миллса");

 }

 if (textBox13.Text == "")

 {

MessageBox.Show("Введите число обнаруженных к моменту оценки искусственных ошибок!", "Модель Миллса");

 }

 int t1;

 if (!int.TryParse(textBox1.Text, out t1))

MessageBox.Show("Введите числовое значение!");

 int t2;

 if (!int.TryParse(textBox2.Text, out t2))

MessageBox.Show("Введите числовое значение!");

 int t3;

 if (!int.TryParse(textBox3.Text, out t3))

MessageBox.Show("Введите числовое значение!");

 }

catch (Exception ex)

 {

 MessageBox.Show("Ошибка:" + ex.Message);

 }

 double S, n, V, N;

 S = Double.Parse(textBox1.Text);

 n = Double.Parse(textBox2.Text);

 V = Double.Parse(textBox3.Text);

 

 N = (S * n) / V;

 

 label44.Text = "Первоначальное число ошибок в программе равно:" + N.ToString();

 label10.Text = S.ToString();

 label11.Text = n.ToString();

 label12.Text = V.ToString();

 }

Результат выполнения вычислений по формуле Миллса хорошо видны на рисунке 1.4

 

TabPage4

Иерархия классов

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

Используемые элементы:

Button;

textBox;

label;

statusStrip;

menuStrip;

groupBox;

Обработчики событий

private void button4_Click(object sender, EventArgs e)

Функции

В данной вкладке одна функция

Функция Lipov производит вычисления по формуле Липова и выводит результат

public void Lipov(EventArgs e_Lipov)

 {

 try

 {

 if (textBox20.Text == "")

 {

MessageBox.Show("Введите количество используемых тестов!", "Модель Липова");

 }

 if (textBox22.Text == "")

 {

MessageBox.Show("Введите общее количество искусственно внесенных ошибок!", "Модель Липова");

 }

 if (textBox23.Text == "")

 {

MessageBox.Show("Введите количество собственных ошибок до начала тестирования!", "Модель Липова");

 }

 if (textBox21.Text == "")

 {

MessageBox.Show("Введите количество собственных ошибок к концу тестирования!", "Модель Липова");

 }

 if (textBox24.Text == "")

 {

MessageBox.Show("Введите количество внесенных ошибок к концу тестирования!", "Модель Липова");

 }

 // Проверка на введенные значения

 int t20;

 if (!int.TryParse(textBox20.Text, out t20))

MessageBox.Show("Введите числовое значение!");

 int t21;

 if (!int.TryParse(textBox21.Text, out t21))

MessageBox.Show("Введите числовое значение!");

 int t22;

 if (!int.TryParse(textBox22.Text, out t22))

MessageBox.Show("Введите числовое значение!");

 int t24;

 if (!int.TryParse(textBox24.Text, out t24))

MessageBox.Show("Введите числовое значение!");

 int t23;

 if (!int.TryParse(textBox23.Text, out t23))

MessageBox.Show("Введите числовое значение!");

 }

 catch (Exception ex)

 {

 MessageBox.Show("Ошибка:" + ex.Message);

 }

 double m, q, S, N, n, V;

 m = Double.Parse(textBox20.Text);

 S = Double.Parse(textBox22.Text);

 N = Double.Parse(textBox23.Text);

 n = Double.Parse(textBox21.Text);

 V = Double.Parse(textBox24.Text);

 q = (n + V) / n;

 double Q = (m / (n + V)) * Math.Pow(n + V, q) * Math.Pow(m - n - V, 1 - q) * ((N / n) * (S / V) / ((N + S) / (n + V)));

 label92.Text = Q.ToString();

 label93.Text = m.ToString();

 label94.Text = S.ToString();

 label95.Text = N.ToString();

 label96.Text = V.ToString();

 label97.Text = n.ToString();

 if (Q < 0)

 {

 MessageBox.Show("Введены значения, при которых результат отрицателен!", "Модель Липова");

 }

 }

 

Сохранение результатов

Для сохранения результатов изпользуется обработчик событий ToolStripMenu.

После произведения вычислений по предложенным выше моделям, пользователь может сохранить свои результаты.

 

 

На рисунке 1.5 показано как сохранить результаты вычислений.

 

Далее нам нужно выбрать куда сохранить результаты:

 

Рисунок 1.6 Выбор пути для сохранения

 

А после подтверждения сохранения, уведомление об успешной операции:

 

Рисунок 1.7 Уведомление об успешном сохранении


 

10. ПРИМЕР ВЫПОЛНЕНИЯ ПРАКТИЧЕСКОГО ЗАДАНИЯ №3 [8]

УСЛОВИЕ ЗАДАНИЯ

10.1.1. Написать или выбрать листинг компьютерной программы для метрического анализа.

10.1.2. Вычислить элементы массива S n по формуле:

 

 

Если

 

Вывести значения .

Листинг кода программы

program Pr1;

{$APPTYPE CONSOLE}

uses

SysUtils;

type

mas = array[1..10] of integer;

var

a,b,n,i:integer;

s:mas;

begin

{ TODO -oUser -cConsole Main: Insert code here }

n:=10;

i:=1;

while i<=n do

begin

write('n = ',i);

a:=3*sqr(i)-10*i+6;

write('. A = ',a);

b:=2*i+1;

write(' B = ',b);

if a>b then

s[i]:=a

else

s[i]:=b;

writeln(' S[n] = ',s[i]);

i:=i+1;

end;

readln;

end.

Детализированная схема алгоритма

Рисунок 1. Граф компьютерной программы

10.2. ПРИМЕНЕНИЕ МЕТРИКИ СЛОЖНОСТИ ПОТОКА УПРАВЛЕНИЯ ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ [9]

Метрика Маккейба (цикломатическая сложность графа программы, цикломатическое число Маккейба) предназначена для оценки трудоемкости тестирования программы. Данная метрика определяется по формуле:

 

Z(G) = e – ʋ + 2p,

 

где е — число дуг ориентированного графа G; ʋ — число вершин; р — число компонентов связности графа.

Для схемы алгоритма, приведенной в данной работе, число дуг е = 17, число вершин ʋ = 16, число компонент связности р = 1. Цикломатическое число Маккейба равно Z(G) = 17 – 16 + 2*1 = 3.

Значение метрики Маккейба показывает, что в схеме алгоритма можно выделить 10 базисных независимых путей (называемых также линейно независимыми контурами):

1-й путь. 1 – 2 – 3 – 4 (нет) – 15 – 16..

2-й путь. 1 – 2 – 3 – 4 (да) – 5 – 6 – 7 – 8 – 9 – 10 (да) – 11 – 13 – 14 – 4 – 15 – 16.

3-й путь. 1 – 2 – 3 – 4 (да) – 5 – 6 – 7 – 8 – 9 – 10 (нет) – 12 – 13 – 14 – 4 – 15 – 16.

Таким образом, для тестирования совокупности базисных независимых путей исследуемой программы необходимо выполнить минимально 3 тестовых прогона.

Метрика Джилба определяет логическую сложность программы как насыщенность программы условными операторами IF–THEN–ELSE

Для данной схемы алгоритма CL = 2, cl = 0,14 (количество операторов программы равно 16). Максимальный уровень вложенности условных операторов CLI = 0.

МЕТРИКА ГРАНИЧНЫХ ЗНАЧЕНИЙ

 



Поделиться:


Последнее изменение этой страницы: 2020-11-23; просмотров: 236; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.130.13 (0.119 с.)