Кіріспе

Жүйелердің компоненттердің ақауларына немесе қателеріне төзімділігі. Ақаулыққа төзімділік – жүйенің бір немесе бірнеше компоненттерінде ақаулар немесе қателер туғанда да қалыпты жұмыс істеуін сақтау қабілеті. Жұмыс сапасының төмендеуі ақаудың ауырлығына пропорционалды, ал қарапайым жобаланған жүйеде тіпті кішкентай ақау да толық құлауға әкелуі мүмкін. Ақаулыққа төзімділік, әсіресе жоғары қолжетімділік, өте маңызды немесе тіпті өмірлік маңызы бар жүйелерде аса қажет. Жүйенің бөліктері істен шыққанда функционалдылықты сақтау қабілеті – сымбатты деградация деп аталады. Ақаулыққа төзімді дизайн жүйенің кейбір бөліктері істен шыққанда толық құлаудың орнына, мүмкін, төмендетілген деңгейде болса да, мақсатты жұмысын жалғастыруға мүмкіндік береді. Бұл термин көбінесе жартылай істен шыққан жағдайда, өткізу қабілетін азайтумен немесе жауап беру уақытын ұлғайтумен жұмысын жалғастыруға бағытталған компьютерлік жүйелерді сипаттау үшін қолданылады. Яғни, жүйе тұтастай алғанда аппараттық немесе бағдарламалық жасақтамадағы мәселелерге байланысты тоқтатылмайды. Есептеуге қатысты емес мысалдарға, дөңгелегінің бірі тесілген жағдайда да жүруге болатын автокөлік, немесе шаршау, коррозия, өндірістік ақаулар немесе соққыдан туған зақымдарға қарамастан, тұтастығын сақтайтын құрылым жатады. Жеке жүйе үшін ақаулыққа төзімділікке ерекше жағдайларды болжау және оларды жеңу үшін жүйені құру арқылы қол жеткізуге болады, сондай-ақ жүйенің қатесіз күйге қарай өзінен-өзі тұрақтанатындай етіп жасауға болады. Дегенмен, егер жүйелік ақаудың салдары өте ауыр болса немесе оны жеткілікті сенімді етудің құны тым жоғары болса, дубликацияны пайдалану тиімдірек болуы мүмкін. Кез келген жағдайда, егер жүйелік ақаудың салдары өте ауыр болса, жүйе қауіпсіз режимге көшу үшін кері оралу мүмкіндігін қамтамасыз етуі керек. Бұл қалпына келтіруді кері қайтаруға ұқсас, бірақ егер адамдар циклге қатысса, бұл адамның әрекеті болуы мүмкін.

Мысалдар

Жабдықтың ақаулықтарға төзімділігі кейде бұзылған бөліктерді алып тастап, жүйе жұмыс істеп тұрғанда жаңа бөліктермен ауыстыруды қажет етеді (компьютерде бұл "ыстық ауыстыру" деп аталады). Бір резервтік көшірмемен іске асырылған мұндай жүйе "бір нүктеге төзімді" деп аталады және қатеге төзімді жүйелердің көп бөлігін құрайды. Мұндай жүйелерде ақаулар арасындағы орташа уақыт операторлардың бұзылған құрылғыларды жөндеуге (жөндеуге арналған орташа уақыт) жеткілікті уақыт болу үшін жеткілікті ұзақ болуы керек. Ақаулар арасындағы уақыттың мүмкіндігінше ұзақ болуы тиімді, бірақ бұл қатеге төзімді жүйеде міндетті талап емес. Қатеге төзімділік компьютерлік қолданбаларда өте табысты. Tandem Computers компаниясы өз бизнесін мұндай машиналарға негіздеді, олар "бір нүктеге төзімділік" принципін қолданып, жылдармен өлшенетін NonStop жүйелерін жасады. Қатеден сақтандыратын архитектуралар компьютерлік бағдарламалық жасақтаманы да қамтуы мүмкін, мысалы, процестерді көшіру арқылы. Деректер форматтары да қателерді жұмсақ қабылдайтындай етіп жасалуы мүмкін. Мысалы, HTML алға қарай үйлесімділікпен құрылған, бұл веб-браузерлерге жаңа және қолдаусыз HTML элементтерін елемеуге және құжатты қолдану мүмкін болмайтын жағдайға жеткізбеуге мүмкіндік береді. Сонымен қатар, кейбір сайттар, оның ішінде Twitter сияқты танымал платформалар (2020 жылдың желтоқсанына дейін) кең қолжетімділік пен таралуды қамтамасыз ету үшін, мысалы, веб-шолу мүмкіндіктері шектеулі ойын консольдарында пайдалану үшін, JavaScript-ке тәуелді емес және минималды макетке ие жеңіл фронт-энд ұсынады.

