Реферати українською » Информатика, программирование » Моделювання надійності програмного забезпечення


Реферат Моделювання надійності програмного забезпечення

Моделювання надійності програмного забезпечення

Автор:

>Ханджян А.О.


1.      Постановка завдання

Є програмний комплекс (ПК) типу клієнт-сервер. Сервер обслуговує запити від N клієнтів. У ПК рівномірно областю визначення вхідних даних (>ООД) (A, B) розташовані >Er помилок. Сервер складніше клієнтів із погляду розробки ПК в P.S раз. P.S – коефіцієнт складності серверу стосовно клієнтам. Кожен >k->ий (>k = 1, 2, …, N) клієнт породжуєпуассоновский потік даних до сервера інтенсивністю l>обр. Дані від клієнта розподілені областю визначення даних (>ООД) по нормальному закону з характеристиками >m>k і >s>k, де >m>k розподілено між клієнтами рівномірно у всій області вхідних даних, 3>s>k – розподілено рівномірно на меншому із дільницьотсекаемих >m>k на осі області даних (це треба задля імітації нерівномірності використанняООД при малому кількості клієнтів).

На запит клієнта сервер відповідає даними, які розподілені рівномірно у всій області визначення даних (A, B).

На малюнку (див. Малюнок 1 – «Розподіл запитів >k-го клієнта на області даних») зображено розподіл запитів одного клієнта областю всіх можливих запитів до сервера, і навіть показано рівномірний розподіл помилок поООД. Влучаючи запиту клієнта чи відповіді серверу до областіООД, що містить помилку, вважається, що помилка виявлений і відповідний модуль виводиться з експлуатації ЧАЕС на її виправлення:

Малюнок 1 – «Розподіл запитів >k-го клієнта на області даних»


>Входними для розіграшу є:

>P – кількість програмістів, обслуговуючих систему;

K - кількістьпрограмм-клиентов (далі просто клієнти);

a - ширина одного запиту клієнта як частка відООД (від 0 до 1, де 1 – це всяООД);

D>t - крок ітерації (добу);

>s - коефіцієнт складності серверу протипрограммой-клиентом;

l>обр - інтенсивність потоку звернень одного клієнта до сервера (1/добу);

l>испр - інтенсивність потоку виправлення помилки одним програмістом (1/добу);

lвніс - інтенсивність внесення помилки при виправленні одним програмістом (1/добу) чи

>pвніс – ймовірність внести помилку при виправленні одним програмістом;

M - кількість ітерацій;

До – кількість розіграшів для усереднення;

>Er - початкова кількість помилок.

У конкурсній програмі також є можливість оцінити початкове кількість помилок за таким алгоритмом: ПриймаємоООД за одиницю. Кожен клієнт в запиті генерує частку a відООД. Протягом часу D>t клієнт звернутися до сервера(D>t * l>обр) раз. Протягом часу D>t все клієнти звернуться до сервера(D>t * l>обр * K) раз. І обсяг даних, який зачеплять вООД у своїй дорівнює (D>t * l>обр * K * a). Позаяк у нашої моделі помилки розподілені рівномірно поООД, то "за час D>t буде виявлено (D>t * l>ош), де l>ош – початкова інтенсивність помилок у системі. Якби під час D>t клієнти торкнулися всюООД, було б виявлено все >Er помилок. Тому можна записати таку пропорцію: . Звідси знаходимо >Er: . У цьому вважаємо, що з K клієнтів звернувся безпосередньо до серверу із запитом з цими непересічними вООД. На насправді тут інше,т.к. частіше цього клієнти звертаються до сервера з однотипними запитами, тому вважаємо K = 1. І тоді остаточна формула з оцінки початкового кількості помилок буде: ;

Програма попереджає, якщо задається інтенсивність така, що у інтервал часу D>t доводиться довше події (тобто (D>t * l) має менше одиниці) – щодо дотримання умовиординарности потоку подій.

2. Алгоритм одного розіграшу

При одному розіграші виконуються такі кроки:

>1.Разигривается розміщення >Er помилок в клієнтів наООД, розподілених у ньому рівномірно;

>2.Разигривается розміщення (>s*>Erдо)/10 помилок в сервері наООД, розподілених у ньому рівномірно;

>3.Для кожного з K клієнтів розігрується на початку й лише одне раз >m>ki і >s>ki.

>4.Далееитеративно з кроком D>t кожному за клієнта:

a. Якщо клієнт все гаразд, він може поводиться з запитами до сервера з інтенсивністю l>обр. Можливість звернення клієнта до сервера дорівнює . Що стосується звернення клієнта до сервера розігрується випадкова величина xі, розподілене по нормальному закону з параметрами >m>ki і >s>ki – вхідний дане для запиту до сервера. Область, зайнята вхідними даними запиту від однієї клієнта до сервера наООД, є випадкова величина, розподілена рівномірно на відрізку від 0 до a/2 (позначимо її як Rand(a/2))

