Софтуерни технологии



страница87/106
Дата11.05.2023
Размер2.27 Mb.
#117653
ТипАнализ
1   ...   83   84   85   86   87   88   89   90   ...   106
Softuerni Texnologii
Свързани:
empty doc
13.1.2. Разработване на софтуер с приемливо ниво на грешни
Софтуер с приемливо ниво на дефекти (fault tolerance) e софтуер, кой-
то е проектиран и програмиран така, че продължава работата си и при наличие
на дефекти.
Софтуерните системи, следвайки този подход на разработване, трябва да
реализират следните основни функции:
а) прогнозиране или откриване на дефекти, по възможност преди да са
довели до срив на системата;
б) оценка на пораженията след срив на системата (т. е. определяне кои
нейни части са засегнати);
в) възстановяване след срив. Това може да се постигне чрез отстраняване
на повредите или чрез връщане към някое предишно устойчиво състояние на
системата.
г) локализиране и отстраняване на дефектите, предизвикали срива на системата.
Осигуряването на надеждно функциониране може да се осъществи чрез прин-
ципа на повтарящите се елементи. Той се състои в това, че за извършване на
една и съща дейност се разработват различен брой (обикновено нечетен) ком-
поненти. Всяка компонента изпълнява определените функции, след което се
сравняват получените резултати. По-нататъшната работа на системата продъл-
жава с най-често повтарящия се резултат.
163
При софтуерните системи този принцип се реализира чрез N-версийно прог-
рамиране.
Избира се критична за функционирането на системата компонента. Тя
се възлага за проектиране и програмиране на различни групи и всички версии се
включват в системата. Когато е необходимо, те се извикват (паралелно или после-
дователно) и изпълнението продължава с най-често срещания резултат.
Понякога в програмните системи се вграждат т. нар. възстановяващи бло-
кове
— програмни единици, проверяващи за срив на системата и включващи
алтернативен код, позволяващ повторение на процедурата, ако има съмнение
за наличие на дефект. Използването им може да се илюстрира със следния при-
мер. За решаването на един и същ проблем са създадени три компоненти, реа-
лизиращи три различни алгоритъма. Разработена е и тестваща компонента, ко-
ято проверява правилността на получаваните резултати. За определени входни
данни се изпълнява компонентата, реализираща алгоритъм 1, и резултатите от
изпълнението се анализират от тестващата компонента. Ако те са правилни,
изпълнението продължава. Ако има съмнения за грешки, същите входни данни
се подават на компонентата, реализираща алгоритъм 2, и резултатите отново се
насочват към тестващия модул. При неуспех аналогична процедура се повтаря
с третата компонента. При неуспех и след нейното изпълнение се включва спе-
циална програмна част.
В някои софтуерни системи се създават отделни компоненти за обра-
ботване на изключенията (exception handlers). Изключение е всяко необи-
чайно събитие, което е откриваемо хардуерно или софтуерно и което може да
изисква специална обработка. Така могат да се управляват реакциите на систе-
мата при настъпване на аварийни ситуации. Най-простата реакция е извеждане
на съобщение и преустановяване на изпълнението. Но са възможни и по-слож-
ни последователности от действия. Например при системите за управление в
реално време, като се установи, че времето за отговор на системата ще бъде по-
голямо от допустимото, компонентата за обработка на изключения трябва да
включва автоматично съответните защитни и аварийни механизми.
В [2] са разгледани някои вградени в езиците за програмиране възможнос-
ти за реализация на обработване на изключенията.
13.1.3. Защитно програмиране
Този подход на разработване се основава на предположението, че в прог-
рамите има неоткрити грешки. Затова още при програмирането се вграждат
механизми за откриване на грешката, оценка на засегнатите програмни части и
отстраняване на последствията. Една възможна техника е определяне на кри-
тични за състоянието на системата променливи и текущо проверяване на стой-
ностите им чрез твърдения, описващи условия или пресмятане на контролни
суми.
Например в СУБД този принцип се реализира, като промените в базите от
данни се съхраняват междинно в някакъв буфер и се внасят в съответната база
само след успешно завършване на поредната транзакция.
Друг пример на защитно програмиране е използването на контролни точ-
ки. Този принцип се прилага най-често при сложни изчислителни задачи. Из-
численията се извършват поетапно. Всеки етап завършва с контролна точка, в
164
която се запомнят междинните резултати. Във всяка контролна точка изпълне-
нието може да бъде прекъснато и да продължи след време от достигнатото в
момента състояние. При срив на системата се осъществява връщане към пос-
ледното запомнено състояние.


Сподели с приятели:
1   ...   83   84   85   86   87   88   89   90   ...   106




©obuch.info 2024
отнасят до администрацията

    Начална страница