Программа для расчета надежности программного обеспечения

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Содержание

Реферат

Введение

1. Описание предметной области

1.1 Модель Шумана

1.2 Модель Миллса

1.3 Модель Джелинского-Моранды

1.4 Модель Липова

1.5 Постановка задачи

2. Технология разработки приложения

2.1 Алгоритм решения

2.2. Макет приложения

2.2.1 Макет приложения. Модель Шумана (tabPage1)

2.2.2 Макет приложения. Модель Джелинского-Моранды (tabPage3)

2.2.3 Макет приложения. Модель Миллса (tabPage5)

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

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

2.3.1 tabPage1

2.3.2 tabPage3

2.3.3 tabPage5

2.3.4 tabPage4

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

3. Руководство пользователя

Заключение

Реферат

Программа для расчета надежности программного обеспечения

Ключевые слова: надежность, модели, эффективность, программное обеспечение, шуман, миллс, моранда, липов.

Цель работы: Проектирование и разработка программы для определения надежности тестируемого ПО различными моделями с использование языка C# и VisualStudio 2013.

Объект исследования: модели надежности программного обеспечения

Предмет исследования: Программа на языке C#

Введение

Такой фактор как «надежность программного обеспечения» всегда играл, играет и будет играть ключевую роль в разработке любого программного продукта.

Что же такое «надежность ПО?» Ответ очень прост — это свойство системы выполнять заданные функции, сохраняя во времени значения установленных эксплуатационных показателей в заданных пределах, соответствующих заданным режимам и условиям исполнения.

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

Но, представляется возможным рассчитать вероятность возникновения ошибок в программе вследствие тестирования ее на различных математических моделях надежности. Для того чтобы знать, на сколько надежна программа, ее необходимо протестировать и не раз.

В соответствии с поставленной целью были сформулированы следующие задачи:

1) Провести предметный анализ в области

2) Разработать необходимую программу

3) Выполнить программную реализацию

4) Провести тестирование приложения

5) Определить эффективность разработанной программы

6) Записать и проанализировать результаты

Объектом исследования является метод расчета стоимости разработки ПО.

Предметом исследования является программа на платформе VisualStudio на языке C#.

В международном стандарте ISO 9126: 1991 [1] надежность выделена как одна из основных характеристик качества программного обеспечения ПО. Стандартный словарь терминов программного обеспечения как способность системы или компонента выполнять требуемые функции в заданных условиях на протяжении указанного периода времени.

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

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

Аналитические модели представлены двумя группами: динамические и статические. В динамических моделях поведение ПО (появление отказов) рассматривается во времени. Если фиксируются интервалы каждого отказа, то получается непрерывная картина появления отказов во времени. Может фиксироваться только число отказов за произвольный интервал времени. В этом случае поведение ПО может быть представлено только в дискретных точках.

1. Описание предметной области

1.1 Модель Шумана

Модель Шумана строится на основе нескольких критериев:

ѕ общее число команд в программе на машинном языке постоянно;

ѕ в начале компоновочных испытаний число ошибок равно некоторой постоянной величине, и по мере исправления ошибок их становится меньше. В ходе испытаний программы новые ошибки не вносятся;

ѕ ошибки изначально различимы, по суммарному числу исправленных ошибок можно судить об оставшихся;

ѕ интенсивность отказов программы пропорциональна числу остаточных ошибок.

Предполагается, что до начала тестирования (т.е. в момент =0) имеется M ошибок. В течение времени тестирования ф обнаруживается е1() ошибок в расчете на одну команду в машинном языке.

Тогда удельное число ошибок на одну машинную команду, оставшихся в системе после времени тестирования ф, равно:

(1)

где I — общее число машинных команд, которое предполагается постоянным в рамках этапа тестирования.

Предполагается, что значение функции количества ошибок Z (t) пропорционально числу ошибок, оставшихся в программе после израсходованного на тестирование времени ф.