Терминология

Жоғары қатеге төзімді жүйе бір немесе бірнеше компоненттерінің істен шығуына қарамастан, сол деңгейде өнімділікті сақтап қалуы мүмкін. Мысалы, қосалқы электр генераторы бар ғимарат, желідегі қуат ажыратылған жағдайда да, розеткаларға бірдей кернеуді жеткізеді. Қауіпсіздікке, сенімділікке немесе жұмсақ істен шығуға бағытталған жүйе, өнімділігі төмендесе немесе толығымен тоқтаса да, адамдарды, мүлікті немесе деректерді зақымданудан, бұзудан, рұқсатсыз кіруден немесе ашыққа шығудан қорғайды. Компьютерлерде бағдарлама, қате пайда болғаннан кейін деректердің бұзылуын болдырмау үшін, басқарылмайтын құлаудың орнына, әдепті түрде тоқтау арқылы қауіпсіздікті қамтамасыз ете алады. "Жақсы істен шығу" мен "жаман істен шығу" арасында да осындай айырмашылық бар. Жұмсақ деградацияға ұшырауға немесе "қатеге қауіпсіз" (компьютерде қолданылатын, "қатеге төзімді" ұғымына ұқсас) болуға арналған жүйе, кейбір компоненттері істен шыққаннан кейін өнімділігі төмендеген күйде жұмыс істейді. Мысалы, желідегі қуат ажыратылса, ғимарат жарықтандыруды азайтылған деңгейде немесе лифттерді азайтылған жылдамдықпен жұмыс істеуі мүмкін. Компьютерде, онлайн бейнені ағынды түрде көрсету үшін жеткіліксіз желілік өткізу қабілеті болса, жоғары ажыратымдылық нұсқасының орнына, төменгі ажыратымдылық нұсқасы ағынды түрде көрсетілуі мүмкін. Прогрессивті жақсарту – тағы бір мысал, онда веб-беттер ескі, кішкентай экранды немесе мүмкіндіктері шектеулі веб-браузерлер үшін негізгі функционалдық форматта қол жетімді, бірақ қосымша технологияларды қолдайтын немесе үлкен дисплейі бар браузерлер үшін жақсартылған нұсқада ұсынылады. Қатеге төзімді компьютер жүйелерінде, берік деп саналатын бағдарламалар, қатеге, ерекшелікке немесе жарамсыз кіріске қарамастан, толығымен құлаудың орнына жұмысын жалғастыру үшін жасалған. Бағдарламалық жасақтаманың нашарлауы – беріктіктің керісі. Тұрақты желілер, кейбір байланыстар немесе түйіндер істен шыққан жағдайда да, деректерді беруді жалғастырады. Тұрақты ғимараттар мен инфрақұрылымдар жер сілкінісі, су тасқыны немесе соқтығысу сияқты жағдайларда толық құлаудан сақтануы күтіледі. Жоғары қателік ашықтығына ие жүйе, компонент істен шыққанын пайдаланушыларға ескертеді, тіпті ол толық өнімділікпен жұмыс істей берсе де, осылайша ақаулықты жөндеуге немесе толық құлауды болжауға мүмкіндік береді. Сол сияқты, жылдам істен шығатын компонент, төменгі деңгейдегі компоненттер істен шыққанда есеп берудің орнына, ақаудың алғашқы нүктесінде хабарлауға арналған. Бұл негізгі мәселені оңай диагностикалауға мүмкіндік береді және бұзылған жағдайда дұрыс жұмыс істемеудің алдын алады. Бірде-бір ақаулық жағдайы – қауіптен қорғаудың бір құралының істен шығуы. Егер бір ақаулық жағдай екінші ақаулық жағдайға әкелсе, екі ақаулық бір ақаулық жағдайы деп есептеледі. Бір дерек көзі келесі мысал келтіреді: Бірде-бір ақаулық жағдайы – жабдықтағы қауіптен қорғаудың бір ғана құралының істен шығуы немесе бір ғана сыртқы аномальді жағдайдың болуы, мысалы, белсенді және қолданылатын бөліктер арасындағы қысқа тұйықталу.

