Нина Урумова
преподава по Програмиране
в град Варна
Големина на текста:
Глава 9. Надеждност на програмното осигуряване
“По-добре здрава ограда при върха на канарата,
отколкото линейка долу в равнината!”
Джоузеф Мълинс
9.1. Определение за надеждност на програмното
осигуряване и особености
Основните жалби и претенции към ПО се свеждат главно до
високата им цена и ниската надеждност (наличие на грешки).
Проблемът за надеждността на ПО се разглежда още в зората на
използването на компютрите.
“Тези, които редовно програмират, знаят от собствен опит, че
солидна част от подготвителния етап от работата отива за
отстраняване на грешки, извършени при съставянето на програмата.
С помощта на здравия смисъл и средствата за тестване и настройка
голяма част от грешките се откриват и изправят достатъчно бързо.
Някои от тях обаче са толкова неуловими, че не се поддават на
откриване удивително дълго време”.
Това наблюдение е публикувано от трима английски
математици в далечната 1952 г. Макар и грешки да са ставали и
преди 1952 г., това е първото признание на проблема за
надеждността на ПО. Това твърдение подкрепя още и тезата, че за
половин век нещата в тази област не са се променили съществено.
Няколко любопитни примера за ненадеждни програми.
1. Програмата за регистрация на абонаментите и обслужване
на абонаментната кампания е изпратила всичките екземпляри на
списанието на един и същ адрес.
2. Банковата система за отчитане на заемите е предоставила
месечна сметка за изплащане от 212 81, 72 лв. при наличност по
сметката 2128 лева!
3. Железопътна система загубила товарни вагони.
4. Системата за управление на БД за голям склад на
хранителни продукти е разрушила записи, в резултат на което на 15
тона замразени гъши дробчета им били загубени следите и
впоследствие развалени, защото били поместени в отсек на склада,
където не е имало хладилник.
5. Университетска система за отчитане на успеваемостта на
студентите възприемала само двузначни числа като точки за
1
правилен отговор. Като резултат всички студенти с повече от 100
точки се оказали слаби (неуспяващи).
6. Доволен програмист, който току-що завършил
прехвърлянето на програма за изчисляване на работната заплата
от старата машина на новия PC, отваря плика с последната
ведомост за заплатата си и вижда, че има да получава 0 лв. и 00
стотинки.
7. Програма със странно поведение. Тя работи добре само
когато денят от седмицата е сряда. Документацията й предписва
денят от седмицата да се задава като дума с дължина две тетради
байтове (8 байта). Тъй като сряда (Wednesday) има 9 букви
дължина, системата в действителност отделя 12 байта (3 тетради)
пространство в паметта, за да постави деня от седмицата. Тъй като
по предписание за деня от седмицата се осигуряват само 8 байта, то
4 байта се записват в “по-горната” част на областта от паметта,
предназначена за други цели. Както се изяснява по-късно, това
място е било предвидено за записване на “y” за сравнение с
потребителски отговори (y от yes). Шест дена от седмицата
системата изтрива това “y” и го запълва с бленкове. Само когато
дойде сряда (Wednesday) “y” се появява в правилното място в
паметта и програмата започва да работи правилно”.
Този списък може да стане твърде дълъг. За щастие,
цитираните по-горе грешки не са имали сериозни последици. Някои
от тях даже са занимателни.
Има и друг списък от грешки, завършващи даже
катастрофално. Стойността на тези грешки се оценява със стотици
хиляди и милиони долара. Класическите примери тук са от различни
космически програми, където независимо от изключително
щателното тестване на ПО по време на полет се проявяват
програмни грешки, понякога с изключително сериозни последици.
Изследванията на Де Марко и Листър показват, че
програмистите професионалисти допускат средно по1,2 програмни
дефекта на 200 реда написана програма. Съгласно тези данни една
програма от 200000 реда ще съдържа повече от 1000 грешки! Какво
да кажем тогава за съвременните програмни среди? Ядрото на Linux
има около 0,5 . 10
6
реда, Netscape Communicator 5.0 – около 17.10
6
реда, а Windows 2000 – примерно 30.10
6
реда. Колко грешки са
допуснати във Windows 2000? Потенциално те са около 30.10
6
/(2.10
2
)
= 15.10
4
= 150000 грешки!
Нещо повече. Колкото програмата става по-голяма, толкова
повече нараства броят на грешките(фиг.9.1), при това геометрично!
2
Намирането на грешките е не само много трудно, но и твърде
скъпо. Така например изследванията на Microsoft показват, че за
фиксирането на една грешка са необходими средно 12 часа
програмистко време. Или за проверката на една програма с дължина
200000 реда ще са необходими 12 * 1000 = 12000 човекочаса, което
е приблизително 5,7 човекогодини. Тази дейност се оценява за
повече от $500000.
Освен това съществува очевидна експоненциална зависимост
между цената на софтуера и неговата надеждност. Допълнителните
мерки за повишаване на функционалната надеждност на системата
рязко увеличават стойността на разработката.(фиг. 9.2 ).
Заедно с увеличаването на цената подобряването на
надеждността в редица случаи се съпровожда с влошаване на
ефективността (изисква се по-голям обем памет, повече време за
изпълнение поради необходимост повторно изпълнение,
използванеt на защитно програмиране също влошава
ефективността). Независимо от това в редица случаи надеждността
е по-важна от ефективността на системата.
1. Ненадеждните системи често пъти остават непожелани
(неупотребявани) липса на доверие у потребителите към
програмния продукт.
3
Обем на програмата в редове
Количество на дефектите
(грешки)
Фиг.9.1.
Много високаВисока
Надеждност
НискаСредна
Свръхвисока
Цена
Фиг. 9.2.

Това е само предварителен преглед

За да разгледате всички страници от този документ натиснете тук.
Последно свалили материала:
ДАТА ИНФОРМАЦИЯ ЗА ПОТРЕБИТЕЛЯ
01 ное 2019 в 12:45 студент на 28 години от Пловдив - Технически университет- София, филиал Пловдив, факулетет - ФМУ, специалност - Машино и уредостроене, випуск 2019
 
 
Онлайн тестове по Програмиране
Програмиране в интернет среда (X)HTML и CSS
изпитен тест по Програмиране за Студенти от 3 курс
Тестът е използван в МГУ “Св. Иван Рилски” и включва 30 въпроса, изискващи един верен отговор. Подходящ за проверка на знанията в областта.
(Труден)
30
12
1
4 мин
01.10.2014
Програмиране и използване на компютрите
междинен тест по Програмиране за Неучащи от 1 клас
Тестът се състои от 21 въпроса върху кратка история на компютрите. Всички въпроси са затворени и изискват един верен отговор.
(Лесен)
21
11
1
3 мин
12.11.2014
» виж всички онлайн тестове по програмиране

Надеждност на програмното осигуряване

Материал № 285910, от 17 фев 2009
Свален: 48 пъти
Прегледан: 30 пъти
Качен от:
Предмет: Програмиране, Информатика, ИТ
Тип: Общ материал
Брой страници: 27
Брой думи: 4,184
Брой символи: 37,454

Потърси помощ за своята домашна:

Имаш домашна за "Надеждност на програмното осигуряване"?
Намери бързо решение, с помощтта на потребители на Pomagalo.com:

Намери частен учител

Виторио Белоречки
преподава по Програмиране
в град София
с опит от  4 години
203 28

Нина Урумова
преподава по Програмиране
в град Варна
с опит от  15 години
280 76

виж още преподаватели...
Последно видяха материала
Сродни търсения