Z (t) = C * е2 (ф),

где С — некоторая постоянная, t — время работы программы без отказов.

Тогда, если время работы программы без отказа t отсчитывается от точки t = 0, а ф остается фиксированным, функция надежности, или вероятность безотказной работы на интервале от 0 до t, равна

(2)

(3)

Нам необходимо найти начальное значение ошибок M и коэффициент пропорциональности С. Эти неизвестные оцениваются путем пропуска функционального теста в двух точках переменной оси отладки a и в, выбранных так, что е1(a)< е1(d).

В процессе тестирования собирается информация о времени и количестве ошибок на каждом прогоне, т. е. общее время тестирования ф складывается из времени каждого прогона:

ф = ф1 + ф2 + ф3 + … + фn.

Предполагая, что интенсивность появления ошибок постоянна и равна л, можно вычислить ее как число ошибок в единицу времени,

(4)

где Ai — количество ошибок на i — ом прогоне

Тогда

. (5)

Имея данные для двух различных моментов тестирования a и в, можно сопоставить уравнения (3) при фa и фb:

(6)

(7)

Из соотношений (6) и (7) найдем неизвестный параметр С и М:

(8)

(9)

Получив неизвестные M* и C*, можно рассчитать надежность программы по формуле (2).

Пример 1.

Программа содержит 2 000 командных строк, из них, до начала эксплуатации (после периода отладки), 15 командных строк содержат ошибки. После 20 дней работы обнаружена 1 ошибка. Найти среднее время безошибочной работы программы и интенсивность отказов программы при коэффициенте пропорциональности, равном 0,7.

I=2000

M=15

t=20

x=1

C=0,7

E1(t)=0,0005

E2(t)=0,007

P (t)=0,906 649

tср=204,0816

л=0,0049 — интенсивность отказов

Пример 2.

На условиях примера 1 определить вероятность безошибочной работы программы в течение 90 суток.

I= 2000

M= 15

t= 90

x= 1

C= 0,7

P (t)= 0,643 393

Пример 3.

Определить первоначальное количество возможных ошибок в программе, содержащей 2 000 командных строк, если в течение первых 60 суток эксплуатации было обнаружено 2 ошибки, а за последующие 40 суток была обнаружена одна ошибка. Определить T0 — среднее время безошибочной работы, соответствующее первому и второму периоду эксплуатации программы и коэффициент пропорциональности.

I= 2000

t1= 60 суток

t2= 100 суток

x1= 2 ошибок

x2= 3 ошибок

T0= 30,333 333

л1= 0,33 333

л2= 0,03

C= 6,666 667

E1(t1)= 0,001

E2(t2)= 0,0015

M= 12

Л21= 0,9

1.2 Модель Миллса

алгоритм тестирование шуман миллс

Использование этой модели предполагает необходимость перед началом тестирования искусственно «засорять» программу, т. е. вносить в нее некоторое количество известных ошибок. Ошибки вносятся случайным образом и фиксируются в протоколе искусственных ошибок. Специалист, проводящий тестирование, не знает ни количества, ни характера внесенных ошибок до момента оценки показателей надежности по модели Миллса. Предполагается, что все ошибки (как естественные, так и искусственно внесенные) имеют равную вероятность быть найденными в процессе тестирования.

Тестируя программу в течение некоторого времени, собирают статистику об ошибках. В момент оценки надежности по протоколу искусственных ошибок все ошибки делятся на собственные и искусственные. Соотношение, называемое формулой Миллса,

N =

Дает возможность оценить первоначальное число ошибок в программе N. Здесь S — количество искусственно внесенных ошибок; n — число найденных собственных ошибок; V — число обнаруженных к моменту оценки искусственных ошибок.

1.3 Модель Джелинского-Моранды

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

Функция плотности распределения времени обнаружения i-й ошибки, отсчитываемого от момента выявления (i — 1)-й ошибки, имеет вид

)

