Reliability
Моделі надійності програмного забезпечення.
Вартість розроблення програмного забезпечення (ПЗ) та витрати на відмови програмних систем - є одними із основних затрат на розроблення складних технічних систем.
Відмова ПЗ може призвести до неочікуваного стану системи або потоку непередбачених дій. Внаслідок відмови ПЗ можливі пошкодження чи руйнування майна, поранення або загибель людей, втрата грошових коштів.
Загальновизнаним в індустрії програмного забезпечення є той факт, що висококваліфіковані програмісти допускають в середньому 6 помилок в програмному забезпеченні при написанні 1000 рядків коду. При такому показнику звичайне комерційне ПЗ, яке складається з 350000 рядків коду, містить близько 2000 помилок, зокрема помилки, пов’язані з витоком пам’яті, пов’язані з текстом програми, помилки використання сторонніх бібліотек, стандартні бібліотечні помилки та інші.
Тому питання оцінювання та забезпечення надійності ПЗ відіграють все більшу роль у розробленні складних технічних систем, а побудова все адекватніших моделей надійності ПЗ є важливою науково-технічною проблемою.
Загальна характеристика та класифікація моделей надійності програмного забезпечення.
Одним із шляхів підвищення рівня надійності ПЗ є використання на етапах тестування і випробувань ПЗ моделей, що дають змогу отримати гарантовані оцінки показників безпеки ПЗ і ефективності технології його розроблення. Більшість таких моделей запозичено з теорії надійності технічних систем, тому в літературі їх часто називають моделями надійності ПЗ.
Як основні критерії класифікації таких моделей вибрано два предмети дослідження:
| дослідження кількості відмов за певний період часу
(вимір часу “в режимі настінного годинника” або вимір часу відносно виконання процесів пристроями комп’ютера) |
дослідження часових проміжків між помилками |
До найбільш вживаних методик і факторів надійності ПЗ належать: стадія життєвого циклу розроблення ПЗ (класифікація моделей залежить від етапу, на якому розраховується надійність ПЗ),
можливість раннього прогнозування помилок, орієнтованість на інформацію або архітектуру (класифікацію роблять на підставі перевірки правильності вхідних / вихідних даних, або перевірки
функціонального наповнення ПЗ), зростання надійності ПЗ в процесі виявлення та виправлення помилок тощо.
Класифікація за такими факторами є найповнішою та дає можливість представити не тільки самі моделі, але і взаємозв’язок між ними (рис. 1).
Кількість моделей надійності ПЗ сьогодні перевищує сотню і продовжує зростати.
Залежно від визначення поняття надійності ПЗ і глибини дослідження обирають різні критерії і характеристики моделей надійності. Тому наведена на рис. 1 схема класифікації моделей надійності ПЗ, як і розглянуті критерії, не є єдиною.
Схема, наведена на рис. 1, поділяє всі моделі надійності ПЗ на аналітичні та емпіричні.
- Емпіричні моделі надійності, своєю чергою, поділяються на
* моделі складності
* і моделі, що визначають час, необхідний на “доведення” програми.
- Аналітичні моделі надійності ПЗ поділяють
* на динамічні (дискретні і неперервні)
* і статичні (за областю помилок, за областю даних).
На ранніх стадіях життєвого циклу ПЗ потрібна модель прогнозування надійності, оскільки даних про відмови немає.
Моделі такого типу призначені для передбачення кількості помилок у програмі перед тестуванням, і належать до детерміністичних (статичних) моделей надійності ПЗ.
На етапі тестування показники надійності ПЗ покращуються завдяки відлагодженню програми. Модель зростання надійності на цьому етапі потрібна для оцінювання поточного рівня надійності, часу і ресурсів, потрібних для досягнення заданого рівня надійності ПЗ. Впродовж цього етапу оцінка надійності ґрунтується на аналізі цих відмов. Моделі такого типу належать до імовірнісних (динамічних) моделей надійності ПЗ. Після введення програми в експлуатацію при визначенні її надійності необхідно враховувати додавання нових модулів, усунення старих модулів, усунення виявлених помилок, поєднання нового коду з попередньо написаним кодом, зміну середовища користувача, зміну апаратного забезпечення тощо. На цьому етапі використовують еволюційні моделі надійності.
За моделями, в основу яких покладено підрахунок відмов (динамічні моделі), припускають, що концептуально в програмі наявна скінченна кількість помилок. Враховуючи, що кількість помилок є цілим числом, за динамічними моделями обчислюють кількість початкових помилок на етапі відлагодження програми і кількість помилок, що залишились під час чи в кінці етапу відлагодження
Програмне забезпечення, яке містить помилки і випускається на ринок, несе високі ризики, пов’язані з відмовами. Відлагодження і тестування, з іншого боку, зменшує кількість помилок, але збільшує витрати на розроблення.
Отже, існує необхідність визначити оптимальний час для зупинки тестування ПЗ. Під час тестування системи надійність є важливим критерієм при ухваленні рішення, коли саме потрібно випустити ПЗ. Декілька інших критеріїв, такі як кількість помилок, що залишилися, частота відмов, вимоги до надійності або загальна вартість системи можуть бути використані для визначення оптимального часу тестування ПЗ.
У дослідженнях в області інженерії надійності ПЗ широко використовують ряд моделей зростання надійності ПЗ на основі неоднорідного процесу Пуассона, які запропоновано для оцінювання надійності ПЗ. Насправді моделі надійності ПЗ на основі неоднорідного процесу Пуассона стали доволі успішними практичними інструментами аналізу надійності ПЗ. У цих моделях розглядають процес відлагодження ПЗ, який можна охарактеризувати цільовою функцією. Надійність ПЗ можна оцінити як визначену цільову функцію. Параметри моделі, як правило, оцінюють з використанням методу максимальної правдоподібності або методу регресії. Різні моделі цього класу було побудовано на основі різних припущень.
Модель Гоеля–Окумото також відома як експоненційна модель зростання надійності ПЗ, що ґрунтується на неоднорідному процесі Пуассона. Ця модель ґрунтується на таких припущеннях:
- 1) усі відмови в програмі є незалежними;
- 2) кількість відмов, виявлених у будь-який час, пропорційна поточній кількості помилок у програмі; це означає, що ймовірність виявлення кожної помилки є сталою величиною;
- 3) виявлені відмови видаляються до наступного тестування;
- 4) кожного разу, як відбувається відмова ПЗ, помилка, яка спричинила цю відмову, негайно виправляється, і жодних нових помилок до системи не вноситься.
