Pagrindinės įžvalgos:
Tekste parodoma, kaip projektuoti pramoninės taikomosios programos logiką taip, kad trumpalaikis tinklo ryšio praradimas, įrenginių paleidimas iš naujo ir sesijos nutrūkimas nesukeltų būsenos nuoseklumo praradimo, komandų dubliavimo ar nekontroliuojamo darbo atnaujinimo. Skaitytojas pamatys, kodėl sprendimai dėl buferizavimo, komandų patvirtinimo, sesijų atkūrimo ir būsenų modelio turi būti priimami projekto pradžioje, nes vėliau jie tiesiogiai lemia proceso tęstinumą, saugą ir sistemos atskaitomybę.
- Tai fizinės saugos, o ne vien IT patogumo klausimas: praradus tinklo ryšį ir jam atsistačius automatiškai pakartotinai siunčiant „nepatvirtintas“ komandas (pvz., „paleisti ciklą“), mašina gali atlikti operaciją du kartus arba netinkamu momentu. Tai reali grėsmė žmonėms ir procesui gamybos ceche.
- Auksinė atnaujinimo taisyklė: jei po ryšio atkūrimo sistema negali 100 % vienareikšmiškai nustatyti, kokios būsenos yra vykdomasis įrenginys, ji jokiu būdu neturėtų automatiškai atnaujinti darbo. Tokia situacija visada reikalauja aiškaus, sąmoningo operatoriaus patvirtinimo.
- Sprendimus reikia priimti pradžioje, kitaip išlaidos auga: kaip programa turi veikti praradus ryšį, reikia numatyti architektūroje jau pačioje projekto pradžioje. Jei tai paliekama „susitarti diegimo etape“, baigiasi brangiais taisymais, rankiniu klaidų lopymu darbuotojų jėgomis ir pavojingu blokavimų apeidinėjimu, kurį imasi daryti nusivylę operatoriai.
Pramoninės taikomosios programos atsparumas trumpalaikiam tinklo dingimui, įrenginių perkrovimui ir ryšio praradimui šiandien jau nėra papildoma naudotojo patogumą didinanti savybė, o būtina sąlyga, kad procesas veiktų tinkamai ir atsakomybė liktų gamintojo, integratoriaus arba galutinio naudotojo pusėje. Pramoninėje aplinkoje ryšio nutrūkimas nėra išskirtinis įvykis: jis pasitaiko atliekant techninę priežiūrą, perjungiant infrastruktūrą, paleidžiant sistemą po elektros tiekimo sutrikimo, atnaujinimų metu, esant tinklo perkrovai arba tiesiog sugedus kraštiniam įrenginiui. Jeigu tokiomis sąlygomis programa praranda būsenų nuoseklumą, dubliuoja komandas arba atkūrus ryšį be konteksto kontrolės vykdo anksčiau neįvykdytas operacijas, problema nebėra vien informacinių technologijų sritis. Ji tampa proceso tęstinumo, funkcinės saugos, gamybos duomenų kokybės ir projektinių sprendimų atsekamumo klausimu.
Būtent todėl šį klausimą reikia spręsti projekto pradžioje, o ne po pirmojo paleidimo. Architektūra, atspari ryšio pertrūkiams, daro įtaką tam, kaip modeliuojamos mašinos būsenos, kokios taikomos duomenų buferizavimo taisyklės, kokia yra komandų patvirtinimo seka, kokiomis sąlygomis iš naujo atkuriama sesija ir kokia logika taikoma grįžtant į darbą po perkrovimo. Jeigu komanda šiuos sprendimus atideda, dažniausiai tenka griebtis brangių laikinų priemonių: lokaliai prirašinėti išimtis, rankiniu būdu valyti eiles, diegti papildomus operatoriaus blokavimus arba plėsti priežiūros sluoksnį vien tam, kad būtų kompensuotas neprognozuojamas įrenginių elgesys. Praktinis vertinimo kriterijus paprastas: dėl kiekvienos svarbios funkcijos turi būti galima vienareikšmiškai atsakyti, kas nutiks praradus ryšį, kas nutiks po perkrovimo ir kas patvirtina darbo atnaujinimą. Jeigu atsakymas skamba „tai priklauso nuo realizacijos“ arba „operatorius pamatys, kad kažkas negerai“, tai dar nėra projektinis sprendimas, o tik rizikos perkėlimas į eksploataciją.
Aiškiausiai tai matyti ten, kur programa sąveikauja su mašinos judesiu arba procesu. Įsivaizduokime sistemą, kurioje operatoriaus pultas duoda komandą pradėti ciklą, o valdiklis ją įvykdo pavėluotai dėl trumpalaikio ryšio praradimo. Jei atkūrus ryšį programa pakartoja komandą, nes negavo patvirtinimo, operacija gali būti atlikta du kartus arba paleidimas gali įvykti kitomis sąlygomis nei tos, kurias operatorius matė komandos pateikimo momentu. Šioje vietoje komunikacijos atsparumo tema pereina į apsaugos nuo netikėto paleidimo sritį: ne kiekvienas perkrovimas yra saugos problema, tačiau kiekvieną perkrovimą, kuris gali pakeisti paleidimo sąlygas be sąmoningo patvirtinimo ir nepatikrinus įrenginio būsenos, jau reikia analizuoti tokiu lygiu. Panašiai yra ir su blokuojančiais įtaisais bei užrakinimu: jeigu programos logika skatina personalą apeiti nepatogius blokavimus po tinklo gedimo, problema slypi ne vien naudotojo elgsenoje, bet ir pačiame projektiniame sprendime.
Žvelgiant iš valdymo ir atitikties perspektyvos, svarbiausia yra ne tai, ar ryšio pertrūkiai „pasitaiko“, o tai, ar projektas gali įrodyti saugų ir nuspėjamą elgesį tokiose ribinėse būsenose. Tai taip pat tinkamas momentas, kai tema pereina į praktinį rizikos vertinimą: reikia atskirti funkcijas, kurioms priimtinas vėlavimas arba dalies istorinių duomenų praradimas, nuo funkcijų, kurių atveju konteksto praradimas gali lemti klaidingą operatoriaus sprendimą, gaminio sugadinimą arba pavojų pakartotinio paleidimo metu. Verta matuoti ne abstraktų „sistemos stabilumą“, o rodiklius, kurie parodo projektines pasekmes: neaiškių darbo atnaujinimų po perkrovimo skaičių, komandų, kurioms reikia rankiniu būdu suderinti būseną, skaičių, laiką, reikalingą saugiai grįžti į darbą, ir atvejus, kai sistema negali įrodyti, ar komanda buvo įvykdyta. Tik šiame kontekste prasmę įgauna norminiai reikalavimai ir sprendimai dėl techninių priemonių: paleidimo sąlygų po elektros tiekimo sutrikimo analizė, rizikos vertinimas ryšio praradimo scenarijams bei blokuojančių ir priežiūros sprendimų parinkimas ten, kur vien informacinis mechanizmas nesuteikia pakankamo patikimumo.
Kur dažniausiai didėja sąnaudos arba rizika
Projektuojant pramonines taikomąsias programas, atsparias trumpalaikiam tinklo dingimui, įrenginių perkrovimui ir ryšio praradimui, sąnaudos dažniausiai auga ne dėl pačių techninių mechanizmų, o dėl klaidingų prielaidų apie proceso būseną po sutrikimo. Jeigu komanda daro prielaidą, kad atkūrus ryšį sistema „grįš į normalų darbą“, anksčiau ar vėliau teks sumokėti už rankinį būsenų derinimą, valdymo logikos pataisas, papildomus priėmimo bandymus arba eksploatacinius apribojimus, nustatytus jau po paleidimo. Brangiausios yra situacijos, kai programa negali vienareikšmiškai atsakyti, ar komanda buvo įvykdyta, nutraukta, padubliuota, ar tik užregistruota sąsajos pusėje. Tai nėra naudotojo patogumo klausimas, o atsakomybės už fizinį poveikį klausimas: pavaros judesį, nuostatos pakeitimą, vožtuvo atidarymą, pavojaus signalo patvirtinimą arba ciklo atnaujinimą.
Projektų vėlavimą dažnai lemia ir neteisingai paskirstyta atsakomybė tarp operatoriaus lygmens, tarpinės programos ir mašinos valdymo sistemos. Jei sprendimas, kas turi įvykti po paleidimo iš naujo, paliekamas „įgyvendinimo etapui“, komanda paprastai galiausiai susiduria su nenuosekliomis taisyklėmis: valdymo pultas rodo paskutinę žinomą būseną, valdiklis paleidžia inicijavimo procedūrą, o aukštesnio lygmens sistema atkuria laukiančias komandas, neturėdama tikrumo, ar jos vis dar pagrįstos. Praktikoje tai reikia nuspręsti anksčiau ir aiškiai: kurios operacijos gali būti kartojamos be šalutinio poveikio, kurioms būtina patvirtinti esamas objekto sąlygas, o kurios, praradus ryšį, turi būti nutrauktos ir pereiti į saugią būseną. Geras sprendimo kriterijus yra paprastas: jei neteisingas operacijos atnaujinimas gali pakeisti energijos būseną, vykdomojo elemento padėtį, gaminio kokybę arba žmonių saugos sąlygas, negalima remtis vien tik programos atmintyje išsaugota paskutine būsena.
Tai gerai matyti sekos pavyzdyje, kai prieš ryšio nutrūkimą buvo išsiųsta komanda uždaryti apsaugą ir pradėti ciklą, o po operatoriaus stoties paleidimo iš naujo atkuriamas ekranas „parengta darbui“. Jei programa neskiria būsenų: komanda priimta, vykdymas patvirtintas, vykdymas nutrauktas, būsena neapibrėžta, operatorius gauna iš pirmo žvilgsnio nuoseklų, bet iš tikrųjų neišsamų vaizdą. Pasekmė gali būti nereikalingos prastovos, nes personalas bijo atnaujinti procesą, arba priešingai – neteisėtas paleidimas, nes sąsaja nerodo, kad būtinas pakartotinis patikrinimas. Projekto vadovui tai vėliau reiškia brangų priežasčių tyrimą, bandymų scenarijų keitimą ir būtinybę papildyti laikinas apeinamąsias procedūras. Produkto savininkui tai yra skundų ir ginčų dėl atsakomybės apimties rizika, ypač kai reikalavimų dokumentacijoje nėra aiškiai nurodyta sistemos elgsena dingus maitinimui ar ryšiui. Todėl verta matuoti ne tik pasiekiamumą, bet ir neapibrėžtų būsenų skaičių po paleidimo iš naujo, operacijų, kurioms reikia rankinio suderinimo, skaičių bei laiką iki saugios parengties pasiekimo.
Atskira sąnaudų kategorija yra komunikacinio atsparumo painiojimas su funkcine sauga ir ryšio praradimo pasekmių vertinimu. Vien tai, kad programa geba buferizuoti duomenis, pakartoti perdavimą ar atkurti sesiją, dar nereiškia, kad mašina elgsis saugiai praradus ryšį. Kai trikdžio poveikis paliečia funkcijas, susijusias su judesiu, sukaupta energija, blokavimu ar pakartotinio paleidimo sąlygomis, tema natūraliai pereina į praktinį rizikos vertinimą. Tuomet reikia nagrinėti ne tik tinklo gedimo tikimybę, bet pirmiausia galimas neteisingos būsenos informacijos ir klaidingo veikimo atnaujinimo pasekmes. Jei sistemoje yra hidraulika, papildomai atsiranda reikalavimai, susiję su vykdomųjų elementų elgsena dingus maitinimui ir krintant slėgiui; tokiais atvejais programos lygmens sprendimai negali prieštarauti projektavimo principams, taikomiems hidraulinėms sistemoms. Savo ruožtu ten, kur parengties atkūrimas priklauso nuo apsaugos uždarymo arba blokavimo atleidimo, problema gali apimti ir blokuojančių įtaisų bei atsparumo apsaugų apeidinėjimui sritį, nes spaudimas „greitai atnaujinti darbą“ labai dažnai vėliau sukuria pavojingą eksploatavimo praktiką.
Nuorodos į norminius reikalavimus turi prasmę tik šiame etape, kai jau aišku, kuris scenarijus sukelia technines ir organizacines pasekmes. Jei ryšio praradimas arba paleidimas iš naujo gali pakeisti saugaus paleidimo sąlygas, tai turi būti aprašyta rizikos analizėje, o ne palikta kaip numatytasis programinės įrangos gamintojo ar valdiklio tiekėjo elgesys. Jei vykdomoji sistema dingus maitinimui gali pereiti į procesui nepalankią arba pavojingą būseną, reikia patikrinti, ar konkrečiam pavaros ir terpės tipui taikomi reikalavimai nereikalauja papildomų konstrukcinių priemonių, nepriklausančių nuo programos logikos. Praktinis ribinis kriterijus yra toks: jei klaidą po būsenos atkūrimo galima pašalinti tik operatoriaus procedūra, tema jau yra ne vien informacinių technologijų, bet ir projektavimo bei atitikties klausimas. Būtent čia sprendimas dėl programos architektūros nustoja būti diegimo patogumo klausimu ir tampa atsakomybės už saugų bei nuspėjamą visos sistemos elgesį dalimi.
Kaip prie to prieiti praktiškai
Praktikoje pramoninės programos atsparumas trumpalaikiam tinklo dingimui ir įrenginių paleidimui iš naujo prasideda ne nuo technologijos pasirinkimo, o nuo sprendimo, kurios gedimo pasekmės yra priimtinos, o kurios – ne. Komanda pradžioje turėtų atskirti tris dalykus: proceso būseną, valdymo būseną ir operatoriui pateikiamą būseną. Šis atskyrimas lemia, ar nutrūkus ryšiui programa turi tik atkurti vaizdą, ar jai leidžiama atnaujinti valdymą, komandų eilę arba technologinę seką. Jei šie lygmenys suliejami į vieną, projektas paprastai baigiasi brangiai kainuojančiu išimčių programavimu, rankinėmis apeinamosiomis procedūromis arba ginču dėl atsakomybės po paleidimo. Vadovui čia svarbu viena: aiškaus architektūrinio sprendimo nebuvimas rizikos nemažina, o tik perkelia ją į priėmimo, aptarnavimo ir atitikties etapą.
Praktikoje tai reiškia, kad kiekvienam kritiniam scenarijui reikia aiškiai apibrėžti, kokią būseną sistema turi išlaikyti po sutrikimo ir ko jokiu būdu neturi išlaikyti. Kalbama ne apie bendrą teiginį „turi veikti po pakartotinio prisijungimo“, o apie tikslias taisykles: kurie duomenys atkuriami iš nuolatinės saugyklos, kurie turi būti patvirtinti iš įrenginio, kurios komandos nebegalioja pasibaigus nustatytam laikui, o kurioms reikia pakartotinio autorizavimo arba operatoriaus patvirtinimo. Geras sprendimo kriterijus yra paprastas: jei po paleidimo iš naujo neįmanoma vienareikšmiškai nustatyti, ar ankstesnė komanda buvo įvykdyta, sistema neturėtų jos automatiškai vykdyti dar kartą. Tas pats taikoma aliarmams, partijų skaitikliams, darbo režimams ir technologiniams blokavimams. Toks įrašas gali atrodyti kaip smulki projektavimo detalė, tačiau be jo didėja integracinių bandymų kaina, nes kiekviena dviprasmybė grįžta kaip sunkiai atkartojama klaida. Taip pat didėja sprendimo savininko atsakomybė, nes vėliau tenka įrodyti, kad sistemos elgsena praradus ryšį buvo numatyta ir sąmoningai apibrėžta.
Tipinis pavyzdys – programa, kuri siunčia valdikliui ciklo paleidimo komandą, o tada praranda ryšį dar negavusi patvirtinimo. Jei atkūrus ryšį programa „dėl visa ko“ išsiųs komandą dar kartą, ji gali paleisti ciklą antrą kartą. Jei, savo ruožtu, ji nuspręs, kad komanda tikrai buvo įvykdyta, gali neteisingai atkurti proceso būseną ir leisti tolesnes operacijas neteisinga seka. Tinkamas požiūris – projektuoti komandas ir atsakymus taip, kad juos būtų galima atskirti laike ir identifikuoti, o po paleidimo iš naujo būtų galima patikrinti tikrąją įrenginio būseną prieš atnaujinant verslo logiką. Šioje vietoje verta matuoti ne tik sistemos prieinamumą, bet ir dviprasmiškų būsenos atkūrimų skaičių, rankinių įsikišimų po paleidimo iš naujo skaičių bei laiką, reikalingą saugiai atkurti darbą. Tai rodikliai, kurie parodo tikrąją architektūros kainą, o ne vien programuotojams patogų sprendimą.
Riba su rizikos vertinimu atsiranda tada, kai neteisingai atkurta būsena gali pakeisti mašinos, sekos arba vykdomojo mazgo elgseną. Tokiu atveju tema nustoja būti vien informacinių technologijų klausimu ir pereina į praktinio rizikos vertinimo sritį, taip pat ir ISO/TR 14121-2 taikomos metodikos prasme. Jeigu po maitinimo dingimo arba įrenginio paleidimo iš naujo yra galimybė savaime atnaujinti judesį, paduoti terpę, atlaisvinti vykdomąjį elementą arba pereiti į darbo režimą be sąmoningo operatoriaus sutikimo, klausimas apima ir apsaugą nuo netikėto paleidimo, todėl reikia žvelgti plačiau nei vien į programos logiką. Ten, kur naudojamos hidraulinės arba pneumatinės pavaros, papildomai atsiranda konstrukciniai reikalavimai ir sistemos elgsena praradus energiją, todėl sprendimas dėl „minkšto“ darbo atnaujinimo negali būti atskirtas nuo visos įrangos techninių sąlygų. Atitikties požiūriu saugiausia ne spėlioti proceso intencijos po sutrikimo, o iš anksto nustatyti grįžimo į darbą sąlygas ir priskirti jas konkrečioms atsakomybėms: programai, valdikliui, vykdomajai sistemai ir operatoriui.
Į ką atkreipti dėmesį diegiant
Daugiausia klaidų diegiant pramonines programas, atsparias trumpalaikiam tinklo dingimui, įrenginių paleidimui iš naujo ir ryšio praradimui, kyla ne dėl pačios technologijos, o dėl neteisingai paskirstytos atsakomybės. Komanda daro prielaidą, kad „atsparumą“ užtikrins ryšio sluoksnis, debesijos tiekėjas arba valdiklis, nors tikroji problema slypi santykyje tarp proceso būsenos, įrenginio būsenos ir duomenų būsenos. Jei šios trys sritys neatskiriamos dar priėmimo etape, projektas pradeda kurti tariamą patikimumą: programa po pakartotinio paleidimo veikia, tačiau niekas negali įrodyti, ar po paleidimo iš naujo ji atkūrė būseną teisingai, saugiai ir pagal fizinę tikrovę. Tai tiesiogiai veikia sąnaudas, nes vėlesni pataisymai paprastai reikalauja vienu metu keisti valdymo logiką, operatoriaus sąsają, įvykių registravimą ir paleidimo procedūras. Tai taip pat daro įtaką atsakomybei, nes įvykio atveju sunku apginti sprendimą, kuriame nėra aiškiai nustatyta, kas ir kokiu pagrindu patvirtina pasirengimą atnaujinti darbą.
Praktikoje pavojingiausi spąstai yra ryšio praradimą laikyti įprasta technine klaida, o ne atskira sistemos darbo būsena. Jei programa po tinklo dingimo buferizuoja operacijas, o atkūrus ryšį jas atkuria nepatikrinusi esamo konteksto, ji gali atlikti pavėluotus, jau nebeleistinus arba su tikrąja linijos būsena nesuderinamus veiksmus. Analogiška problema kyla ir po įrenginio paleidimo iš naujo: anksčiau išsaugota loginė būsena formaliai gali būti išsami, tačiau fiziškai jau nebeaktuali, nes tuo metu galėjo pasikeisti vykdomojo elemento padėtis, terpės slėgis, darbo režimo konfigūracija arba aptarnaujančio personalo atlikti veiksmai. Geras sprendimo kriterijus ir čia yra paprastas: jei po būsenos atkūrimo sistema turi atlikti bet kokį procesą veikiantį veiksmą, pirmiausia turi būti įmanoma patikrinti jo leistinumą pagal esamus signalus, o ne vien pagal istoriją, įrašytą prieš sutrikimą. Jei tokio patikrinimo neįmanoma pagrįsti, saugesnis sprendimas yra pereiti į būseną, kuriai reikia aiškaus patvirtinimo arba pakartotinės sinchronizacijos.
Geras pavyzdys – stotis, kuri trumpam nutrūkus ryšiui praranda kontaktą su aukštesnio lygio sistema, tačiau vietoje vis dar mato dalį įvesties signalų. Programos požiūriu vilioja „užbaigti seką“ atkūrus ryšį, kad nebūtų prarastas ciklo laikas. Problema prasideda tada, kai per pertrauką operatorius pašalino detalę, suveikė slėgio nuėmimo vožtuvas, buvo paleistas iš naujo valdymo pultas arba pavara perėjo į kitą režimą. Programos logikoje viskas gali atrodyti nuoseklu, tačiau žingsnio atnaujinimas vis tiek taps technologine klaida arba kels pavojų. Todėl diegimo metu verta vertinti ne tik prarastų pranešimų skaičių ar sesijos atkūrimo laiką, bet ir rodiklius, kurie parodo elgsenos kokybę po sutrikimo: kiek kartų sistemai reikėjo rankinės pakartotinės sinchronizacijos, kiek operacijų buvo atmesta kaip nebeaktualios, kiek paleidimų iš naujo baigėsi perėjimu į saugią būseną, o ne automatiniu darbo atnaujinimu. Tai geresni sprendimo brandos rodikliai nei vien paslaugos pasiekiamumas, nes jie parodo, ar atsparumas nebuvo pasiektas proceso valdymo sąskaita.
Riba, nuo kurios ši tema nustoja būti vien tik taikomosios architektūros klausimu, atsiranda greičiau, nei paprastai numano projektų komandos. Jeigu ryšio praradimas, valdiklio paleidimas iš naujo arba užduočių eilės atkūrimas gali paveikti mašinos judėjimą, energijos tiekimą arba vykdomojo įtaiso būsenos pasikeitimą, klausimas pereina į praktinį rizikos vertinimą. Tokioje vietoje jau nepakanka argumento, kad sprendimas „paprastai veikia teisingai“; būtina scenarijų su nuokrypiais analizė, taip pat logika, artima požiūriui, taikomam pagal ISO/TR 14121-2. Jeigu, be to, atkūrus maitinimą arba ryšį yra galimybė funkcijoms atsinaujinti savaime, tema apima ir apsaugą nuo netikėto paleidimo, todėl ją reikia nagrinėti plačiau, siejant su paleidimo sąlygomis ir energijos atjungimo būsena. Ten, kur sistema apima hidrauliką arba pneumatiką, programinio sprendimo neįmanoma atskirti nuo to, kaip įrenginys elgiasi dingus energijai; tokiais atvejais reikia patikrinti ir konstrukcinius reikalavimus, taikomus visai sistemai, o ne vien taikomosios programos kodo teisingumą.
Kaip projektuoti pramonines programas, atsparias trumpalaikiam tinklo ryšio nebuvimui, įrenginių paleidimui iš naujo ir ryšio praradimui?
Nes ji turi įtakos mašinos būsenų modeliui, komandų patvirtinimo taisyklėms, duomenų buferizavimui ir darbo atnaujinimo po paleidimo iš naujo sąlygoms. Tokių sprendimų atidėliojimas paprastai baigiasi brangiais laikinais sprendimais ir rizikos perkėlimu eksploatacijai.
Reikia aiškiai apibrėžti, kas įvyks praradus ryšį, kas nutiks po paleidimo iš naujo ir kas patvirtina darbo atnaujinimą. Jei atsakymas priklauso tik nuo įgyvendinimo arba operatoriaus reakcijos, vadinasi, rizika nebuvo tinkamai pašalinta projektiniais sprendimais.
Ten, kur sistema negali parodyti, ar komanda buvo įvykdyta, nutraukta, dubliuota, ar tik užregistruota sąsajoje. Tai ypač aktualu operacijoms, turinčioms fizinį poveikį, pavyzdžiui, pavaros judėjimui, nuostatos pakeitimui, vožtuvo atidarymui ar ciklo atnaujinimui.
Ne visada, nes atkūrus ryšį proceso sąlygos jau gali būti kitokios nei komandos išdavimo momentu. Straipsnyje pabrėžta, kad kai kurios operacijos gali būti kartojamos nesukeliant šalutinio poveikio, tačiau kitoms reikia patvirtinti esamą objekto būseną arba pereiti į saugiąją būseną.
Verta matuoti dviprasmiškų paleidimų iš naujo po perkrovimo skaičių, komandų, kurioms reikia rankiniu būdu suderinti būseną, skaičių, laiką, reikalingą saugiai atnaujinti darbą, taip pat atvejus, kai sistema negali patvirtinti, ar komanda buvo įvykdyta. Tokie rodikliai geriau parodo realią riziką nei bendras „sistemos stabilumo“ vertinimas.