- •1 Розробка плану проекту
- •1.1 Аналіз та постановка задачі
- •1.2 Обґрунтування вибору моделі життєвого циклу для реалізації проекту
- •1.2.1 Каскадна модель.
- •1.2.2 Ітераційна модель.
- •1.2.3 Спіральна модель.
- •1.3 Обґрунтування вибору мови програмування та case-засобів
- •1.4 Розробка графіка виконання робіт по проекту у контексті обраної моделі життєвого циклу
- •1.5 Аналіз ризиків проекту та управління ними
- •1.6 Системна специфікація вимог до розроблюваного проекту
- •1.6.1 Розробка користувальницьких (функційних) вимог
- •1.6.2 Нефункційні вимоги до програмного забезпечення
- •2 Вибір та аналіз існуючих алгоритмів побудови шляху на карті
- •2.1 Точні алгоритми
- •2.1.1 Пошук в ширину на незваженому графі.
- •2.1.2 Алгоритм Флойда-Уоршелла
- •2.1.3 Алгоритм Дейкстри
- •2.2 Евристичні алгоритми
- •2.2.1 Алгоритм a*
- •2.2.2 Алгоритм d* Lite
- •3 Розробка архітектури програмного забезпечення
- •3.1.1 Діаграма варіантів використання
- •3.1.2 Діаграма класів
- •3.1.3 Діаграма станів
- •3.1.4 Діаграма діяльності
- •3.2 Блок-схеми алгоритмічної частини програмного забезпечення
- •4 Кодування і тестування пз
- •4.1 Особливості реалізації програмного забезпечення
- •4.2 Допоміжні засоби для реалізації програмного забезпечення
- •4.3 Тестування пз
- •4.4 Представлення результатів тестування пз (у хронологічному порядку, які помилки були виявлені і виправлені)
- •4.5 Представлення результатів, що демонструють функціональність розробленого пз
- •4.6 Основні функції розробленого програмного забезпечення
- •5 Надійність програмного забезпечення
- •5.1 Поняття надійності програмного забезпечення
- •5.2 Класифікація моделей надійності програмного забезпечення
- •5.3 Розрахункова частина
- •6 Економічний розділ
- •6.1 Обґрунтування доцільності створення локальної мережі
- •6.2 Кошторис на розробку програмного продукту
- •6.2.1 Основна заробітна плата розробників (дослідників):
- •6.2.2 Амортизація обладнання, комп'ютерів та приміщень, які використовувались для розробки нового технічного рішення.
- •6.2.3 Оренда обладнання, устаткування, приміщень, які були використані в ході здійснення розробки нового технічного рішення.
- •6.2.4 Витрати на комплектуючі к, що були використані на розробку нового технічного рішення, розраховуються за формулою:
- •7.2 Забезпечення електробезпеки при експлуатації комп’ютерної техніки
- •7.3 Розрахунок загального штучного рівномірного освітлення приміщення люмінесцентними лампами методом коефіцієнта використання світлового потоку
- •Висновки
- •Перелік посилань
5 Надійність програмного забезпечення
5.1 Поняття надійності програмного забезпечення
Під помилкою (відмовою) програми розуміють всяке невиконання програмою тих функцій, які були задані у технічному завданні на її розробку, або випливають безпосередньо з інструкції користувача. Програма при фіксованих початкових даних і абсолютно надійній комп'ютерній системі повинна давати однозначний результат при багаторазових виконаннях, але через комбінаторний характер вхідних даних, безлічі переходів, що залежать від проміжних результатів, створюється безліч шляхів виконання програми. Це призводить до того, що навіть після тривалого періоду експлуатації ПЗ будуть зустрічатися неперевірені варіанти вхідних даних, в яких можуть бути виявлені невиявлені помилки.
Надійність програмного забезпечення - це властивість складових його програм виконувати задані функції в заданих умовах на конкретній комп'ютерній системі.
Дві основні причини виникнення відмов програмного забезпечення:
розробники програмного забезпечення порушили технічні вимоги до програм (порушена специфікація);
сама специфікація неточна або неповна, тобто сам опис того, що повинна робити кожна програма, неточний або неповний.
Відмінності надійності програмного забезпечення від надійності комп'ютерних систем:
елементи програмного забезпечення не старіють від зносу;
число способів контролю програмного забезпечення значно більше, ніж способів контролю апаратури;
- в програмному забезпеченні набагато більше об'єктів для контролю, ніж в апаратурі;
- в програмного забезпечення набагато простіше вносити зміни, ніж в апаратуру, але це важко робити коректно і безпомилково.
Досвід розробки програмного забезпечення показує, що виявлення помилки і її виправлення пов'язані з певними витратами, які можуть виражатися у вартісному відношенні і утворюють своєрідну "ціну" помилки. Під час переходу до більш пізніх етапів розробки ціна помилки зростає (таблиця 5.1).
Таблиця 5.1 - Ціна помилки нарізних етапах розробки ПЗ
Етап розробки ПЗ |
Середня вартість помилки, грн |
Можливі наслідки у даному проекті |
Розробка специфікації |
200 |
Переробка специфікації |
Кодування |
1500 |
Збільшення часу на кодування, залучення до проекту нового виконавця |
Комплексне тестування |
7500 |
Повернення на етап кодування та повторне тестування, правка специфікації |
Супровід ПЗ |
20000 |
Невиконання або неправильне виконання мобільною платформою покладених на неї функцій, повернення до етапів кодування та тестування, втрата часу |
Ціна помилки, яку не вдається виявити при розробці ПЗ, може мати катастрофічні наслідки (втрата контролю над мобільною платформою, аварія, викликана платформою, тощо), якщо помилка в ПЗ виявляється в процесі експлуатації системи.
5.2 Класифікація моделей надійності програмного забезпечення
Основними класифікаційними ознаками, за якими можна виділити різні моделі надійності ПЗ є:
тимчасова структура (розшарування часу) процесів появи помилок в ПЗ (фактори: час появи помилки, результуючий час між виявленими помилками, кількість помилок за заданий інтервал часу);
розмітка помилок, тобто визначається номенклатура відомих помилок і робиться припущення про їх закони розподілу;
складність реалізації програми (довжина програми, її обсяг, трудомісткість виконання, кількість функцій і даних);
структура простору вхідних даних (число успішних прогонів у порівнянні із загальним числом зроблених прогонів);
структура тексту програми (розподіл помилок по тексту).
На основі цих 5 класифікаційних ознак побудована класифікація математичних моделей надійності ПЗ (рисунок 5.1).
Рисунок 5.1 - Класифікація математичних моделей надійності програмного забезпечення
Розглянемо одну із поширених моделей за ознакою "тимчасова структура", а саме модель Джелінського-Моранді. Вхідні дані для її використання надходять під час тестування програмного забезпечення. При цьому фіксується час до чергової помилки. Особливістю цієї моделі є те, що значення інтервалів часу між виявленням двох відмов розподілені за експоненціальним законом з частотою відмов (або інтенсивністю помилок), пропорційної числу ще невиявлених помилок. Кожна виявлена помилка усувається. При цьому число відмов що залишились зменшується на одиницю.
Модель Джелінського-Моранді будується на основі припущень:
інтенсивність виявлення помилок (t) пропорційна поточному числу помилок у програмі, тобто числу помилок що залишились;
всі помилки однаково ймовірні та їх поява незалежна;
кожна помилка має один і той же порядок серйозності;
час до наступної відмови (помилки) розподілено експоненціально;
програмне забезпечення функціонує в середовищі, близькому до реального;
помилки постійно виправляються без внесення в програмне забезпечення нових помилок;
(t) - const в інтервалі між двома сусідніми помилками.
У відповідності з цими припущеннями інтенсивність виникнення (виявлення) помилок в програмному забезпеченні можна представити у вигляді:
t - довільний час між виявленням i-1 та i помилок;
K - невідомий коефіцієнт;
B - невідоме загальне число помилок у ПЗ;
Якщо за час t було
виявлено (i - 1) помилок, то в ПЗ ще залишилося
помилок. Вважаючи
,
де i змінюється від 1 до n та враховуючи
допущення про те, що (t)
= const в інтервалі між (i-1)-ою і i-ою помилками,
можна вважати, що Хi мають
експоненціальне розподіл.