Где — интенсивность отказов, которая пропорциональна числу еще не выявленных ошибок в программе:

Где N — число ошибок, первоначально присутствующих в программе; С — коэффициент пропорциональности.

Наиболее вероятные значения величин N и С определяются на основе данных, полученных при тестировании. Для этого фиксируют время выполнения программы до очередного отказа t1, t2,t3,…, tk. Значения N и С можно получить, решив систему уравнений

Где

Q =;

A =;

B =.

Чтобы получить числовые значения л, нужно подставить вместо N и С их возможные значения N и C. Рассчитав К значений по формуле (5) и подставив их в выражение (4), можно определить вероятность безотказной работы на различных временных интервалах.

1.4 Модель Липова

Липов модифицировал модель Миллса, рассмотрев вероятность обнаружения ошибки при использовании различного числа тестов. Если сделать то же предположение, что и в модели Миллса, т. е что собственные и искусственные ошибки имеют равную вероятность быть найденными, то вероятность обнаружения n собственных и V внесенных ошибок

Где m — количество используемых тестов, q — вероятность обнаружения ошибки в каждом из m тестов, рассчитанная по формуле

;

S — общее количество искусственно внесенных ошибок; N — количество собственных ошибок, имеющихся в ПО до начала тестирования.

1.5 Постановка задачи

Название приложения: Программа расчета надежности программного обеспечения.

Назначение разработки: Исходя из введенных пользователем данных, рассчитать основные показатели надежности программного продукта.

Входные данные вводятся в специальные поля. После обработки данных, программа выводить результаты в соответствующих полях вывода.

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

Для реализации данной программы мы используем язык программирования C#, на платформе Visual Studio.

Системные требования к ПК:

1) Операционная система Windows 7 или выше.

2) Свободное место на жестком диске: 5МБ и более.

3) Наличие Net Framework 4.0 или выше.

4) Оперативная память: 128МБ и выше.

5) Клавиатура и мышь.

2. Технология разработки приложения

2.1 Алгоритм решения

В самом начале выполнения программы появляется форма, где пользователю предлагается заполнить соответствующие поля необходимыми для расчета данными.

В начале выполнения программы производится проверка полноты и корректности введенных данных. Если пользовательские данные не прошли проверку — выводится соответствующее уведомление.

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

После этого результаты выводятся в специально отведенные окна, а выполнение программы прекращается.

2.2. Макет приложения

2.2.1 Макет приложения. Модель Шумана (tabPage1)

menuStrip1 — выводит список меню содержащий пункты «Сохранить результаты» и «Выход»

tabPage1 — вкладка элемента tabControl1, содержащая в себе элементы: label49 — 54, label63 — 67, label 61, label59, label48, label62, label58, textBox14 — 19, groupBox4

label52 — принимает текстовое значение «Командных строк в программе»

label51 — принимает текстовое значение «Строк содержащих ошибку»

label50 — принимает текстовое значение «Дней работы»

label49 — принимает текстовое значение «Ошибок за время работы»

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

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

label61 — принимает сокращенное значение «КСП»

label60 — принимает сокращенное значение «ССО»

label59 — принимает сокращенное значение «ДР»

label48 — принимает сокращенное значение «ОВР»

label62 — принимает сокращенное значение «КП»

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

textBox15 — получает значение введенных пользовательских данных в графу «Строк содержащих ошибок»

textBox16 — получает значение введенных пользовательских данных в графу «Дней работы»

textBox14 — получает значение введенных пользовательских данных в графу «Ошибок за время работы»

textBox18 — получает значение введенных пользовательских данных в графу «Коэффициент пропорциональности», по умолчанию установлено значение «1».

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

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

2.2.2 Макет приложения. Модель Джелинского-Моранды(tabPage3)

tabPage3 — содержит все группы объектов, таких как label41−42, label45−46, label73−69, label19−14, textBox4, button3, textBox13−10, groupBox3.

