View
51
Download
0
Category
Preview:
DESCRIPTION
Kritinių sistemų kūrimas. Tikslai. Paaiškinti kaip klaidų toleravimas ir klaidų vengimas prisideda prie pasikliautinų sistemų kūrimo. Aprašyti pasikliautinų programų kūrimo proceso charakteristikas. Apibūdinti programavimo metodus klaidoms vengti. - PowerPoint PPT Presentation
Citation preview
©Ian Sommerville 2015 Dependable systems specification Slide 1
Kritinių sistemų kūrimas
©Ian Sommerville 2015 Dependable systems specification Slide 2
Tikslai• Paaiškinti kaip klaidų toleravimas ir klaidų
vengimas prisideda prie pasikliautinų sistemų kūrimo.
• Aprašyti pasikliautinų programų kūrimo proceso charakteristikas.
• Apibūdinti programavimo metodus klaidoms vengti.
• Aprašyti klaidų toleravimo mechanizmus ir naudojimo įvairovė bei pertekliškumą.
©Ian Sommerville 2015 Dependable systems specification Slide 3
Įžanga• Kritinių sistemų kūrimas Įžanga (Tikslai, temos,
pasikliautinumas, įvairovė ir pertekliškumas, programos be klaidų, jų kūrimas, klaidų ištaisymo kaštai)
©Ian Sommerville 2015 Dependable systems specification Slide 4
Temos• Pasikliautinas procesas• Pasikliautinas programavimas• Klaidų toleravimas• Klaidų toleravimo architektūros
©Ian Sommerville 2015 Dependable systems specification Slide 5
Programinės įrangos pasikliautinumas
• Apskritai PĮ vartotojai tikisi, kad visa PĮ būtų patikima. Kad ir kaip bebūtų, nekritines taikomąsias programas jie gali būti pasiruošę priimti ir su kai kuriais trūkumais
• Tačiau kai kurioms taikomosioms programoms keliami labai aukšti patikimumo reikalavimai, ir kad programos juos išpildytų, privalo būti naudojamos specialios programavimo technikos
©Ian Sommerville 2015 Dependable systems specification Slide 6
Kaip pasiekti reikiamą pasikliautinumą
• Defektų vengimas» PĮ kuriama taip, kad būtų išvengta žmogaus klaidų
ir taip būtų sumažintas sistemos defektų kiekis» Kūrimo procesas organizuojamas taip, kad PĮ
defektai būtų aptikti ir ištaisyti iki jos pristatymo vartotojui
• Defektų toleravimas» PĮ projektuojama taip, kad defektai pristatytoje PĮ
nesukeltų sistemoje klaidų
©Ian Sommerville 2015 Dependable systems specification Slide 7
Programos be klaidų• Dabartiniai metodai gali užtikrinti gauti santykinai mažas
sistemas be klaidų.• Programos be klaidų suprantamos kaip programos
programos , kurios atitinka specifikaciją. Bet gali būti specifikacijos klaidų.
• Programos be klaidų daug kainuoja tai gali apsimokėti tik išskirtinėse situacijose. Dažnai pigiau priimti programos klaidas ir taisyti pasekmes negu skirti pakankamai resursų programoms be klaidų.
©Ian Sommerville 2015 Dependable systems specification Slide 8
Programinės įrangos be defektų kūrimas
• Reikalinga tiksli (pageidautina formali) specifikacija• Reikalauja organizacinių priemonių kokybei pasiekti• Informacijos slėpimas ir inkapsuliacija yra būtini dalykai
PĮ projektavime• Turėtų būti naudojama programavimo kalba su griežta
kintamųjų tipų kontrole (strict typing) ir klaidų tikrinimu kodo rašymo metu (compile-time checking)
• Turėtų būti išvengta klaidas sąlygojančių struktūrų• Patikimas ir pakartojamas kūrimo procesas
©Ian Sommerville 2015 Dependable systems specification Slide 9
Programų be klaidų kūrimo požymiai
• Pasikliautinas kūrimo procesas• Kokybės valdymas• Formalios specifikacijos• Statinis tikrinimas • Griežti kintamųjų tipai• Saugus programavimas• Informacijos apsauga
©Ian Sommerville 2015 Dependable systems specification Slide 10
Klaidų ištaisymo kaštai
Mažai
Neišaiškintų klaidų kiekis
Daug Labaimažai
Vienos klaidos
pašalinimo
kaštai
©Ian Sommerville 2015 Dependable systems specification Slide 11
Temos• Pasikliautinas procesas (kūrimo procesas,
charakteristikos, atestavimo veiklos) • Pasikliautinas programavimas• Klaidų toleravimas• Klaidų toleravimo architektūros
©Ian Sommerville 2015 Dependable systems specification Slide 12
Patikimas programinės įrangos kūrimo procesas
• Tam, kad užtikrinti minimalų PĮ defektų skaičių, svarbu turėti gerai apibrėžtą, pakartojamą PĮ kūrimo procesą
• Gerai apibrėžtas pakartojamas procesas yra toks, kuris nepriklauso vien tik nuo individualių sugebėjimų, bet gali būti įvykdytas skirtingų žmonių
• Aišku, kad defektų sumažinimo procesui labai svarbus turėtų būti tikrinimas ir atestavimas
©Ian Sommerville 2015 Dependable systems specification Slide 13
Pasikliautino proceso charakteristikos
Dokumentuojamas The process should have a defined process model that sets out the activities in the process and the documentation that is to be produced during these activities.
Standartizuotas A comprehensive set of software development standards that define how the software is to be produced and documented should be available.
Audituotas The process should be understandable by people apart from process participants who can check that process standards are being followed and make suggestions for process improvement.
Su išsamiu testavimu The process should include redundant and diverse verification and validation activities.
Atsparus klaidoms The process should be able to recover from failures of individual process activities.
©Ian Sommerville 2015 Dependable systems specification Slide 14
Temos• Pasikliautinas procesas• Pasikliautinas programavimas (informacijos
saugojimas, saugus programavimas, klaidas sąlygojančios struktūros, išimčių apdorojimas)
• Klaidų toleravimas• Klaidų toleravimo architektūros
©Ian Sommerville 2015 Dependable systems specification Slide 15
Pasikliautinas programavimas• Naudoti programavimo konstrukcijas ir metodus
kurie prisideda prie klaidų vengimo ir toleravimo. • Projekto paprastumas;• Apsaugoti informaciją nuo nesankcionuoto priėjimo; • Minimizuoti nesaugių programavimo konstrukcijų naudojimą.
©Ian Sommerville 2015 Dependable systems specification Slide 16
Informacijos saugojimas• Informacija neapsaugojama tik tose programos dalyse,
kur reikia ją pasiekti. Tam reikia naudoti objektus arba abstrakčius duomenų tipus, kurie palaiko būvį ir pagal jį atlieka operacijas.
• Taip išvengiama klaidų dėl trijų priežasčių:• Sumažinama tikimybė atsitiktinio informacijos pažeidimo;• Informacija apsupama “ugniasienių, todėl mažiau tikėtina , kad
problemos persikels į kitas programos dalis; • Kadangi informacija lokalizuota, mažiau bus padaroma klaidų ir
recenzentai tikriausiai suras klaidas.
©Ian Sommerville 2015 Dependable systems specification Slide 17
Saugus programavimas• Klaidos programoje yra programuotojų
suklydimų pasekmė. • Dažnai klaidos įvyksta, kai žmonės pameta
susietumą tarp programos kintamųjų.• Kai kurios programavimo konstrukcijos turi
polinkį klaidoms, tai jų vengimas sumažina klaidų kiekį.
• Struktūrinis programavimas
©Ian Sommerville 2015 Dependable systems specification Slide 18
Klaidas sąlygojančios (error-prone) struktūros
• Slankaus taško skaičiai• Pagal savo prigimtį netikslūs. Netikslumas gali sąlygoti neteisingus
palyginimus• Rodyklės (Pointers)
• Rodyklės, nukreiptos į klaidingas atminties sritis, gali išgadinti duomenis. Pseudonimų naudojimas vietoj tikrų rodyklių vardų (aliasing) gali padaryti programas sunkiai suprantamas ir sunkiai pakeičiamas
• Dinaminės atminties paskirstymas• Paskirstymas programos vykdymo metu gali iššaukti atminties
perpildymą• Lygiagretumas
• Gali pasireikšti subtiliomis veiksmų sinchronizavimo klaidomis (timing errors) dėl nenumatytos sąveikos tarp lygiagrečių procesų
©Ian Sommerville 2015 Dependable systems specification Slide 19
Klaidas sąlygojančios (error-prone) struktūros
• Rekursija• Klaidos rekursijoje gali iššaukti atminties perpildymą
• Pertrauktys• Pertrauktys gali sukelti kritinės operacijos pabaigą ir padaryti
programą sunkiai suprantamą. Jos gali būti palyginamos su ‘goto’ sakiniais
• Paveldimumas• Kodas nėra lokalizuotas. Tai gali pasireikšti netikėtu elgesiu, kai
padaromi pakeitimai, ir suprantamumo problemomis• Šių struktūrų neturėtų būti vengiama, bet jas naudoti
reikėtų labai atidžiai
©Ian Sommerville 2015 Dependable systems specification Slide 20
Išimčių (exception) apdorojimo operatoriai
• Programos išimtis yra klaida arba kažkokie nenumatyti įvykiai, tokie kaip blogas energijos tiekimas
• Išimties apdorojimo konstrukcijos leidžia apdoroti tokius įvykius be nuolatinio būsenos tikrinimo, kuris yra reikalingas, kad būtų aptiktos išimtys
• Normalių kontrolės konstrukcijų naudojimas, norint aptikti išimtis eilėje kreipinių į įterptinę procedūrą (nested procedure), reikalauja įdėti į programą daug papildomų operatorių ir padidina laiko sąnaudas
©Ian Sommerville 2015 Dependable systems specification Slide 21
Temos• Pasikliautinas procesas• Pasikliautinas programavimas• Klaidų toleravimas (klaidų toleravimo veiksmai,
metodai, klaidos aptikimas, žalos įvertinimo metodai, klaidos toleravimas, saugios tvarkymų procedūros)
• Klaidų toleravimo architektūros
©Ian Sommerville 2015 Dependable systems specification Slide 22
Klaidų toleravimas• Kritinėse situacijose PĮ sistemos turėtų toleruoti klaidas.
Klaidų toleravimas yra būtinas ten, kur yra aukšti reikalavimai parengtumui (availability) arba kur dėl neteisingo sistemos veikimo patiriami labai dideli nuostoliai
• Klaidų toleravimas reiškia, kad sistema gali tęsti operaciją nežiūrint blogo PĮ veikimo
• Net jei atrodo, kad sistema yra be klaidų, vis tiek jos turėtų būti toleruojami, nes gali būti specifikacijų klaidų arba atestavimas gali būti neteisingas
©Ian Sommerville 2015 Dependable systems specification Slide 23
Klaidų toleravimo veiksmai• Klaidų aptikimas
Sistema turi aptikti, kad defektas (neteisinga sistemos būsena) pasirodė
• Žalos įvertinimas Sistemos dalys, kurias paveikė defektas, turėtų būti surastos
• Klaidos atstatymas (recovery) Sistema turi atstatyti savo būseną į žinomą saugią būseną
• Klaidos taisymas (repair) Sistema gali būti modifikuota taip, kad būtų užkirstas kelias
defektų pasikartojimui. Kadangi daugelis PĮ defektų yra trumpalaikiai (transitory), tai dažnai yra nereikalinga
©Ian Sommerville 2015 Dependable systems specification Slide 24
Klaidų toleravimo metodai• Gynybinis programavimas (defensive programming)
Programuotojai įtaria, kad gali būti defektų sistemos kode, todėl įdeda į jį perteklingą kodą (redundant code), tikrinantį sistemos būseną po modifikacijų, tam, kad garantuotų modifikacijos teisingumą
Defektus toleruojančios architektūros PĮ ir Aparatūrinės Įrangos (AĮ) sistemų architektūros, kurios
palaiko AĮ ir PĮ perteklingumą bei defektų toleravimo kontrolerį, aptinkantį problemas ir palaikantį defektų atstatymą
Tai yra labiau vienas kitą papildantys negu prieštaraujantys metodai
©Ian Sommerville 2015 Dependable systems specification Slide 25
Klaidų aptikimas
• Pirmas žingsnis klaidų toleravime yra nustatyti, kad klaida (klaidinga sistemos būsena) įvyko ar įvyks.
• Klaidos aptikimui reikia apibrėžti apribojimus, kurie turi būti išlaikyti visoms legalioms būsenoms ir patikrinti ar visos būsenos išpildo šiuos apribojimus.
©Ian Sommerville 2015 Dependable systems specification Slide 26
Pažeidimų nustatymas• Analizuoti sistemos būseną, kad spręsti apie
pažeidimus sąlygotus sistemos sutrikimo. • Įvertinimas turi nustatyti, kokia būsenų dalis buvo
paveikta sutrikimo.• Bendru atveju tikrinamos visos būsenos, kad
nustatyti ar jų reikšmės yra užduotam intervale.
©Ian Sommerville 2015 Dependable systems specification Slide 27
• Kontrolinės sumos naudojamos pažeidimų nustatymui perduodant duomenis.
• Perteklinės nuorodos gali būti naudojamos duomenų struktūros vientisumo tikrinimui.
• Užsiciklinimą tikrina “Watch dog timers”. Jeigu per užduotą laiką negaunamas atsakymas, konstatuojamas pažeidimas.
Pažeidimų nustatymo metodai
©Ian Sommerville 2015 Dependable systems specification Slide 28
• Tiesioginis koregavimas• Taisomas pažeistas sistemos būvis.
• Atstatomasis koregavimas• Atstatomas sistemos būvis į žinomą saugų būvį.
• Tiesioginiam koregavimui paprastai reikalingos specialios tos srities žinios, kad paskaičiuoti galimus būvio koregavimus.
• Atstatomasis koregavimas yra paprastesnis. Išsaugomi saugūs būviai ir jais pakeičiami pažeisti sistemos būviai.
Klaidos koregavimas ir taisymas
©Ian Sommerville 2015 Dependable systems specification Slide 29
Temos• Pasikliautinas procesas• Pasikliautinas programavimas• Klaidų toleravimas• Klaidų toleravimo architektūros (aparatūros
tolerantiškumas klaidoms, programinės įrangos tolerantiškumas klaidoms, programavimo įvairovė, N-versijų programavimas, įvairovės problemos, koregavimo blokai, specifikacijos priklausomybė, pertekliškumas)
©Ian Sommerville 2015 Dependable systems specification Slide 30
Klaidoms tolerantiška architektūra
• Gynybinis programavimas negali susidoroti su defektais, kurie susidaro dėl sąveikų tarp AĮ ir PĮ
• Neteisingai suprasti reikalavimai gali reikšti, jog tikrinimai (checks) ir su šiais susijęs kodas yra neteisingi
• Sistemoms, kurioms keliami aukšti tinkamumo reikalavimai, gali būti reikalinga specifinė architektūra, suprojektuota tam, kad palaikytų klaidų toleravimą
• Ši architektūra turėtų toleruoti tiek aparatūrinės, tiek ir programinės įrangos sutrikimus
©Ian Sommerville 2015 Dependable systems specification Slide 31
Aparatūrinės įrangos tolerantiškumas klaidoms
• Priklauso nuo trigubo modulinio perteklingumo (triple-modular redundancy - TMR)
• Yra 3 identiškos komponentų kopijos, kurios priima tokius pačius duomenis ir kurių rezultatai yra palyginami
• Jeigu vienas iš trijų rezultatų yra kitoks, jis yra ignoruojamas, ir daroma išvada, kad įvyko modulio trikis
• Paremtas labiau atskirų komponentų sutrikimais nei projektavimo defektais, ir žema tikimybe, kad komponentai pradės veikti neteisingai vienu metu
©Ian Sommerville 2015 Dependable systems specification Slide 32
Aparatūrinės įrangos patikimumas naudojant TMR
komparatorius
Klaidų
A2
A1
A3
Išėjimųpalyginimas
©Ian Sommerville 2015 Dependable systems specification Slide 33
Išėjimo rezultatų parinkimas• Išėjimai palyginami aparatūriškai. • Teisingi išėjimo rezultatai parenkami daugumos
balsavimu.• Klaidingas mazgas gali būti taisomas arba
išjungiamas.
©Ian Sommerville 2015 Dependable systems specification Slide 34
Klaidas toleruojančios programinės įrangos architektūros
TMR sėkmė, užtikrinant klaidų toleravimą, pagrįsta dviem pagrindinėm prielaidom: Techninės įrangos komponentai neturi bendrų projektavimo
defektų Komponentai sutrinka atsitiktinai ir yra maža tikimybė, kad
komponentų klaidos susidarys vienu metu Nė viena iš šių prielaidų netinka programinei įrangai:
Nėra taip paprasta atkartoti tą patį komponentą, nes jo kopijos turės bendrų projektavimo klaidų
Todėl faktiškai yra neišvengiama, kad komponentų trikiai susidarys vienu metu
Todėl programinės įrangos sistemos turėtų būti skirtingos
©Ian Sommerville 2015 Dependable systems specification Slide 35
Projektavimo įvairovė Skirtingos sistemos versijos yra suprojektuotos ir
realizuotos skirtingais būdais. Dėl to jos turėtų turėti skirtingų tipų klaidas
Skirtingi projektavimo metodai (pvz., objektiškai orientuotas ir funkcinės paskirties (function oriented))
Realizavimas skirtingomis programavimo kalbomisSkirtingų įrankių ir vystymo aplinkų naudojimasRealizacijai naudojami skirtingi algoritmai
©Ian Sommerville 2015 Dependable systems specification Slide 36
TMR analogai programinei įrangai
N – versijų (N-version) programavimas Ta pati specifikacija realizuojama skirtingose
versijose skirtingų darbo grupių. Visos versijos skaičiuoja vienu metu ir dauguma išėjimų rezultatų yra išrenkami naudojant balsavimo sistemą
Paprastai tai yra labiausiai naudojamas metodas, pavyzdžiui, Airbus 320
©Ian Sommerville 2015 Dependable systems specification Slide 37
N-versijų programavimas
Versija 1
Versija 3
Išėjimų komparatorius
N - versijų
Sutartasrezultatas
Versija 2
©Ian Sommerville 2015 Dependable systems specification Slide 38
Išvesčių palyginimas AĮ sistemose, išvesčių komparatorius yra paprasta
programėlė, kuris naudoja balsavimo mechanizmą atrenkant išvesties rezultatus
Realaus laiko sistemose gali būti reikalaujama, kad skirtingų versijų rezultatai būtų pateikti tam tikruose laiko rėmuose
©Ian Sommerville 2015 Dependable systems specification Slide 39
N – versijų programavimas Skirtingos sistemos versijos yra suprojektuotos ir
realizuotos skirtingų darbo grupių. Manoma, kad egzistuoja maža tikimybė, jog jos padarys tokias pačias klaidas. Naudojami algoritmai turėtų būti skirtingi, bet gali būti ir kitaip
Yra keletas bandymais paremtų įrodymų, kad paprastai darbo grupės tokiu pačiu būdu klaidingai interpretuoja specifikacijas ir pasirenka tuos pačius algoritmus savo sistemoms
©Ian Sommerville 2015 Dependable systems specification Slide 40
Projektavimo įvairovės problemos
Darbo grupės nėra kultūriškai skirtingos, taigi jos linkusios spręsti problemas tuo pačiu būdu
Būdingos klaidos Skirtingos komandos daro tas pačias klaidas. Kai kurios
realizacijos dalys yra sudėtingesnės nei kitos, taigi visos komandos linkusios daryti klaidas tose pačiose vietose
Specifikacijos klaidos Jei jau specifikacijoje yra klaida, tai atsispindi visose
realizacijose Tai gali būti išspręsta iki tam tikro laipsnio, naudojant įvairias
specifikacijų reprezentacijas
©Ian Sommerville 2015 Dependable systems specification Slide 41
Specifikacijos priklausomybė Abu programinės įrangos pertekliškumo būdai jautrūs
specifikacijos klaidoms. Jei specifikacija neteisinga, sistema gali žlugti
Tokia pati problema egzistuoja ir su technine įranga, bet PĮ specifikacijos paprastai yra sudėtingesnės ir jas sunkiau atestuoti
Kai kuriais atvejais tai buvo išspręsta, sukuriant atskiras PĮ specifikacijas pagal tą pačią vartotojo specifikaciją
©Ian Sommerville 2015 Dependable systems specification Slide 42
Ar reikalingas programinės įrangos pertekliškumas?
Priešingai nei AĮ, programinės įrangos defektai nėra neišvengiamas realaus pasaulio padarinys
Todėl kai kurie žmonės mano, kad aukštesnis patikimumo ir tinkamumo lygis gali būti pasiektas stengiantis mažinti programinės įrangos sudėtingumą
Perteklinė programinė įranga yra žymiai sudėtingesnė, taigi dėl klaidas toleruojančių kontrolerių atsiranda papildomos klaidos, kurios veikia sistemos patikimumą
©Ian Sommerville 2015 Dependable systems specification Slide 43
Esminiai aspektai• Sistemos pasikliautinumas gali būti pasiektas
išvengiant klaidų ir jas toleruojant• Pertekliškumo ir įvairovės naudojimas yra
esminiai kuriant pasikliautinas sistemas.• Kai kurios programavimo kalbų konstrukcijos,
tokios kaip goto, rekursija ir rodyklės, yra neatsparios loginėms klaidoms
• Griežti duomenų tipai leidžia aptikti klaidas kompiliavimo metu
©Ian Sommerville 2015 Dependable systems specification Slide 44
Esminiai aspektai• Klaidų toleravimo architektūra priklauso nuo
trigubo modulinio perteklingumo (triple-modular redundancy - TMR)
• N-versijų programavimas yra naudojamas projektuojant klaidų toleravimą programinės įrangos architektūroje
• Projektavimo įvairumas - būtina sąlyga, naudojant programinės įrangos pertekliškumą
©Ian Sommerville 2015 Dependable systems specification Slide 45
Esminiai aspektai• Kritinių sistemų kūrimas Esminiai aspektai
( Pasikliautinumas, pertekliškumas, kalbos konstrukcijos, duomenų tipai, klaidų toleravimo architektūra, N- versijų programavimas, projektavimo įvairumas)
©Ian Sommerville 2015 Dependable systems specification Slide 46
Klausimas 9.1• Kaip pasiekiamas sistemų pasikliautinumas?
©Ian Sommerville 2015 Dependable systems specification Slide 47
Klausimas 9.2• Kokia klaidų toleravimo architektūra?
©Ian Sommerville 2015 Dependable systems specification Slide 48
Klausimas 9.3• Kodėl reikalinga programavimo įvairovė?
©Ian Sommerville 2015 Dependable systems specification Slide 49
Klausimas 9.4• Kas tai yra gynybinis programavimas?
©Ian Sommerville 2015 Dependable systems specification Slide 50
Klausimas 9.5• Požiūris į pertekliškumo ir pasikliautinumo
santykį?
Recommended