b. Якщо інтервал (xі ± Rand(a/2)) потрапляє хоча тільки помилка наООД, то вважається, що у клієнта виявлено помилка, і він виводиться з експлуатації ЧАЕС на її виправлення однією з вільних програмістів. Якщо вільних програмістів немає, то несправний клієнт стає у чергу, й очікує, коли один програмістів звільниться.

з. Якщо запиті клієнта до сервера помилки немає, цей запит іде серверу на обробку та відповіді. У цьому розігрується відповідь від серверу клієнту аналогічно a), лише обсяг даних є випадкова величина, розподілена рівномірно на відрізку від 0 до a*10/2 (позначимо її як Rand(a*10/2)). Якщо область (xі ± Rand(a*10/2)) потрапляє хоча тільки помилка зі списку помилок серверу, то вважається, що у сервері відбулася помилка. І тут робота системи зупиняється і всі програмісти намагаються виправити цю помилку в сервері зі швидкістю l>испр кожен. Можливість виправлення помилки одним програмістом дорівнює .

>d. Якщо клієнта є помилка це і є вільний програміст, то вільний програміст намагається виправити помилку в клієнта з імовірністю .

e. Якщо помилка виправляється, вона видаляється зі списку помилок клієнта чи серверу відповідно. Отже, цю помилку не може виникнути за іншими клієнтів. У цьому є клієнти, була виявлено така сама помилка, то ці клієнти вважаються тежисправленними. При виправленні помилки кожен програміст може зробити нову помилку з імовірністю  чиpвніс. Причому, якщо програміст вніс помилку у програмі, він може зробити туди ще одне помилку з імовірністю рівної квадрату ймовірності внесення попередньої помилки. Знову внесені помилки вносять у список помилок клієнтів чи серверу відповідно. У цьому нові помилки некоректні виявленими в клієнта чи сервері, тобто коли виявлена помилка виправляється, то клієнт чи сервер вважаєтьсяисправленними навіть, при цьому було зроблено нові помилки.

>f. За один тимчасової такт D>t розігрується сценарій обміну для всіх працівників народних обранців часу клієнтів. Для несправних клієнтів чи несправного серверу розігруєтьсявероятностний процес виправлення помилки у них.

>5.В результаті розігрується M ітерацій відповідно до п. 4, й одержуємо одну реалізацію випадкових функцій , і (середні кількості працюючих, непрацюючих, клієнтів - і ймовірність роботи серверу) на часовому інтервалі M*D>t.

>6.Испитания проводимо ще K разів, і в такий спосіб отримуємо K реалізацій випадкових функцій , , і . До кожного моменту часу>tj (для j = 1, … M) з кроком D>t знаходимо статистичне середнє тих функцій й одержуємо середні функції , , і .

>7.Также у процесі розіграшу виробляється:

- розрахунок поточного часу напрацювання вщерть;

- розрахунок середнього часу напрацювання вщерть весь час розіграшу;

