Програма, як і апаратура, не існує ізольовано, завжди наявне якесь «навколишнє середовище», яке впливає на її функціонування. Роль навколишнього середовища для програми виконують інші програми – наприклад, драйвери, мережні програми, програми інтерфейсу користувача, різні прикладні бібліотеки та ін. При зміні навколишнього середовища (наприклад, заміні драйвера) надійність програми може погіршитися, і питання про те, де джерело помилки, може бути тривіальним. Крім того, надійність залежить від режиму експлуатації.
Будь-яка програма дозволяє велику кількість комбінацій вхідних даних, з яких зазвичай використовується обмежена підмножина. Для різних користувачів застосовуються різні підмножини вхідних даних. При одних вхідних значеннях програма може відмовляти частіше, ніж при інших, тому можна говорити про зміну режиму експлуатації. Режим експлуатації характеризується частотою звернення до програми, часом роботи програми, кваліфікацією користувачів, статистичним розподілом ймовірності різних областей вхідних даних, організаційною схемою і реалізацією процедур отримання вхідних даних, використанням виходу програми, перевіркою вхідних і вихідних даних, аналізом результатів роботи, документацією програми. Тому, говорячи про надійність програми, необхідно мати на увазі такий кортеж: «вихідний текст програми, документація, середовище та режим експлуатації». Середовище реалізації, режим експлуатації, інструкція можуть змінюватися без зміни самої програми.
Ціна експлуатації програми складається з витрат на підготовку і введення даних та використання аналітика для опрацювання помилок. Доповнення до інструкції ускладнює, а отже, й робить дорожчим звернення до програми. Ці витрати накопичуються протягом всього періоду експлуатації кортежу, обмеженого або моральним старінням програми, або введенням в експлуатацію нового кортежу, доцільнішого з точки зору інфраструктури.
Якщо відомий термін морального старіння програми, то її заміна на нову ефективна тільки в тому випадку, коли загальна вартість експлуатації нового кортежу за кінцевий термін буде меншою від вартості експлуатації за той же час відкоригованого старого кортежу. Крім того, нова програма може виконувати додаткові функції, які вимагали «ручної» роботи при використанні старої програми. Необхідно також врахувати разові затрати на навчання користувачів і аналітиків із новими інструкціями.
Звернення до програми – це або завантаження програми з вхідними даними, або введення даних у працюючу програму. Введення даних здійснюється користувачем у режимі діалогу або автоматично із зовнішніх пристроїв. Передбачається, що відома середня частота звернення до програми за час експлуатації. Якщо при зверненні до програми появилася помилка, то вона реєструється в протоколі (журнал експлуатації), і до роботи приступає аналітик. Його завдання – вияснити причину помилки і, якщо вона в програмі, то модифікувати інструкції введення так, щоб програма працювала правильно. Якщо зміни в інструкціях неможливі, то в інструкцію вводиться ознака даних, для яких звернення до даної програми заборонено й необхідний інший засіб для обробки даних. У тих випадках, коли зміни досить суттєві, експлуатація програми може стати неможливою.
Оцінювання і прогнозування надійності програм здійснюють на основі математичних моделей. Серед найбільш використовуваних – модель Джелінські-Моранди, яка ґрунтується на таких параметрах: час до наступної відмови розподіляють експоненціально; інтенсивність відмов програми пропорційна кількості помилок, що залишилися в програмі. Відповідно до них ймовірність безвідмовної роботи програм як функція часу дорівнює: , (2.1)
де , – інтенсивність відмов; – коефіцієнт пропорційності; – початкова кількість помилок програми. У формулі (2.1) відлік часу починають із моменту останньої -ї відмови програми. Надійність програми буде тим вища, чим менше .
Модель Шумана відрізняється від моделі Джелінські-Моранди тільки тим, що періоди часу відлагодження й експлуатації розглядають окремо.
Модель Шика-Волвертона ґрунтується на тому, що інтенсивність прояву помилок пропорційна не тільки кількості помилок, які залишилися в програмі, але й часу, витраченому на їх відлагодження. Вади попередніх моделей полягають у тому, що за неточного визначення кількості помилок програми на початку відлагодження й експлуатації інтенсивність відмов стає від’ємною, що призводить до результату, який не має сенсу. В них не враховано і те, що після виявлення помилки вона може бути повністю не усунута, до того ж можуть бути внесені нові. Модель Шика-Волвертона усуває ці вади, оскільки в ній враховано, що потік виникнення ситуацій, за яких можлива відмова програми, є пуассонівським із параметром . Отже, під час виявлення і виправлення помилок відмови в цих ситуаціях виникають з імовірністю, меншою за одиницю. Тому потік відмов подають як розріджений потік зі змінним коефіцієнтом розрідження , де і – номер відмови, тоді: , де – певний коефіцієнт ; – початковий коефіцієнт розрідження потоку. За допомогою цієї моделі прогнозують не тільки інтенсивність виникнення наступної відмови програми, а й параметри потоку відмов.