РОЗРАХУНОК НАДІЙНОСТІ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
Період життя будь-якої системи (обладнання, виробу) характеризується інтервалами, коли вона виконує покладені на неї функції і коли вона не може через деякі причини їх виконувати. Поняття надійності виникло через необхідність оцінки здатності працювати необхідний час із заданою якістю.
Надійність є складною властивістю, яка об’єднує безвідказність, довговічність, ремонтопридатність. Одними з причин ненадійності систем є недоліки схемних рішень та неправильний вибір елементів. Ці причини закладаються ще на стадії проектування, тому важливо робити оцінку надійності систем під час їх проектування [5].
До кількісних характеристик надійності належать:–
ймовірність безвідказної роботи Р(t) – ймовірність того, що в заданому інтервалі часу в технічному обєкті чи елементі не виникне відказ (порушення роботоздатності);–
частота відказів а(t) являє собою щільність розподілу часу безвідказної роботи або похідну від ймовірності безвідказної роботи;–
інтенсивність відказів (t) представляє собою умовну щільність розподілу часу безвідказної роботи для моменту часу t, при умові, що до нього відмови технічного обєкту не було;–
середнє напрацювання на відказ Т (середній час безвідказної роботи)– це математичне очікування напрацювання до першого відказу;–
параметр потоку відказів (t) - математичне очікування числа відказів за одиницю часу, починаючи з моменту часу t.
Програмне забезпечення характеризується випадковим характером помилок, які виникають внаслідок випадкових комбінацій вхідних даних, і дає можливість говорити про системні відкази, що викликані помилками програмного забезпечення, як про випадкові події. Це дозволяє використати для їх аналізу ті ж методи, що і для аналізу апаратних відказів. Тим не менше, відкази, викликані помилками програмного забезпечення, мають достатньо суттєві відмінні риси, що обумовило створення спеціальних методів аналізу надійності програмного забезпечення.
Джерелом помилок програмного забезпечення є логічні помилки в проекті чи його недосконалість, неправильне кодування.
Повна перевірка програми на наявність в ній помилок можлива лише після об’єднання її частин. Крім того, якщо в програмі використовуються блоки, які були складені раніше, то це значно ускладнює вдосконалення даної програми. Можливі також ситуації, коли безпомилково працююча програма на інших вихідних даних дає неприйнятні по точності і часу обрахунку результати. Крім вище перерахованих є ще ряд причин, що призводять до появи помилок у програмі.
По складності програми можна поділити на декілька типів. Довжина стандартних програм для обчислення елементарних функцій не перевищує сотні команд. Найбільш складними є програми керування в реальному масштабі часу, що реалізуються на мультипроцесорних обчислювальних машинах і містять сотні тисяч команд. Повна перевірка таких програм в процесі відлагодження неможлива. Функціонування програм перевіряється лише в процесі застосування. Помилки програм виявляються при дії тестових вхідних сигналів.
Щоб застосувати до оцінки надійності програм математичний аппарат, розглядають відмови програми – події, що містяться в переході до неправильної роботи програми. Після появи відказу програмісти досліджують програму з метою пошуку помилки і вдосконалення програми.
В даний час відсутні стандартні методи розрахунку надійності програмного забезпечення, тому для аналізу надійності програмного забезпечення використовують експериментально-аналітичні методи прогнозування надійності програмного забезпечення за результатами випробовувань, що базуються на тих чи інших припущеннях. Найпростішою є модель Шумана.
Для прогнозування надійності програмного забезпечення в цій моделі використовуються дані про число помилок, що були виправлені в процесі компанування програм в систему програмного забезпечення і відлагодження програм. За цими даними обчислюються параметри моделі надійності, яка може бути використана для прогнозування показника надійності в процесі використання програмного забезпечення.
Модель заснована на наступних припущеннях:–
в початковий момент компанування програм в систему програмного забезпечення в них міститься E0 помилок; в процесі коректування нові помилки не вносяться,–
загальне число машинних команд І в програмах постійне,–
інтенсивність відказів програми пропорційна числу помилок, що залишилися в ній після відлагодження на протязі часу , тобто:
,
де – відношення числа помилок, що усунені впродовж часу відлагодження , до загального числа команд на машинній мові.
Таким чином, в моделі розрізняють два значення часу: час відлагодження (становить декілька місяців) і час роботи програми t – сумарне напрацювання програми (становить декілька годин). Час відлагодження містить затрати на контрольні перевірки, виявлення помилок за допомогою тестів та інше. Час справного функціонування при цьому не враховується.
Таким чином, значення інтенсивності відказів вважається постійним впродовж всього часу функціонування (0, t).
В силу прийнятих припущень для фіксованого ймовірність відсутності помилок програми впродовж часу напрацювання (0, t) визначається наступним співвідношенням:
.
Середнє напрацювання програми до віказу рівне:
.
Для практичного використання формул необхідно оцінити С і Е0 по експериментальним даним. Застосовуючи метод моментів і розглядаючи два періоди відлагодження програми 1 < 2, отримаємо наступні співвідношення:
,
,
,
де n1 і n2 – кількість помилок в програмному забезпеченні, виявлених відповідно в періодах 1 і 2,
T1 і Т2 – тривалості роботи системи, що відповідають 1 і 2.
Застосуємо вищенаведені міркування для розрахунку показників надійності програми.
Розроблена програма містить близько двох тисяч команд, тому І=7000.
Для оцінки надійності програми було обрано два періоди тестування, на яких:
Т1=110 год, Т2=300 год, n1=6, n2=10.
Тому , .
Врахувавши отримані значення, знайдемо:
,
.
Звідси знаходимо коефіцієнт С*:
.
За період тестування в програмі усунено n=n1+n2 помилок, тому n=6+10=16:
.
Інтенсивність відказів програми:
.
Середня наробка програми до відказу:
(год).
Ймовірність відсутності помилок програм впродовж часу напрацювання (0, t):