- розрахунок ймовірності відмови ПО в одиницю часу, як >P = (<обсяг запиту> * <кількість помилок в клієнтів і сервері> * (<кількість працівників клієнтів> + 1) * <інтенсивність звернення> * <крок ітерації за часом>;

- розрахунок коефіцієнта готовності: Дор = 1 - <час простою всієї програми> / <час>

Кількість помилок в сервер рано кількості помилок в клієнтів * коефіцієнт складність /10.

3.             Практичні результати моделювання

>Изучим вплив кількостіпрограмм-клиентов на поведінка програмної системи клієнт-сервер (далі ПС чи ПК).

Розіграш проводився при наступних початкових умовах (10 клієнтів):

>Кол-вопрограмм-клиентов: 10,Кол-во програмістів: 3, Частка загальної області даних (>ООД) щодо одного запиті клієнта:1E-5,Начальное у помилок: 250, Коефіцієнт складності серверу: 2, Інтенсивність потоку звернень клієнта до сервера: 500 (>1/сутки), Інтенсивність потоку виправлення помилки: 1 (>1/сутки), Інтенсивність внесення помилки при виправленні: 0,1 (>1/сутки), Крок ітерації: 0,002,Кол-во ітерацій: 50000, Загальне час розіграшу: 100 (добу); Кількістьрозигришей:40

Отримано такі результати:

Середні значення на 40 розіграшів:

Рис.2 – Значення на 40 розіграшів


З малюнка видно, що ПК почне стійко працювати (тобто. кількість працівників клієнтів зрівняється з кількістю непрацюючих клієнтів на 15 добу).

Тепер збільшимо кількість клієнтів із 10 до100:

>Кол-вопрограмм-клиентов: 100,Кол-во програмістів: 3, Частка загальної області даних (>ООД) щодо одного запиті клієнта: 0,00001,Начальное у помилок: 250, Коефіцієнт складності серверу: 2, Інтенсивність потоку звернень клієнта до сервера: 500 (>1/сутки), Інтенсивність потоку виправлення помилки: 1 (>1/сутки), Інтенсивність внесення помилки при виправленні: 0,1 (>1/сутки), Крок ітерації: 0,002,Кол-во ітерацій: 75000, Загальне час розіграшу: 150 (добу); Кількістьрозигришей:50

Отримано такі результати:

Середні значення на 50 розіграшів:

>Рис.3 – Значення на 50 розіграшів

Очевидно, що у 150 добу майже всі помилки виправлені. Це наслідок те, що клієнтів більше й їхніх запитів охоплюють велику область даних, і, отже, можна знайти більше помилок, і більше помилок виправляється.

Тепер покажемо, що з малої навантаженні на сервер (малому кількості клієнтських програм) збільшення кількості програмістів, які виправляють помилку, дає малий ефект. Кількістьнеисправленних помилок до кінця тестування залишається тем-жі. Зменшується лише час очікування програми виправлення у черзі.

Наприклад, якщо збільшити кількість програмістів з 3 до 12, одержимо:

Початкові умови розіграшу:

>Кол-вопрограмм-клиентов: 10,Кол-во програмістів: 12, Частка загальної області даних (>ООД) щодо одного запиті клієнта:1E-5,Начальное у помилок: 250, Коефіцієнт складності серверу: 2, Інтенсивність потоку звернень клієнта до сервера: 500 (>1/сутки), Інтенсивність потоку виправлення помилки: 1 (>1/сутки), Інтенсивність внесення помилки при виправленні: 0,1 (>1/сутки), Крок ітерації: 0,002,Кол-во ітерацій: 50000, Загальне час розіграшу: 100 (добу); Кількістьрозигришей:50

>Рис.5 – Значення за 50 розіграшів

Очевидно, що ваша програма почне стійко працюватиме, як і зараз лише з 15 добу, тобто збільшення кількості програмістів дає невеликий ефект і найшвидше, частина програмістів буде простоювати.

Значно ефективнішим є у цій ситуації збільшувати навантаження під час тестування. Наприклад, що й засвідчили вище, збільшуючи кількість клієнтів.

>Увеличивая інтенсивність звернення кожного клієнта до сервера це не дає такого ефекту,т.к. кожен клієнт зазвичай працює у межі своєї вузької частиниОД і вибиває помилки з цього частини й залишається значнаОД не перевірена, отже з помилками. Ось приклад розіграшу при збільшення інтенсивності звернень значно з 500 до 2500 на добу.

Приклад:

Початкові умови розіграшу:

>Кол-вопрограмм-клиентов: 10,Кол-во програмістів: 3, Частка загальної області даних (>ООД) щодо одного запиті клієнта:1E-5,Начальное у помилок: 250, Коефіцієнт складності серверу: 2, Інтенсивність потоку звернень клієнта до сервера: 2500 (>1/сутки), Інтенсивність потоку виправлення помилки: 1 (>1/сутки), Інтенсивність внесення помилки при виправленні: 0,1 (>1/сутки), Крок ітерації: 0,0004,Кол-во ітерацій: 250000, Загальне час розіграшу: 100 (добу); Кількістьрозигришей:10

>Рис.6 – Кількістьрозигришей:10

 

Ось приклад, коли збільшення кількості непрофесійних програмістів можуть призвести до негативному результату. У прикладі показаний результат збільшення кількості програмістів з 3 до 10, які мають потік помилок при виправленні дорівнює не 0,3, а 0,7. З малюнка видно, що потік помилок навіть збільшується, а й за 100 днів роботи системи кількість помилок мало зменшилося.

Початкові умови розіграшу:

>Кол-вопрограмм-клиентов: 10,Кол-во програмістів: 10, Частка загальної області даних (>ООД) щодо одного запиті клієнта:1E-5,Начальное у помилок: 250, Коефіцієнт складності серверу: 2, Інтенсивність потоку звернень клієнта до сервера: 250 (>1/сутки), Інтенсивність потоку виправлення помилки: 1 (>1/сутки), Інтенсивність внесення помилки при виправленні: 0,7 (>1/сутки), Крок ітерації: 0,002,Кол-во ітерацій: 50000, Загальне час розіграшу: 100 (добу); Кількістьрозигришей:30

>Рис.7. – Кількістьрозигришей:30

Ця модель в поєднання з моделлю надійності ПО дозволяє оцінити кількість помилок у програмі так – отримати гроші з моделі розрахунковий результат, та був зпомо0ью розіграшу підібрати початкова кількість помилок у ВО таким, щоб результати розіграшу збігалися результат розрахунку.

Ще ця модель дозволяє вирішувати зворотний завдання, тобто, знаючи кількість програмістів, інтенсивність їх і інтенсивність відмов на початку досвідченої експлуатації і наприкінці досвідченої експлуатації можна підібрати кількість помилок у програмі таке, щоб він збігалося із нею.


Укладання

Створено програму для прогнозування поведінки надійності ПО згодом за основі методу Монте-Карло. Програма дозволяє, задаючи різні початкові умови, спостерігати поведінка надійності ПО у часі. Це дозволяє оцінювати витрати й ресурси для побудови і супроводженнявисоконадежного ПО.

Поєднання двох підходів – моделі надійності ПЗ проведено та прогнозування з допомогою методу Монте-Карло – дозволяє точніше і більше всебічно оцінити характеристики надійності ПО. Зокрема, це дозволяє знайти початкова кількість помилок у ВО.


Схожі реферати:

Навігація