Критерийлер

Әрбір компонент үшін ақауға төзімді дизайнды ұсыну әдетте мүмкін емес. Қосымша сенімділіктің бірқатар кемшіліктері бар: салмақтың, көлемінің, қуат тұтынудың, құнының артуы, сондай-ақ жобалау, тексеру және сынауға кететін уақыттың ұзаруы. Сондықтан, қай компоненттердің ақауға төзімді болу керектігін анықтау үшін бірнеше нұсқаны қарастыру қажет: компонент қаншалықты маңызды? Автомобильде радио маңызды емес, сондықтан бұл компонентке ақауға төзімділік аз қажет. Компоненттің бұзылу ықтималдығы қандай? Кейбір компоненттер, мысалы, автомобильдің жетек білігі, бұзылуы мүмкін емес, сондықтан ақауға төзімділік қажет емес. Компонентті ақауға төзімді ету қаншалықты қымбат? Мысалы, қосымша автомобиль қозғалтқышын талап ету экономикалық тұрғыдан да, салмағы мен көлемі тұрғысынан да тым қымбат болуы мүмкін. Барлық сынақтан өткен компоненттің мысалы – автомобильдегі жолаушыларды қорғау жүйесі. Негізгі жолаушыларды қорғау жүйесі – гравитация. Егер көлік аударылса немесе үлкен күштерге ұшыраса, онда жолаушыларды қорғаудың бұл негізгі әдісі сәтсіз болуы мүмкін. Мұндай жағдайда жолаушыларды қорғау қауіпсіздік үшін өте маңызды, сондықтан бірінші сынақтан өтті. Қауіпсіздік белбеулері қолданылмас бұрын жолаушыларды сыртқа шығаруға себеп болатын жағдайлар жиі кездесетін, сондықтан екінші сынақтан өтті. Қауіпсіздік белбеулері сияқты қосымша қорғау әдісінің құны экономикалық тұрғыдан да, салмағы мен көлемі тұрғысынан да төмен, сондықтан үшінші сынақтан өтті. Сондықтан, барлық көліктерге қауіпсіздік белбеулерін орнату өте жақсы идея. Басқа "қосымша қорғау жүйелері", мысалы, қауіпсіздік қаптары қымбат, сондықтан бұл сынақтан аздап өтеді. Бұл принциптің тәжірибеде қолданылуының тағы бір тамаша және ұзақ мерзімді мысалы – тежегіш жүйесі: нақты тежегіш механизмдері маңызды болса да, олар кенеттен (біртіндеп емес) бұзылуға бейім емес және кез келген жағдайда тежегіш күшінің барлық дөңгелекке тең және тепе-теңдікпен қолданылуын қамтамасыз ету үшін міндетті түрде дубликатталады. Сонымен қатар, негізгі компоненттерді қайта жасау өте қымбатқа түседі және олар қосымша салмақ қосады. Алайда, жүргізушінің бақылауындағы тежегіштерді іске қосу үшін ұқсас маңызды жүйелер өзінен-өзі нашар, әдетте кабельді (тотығуы, созылуы, тығылуы, жыртылуы мүмкін) немесе гидравликалық сұйықтықты (жарылуы, қайнауы және көпіршіктер пайда болуы мүмкін, суды сіңіріп, тиімділігін жоғалтуы мүмкін) пайдаланады. Осылайша, қазіргі заманғы автомобильдерде аяқ тежегіштің гидравликалық тежегіш контуры диагональды түрде екі кішігірім сәтсіздік нүктесін беру үшін бөлінеді, тежегіш күшінің жоғалуы тек 50% құрайды және тік алдыңғы-артқы немесе сол-оң бөлу сияқты қауіпті тежегіш күшінің тепе-теңсіздігін тудырмайды, ал гидравликалық контур толық бұзылса (салыстырмалы түрде өте сирек кездесетін жағдай), кабельді іске қосылатын тұрақ тежегіші түрінде ақаусыздық бар, ол әдетте әлсіз артқы тежегіштерді іске қосады, бірақ көлікке талаптар қалыпты жол қозғалысына сәйкес болған жағдайда, беріліс/қозғалтқыш тежегішімен бірге көлікті қауіпсіз тоқтатуға көмектеседі. Аяқ тежегіштің толық бұзылуымен және апатты жағдайда қатты тежеу қажеттілігінің жиынтық ықтимал емес үйлесімі бәсекені тудырады, бірақ бұл бәсеке басқа жағдайда болатыннан төмен жылдамдықпен жүреді. Аяқ педалімен іске қосылатын жұмыс тежегішімен салыстырғанда, тұрақ тежегішінің өзі маңызды емес элемент болып табылады және егер ол аяқ тежегішін бір реттік резервтік бөлік ретінде пайдаланбаса, егер ол іске қосылған кезде жұмыс істемейтін болса, тікелей қауіп тудырмайды. Сондықтан, оған қосымша сенімділік салынбайды (әдетте ол арзан, жеңіл, бірақ аз тозуға төзімді кабельді іске қосу жүйесін қолданады), егер бұл дөңесте болса, көлік тоқтап қалу үшін тегіс жолды табу үшін қозғалтқышты тоқтату үшін аяқ тежегішін пайдалану жеткілікті болуы мүмкін. Сонымен қатар, аз тереңдікте беріліс парктік, кері немесе бірінші беріліске ауыстырылуы мүмкін, ал беріліс бұғаттауы/қозғалтқышты қысымдау оны тұрақты ұстауға арналған, өйткені оларға оны тоқтату үшін күрделілік қажет емес. Мотоциклдерде осындай қауіпсіздік деңгейі қарапайым әдістермен қамтамасыз етіледі; біріншіден, алдыңғы және артқы тежегіш жүйелері олардың іске қосу әдісіне қарамастан (бұл кабельді, тағандық немесе гидравликалық болуы мүмкін) бірін толығымен бұзуға мүмкіндік береді, екіншісіне әсер етпейді. Екіншіден, артқы тежегіш автомобильдегі әріптесімен салыстырғанда күшті, кейбір спорттық модельдерде қуатты дискіге ие, тіпті әдеттегі мақсат – алдыңғы жүйе тоқтату күшінің басым бөлігін қамтамасыз ету болса да; жалпы көлік салмағы ортасырақ орналасқандықтан, артқы дөңгелек әдетте үлкен және жақсырақ ұстанымға ие, сондықтан жүргізуші оған көбірек салмақ түсіру үшін арқаға еңкейе алады, демек, дөңгелек құлыпталар алдында көбірек тежегіш күш қолдануға мүмкіндік береді. Арзан, баяу қызметтік машиналарда, тіпті егер алдыңғы дөңгелек қосымша тежегіш күш пен оңай орналастыру үшін гидравликалық дискіні қолданса да, артқы дөңгелек әдетте қарапайым, сәл тиімсіз, бірақ өте берік тағандық іске қосылатын барабан болады, бұл осылай қосылудың қарапайымдығы және, ең бастысы, қалған машина, көптеген төмен бағалы велосипедтердің алғашқы бірнеше жылдық пайдаланудан кейін, ұзақ уақытқа дейін күтімсіздіктен нашарлағаннан кейін, күйреу қаупі жоқ.

