Documente Academic
Documente Profesional
Documente Cultură
Investeşte în oameni !
Proiect cofinanţat din FONDUL SOCIAL EUROPEAN
prin Programul Operaţional Sectorial Dezvoltarea Resurselor Umane 2007 – 2013
Axa prioritară 1: „EDUCAŢIA ŞI FORMAREA PROFESIONALĂ ÎN SPRIJINUL CREŞTERII ECONOMICE ŞI DEZVOLTĂRII SOCIETĂŢII
BAZATE PE CUNOAŞTERE”
Domeniul major de intervenţie 1.2 „Calitate în învăţământul superior”
Cerere de propuneri de proiecte: nrnr. 86 „Universitate
Universitate pentru viitor”
Titlul proiectului: Reţea naţională de centre pentru dezvoltarea programelor de studii cu rute flexibile şi a unor instrumente didactice la specializarea de
licenţă şi masterat, din domeniul Ingineria Sistemelor
Numărul de identificare al contractului: POSDRU/86/1.2/S/63806
Gabriela Varvara
Ingineria Programarii I
Curs 9
Dezvoltarea sistemelor critice
Partener P4
MINISTERUL EDUCAŢIEI, UNIVERSITATEA UNIVERSITATEA TEHNICĂ UNIVERSITATEA TEHNICĂ UNIVERSITATEA SC ASTI AUTOMATION SRL
CERCETĂRII, TINERETULUI ”POLITEHNICA” DIN ”GHEORGHE ASACHI” ”POLITEHNICA”
ŞI SPORTULUI DIN CLUJ-NAPOCA DIN DIN
BUCUREŞTI IAŞI TIMIŞOARA
Obiective curs:
Obiectivul
Obi ti l 1:1 explicarea
li modului
d l i in
i care toleranta
t l t la
l defect
d f t sii evitarea
it
defectelor contribuie la dezvoltarea de sisteme sigure.
Obiectivul 2:descrierea caracteristicilor proceselor software sigure.
Obiectivul 3: introducerea tehnicilor de programare destinate evitarii
defectelor.
Obiectivul 4: descrierea mecanismelor de toleranta la defect si folosirea
acestora in procese de diversificare si redundanta.
2
<Ingineria programarii I>
Dependabilitatea software si atingerea acestui deziderat <Gabriela Varvara>
4
<Ingineria programarii I>
Software fara erori <Gabriela Varvara>
Pentru sistemele mici exista actualmente metode de inginerie software care sa creeze
produse IT fara erori
Software-ul fara erori este acela ce se conformeaza propriilor specificatii. Aceasta nu
inseamna ca este un produs lipsit de erori, caci ar putea exista erori in specificatii.
Costul producerii de soft fara erori este foarte ridicat (vezi fig.) si se recomanda doar in
cazuri exceptionale. Uneori este mai ieftin sa se accepte costurile eliminarii
consecintelor producerii erorilor decat sa se dezvolte un soft lipsit de eroare.
Dezvoltare de soft lipsit de erori inseamna:
Folosirea de procese de
dezvoltare dependabile
Managementul calitatii
Existenta de specificatii formale
Verificare statica
Tipizare extinsa
Programare sigura multe putine foarte putine
6
<Ingineria programarii I>
Programare dependabila <Gabriela Varvara>
interface Queue {
8
<Ingineria programarii I>
Programarea sigura <Gabriela Varvara>
10
<Ingineria programarii I>
Tratarea exceptiilor <Gabriela Varvara>
11
12
<Ingineria programarii I>
Toleranta la defecte <Gabriela Varvara>
13
// The
Th dose
d off insulin
i li to
t be
b delivered
d li d mustt always
l be
b greater
t
// than zero and less that some defined maximum single dose
insulin_dose >= 0 & insulin_dose <= insulin_reservoir_contents
// The total amount of insulin delivered in a day must be less
// than or equal to a defined daily maximum dose
cumulative_dose <= maximum_daily_dose
14
<Ingineria programarii I>
Detectia preventiva a erorilor si extensia definitiilor de tip <Gabriela Varvara>
} //PositiveEven
15
boolean [] checkState ;
CheckableObject [] theRobustArray ;
16
<Ingineria programarii I>
Tehnici de evaluare a consecintelor defectelor <Gabriela Varvara>
17
18
<Ingineria programarii I>
Restabilire inainte (in avans) – forward recovery <Gabriela Varvara>
Se aplica pentru:
Coruperea datelor pe perioada unui proces de transmisie – datele codificate vor fi
reprezentate
t t redundant,
d d t in i vederea
d recuperarii
ii acestora
t in
i caz de
d corupere.
19
Cea mai des folosita metoda de restabilire inapoi este cea a tranzactiilor –
modificarile nu vor fi aplicate decat la finalizarea calculelor. Daca apare o
eroare sistemul va fi lasat in starea precedenta tranzactiei.
tranzactiei
Verificarile periodice sunt o alta metoda de revenire a sistemului intr-o stare
precedenta, corecta.
20
<Ingineria programarii I>
Procedura de sortare sigura <Gabriela Varvara>
Procedura:
Va monitoriza propria executie si va evalua corectitudinea acesteia
Va mentine o copie a intrarilor
Va identifica si gestiona exceptiile
Va
V valida
lid sortarea
t deoarece iin acestt caz conditia
d diti pentru
t o sortare
t valida
lid este
t
cunoscuta. In multe alte cazuri, insa, verificarile de validare sunt extrem de dificile.
class SafeSort { if (order == Sort.ascending)
for (int i = 0; i <= intarray.length-2 ; i++)
static void sort ( int [] intarray, int order ) throws SortError if (intarray [i] > intarray [i+1])
throw new SortError () ;
{
else
int [] copy = new int [intarray.length]; for (int i = 0; i <= intarray.length-2 ; i++)
if (intarray [i+1] > intarray [i])
// copy the input array throw new SortError () ;
} // try block
for (int i = 0; i < intarray.length
intarray length ; i++) catch (SortError e )
copy [i] = intarray [i] ; {
try { for (int i = 0; i < intarray.length ; i++)
Sort.bubblesort (intarray, intarray.length, order) ; intarray [i] = copy [i] ;
throw new SortError ("Array not sorted") ;
} //catch
} // sort
} // SafeSort
21
Probleme de dependabilitate:
In aceste conditii, arhitectura aleasa va trebui sa suporte atat erorile software cat si pe
cele hardware.
22
<Ingineria programarii I>
Toleranta la erori hardware <Gabriela Varvara>
Modelul de arhitectura tolerant la erori cel mai folosit implica crearea unei redundante modulare
triple (triple-modular redundancy TMR).
Pentru fiecare intrare exista trei componente replicate identic ce o trateaza. Iesirile acestor
componente vor fi comparate si, daca macar una este gasita diferita, blocul modular respectiv este
neglijat si se considera evenimentul – producere eroare componenta hardware.
Acest tip de tratare se bazeaza pe erorile rezultate din caderea componentelor si pe un proces de
proiectare ce sa ia in considerare o probabilitate scazuta de cadere simultana a componentelor.
A1
A2 comparator
pe iesire
A3
Comparatorul de iesire este simplu; ele compara semnalele de intrare si, daca unul este diferit il
rejecteaza (selectia iesirii curente se bazeaza pe votul majoritar).
Comparatorul de iesire este conectat la o unitate de management a erorilor ce va incerca fie sa
repare modulul fie il va scoate din uz.
23
Nici una din aceste ipoteze nu este valabila pentru erorile software
Nu este posibil sa replicam pur si simplu componentele software caci ele pot avea erori de
proiectare comune. Astfel, caderea simultana a componentelor este virtual inevitabila.
24
<Ingineria programarii I>
Analogii software pentru TMR <Gabriela Varvara>
Versiune 1
Intrare
Comparator
Versiune 2
iesire
rezultat agreat
Versiune 3
Manager erori
N-versiuni
In mod empiric, exista o evidenta clara a faptului ca toate echipele gresesc la fel in interpretarea
specificatiilor si aleg acelasi tip de algoritmi pentru sistemele lor.
Comparatorul este o unitate simpla ce recurge la mecanismul de votare pentru selectia iesirii.
Pentru un sistem de timp real, poate sa existe cerinta ca rezultatele diferitelor versiuni sa se
produca intr-un anumit interval de timp.
25
Folosirea blocurilor de restabilire – un numar de versiuni ale aceleasi specificatii sunt scrise si
executate secvential. Apoi se aplica un test de acceptare pentru a selecta iesirea ce va fi transmisa
mai departe.
Acest mecanism forteaza spre folosirea de algoritmi diferiti pentru fiecare versiune in scopul
reducerii probabilitatii de producere de erori comune.
Proiectarea testului de acceptanta
p este dificila deoarece acesta trebuie sa fie independent
p de
modul de calcul folosit.
Pentru sistemele de timp real acest mecanism este dificil de aplicat deoarece presupune operarea
secventiala a unor versiuni redundante.
testare algoritm 1 Test acceptare
Testare
Algoritm 1 Test acceptare Continuare executie
daca test acceptare
reuseste si semnal
exceptie daca testul
reluare reluare
esueaza
retestare retestare
Algoritm 2 Algoritm 3
Blocuri recuperare
26
<Ingineria programarii I>
Probleme in folosirea diversitatii de proiectare software <Gabriela Varvara>
27
28