label41 — принимает текстовое значение «Число ошибок, первоначально находящихся в программе.

label42 — принимает текстовое значение «Коэффициент пропорциональности»

label45 — принимает текстовое значение «Количество ошибок спустя время»

label46 — принимает текстовое значение «время обнаружения i ошибки»

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

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

label72 — принимает сокращенное значение «ЧОПНВП»

label71 — принимает сокращенное значение «КП»

label70 — принимает сокращенное значение «КОСВ»

label15 — принимает сокращенное значение «ВОО»

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

Элементы label19 — label16 принимают одинаковые начальные текстовые значения «null»

textBox10 — получает значение введенных пользовательских данных в графу «Число ошибок, первоначально находящихся в программе»

textBox12 — получает значение введенных пользовательских данных в графу «Коэффициент пропорциональности»

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

textBox13 — получает значение введенных пользовательских данных в графу «Время обнаружения ошибки»

textBox4 — служит для вывода результатов вычислений, произведенных по формуле Джелинского-Моранды.

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

2.2. 3 Макет приложения. Модель Миллса(tabPage5)

tabPage5 — содержит группы объектов, label9−1, textBox3−1, groupBox1, button1, label13, label44.

label2 — принимает текстовое значение «Количество искусственно внесенных ошибок»

label3 — принимает текстовое значение «Число собственных найденных ошибок»

label4 — принимает текстовое значение «Число обнаруженных к моменту оценки искусственных ошибок»

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

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

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

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

label7 — принимает сокращенное значение «ЧОНО»

label8 — принимает сокращенное значение «ЧОКМОИО»

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

label11 — первоначально получает пустое значение, а после получает значения графы «Число собственных найденных ошибок»

label12 — первоначально получает пустое значение, а после получает значения графы «Число обнаруженных к моменту оценки искусственных ошибок»

label44 — получает и выводит результат вычислений по формуле Миллса

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

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

textBox2 — получает значение введенных пользовательских данных в графу «Число собственных найденных ошибок»

textBox3 — получает значение введенных пользовательских данных в графу «Число обнаруженных к моменту оценки искусственных ошибок»

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

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 — принимает текстовое значение «Очистить», а также отчищает все поля в данном блоке.

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

2.3. 1 tabPage1

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

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

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

2.3. 2 tabPage3

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

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

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

2.3. 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

2.3. 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 («Введены значения, при которых результат отрицателен!», «Модель Липова»);

}

}

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

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

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

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

Рис. 1. 5

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

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

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

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

3. Руководство пользователя

1. Для корректной работы программы необходимо заполнить все предложенные в программе модели.

2. Некоторые из параметров статичны и их изменение может привести к некорректной работе программы.

3. Для того чтобы сохранить полученные вами результаты, нажмите на меню «Работа», а затем «Сохранить результаты». В открывшемся окне укажите путь для сохранения и имя файла.

4. При сохранении программа автоматически присваивает имя файлу в формате «Результаты №» + рандомное число от 0 до 9999. Вы также можете задать свое имя сохранения.

5. При вводе некорректных параметров для расчета вы можете получить отрицательные результаты.

6. Для расчета и получения результатов нажмите кнопку «Рассчитать».

Заключение

Язык программирования C# на основе Visual Studio способен реализовать все необходимые средства для расчета надежности программ.

Во время выполнения поставленной задачи были улучшены навыки программирования, работы с математическими формулами. Разработанная программа наглядно демонстрирует реализацию 4 моделей для определения надежности программного обеспечения. Основное преимущество программа — производство вычислений по 4 моделям одновременно.

Был проведен анализ предметной области, выявлены требования к разрабатываемой программе, было спроектировано и реализовано приложение, определена эффективность разработки.

Программа корректна и многозадачна.

ПоказатьСвернуть
Заполнить форму текущей работой