Қатеге төзімділік техникасы

Критикалық жүйелерге қажетті толеранттылық түрлерін зерттеу көп салалық жұмысты қажет етеді. Жүйе неғұрлым күрделі болса, барлық мүмкін өзара әрекеттесулерді соғұрлым мұқият қарастырып, оларға дайындалу қажет. Көлік, коммуналдық қызметтер және әскери салалардағы жоғары құнды жүйелердің маңыздылығын ескере отырып, зерттеумен байланысты тақырыптар өте кең: олар бағдарламалық жасақтаманы модельдеу және сенімділік, немесе аппараттық дизайн сияқты түсінікті мәселелерді, сондай-ақ стохастикалық модельдер, графтар теориясы, формалды немесе мұқаты логикасы, параллель өңдеу, қашықтықтан деректерді беру және тағы да басқа құпия элементтерді қамтуы мүмкін.

Қателіксіз есептеу

Қателікке сезімтал емес есептеу – компьютерлік бағдарламалардың қателерге қарамастан жұмысын жалғастыруын қамтамасыз ететін техника. Бұл техниканы түрлі жағдайларда қолдануға болады. Ол жарамсыз жад оқуларын бағдарламаға жасалған мәнді қайтару арқылы шеше алады, нәтижесінде бағдарлама жасалған мәнді пайдаланып, алдында қол жеткізуге тырысқан жад мәнін назарға алмайды. Бұл, қате туралы хабар беретін немесе бағдарламаны тоқтататын стандартты жад тексерушілерден мүлдем өзгеше. Аталған тәсілдің өнімділік тұрғысынан шығындары бар: техника кодты динамикалық түрде жад мекенжайының дұрыстығын тексеру үшін өңдейді, сондықтан орындалу уақыты 80%-дан 500%-ға дейін ұзарады.

Қалпына келтіру пастыры

Қалпына келтіру пастухы – бағдарламалық жасақтамалардың нөлдік көрсеткіштен бас тарту және нөлге бөлу сияқты өлімге әкелетін қателерден қалпына келуіне мүмкіндік беретін жеңіл техника. Қаттылықсыз есептеу техникасымен салыстырғанда, қалпына келтіру пастухы құрастырылған бағдарламаның бинарлық кодын тікелей пайдаланады және бағдарламаны қайта құрастыру қажеттілігін жояды. Ол Pin деп аталатын дереу бинарлық құралдар жиынтығын қолданады. Қате пайда болған кезде ол қолданба процесіне қосылады, орындалуын түзетіп, орындалу жалғасқанда түзету әсерлерін қадағалайды, түзету әсерлерін қолданба процесінде сақтайды және барлық түзету әсерлері процестік жағдайынан шығарылғаннан кейін процестен ажыратылады. Бұл бағдарламаның қалыпты жұмысына кедергі келтірмейді, сондықтан мардымсыз шығындар туындайды. Бұл бір компонент істен шыққан жағдайда автоматты түрде "қосылатын" қосымша компоненттерден тұруы мүмкін. Мысалы, үлкен жүк көліктерінің дөңгелегі түсіп кетсе де, ешқандай үлкен зардап болмайды. Оларда көптеген дөңгелектер бар, және ешбір дөңгелек маңызды емес (алдыңғы дөңгелектерді қоспағанда, олар рульді басқару үшін қолданылады, бірақ әдетте қалған төрт-он алты дөңгелекке қарағанда аз жүктеме көтереді, сондықтан бұзылу ықтималдығы төмен). Жүйенің сенімділігін арттыру мақсатында артықшылықты енгізу идеясын Джон фон Нейман 1950 жылдары ұсынған. Артықшылықтың екі түрі бар: кеңістіктік және уақыттық артықшылық. Кеңістіктік артықшылық қатесіз жұмыс істеу үшін қажет емес қосымша компоненттерді, функцияларды немесе дерек элементтерін қамтамасыз етеді. Кеңістіктік артықшылық жүйеге қосылған артық ресурстардың түріне байланысты аппараттық, бағдарламалық және ақпараттық артықшылыққа бөлінеді. Уақыттық артықшылықта есептеу немесе деректерді беру қайталанады және нәтиже алдыңғы нәтижесінің сақталған көшірмесімен салыстырылады. Осы сынақ түрі үшін қолданылатын терминология "Қызметтегі ақаулықтарға төзімділікті сынау" немесе қысқаша ISFTT деп аталады.

Қатынасты терминдер

Қатеге төзімділік пен мәселелер сирек туындайтын жүйелердің арасында айырмашылық бар. Мысалы, Western Electric тікелей қосылыс жүйелерінің істен шығу жиілігі қырық жылда екі сағатты құрады, демек, олар өте жоғары ақаулыққа төзімді болды. Бірақ, егер ақау туындаса, олар толығымен жұмысын тоқтатты, сондықтан қатеге төзімді емес еді.